-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
169 lines (156 loc) · 6.83 KB
/
main.py
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
from cartao import Cartao
from compra import Compra
from usuario import Usuario
from menus import Menu
from tabelas import Tabela
from arvoreAVL import ArvoreAVL
import os
class Main():
menu = Menu()
tabelas = Tabela(tamCartao=31, tamUsuario=31)
ArvoreAVL = ArvoreAVL()
def cadCartao(self):
print("Opção selecionada: 1. Cadastrar Cartão\n")
nomeTitular, numeroCartao, dataValidade, bandeiraCartao, codigoSeguranca = self.menu.formCartao()
cartao = Cartao(numeroCartao, nomeTitular,
dataValidade, bandeiraCartao, codigoSeguranca)
cadastro = self.tabelas.hashCompletoCartao(cartao)
if cadastro:
print("Cartão cadastro com sucesso!")
taxa, num_el = self.tabelas.taxaOcupacaoCartao()
self.tabelas.ajustarTabela(taxa)
return cartao, cadastro
print("Cartão de crédito já cadastrado")
return False
def validaCadUser(self, nome, cpf, endereco, cartaoUser):
usuario = Usuario(nome, cpf, endereco, cartaoUser)
cadastro = self.tabelas.hashCompletoUsuario(usuario)
if cadastro:
print("Cadastro realizado com sucesso!")
taxa, num_el = self.tabelas.taxaOcupacaoUsuario()
self.tabelas.ajustarTabelaUsuario(taxa)
else:
print("Usuário já cadastrado!")
def existeCartao(self, existe, nome, cpf, endereco, cartaoUser):
lista_cartoes = []
if existe != False:
lista_cartoes.append(cartaoUser)
opicao = self.menu.novoCartao()
while opicao == 1:
cartaoUser = int(input("Número do cartão: "))
existe_cartao = self.tabelas.buscarCartao(
cartaoUser)
if existe_cartao != False:
if cartaoUser in lista_cartoes:
print(
"O cartão informado, já se encontra na sua lista de cartões")
else:
lista_cartoes.append(
self.tabelas.tabelaCartao[cartaoUser])
else:
cartaoUser, posCard = self.cadCartao()
if cartaoUser != False:
lista_cartoes.append(cartaoUser)
opicao = self.menu.novoCartao()
self.validaCadUser(nome, cpf, endereco, lista_cartoes)
else:
opicao = 1
while opicao == 1:
cartaoUser, posCard = self.cadCartao()
if cartaoUser != False:
lista_cartoes.append(cartaoUser)
opicao = self.menu.novoCartao()
self.validaCadUser(nome, cpf, endereco, lista_cartoes)
return cpf
def cadUser(self):
print("Opção selecionada: 2. Cadastrar Usuário\n")
taxa, num_el = self.tabelas.taxaOcupacaoCartao()
if num_el > 0:
nome, cpf, endereco, cartaoUser = self.menu.formUsuario()
existe_cartao = self.tabelas.buscarCartao(cartaoUser)
else:
nome, cpf, endereco = self.menu.formUsuario2()
cartaoUser, posCard = self.cadCartao()
existe_cartao = self.tabelas.buscarCartao(cartaoUser.numeroCartao)
cpf2 = self.existeCartao(
existe_cartao, nome, cpf, endereco, cartaoUser)
return cpf2
def escolhaCartao(self, existe_cpf):
continua = True
while continua:
for i, item in enumerate(self.tabelas.tabelaUsuario[existe_cpf].numCartao):
print(i, "- Cartão: ", item)
opcao = int(input("Opção: "))
if (opcao < 0 or opcao > len(self.tabelas.tabelaUsuario[existe_cpf].numCartao)):
continua = True
else:
continua = False
return opcao
def existeUser(self, cpf):
existe_cpf = self.tabelas.buscaCPF(cpf)
if existe_cpf != False:
print("Gostaria de pagar por qual cartão?")
opcao = self.escolhaCartao(existe_cpf)
print("Compra efetuada com sucesso!")
return opcao, existe_cpf
else:
print("CPF não consta na base de dados!")
return False
def opcao(self):
repete = True
id_compra = 0
while repete:
opc = self.menu.menu()
if (opc > 0 & opc < 9):
taxaCart, num_el_cart = self.tabelas.taxaOcupacaoCartao()
if (opc == 1):
os.system("clear") or None
self.cadCartao()
elif (opc == 2):
os.system("clear") or None
self.cadUser()
elif (opc == 3):
os.system("clear") or None
print("Opção selecionada: 3. Cadastrar Compra\n")
taxa, num_el = self.tabelas.taxaOcupacaoUsuario()
if num_el > 0:
itens, valor, cpf = self.menu.formCompra()
cartao_pos, cpf_pos = self.existeUser(cpf)
if cartao_pos == False:
print("Cadastre um usuário, antes de efetuar a compra")
else:
itens, valor = self.menu.formCompra2()
cpf = self.cadUser()
cartao_pos, cpf_pos = self.existeUser(cpf)
compra = Compra(itens, valor, cpf, id_compra)
id_compra += 1
if cartao_pos is not False:
cartao = self.tabelas.tabelaUsuario[cpf_pos].numCartao[cartao_pos]
self.ArvoreAVL.cadastrarCompra(cartao, compra)
elif (opc == 4):
os.system("clear") or None
print("Opção selecionada: 4. Listar Cartões\n")
self.tabelas.exibirCartoes()
elif (opc == 5):
os.system("clear") or None
print("Opção selecionada: 5. Listar Usuário\n")
self.tabelas.exibirUsuario()
elif (opc == 6):
os.system("clear") or None
print("Opção selecionada: 6. Exibir dados do Usuário\n")
self.tabelas.dadosUsuario()
elif (opc == 7):
print('Opção selecionada: 7. Exibir dados do Cartão')
self.tabelas.dadosCartao()
elif (opc == 8):
print("Opção selecionada: 8. Exibir compras de um cartão")
self.tabelas.comprasCartao()
if (opc > 9 or opc < 0):
os.system("clear") or None
print("ERROR: OPÇÃO DIGITADA INVÁLIDA!\n")
repete = True
if (opc == 0):
print("Fim da execução.")
repete = False
main = Main()
main.opcao()