2
respostas

[Projeto] [Projeto] Sistema de Biblioteca

A ideia do mini projeto é criar um sistema de gerenciamento de empréstimos/devoluções, permitindo também o cadastro de livros e usuários.

Classe Biblioteca:

class Biblioteca 
{
    public Biblioteca(string nome)
    {
        Nome = nome;
    }
    public string Nome { get; set; }

    public List<Usuario> Usuarios { get; set; } = new List<Usuario>();

    public List<Livro> Livros { get; set; } = new List<Livro>();

    public void AdicionarLivro(Livro livro) =>
        Livros.Add(livro);

    public void RemoverLivro(Livro livro) =>
        Livros.Remove(livro);

    public void ExibirInfoLivros() 
    {
        Console.WriteLine("Lista de livros!");

        foreach (var livro in Livros) 
            livro.ExibirInfoLivro();

        Console.WriteLine();
    }

    public void AdicionarUsuario(Usuario usuario) =>
        Usuarios.Add(usuario);

    public void RemoverUsuario(Usuario usuario) =>
        Usuarios.Remove(usuario);

    public void ExibirInfoUsuarios()
    {
        Console.WriteLine("Lista de usuários!");

        foreach (var usuario in Usuarios)
            usuario.ExibirInfoUsuario();

        Console.WriteLine();
    }

    public void RegistrarEmprestimo(Livro livro, Usuario usuario, int id) 
    {
        usuario.EmprestarLivro(livro, usuario, id);
    }

    public void RegistrarDevolucao(Usuario usuario, int idEmp) 
    {
        usuario.DevolverLivro(idEmp);
    }

    public void ExibirEmprestimosUsuario(Usuario usuario) 
    {
        Console.WriteLine("Lista de emprestimos!");
        usuario.ExibirEmprestimos();
        Console.WriteLine();
    }

    public void ExibirDevolucoesUsuario(Usuario usuario)
    {
        Console.WriteLine("Lista de devoluções!");
        usuario.ExibirDevolucoes();
        Console.WriteLine();
    }


}

Classe Livro:

class Livro 
{
    public Livro(int id, string nome, string autor)
    {
        Id = id;
        Nome = nome;
        Autor = autor;
    }

    public int Id { get; set; }
    public string Nome { get; set; }
    public string Autor { get; set; }
    public string InformacoesLivro =>
        $"\nNome: {this.Nome}\nAutor: {this.Autor}";

    public void ExibirInfoLivro() =>
        Console.WriteLine(InformacoesLivro);
    
}

Classe Usuario:

class Usuario 
{
    private List<Emprestimo> emprestimos = new List<Emprestimo>();
    private List<Emprestimo> emprestimosDevolvidos = new List<Emprestimo>();

    public Usuario(int id, string nome, int idade, string cpf, string email)
    {
        Id = id;
        Nome = nome;
        Idade = idade;
        Cpf = cpf;
        Email = email;
    }
    public int Id { get; set; }
    public string Nome { get; set; }
    public int Idade { get; set; }
    public string Cpf { get; set; }
    public string Email { get; set; }

    public string InfoUsuario =>
        $"\nNome: {this.Nome}\nIdade: {this.Idade}\nCpf: {this.Cpf}\nE-mail: {this.Email}";

    public void ExibirInfoUsuario() =>
        Console.WriteLine(InfoUsuario);

    public void EmprestarLivro(Livro livro, Usuario usuario, int id) 
    { 
        Emprestimo emprestimo = new Emprestimo(id, livro, usuario, DateTime.Parse("2024-08-18 16:57:00"));
        emprestimos.Add(emprestimo);
    }

    public void DevolverLivro(int IdEmp) 
    {
        foreach (var emp in emprestimos)
        { 
            if (emp.Id == IdEmp) 
            {
                emp.DataDeDevolucao = DateTime.Now;
                emprestimos.Remove(emp);
                emprestimosDevolvidos.Add(emp);
                break;
            }
        }  
    }

    public void ExibirEmprestimos() 
    {
        foreach(var emp in emprestimos)
            emp.ExibirInformacoes();
    }

    public void ExibirDevolucoes()
    {
        foreach (var empD in emprestimosDevolvidos)
            empD.ExibirInformacoes();
    }

}
2 respostas

Classe Emprestimo:

class Emprestimo 
{
    public Emprestimo(int id, Livro livro, Usuario usuario, DateTime dataDeEmprestimo)
    {
        Id = id;
        Livro = livro;
        Usuario = usuario;
        DataDeEmprestimo = dataDeEmprestimo;
    }

    public int Id { get; set; } = 1;
    public Livro Livro { get; set; }
    public Usuario Usuario { get; set; }
    public DateTime DataDeEmprestimo { get; set; }
    public DateTime ?DataDeDevolucao { get; set; }

    public string InfoEmprestimo =>
        $"\nLivro: {this.Livro.Nome}\nUsuário: {this.Usuario.Nome}\nCpf: {this.Usuario.Cpf}\nData do emprestimo: {this.DataDeEmprestimo}";

    public string InfoEmprestimoDevolvido =>
        $"\nLivro: {this.Livro.Nome}\nUsuário: {this.Usuario.Nome}\nCpf: {this.Usuario.Cpf}\nData do emprestimo: {this.DataDeEmprestimo}\nData de devolução: {this.DataDeDevolucao}";

    public void ExibirInformacoes() 
    {
        if (DataDeDevolucao.HasValue) 
            Console.WriteLine(InfoEmprestimoDevolvido);
        else 
            Console.WriteLine(InfoEmprestimo);
    }
            


}
Executar:

Biblioteca biblioteca = new Biblioteca("Biblioteca Teste");

Livro livro1 = new Livro(1, "Lusiadas", "Autor desconhecido");
Livro livro2 = new Livro(2, "Dragon ball", "Akira");
Livro livro3 = new Livro(3, "Diário de um banana", "Jonas");

Usuario usuario = new Usuario(1, "Alfredo", 21, "12345678900", "alfredo@gmail.com");
Usuario usuario2 = new Usuario(2, "Jorge", 20, "12345678900", "jorge@gmail.com");

biblioteca.AdicionarLivro(livro1);
biblioteca.AdicionarLivro(livro2);
biblioteca.AdicionarLivro(livro3);

biblioteca.AdicionarUsuario(usuario);
biblioteca.AdicionarUsuario(usuario2);

biblioteca.RegistrarEmprestimo(livro2, usuario,1);
biblioteca.RegistrarEmprestimo(livro1, usuario,2);
biblioteca.RegistrarEmprestimo(livro2, usuario, 3);

biblioteca.RegistrarEmprestimo(livro3, usuario2, 1);

biblioteca.RegistrarDevolucao(usuario, 1);


biblioteca.ExibirEmprestimosUsuario(usuario);
biblioteca.ExibirDevolucoesUsuario(usuario);

biblioteca.ExibirEmprestimosUsuario(usuario2);

biblioteca.ExibirInfoLivros();

biblioteca.ExibirInfoUsuarios();

Olá, Phelipe, como vai?

Ótimo trabalho com o desenvolvimento do sistema de biblioteca! A estrutura das classes Biblioteca, Livro e Usuario está bem organizada, e você conseguiu implementar funcionalidades importantes, como a gestão de empréstimos e devoluções, de forma clara e objetiva.

Parabéns pelo trabalho! Continue se dedicando.

O fórum está sempre à disposição para te ajudar com qualquer dúvida ou desafio que encontrar. Até mais!