-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcrud-e-menu-inicial
114 lines (95 loc) · 3.91 KB
/
crud-e-menu-inicial
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import os
os.system("cls")
biblioteca = []
# Função para abrir o arquivo CSV
def abrir_arquivo():
return open("bestsellers with categories.csv", "a+", encoding="utf-8")
# abaixo, seguem as funções CRUD
# (C - CREATE) Função para adicionar um livro
def adicionar_livro():
titulo = input("Digite o título do livro: ")
autor = input("Digite o autor do livro: ")
# validando o ano
while True:
ano = input("Digite o ano de publicação do livro: ")
if not ano.isdigit() or len(ano) != 4:
print("Ano inválido. Digite um ano válido com 4 dígitos.")
else:
break
# Validando o preço
while True:
preco = input("Digite o preço do livro: ")
try:
float(preco)
break
except ValueError:
print("Preço inválido. Digite um valor numérico.")
categorias = input("Digite as categorias do livro (separadas por vírgula): ").split(',')
categorias = [categoria.strip() for categoria in categorias]
# Abre o arquivo no modo de leitura e escrita
with abrir_arquivo() as arquivo:
# Escreve os dados do livro no arquivo
arquivo.write(f"{titulo},{autor},{ano},{','.join(categorias)},{preco}\n")
print("Livro adicionado com sucesso!")
# (R - READ) Função para listar os livros
def listar_livros():
if not biblioteca:
print("A biblioteca está vazia.")
else:
for i, livro in enumerate(biblioteca):
print(f"ID: {i}, Título: {livro['Título']}, Autor: {livro['Autor']}, Ano: {livro['Ano']}, Categorias: {', '.join(livro['Categorias'])}, Preço: {livro['Preço']}")
print("-" * 50) # Separador
# (U - UPDATE) Função para atualizar um livro
def atualizar_livro():
listar_livros()
id_livro = int(input("Digite o ID do livro que deseja atualizar: "))
if id_livro < 0 or id_livro >= len(biblioteca):
print("ID inválido. Tente novamente.")
return
livro = biblioteca[id_livro]
print("Informações atuais do livro:")
print(f"Título: {livro['Título']}, Autor: {livro['Autor']}, Ano: {livro['Ano']}, Categorias: {', '.join(livro['Categorias'])}, Preço: {livro['Preço']}")
novo_titulo = input("Digite o novo título (ou deixe em branco para manter o mesmo): ")
novo_autor = input("Digite o novo autor (ou deixe em branco para manter o mesmo): ")
novo_ano = input("Digite o novo ano (ou deixe em branco para manter o mesmo): ")
novas_categorias = input("Digite as novas categorias (separadas por vírgula) ou deixe em branco: ").split(',')
novas_categorias = [categoria.strip() for categoria in novas_categorias]
novo_preco = input("Digite o novo preço (ou deixe em branco para manter o mesmo): ")
if novo_titulo:
livro["Título"] = novo_titulo
if novo_autor:
livro["Autor"] = novo_autor
if novo_ano:
livro["Ano"] = novo_ano
if novas_categorias:
livro["Categorias"] = novas_categorias
if novo_preco:
livro["Preço"] = novo_preco
print("Livro atualizado com sucesso!")
# (D - DELETE) Função para excluir um livro
def excluir_livro():
listar_livros()
id_livro = int(input("Digite o ID do livro que deseja excluir: "))
if id_livro < 0 or id_livro >= len(biblioteca):
print("ID inválido. Tente novamente.")
return
livro_excluido = biblioteca.pop(id_livro)
print(f"Livro '{livro_excluido['Título']}' excluído com sucesso!")
# Menu principal
while True:
print("1.Adicionar\t2.Visualizar\t3.Atualizar\t4.Excluir\t5.Sair")
escolha = int(input("Digite a opção escolhida: "))
limpar_tela()
if escolha == 1:
adicionar_livro()
elif escolha == 2:
listar_livros()
elif escolha == 3:
atualizar_livro()
elif escolha == 4:
excluir_livro()
elif escolha == 5:
print("Até mais!")
break
else:
print("Opção inválida. Tente novamente.")