import random
import csv
def gerar_id_unico(livros):
"""Gera um ID numérico único de 6 dígitos"""
existentes = {livro["id"] for livro in livros}
while True:
codigo = str([Link](100000, 999999))
if codigo not in existentes:
return codigo
def carregar_livros():
"""Carrega livros do arquivo CSV"""
livros = []
try:
with open("[Link]", mode="r", newline="", encoding="utf-8") as
arquivo:
leitor = [Link](arquivo)
for linha in leitor:
# Garante todos os campos com valores padrão se não existirem
livro = {
"id": [Link]("id", ""),
"titulo": [Link]("titulo", ""),
"autor": [Link]("autor", ""),
"editora": [Link]("editora", ""),
"ano": [Link]("ano", ""),
"situacao": [Link]("situacao", "0")
}
[Link](livro)
return livros
except FileNotFoundError:
return []
def salvar_livros(livros):
"""Salva livros no arquivo CSV"""
with open("[Link]", mode="w", newline="", encoding="utf-8") as
arquivo:
campos = ["id", "titulo", "autor", "editora", "ano", "situacao"]
escritor = [Link](arquivo, fieldnames=campos)
[Link]()
[Link](livros)
def adicionar_livro(livros):
"""Cadastra novo livro com validações"""
print("\n=== CADASTRAR LIVRO ===")
id = gerar_id_unico(livros)
titulo = input("Título: ").strip()
autor = input("Autor: ").strip()
editora = input("Editora: ").strip()
# Validação do ano
while True:
ano = input("Ano (4 dígitos): ").strip()
if [Link]() and len(ano) == 4:
break
print("Erro: O ano deve ter exatamente 4 dígitos numéricos.")
# Validação da situação
while True:
situacao = input("Situação (0-Disponível / 1-Emprestado): ").strip()
if situacao in ["0", "1"]:
break
print("Erro: Digite apenas 0 ou 1.")
[Link]({
"id": id,
"titulo": titulo,
"autor": autor,
"editora": editora,
"ano": ano,
"situacao": situacao
})
salvar_livros(livros)
print(f"\nLivro cadastrado com sucesso! ID: {id}")
return 1
def remover_livro(livros):
"""Remove livro por ID"""
print("\n=== REMOVER LIVRO ===")
id = input("Digite o ID do livro: ").strip()
for livro in livros:
if livro["id"] == id:
[Link](livro)
salvar_livros(livros)
print("\nLivro removido com sucesso!")
return 1
print("\nID não encontrado.")
return 0
def listar_todos(livros):
"""Lista todos os livros"""
print("\n=== TODOS OS LIVROS ===")
if not livros:
print("Nenhum livro cadastrado.")
else:
print("{:<8} {:<30} {:<20} {:<20} {:<6} {:<10}".format(
"ID", "Título", "Autor", "Editora", "Ano", "Situação"))
print("-"*90)
for livro in livros:
situacao = "Disponível" if livro["situacao"] == "0" else "Emprestado"
print("{:<8} {:<30} {:<20} {:<20} {:<6} {:<10}".format(
livro["id"],
livro["titulo"],
livro["autor"],
livro["editora"],
livro["ano"],
situacao))
def procurar_livro(livros):
"""Procura livro por ID"""
print("\n=== PROCURAR LIVRO ===")
id = input("Digite o ID do livro: ").strip()
for livro in livros:
if livro["id"] == id:
print("\n{:<15} {}".format("ID:", livro["id"]))
print("{:<15} {}".format("Título:", livro["titulo"]))
print("{:<15} {}".format("Autor:", livro["autor"]))
print("{:<15} {}".format("Editora:", livro["editora"]))
print("{:<15} {}".format("Ano:", livro["ano"]))
print("{:<15} {}".format("Situação:",
"Disponível" if livro["situacao"] == "0" else "Emprestado"))
return
print("\nLivro não encontrado.")
from biblioteca import *
def mostrar_menu():
print("\n" + "="*40)
print(" GESTOR DE BIBLIOTECA")
print("="*40)
print("1 - Cadastrar livro")
print("2 - Remover livro")
print("3 - Listar todos os livros")
print("4 - Procurar livro por ID")
print("5 - Sair")
def main():
livros = carregar_livros()
while True:
mostrar_menu()
opcao = input("\nEscolha uma opção (1-5): ").strip()
if opcao == "1":
adicionar_livro(livros)
elif opcao == "2":
remover_livro(livros)
elif opcao == "3":
listar_todos(livros)
elif opcao == "4":
procurar_livro(livros)
elif opcao == "5":
print("\nEncerrando o programa...")
break
else:
print("\nOpção inválida! Tente novamente.")
if __name__ == "__main__":
main()