# criação da classe livro
class Livro:
# criando atributos
def __init__(self, Nome_livro, autor, qtda_copias, usuario_emprestimo=None):
self.titulo = Nome_livro
self.autor = autor
self.num_copias = qtda_copias
self.num_copias_disponiveis = qtda_copias
self.usuario_emprestimo = usuario_emprestimo
# criando função para edição
def alterar_usuario_emprestimo(self, novo_usuario_emprestimo):
self.usuario_emprestimo = novo_usuario_emprestimo
# criação classe Usario para cadstro
class Usuario:
def __init__(self, nome, Matricula, CPF, contato):
self.nome = nome
self.Matricula = Matricula
self.CPF = CPF
self.contato = contato
# Criação classe biblioteca
class Biblioteca:
# Inicialização da classe Biblioteca com duas listas vazias para armazenar os livros e usuários cadastrados.
def __init__(self):
self.livros = []
self.usuarios = []
#Método para cadastrar um livro na biblioteca.
def cadastrar_livro(self, livro):
self.livros.append(livro)
# Método para cadastrar um usuário na biblioteca.
def cadastrar_usuario(self, usuario):
self.usuarios.append(usuario)
# Emprestimo com a atribuição da pessoa ao livro e subtração de unidades disponiveis
#bloco # método emprestar_livro E # método devolver_livro :Solcita as informações para baixa ou ingresso da unidade disponivel
# emprestar_livro
def emprestar_livro(self, titulo, matricula_usuario):
usuario = next((u for u in self.usuarios if u.Matricula == matricula_usuario), None)
if usuario:
for livro in self.livros:
if livro.titulo == titulo:
if livro.num_copias_disponiveis > 0:
livro.num_copias_disponiveis -= 1
livro.alterar_usuario_emprestimo( usuario.nome + " Matricula: " + usuario.Matricula)
print(f"{livro.titulo} emprestado para {usuario.nome}.")
return
else:
print("Este livro não está disponível para empréstimo.")
return
print("Livro não encontrado.")
else:
print("Usuário não encontrado.")
# devolver_livro
def devolver_livro(self, titulo):
for livro in self.livros:
if livro.titulo == titulo:
livro.num_copias_disponiveis += 1
livro.alterar_usuario_emprestimo(None)
print(f"{livro.titulo} devolvido com sucesso.")
return
print("Livro não encontrado.")
# método método para pesquisar livros
def consultar_livros(self, termo):
encontrados = []
for livro in self.livros:
if termo.lower() in livro.titulo.lower() or termo.lower() in livro.autor.lower():
encontrados.append(livro)
if encontrados:
print("Livros encontrados:")
for livro in encontrados:
print(f"Título: {livro.titulo}, Autor: {livro.autor}, Disponíveis: {livro.num_copias_disponiveis}")
else:
print("Nenhum livro encontrado.")
# Metódos para para extração de relatórios
def relatorio_livros_disponiveis(self):
print("Lista de livros disponíveis:")
for livro in self.livros:
print(f"Título: {livro.titulo}, Autor: {livro.autor}, Disponíveis: {livro.num_copias_disponiveis}")
def relatorio_livros_emprestados(self):
print("Lista de livros emprestados:")
for livro in self.livros:
if livro.usuario_emprestimo:
print(f"Título: {livro.titulo}, Autor: {livro.autor}, Usuário de empréstimo: {livro.usuario_emprestimo}")
def relatorio_usuarios(self):
print("Lista de usuários cadastrados:")
for usuario in self.usuarios:
print(f"Nome: {usuario.nome}, Matrícula: {usuario.Matricula}, CPF: {usuario.CPF}, Contato: {usuario.contato}")
# interface simples para usuario
def exibir_menu():
print("\n Gerenciamento de biblioteca")
print("(1) Cadastro de livro")
print("(2) Cadastro de usuário")
print("(3) Emprestimo de livro")
print("(4) Devolução de livro")
print("(5) Procurar livros")
print("(6) Livros disponíveis")
print("(7) Livros emprestados")
print("(8) Usuários cadastrados")
print("(9) Finalizar sessão")
#lógica para execução do menu
def main():
biblioteca = Biblioteca()
while True:
exibir_menu()
opcao = input("Escolha uma das opções: ")
if opcao == "1":
Nome_livro = input("Digite o Nome do livro: ")
autor = input("Digite o nome do autor: ")
qtda_copias = int(input("Digite o número de cópias disponíveis: "))
livro = Livro(Nome_livro, autor, qtda_copias)
biblioteca.cadastrar_livro(livro)
print("Livro cadastrado com sucesso.")
elif opcao == "2":
nome = input("Digite o nome do usuário: ")
Matricula = input("Digite o número de Matrícula: ")
CPF = input("Digite o número de CPF: ")
contato = input("Digite as informações de contato: ")
usuario = Usuario(nome, Matricula, CPF, contato)
biblioteca.cadastrar_usuario(usuario)
print("Usuário cadastrado com sucesso.")
elif opcao == "3":
Nome_livro = input("Digite o título do livro a ser emprestado: ")
matricula_usuario = input("Digite o número de matrícula do usuário: ")
biblioteca.emprestar_livro(Nome_livro, matricula_usuario)
elif opcao == "4":
Nome_livro = input("Digite o título do livro a ser devolvido: ")
biblioteca.devolver_livro(Nome_livro)
elif opcao == "5":
termo = input("Digite o termo de busca (título ou autor): ")
biblioteca.consultar_livros(termo)
elif opcao == "6":
biblioteca.relatorio_livros_disponiveis()
elif opcao == "7":
biblioteca.relatorio_livros_emprestados()
elif opcao == "8":
biblioteca.relatorio_usuarios()
elif opcao == "9":
print("Voltar")
break
else:
print("Opção inválida. Tente novamente.")
if __name__ == "__main__":
main()