namespace RepositorioLivrosICC
{
public class RepositorioLivros
{
public static RepositorioLivros instance = null;
private List<Livro> repositorioLivros;
private int indice;
public static RepositorioLivros getInstance()
{
if (instance == null)
{
instance = new RepositorioLivros();
}
return instance;
}
private RepositorioLivros()
{
this.repositorioLivros = new List<Livro>();
this.indice = 1;
}
public void inserirLivro(Livro l)
{
l.setCodigo(indice);
indice++;
this.repositorioLivros.Add(l);
}
public bool remover(Livro l)
{
bool removeu = false;
foreach (Livro aux in this.repositorioLivros)
{
if (aux.getCodigo() == l.getCodigo())
{
this.repositorioLivros.Remove(l);
removeu = true;
}
}
return removeu;
}
public bool procurar(int index)
{
bool achou = false;
foreach (Livro aux in this.repositorioLivros)
{
if (aux.getCodigo() == index)
{
achou = true;
}
}
return achou;
}
public string listar()
{
string retorno = "";
foreach (Livro l in this.repositorioLivros)
{
retorno += l.ToString();
}
return retorno;
}
}
public class Livro : Object
{
private string nome;
private int codigo;
private Autor autor;
public Livro(string nome, Autor autor)
{
this.setAutor(autor);
this.setAutor(autor);
}
public int getCodigo()
{
return this.codigo;
}
public void setCodigo(int codigo)
{
if (codigo > 0)
{
this.codigo = codigo;
}
else
{
Console.WriteLine("Codigo inválido");
}
}
public void setNome(string nome)
{
if (nome != null)
{
this.nome = nome;
}
else
{
Console.WriteLine("Nome do livro inválido");
}
}
public void setAutor(Autor autor)
{
if (autor != null)
{
this.autor = autor;
}
}
public string getNome()
{
return this.nome;
}
public Autor getAutor()
{
return this.autor;
}
public override string ToString()
{
string retorno = "";
retorno += "\nCodigo Livro: " + this.codigo + "\nNome Livro:" + this.nome + this.autor.ToString();
return retorno;
}
}
public class Autor : Object
{
private string nome;
private string cpf;
public Autor(string nome, string cpf)
{
this.setCpf(cpf);
this.setNome(nome);
}
private void setNome(string nome)
{
if (nome != null)
{
this.nome = nome;
}
else
{
Console.WriteLine("Nome autor inválido");
}
}
public void setCpf(string cpf)
{
if (cpf != null)
{
this.cpf = cpf;
}
else
{
Console.WriteLine("Cpf inválido");
}
}
public string getNome()
{
return this.nome;
}
public string getCpf()
{
return this.cpf;
}
public override string ToString()
{
string retorno = "";
retorno += "\nNome Autor: " + this.nome + "\nCpf: " + this.cpf;
return retorno;
}
}
class Program
{
static void Main(string[] args)
{
int opcao = -1;
try
{
RepositorioLivros repositorio = new RepositorioLivros();
Autor aziz = new Autor("Andre Aziz", "12738172398");
Autor autor1 = new Autor("Carlos Julian", "1273861237");
Livro livro1 = new Livro("Arquitetura de computadores", aziz);
Livro livro2 = new Livro("Metodologia Cientifica", autor1);
repositorio.inserirLivro(livro1);
repositorio.inserirLivro(livro2);
string aux;
do
{
Console.WriteLine("========== Menu ==========");
Console.WriteLine("1 - Inserir Livro ");
Console.WriteLine("2 - Remover Livro ");
Console.WriteLine("3 - Listar Livros");
Console.WriteLine("0 - Sair");
Console.WriteLine("==========================");
Console.WriteLine("Digite uma opcao: ");
aux = Console.ReadLine();
opcao = Convert.ToInt32(aux);
switch (opcao)
{
case 1:
string nome, cpf, nomeLivro;
Console.WriteLine("Digite as informações do autor: ");
Console.WriteLine("Nome Autor: ");
nome = Console.ReadLine();
Console.WriteLine("CPF: ");
cpf = Console.ReadLine();
Console.WriteLine("Digite as informações do Livro: ");
Console.WriteLine("Nome Livro: ");
nomeLivro = Console.ReadLine();
Autor temp = new Autor(nome, cpf);
Livro temp1 = new Livro(nomeLivro, temp);
repositorio.inserirLivro(temp1);
break;
case 2:
break;
case 3:
Console.WriteLine("==== Listar ====");
repositorio.listar();
break;
case 0:
break;
default:
Console.WriteLine("Opção Invalida");
break;
}
} while (opcao != 0);
}
catch (NullReferenceException ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
I tried everything and did not find the error.