import csv
Armazenamento de dados usando Dicionários
livros = {}
usuarios = {}
def cadastrar_livro():
codigo = input("Digite o código do livro: ")
titulo = input("Digite o título do livro: ")
# Criamos um dicionário dentro do dicionário 'livros'
livros[codigo] = {
"titulo": titulo,
"situacao": "disponível",
"nome_aluno": "",
"matricula_aluno": "",
"data_devolucao": ""
}
print(f"\nLivro '{titulo}' cadastrado com sucesso!")
def cadastrar_usuario():
matricula = input("Digite a matrícula do aluno: ")
nome = input("Digite o nome do aluno: ")
usuarios[matricula] = nome
print(f"\nUsuário {nome} cadastrado!")
def consultar_livros():
if not livros:
print("\nNenhum livro cadastrado no sistema.")
return
print("\n--- Acervo da Biblioteca ---")
for cod, info in livros.items():
print(f"Código: {cod} | Título: {info['titulo']} | Status: {info['situacao']}")
def emprestar_livro():
codigo = input("Código do livro que deseja emprestar: ")
if codigo in livros:
if livros[codigo]['situacao'] == "disponível":
matricula = input("Digite a matrícula do aluno: ")
if matricula in usuarios:
# Atualizando os dados do empréstimo
livros[codigo]['situacao'] = "emprestado"
livros[codigo]['nome_aluno'] = usuarios[matricula]
livros[codigo]['matricula_aluno'] = matricula
livros[codigo]['data_devolucao'] = input("Data prevista de devolução (dd/mm/aaaa): ")
print("\nEmpréstimo registrado com sucesso!")
else:
print("\nErro: Matrícula não encontrada. Cadastre o usuário primeiro.")
else:
print("\nErro: Este livro já está emprestado.")
else:
print("\nErro: Código de livro inexistente.")
def devolver_livro():
codigo = input("Código do livro a ser devolvido: ")
if codigo in livros and livros[codigo]['situacao'] == "emprestado":
# Resetando os campos para o estado original
livros[codigo]['situacao'] = "disponível"
livros[codigo]['nome_aluno'] = ""
livros[codigo]['matricula_aluno'] = ""
livros[codigo]['data_devolucao'] = ""
print("\nDevolução concluída!")
else:
print("\nErro: O livro não consta como emprestado ou não existe.")
def gerar_relatorio():
print("\n" + "="*30)
print("RELATÓRIO GERAL")
print("="*30)
for cod, dados in livros.items():
print(f"Livro: {dados['titulo']} ({cod})")
print(f"Status: {dados['situacao']}")
if dados['situacao'] == "emprestado":
print(f"Emprestado para: {dados['nome_aluno']} (Mat: {dados['matricula_aluno']})")
print(f"Devolução em: {dados['data_devolucao']}")
print("-" * 20)
def salvar_csv():
# Define o nome do arquivo conforme exigido na entrega
nome_arquivo = 'relatorio_biblioteca.csv'
with open(nome_arquivo, mode='w', newline='', encoding='utf-8') as file:
colunas = ['codigo', 'titulo', 'situacao', 'nome_aluno', 'matricula_aluno', 'data_devolucao']
writer = csv.DictWriter(file, fieldnames=colunas)
writer.writeheader()
for cod, info in livros.items():
# Combina o código (chave) com o restante das informações
linha = {'codigo': cod, **info}
writer.writerow(linha)
print(f"\nArquivo '{nome_arquivo}' gerado com sucesso!")
def menu():
while True:
print("\n--- SISTEMA DE BIBLIOTECA ---")
print("1. Cadastrar livro")
print("2. Cadastrar usuário")
print("3. Consultar livros")
print("4. Emprestar livro")
print("5. Devolver livro")
print("6. Gerar relatório")
print("7. Salvar relatório em arquivo .csv")
print("8. Sair")
opcao = input("Selecione uma opção: ")
if opcao == '1': cadastrar_livro()
elif opcao == '2': cadastrar_usuario()
elif opcao == '3': consultar_livros()
elif opcao == '4': emprestar_livro()
elif opcao == '5': devolver_livro()
elif opcao == '6': gerar_relatorio()
elif opcao == '7': salvar_csv()
elif opcao == '8':
print("Encerrando programa...")
break
else:
print("Opção inválida, tente novamente.")
if name == "main":
menu()
import csv
Armazenamento de dados usando Dicionários
livros = {}
usuarios = {}
def cadastrar_livro():
codigo = input("Digite o código do livro: ")
titulo = input("Digite o título do livro: ")
# Criamos um dicionário dentro do dicionário 'livros'
livros[codigo] = {
"titulo": titulo,
"situacao": "disponível",
"nome_aluno": "",
"matricula_aluno": "",
"data_devolucao": ""
}
print(f"\nLivro '{titulo}' cadastrado com sucesso!")
def cadastrar_usuario():
matricula = input("Digite a matrícula do aluno: ")
nome = input("Digite o nome do aluno: ")
usuarios[matricula] = nome
print(f"\nUsuário {nome} cadastrado!")
def consultar_livros():
if not livros:
print("\nNenhum livro cadastrado no sistema.")
return
print("\n--- Acervo da Biblioteca ---")
for cod, info in livros.items():
print(f"Código: {cod} | Título: {info['titulo']} | Status: {info['situacao']}")
def emprestar_livro():
codigo = input("Código do livro que deseja emprestar: ")
def devolver_livro():
codigo = input("Código do livro a ser devolvido: ")
if codigo in livros and livros[codigo]['situacao'] == "emprestado":
# Resetando os campos para o estado original
livros[codigo]['situacao'] = "disponível"
livros[codigo]['nome_aluno'] = ""
livros[codigo]['matricula_aluno'] = ""
livros[codigo]['data_devolucao'] = ""
print("\nDevolução concluída!")
else:
print("\nErro: O livro não consta como emprestado ou não existe.")
def gerar_relatorio():
print("\n" + "="*30)
print("RELATÓRIO GERAL")
print("="*30)
for cod, dados in livros.items():
print(f"Livro: {dados['titulo']} ({cod})")
print(f"Status: {dados['situacao']}")
if dados['situacao'] == "emprestado":
print(f"Emprestado para: {dados['nome_aluno']} (Mat: {dados['matricula_aluno']})")
print(f"Devolução em: {dados['data_devolucao']}")
print("-" * 20)
def salvar_csv():
# Define o nome do arquivo conforme exigido na entrega
nome_arquivo = 'relatorio_biblioteca.csv'
with open(nome_arquivo, mode='w', newline='', encoding='utf-8') as file:
colunas = ['codigo', 'titulo', 'situacao', 'nome_aluno', 'matricula_aluno', 'data_devolucao']
writer = csv.DictWriter(file, fieldnames=colunas)
def menu():
while True:
print("\n--- SISTEMA DE BIBLIOTECA ---")
print("1. Cadastrar livro")
print("2. Cadastrar usuário")
print("3. Consultar livros")
print("4. Emprestar livro")
print("5. Devolver livro")
print("6. Gerar relatório")
print("7. Salvar relatório em arquivo .csv")
print("8. Sair")
if name == "main":
menu()