Programa Gerenciamento de Biblioteca - Problemas com Métodos de Outras Classes

O programa foi dividido em dois exercícios, a parte 1 já me ajudara um pouco aqui no fórum, mas agora tem uma segunda parte.
Seguem os detalhes:

Implemente em Java um sistema para controle de sua biblioteca pessoal. O
sistema é formado pelas classes ?Livro? e ?Biblioteca? com as características
descritas abaixo:
Classe: Livro

Atributos: titulo (título do livro, tipo String), autores (autores do livro, tipo

String) e editora (editora que publicou o livro, tipo String). Todos atributos
privados;

Método construtor para inicializar os atributos;

Métodos get para obter cada um dos atributos;

Métodos set para alterar cada um dos atributos.

Classe: Biblioteca

Atributos: livros (lista de livros da biblioteca, tipo arrayList), numLivros

(número de livros inseridos na lista, tipo int) e MAXLIV (número máximo de
livros na lista, constante do tipo int com valor 50);

Método para adicionar um livro na lista. Parâmetros: titulo, autores e editora;

Método para adicionar um livro na lista. Parâmetro: objeto do tipo Livro;

Método para excluir um livro da lista. Parâmetro: título do livro;

Método para excluir um livro da lista. Parâmetro: objeto do tipo Livro;

Método para retornar o livro cujo título é recebido como parâmetro. Retorna

nulo se o livro não existir. Parâmetro: título do livro;

Método para retornar a lista de livros.

Método para retornar o número de livros da biblioteca.

Método main para executar as seguintes ações, usando todos os métodos

definidos nas classes:

Criar um objeto do tipo Biblioteca;

Adicionar quatro livros à biblioteca;

Imprimir os dados de um livro da biblioteca dado seu título, ou uma

mensagem de erro se o livro não existir;

Imprimir a relação de todos os livros da biblioteca;

Excluir dois livros da biblioteca.

10. Idem ao exercício anterior, com as seguintes modificações:

Na classe Livro, crie uma lista de autores ao invés de armazenar todos os

autores em uma única string. Também modifique a informação sobre a editora
que publicou o livro, passando agora a ter os seguintes dados sobre cada
editora: CNPJ, nome, endereço e telefone;

Crie uma classe de interface com o usuário com opções para [b]cadastrar e

excluir livros (e editoras) de uma biblioteca, pesquisar por um livro imprimindo
seus dados e imprimir a relação de todos os livros. [/b]

As partes em negrito são as coisas que ainda não consegui fazer e preciso da ajuda de vocês.

Segue agora o código:

[code]package bibliotecapessoal;
import java.util.ArrayList;

public class Biblioteca {

int numLivros;
public final int MAXLIV = 50;
ArrayList<Livro> livros;

public Biblioteca (){
   numLivros = 0;
   livros = new ArrayList<Livro>(MAXLIV); }


public void addLivro(String titulo, String autores, String editora){
    Livro livro = new Livro(titulo,autores,editora);
    livros.add(livro); }

public void addLivro(Livro livro){
   livros.add(livro); }   

public void remover(String titulo){
    for (int i = 0; i < livros.size(); i++) {  
      if (livros.get(i).getTitulo().equals(titulo))   
        livros.remove(i); 
      else System.out.println("Livro não encontrado");
    } 
}

public void remover(Livro livro){
    livros.remove(livro); }
    
 public Livro retornaLivro(String titulo){  
    for (int i = 0; i < livros.size(); i++) {    
      if (livros.get(i).getTitulo().equals(titulo))     
        return livros.get(i);}    
        return null;}   
        
         
public void retornaLista (){
    for (int i=0; i < livros.size();i++){
      System.out.println(livros.get(i).getTitulo());  
    }
}

public int retornaNumLivros(){
    numLivros=livros.size();
    return numLivros; }

}

package bibliotecapessoal;
import java.util.ArrayList;

public class Livro {
private String titulo, editora;
ArrayList autores;

public Livro(String titulo, String autores, String editora) {
    this.titulo = titulo;
    this.autores = new ArrayList<String>();
    this.autores.add(autores);
    this.editora = editora; }

public String getTitulo(){
    return titulo; }

public ArrayList getAutores(){
    return autores; }

public String getEditora(){
    return editora; }

public void setTitulo(String titulo){
    this.titulo=titulo; }

public void setAutores(int ind,String autores){ 
    this.autores.set(ind,autores);} 

public void setEditora(String editora){
    this.editora=editora; }
}

package bibliotecapessoal;
import java.util.*;
public class Usuario {

public static void main(String[] args) {
    
    System.out.println("O que deseja fazer?");
    System.out.println("");
    System.out.println("1- Adicionar Livro");
    System.out.println("2- Excluir Livro");
    System.out.println("3- Adicionar Editora");
    System.out.println("4- Excluir Editora");
    System.out.println("5- Pesquisar Livro (por título)");
    System.out.println("6- Listar Livros Cadastrados");
    System.out.println("0- Sair");
    System.out.println("");
    System.out.print("Digite sua opção: ");
    
    Scanner entrada  = new Scanner(System.in);
    Biblioteca b1 = new Biblioteca();
    String s1,s2,s3;
    boolean continuar=true;
    
        do {    
          switch (entrada.nextInt()) {
            case 1: //===================================================
                    System.out.print("Digite o nome do Livro: ");
                    s1=entrada.nextLine();
                    System.out.print("Digite o autor: ");
                    s2=entrada.nextLine();
                    System.out.print("Digite a editora: ");
                    s3=entrada.nextLine();
                    b1.addLivro(s1, s2, s3);break;
            case 2: //====================================================
                    System.out.print("Digite o titulo do livro que deseja remover: ");
                    s1=entrada.nextLine();
                    b1.remover(s1);break;                
            case 3: //====================================================
                    System.out.print("Digite o nome da Editora que deseja adicionar: ");
                    s1=entrada.nextLine();
            case 4: //====================================================
                    System.out.print("Digite o nome da Editora que deseja remover: ");
                    s1=entrada.nextLine();
            case 5: //====================================================
                    System.out.print("Digite o nome do livro que deseja buscar: ");
                    s1=entrada.nextLine();
                    b1.retornaLivro(s1);break;
            case 6: //====================================================
                    b1.retornaLista();break;
            case 0: //====================================================
                    continuar=false; break;   
          default: //====================================================
                   System.out.println("Opção inválida.");break; }
        }while(continuar=true); 

  }

}[/code]