class Principal: def __init__(self): self.__banco = Banco() self.__correntistaAtual = None def display_correntistas(self): self.__banco.display_correntistas() print('=' * 10) print('Escolha um correntista:') opcao = input() return int(opcao) def display_correntistas_por_nome(self): print('Digite uma parte do nome:') nome = input() lista = self.__banco.find_correntista_por_nome(nome) if len(lista) > 0: print('=' * 10) print('Escolha um correntista:') opcao = int(input()) return int(opcao) else: print('Não foi encontrado nenhum correntista com este nome.') input() return None def cadastra_correntista(self): print('Digite o nome:') nome = input() print('Saldo inicial:') saldoinicial = int(input()) print('CPF:') cpf = input() cp = Cpf(cpf) cont = self.__banco.get_correntistas_count c = Correntista((cont + 1), nome, cp, saldoinicial) print(c.serialize()) jsonstr = json.dumps(c.serialize(), indent=4) print(jsonstr) input() data = json.loads(jsonstr) cdeserializado = Correntista.deserialize(data) self.__banco.cadastra_correntista(cdeserializado) def displayMenu(self): clear() print('Operações') print('=' * 10) print('1 - Cadastrar correntista') print('2 - Selecionar correntista por Código') print('3 - Selecionar correntista por Nome') print('4 - Exibir a auditoria') print('5 - Listar auditoria por CPF') print('6 - Listar auditoria serializado') print('7 - Sair') opcao = int(input()) return opcao def displaySubMenu(self): clear() print('Operações para o correntista => "{}"'.format( self.__correntistaAtual.nome)) print('Codigo: {}, Nome: {}, Saldo: {}'.format( self.__correntistaAtual.codigo, self.__correntistaAtual.nome, self.__correntistaAtual.saldo)) print('=' * 10) print('1 - Fazer Depósito') print('2 - Fazer Saque') print('3 - Ver Histórico') print('4 - Menu principal') opcao = int(input()) return opcao def displayHistorico(self): for hist in self.__correntistaAtual: print("Operacao: {}, Valor: {}".format(hist.operacao, hist.valor)) def findCorrentista(self, codigo): return self.__banco.find_correntista_por_codigo(codigo) def movimentaCorrentista(self): if self.__correntistaAtual == None: print('Correntista não encontrado.') input() else: opcao = self.displaySubMenu() if opcao == 1: print('Digite o valor do depósito:') deposito = int(input()) self.__correntistaAtual.deposita(deposito) elif opcao == 2: print('Digite o valor do saque:') saque = int(input()) self.__correntistaAtual.saque(saque) elif opcao == 3: self.displayHistorico() input() def executa(self): while True: try: opcao = int(self.displayMenu()) if opcao == 1: self.cadastra_correntista() elif opcao == 2: codigo = self.display_correntistas self.__correntistaAtual = self.findCorrentista(codigo) self.movimentaCorrentista() elif opcao == 3: codigo = self.display_correntistas_por_nome() if codigo is not None: self.__correntistaAtual = self.findCorrentista(codigo) self.movimentaCorrentista() elif opcao == 4: audit = AuditoriaCorrentistas() audit.get_instance().listar_todos() input() elif opcao == 5: print('Digite o CPF:') cpf = str(input()) c = Cpf(cpf) audit = AuditoriaCorrentistas() audit.get_instance().listar_por_cpf(c) input() elif opcao == 6: audit = AuditoriaCorrentistas() print(audit.get_instance().serialize()) input() elif opcao >= 7: break except SaldoNegativo: print( 'O correntista {} ficará com saldo negativo. Operação não executada.' .format(self.__correntistaAtual.nome)) input() except OpcaoInvalida: print('Opção inválida.') input() except ListaVazia: print('Não há correntistas cadastrados.') input() except ValueError: print('Opção inválida.') input() except Exception as e: raise # print("outra exceção:" + e.__class__.__name__) # print("Mensagem:" + str(e)) input()