def test_conta_saque(): c = Cliente('nome', 99999999, '*****@*****.**') cc = Conta([c], 1, 100) cc.sacar(50) assert cc.saldo == 50, 'Saldo da conta incorreto' assert ('saque', 50) in cc.tirar_extrato(), ('Saque não registrado no extrato')
def test_conta_deposito(): c = Cliente('nome', 99999999, '*****@*****.**') cc = Conta([c], 1, 100) cc.depositar(200) assert cc.saldo == 300, 'Saldo da conta incorreto' assert ('deposito', 200) in cc.tirar_extrato(), ('Depósito não registrado no extrato')
def __init__(self, saldo): Conta.__init__(self,saldo)
def test_conta_extrato(): c = Cliente('nome', 99999999, '*****@*****.**') cc = Conta([c], 1, 100) extrato = cc.tirar_extrato() assert type(extrato) == list, 'O extrato deve ser uma lista' assert len(extrato) == 1, ( 'O extrato deve conter apenas uma entrada para esse teste') assert ('saldo inicial', 100) in extrato, ('Saque inicial não registrado no extrato')
def __init__(self, clientAddress, clientsocket, sinc): threading.Thread.__init__(self) self._clientAddress = clienteAddress self._csocket = clientsocket self._sinc = sinc print("Nova conexão: ", clientAddress) self._contas = Conta() self._cpf_autenticado = None
def adicInic(self, ident, cpf, saldo): no = Conta(ident, cpf, saldo) if self.__inicio == None: no.prox = self.inicio self.__inicio = no self.__tamanho += 1 else: print('Lista já tem o primeiro objeto')
def acessoContas(self): numAcessoConta, ok = QInputDialog.getText( self, 'Acessar Conta', 'Digite o número da conta:') #outro dialogo. if numAcessoConta in self.contas: self.conta = Conta(numAcessoConta, self.contas[numAcessoConta]) self.visaoGeralCC( ) #Para chamar os outros botoes "saldo, saque, etc." qndo clicar para acessar conta else: errAcsConta = QMessageBox.warning( self, "Erro", "Não existe uma conta cadastrada com esse número!")
def buscar(self, numero): with connect(self._dados_con) as conn: cur = conn.cursor() cur.execute('SELECT * FROM conta WHERE codigo = %s', [numero]) linha = cur.fetchall() conta = Conta(linha[0][1], linha[0][2], linha[0][3], linha[0][4]) conta.codigo = linha[0][0] daocl = clienteDao() busc = daocl.buscar(int(linha[0][5])) conta.addCliente(busc) return conta conn.commit() cur.close()
def test_conta_saque_erro(): c = Cliente('nome', 99999999, '*****@*****.**') cc = Conta([c], 1, 100) try: cc.sacar(150) except ValueError: assert cc.saldo == 100, ( 'O saldo não deve ser alterado quando o saque for inválido') assert ('saque', 150) not in cc.tirar_extrato(), ( 'Um saque inválido não deve ser registrado no extrato') except Exception: assert False, 'Erro diferente de ValueError para saque inválido' else: assert False, 'Permitiu a realização de um saque inválido'
def Main(): '''Metodo main''' contaCriada = None resposta = "S" while resposta == "S": print("DIGITE 1 PARA CADASTRAR CLIENTE") print("DIGITE 2 PARA SACAR") print("DIGITE 3 PARA DEPOSITAR") print("DIGITE 4 PARA EXTRATO") print('DIGITE 5 PARA MOSTRAR HISTORICO') print('DIGITE 0 PARA SAIR') entrada = int(input("ESCOLHA A FUNÇÃO: ")) if entrada == 1: '''Entrada 1, entrada do cliente''' a = input("Nome:") b = input("Sobrenome:") c = input("CPF:") d = Cliente(nome=a, sobrenome=b, cpf=c) s = int(input("Número da conta:")) x = int(input("Saldo inicial da conta:")) y = int(input("Limite da conta:")) z = Data() contaCriada = Conta(numero=s, titular=d, saldo=x, limite=y, dataabertura=z) if entrada == 2: '''Entrada 2, entrada para o saque''' valorSaque = int(input('valor do saque: ')) contaCriada.saca(valorSaque) if entrada == 3: '''Entrada 3, para depositar''' valorDeposito = int(input("Valor do Deposito: ")) contaCriada.deposita(valorDeposito) if entrada == 4: '''Entrada 4, para ver o extrato''' contaCriada.extrato() if entrada == 5: '''Entrada 5, para mostrar o historico''' contaCriada.mostrarListaHistorico() resposta = str(input("DESEJA FAZER NOVA TRANSAÇÃO?[S/N] ")).upper()
def listar(self): with connect(self._dados_con) as conn: cur = conn.cursor() lista_conta = [] cur.execute('SELECT * FROM conta') for linha in cur.fetchall(): conta = Conta(linha[1], linha[2], linha[3], linha[4]) conta.codigo = linha[0] daocl = clienteDao() busc = daocl.buscar(int(linha[5])) conta.addCliente(busc) lista_conta.append(conta) return lista_conta conn.commit() cur.close()
class teste: conta1 = Conta(100) conta1.imprimir_saldo() conta2 = Conta_corrente(1000) conta2.imprimir_saldo() conta2.depositar(150) conta2.retirar(100) conta2.imprimir_saldo() conta3 = Conta_poupanca(500) conta3.imprimir_saldo() conta3.poupar() conta3.imprimir_saldo() conta4 = Conta_imposto(500) conta4.calcular_imposto(5) conta4.imprimir_saldo()
def abre_conta(self, clientes, saldo_inicial): if saldo_inicial < 0: raise ValueError else: num_contas = len(self.__contas)+1 c1 = Conta(clientes, num_contas, saldo_inicial) self.__contas.append(c1)
def abre_conta(self, lista_clientes, saldo_inicial): if saldo_inicial < 0: raise ValueError() else: self.__contas.append( Conta(lista_clientes, self.__ultimaconta + 1, saldo_inicial)) self.__ultimaconta = self.__ultimaconta + 1
def salvarConta(): numero = request.form["numero"] agencia = request.form["agencia"] saldo = request.form["saldo"] tipo = request.form["tipo"] cliente = request.form["cliente"] daocliente = clienteDao() c = daocliente.buscar(int(cliente)) conta = Conta(numero, agencia, saldo, tipo) conta.addCliente(c) daoconta = contaDao() if (request.values.has_key("codigo") == True): cod = request.form["codigo"] conta.codigo = int(cod) daoconta.salvar(conta) return redirect('/conta/listar')
def abre_conta(self, clientes, saldo): if saldo < 0: raise ValueError else: numero = len(self.__contas) + 1 c1 = Conta(clientes, numero, saldo) self.__contas.append(c1)
def cadastro(self): nome = self.tela_cadastro.lineEditNome.text() sobrenome = self.tela_cadastro.lineEditSobrenome.text() cpf = self.tela_cadastro.lineEditCpf.text() senha = self.tela_cadastro.lineEditSenha.text() if not (nome == '' or sobrenome == '' or cpf == '' or senha == ''): if cpf not in self.banco.clientes: c = Cliente(nome, sobrenome, cpf) if (self.banco.cadastrar_cliente(c)): conta = Conta(c, senha) if self.banco.cadastrar_conta(conta): QMessageBox.information( None, '$Bank', f'O seu cadastro foi realizado!\nNumero da conta: {conta.numero}' ) self.abrirTelaInicial() else: QMessageBox.information(None, '$Bank', 'Erro ao cadastrar dados') else: QMessageBox.information(None, '$Bank', 'O CPF informado já está cadastrado!') else: QMessageBox.information( None, '$Bank', 'É obrigatório preencher todos os campos!')
def test_conta_clientes(): c = Cliente('nome', 99999999, '*****@*****.**') cc = Conta([c], 1, 0) clientes = cc.clientes assert len(clientes) == 1, 'Esta conta deveria ter apenas 1 cliente' assert clientes[0].nome == 'nome', 'Nome do cliente incorreto' assert clientes[0].email == '*****@*****.**', 'Email do cliente incorreto' assert clientes[0].telefone == 99999999, 'Telefone do cliente incorreto'
def cadastro(self,nConta,feedBackLabel): if self.contas.has_key(nConta) : feedBackLabel["text"]="Conta já cadastrada!" else: conta = Conta(nConta) self.contas[nConta] = conta feedBackLabel["text"]="Conta cadastrada com sucesso!"
def criar_conta(cliente_gerado): print('\t[ ! ] Finalizando cadastro do cliente: {}'.format( cliente_gerado.nome)) saldo = float( input('\n\t[ ? ] Digite a quantidade em reais que a conta terá. | R$')) limite = float(input('\t[ ? ] Digite o limite da conta em reais. | R$')) conta_cliente = Conta(cliente_criado, saldo, limite) print('\n\t[ / ] Conta do cliente criada com sucesso!\n') return conta_cliente
def criar_conta(self): Cliente.clientes.append(self) print( "Agora que seu cadastro foi aceito, sua conta será gerada! Responda as perguntas necessárias!" ) sleep(15) agencia = "0001" numero_conta = "" for i in range(1, 7): numero = randint(0, 9) if i % 5 == 0: numero_conta = numero_conta + str(numero) + "-" else: numero_conta = numero_conta + str(numero) taxa_rendimento = 0 tipo_conta = "Conta Corrente" nome_titular = self.nome saldo = 0 tipo_produto = "Conta" conta_criada = Conta(saldo, nome_titular, tipo_produto, agencia, numero_conta, taxa_rendimento, tipo_conta) while conta_criada.add_conta() != 0: numero_conta = "" for i in range(1, 7): numero = randint(0, 9) if i % 5 == 0: numero_conta = numero_conta + str(numero) + "-" else: numero_conta = numero_conta + str(numero) conta_criada = Conta(saldo, nome_titular, tipo_produto, agencia, numero_conta, taxa_rendimento, tipo_conta) else: self.contas.append(conta_criada)
def criar_conta(cliente): clear_screen() print('\nAdicionar nova conta') print(f'Nome do cliente: {cliente.nome}') saldo = int(input('Saldo:')) limite = int(input('Limite:')) return Conta(cliente, saldo, limite)
def test_cria_conta(): try: c = Cliente('nome', 99999999, '*****@*****.**') cc = Conta([c], 1, 0) except Exception: assert False, 'Erro ao criar conta' else: assert hasattr(cc, 'clientes'), 'Não criou o atributo público clientes' assert hasattr(cc, 'numero'), 'Não criou o atributo público numero' assert hasattr(cc, 'saldo'), 'Não criou o atributo público saldo'
def main(): #Para conseguir utilizar os valores e os métodos da conta, primeiramente é necessário instancia-la nova_conta = Conta() print('Uma nova conta for criada ') nova_conta.depositar(0) nova_conta.depositar(0) nova_conta.sacar() print(f'Novo saldo: {nova_conta.saldo}')
def abrir_conta(self, valor_min): self.valor = valor_min lista_numero = random.sample(range(0, 10), 8) global conta, Conta conta = '' if self.idade < 18: print('O cliente {} é menor de idade e não pode abrir a conta'. format(self.nome)) elif self.idade >= 18: if self.valor == 100: from conta import Conta for numero in lista_numero: conta += str(numero) Conta.realizar_deposito(conta, self.valor) #print('Número da conta:', conta) print( 'Conta aberta com sucesso. Seu saldo inicial é de R$ {0:.2f} reais' .format(self.valor))
def nova_conta(self): print_center("Cadastrar nova conta\n") print_center("=" * 80) nome_cliente = None telefone_cliente = None tipo_cliente = None limite_cliente = 0 nome_cliente = raw_input("Nome do cliente: ")[:50].strip().upper() if (len(nome_cliente) <= 3): raw_input("\nO nome informado e invalido!") return telefone_cliente = raw_input("Num. telefone: ")[:15].strip() if (len(telefone_cliente) <= 8): raw_input("\nO telefone informado e invalido!") return tipo_cliente = raw_input( "Qual a categoria deste cliente? [C]omun ou [E]special: " )[:1].strip().upper() if ((tipo_cliente != "C") and (tipo_cliente != "E")): raw_input("\nO tipo informado e invalido!") return if (tipo_cliente == "E"): limite_cliente = float( raw_input("Qual limite bancario deste cliente? $ ") [:15].strip()) if ((limite_cliente <= 0) or (limite_cliente > 10000)): raw_input( "\nO limite informado e invalido (o max. permitido e $ 10.000)!" ) return novo_cliente = Cliente(nome=nome_cliente, telefone=telefone_cliente) num_cadastro_cliente = novo_cliente.getID() if (tipo_cliente == "C"): nova_conta = Conta(cliente_id=num_cadastro_cliente) elif (tipo_cliente == "E"): nova_conta = ContaEspecial(cliente_id=num_cadastro_cliente) nova_conta.limite(limite_cliente) self._dataset["CLIENTES"].append(novo_cliente) self._dataset["CONTAS"].append(nova_conta) # persistir dados self.store() self.cabecalho_tela(nova_conta, novo_cliente) print_center("Cliente cadastrado com sucesso!\n\n") print_center("Codigo de cliente: {:8d}".format( nova_conta.getClienteID())) print_center("Numero conta: {:8d}\n\n\n".format( nova_conta.getNumero())) raw_input("\nPressione [ENTER] para voltar ao menu.") return
def abre_conta(self, clientes, saldo_inicial): if saldo_inicial < 0: raise ValueError try: numero = self.__contas[-1].numero + 1 except IndexError: numero = 1 finally: conta = Conta(clientes, numero, saldo_inicial) self.__contas.append(conta)
def store(self, seed=False): if (seed): # populando com dados de demostracao... clientes = [{ "TIPO": "COMUM", "SALDO_INI": 380.00, "CADASTRO": Cliente("Joao da Silva Filho", "(62) 98001-0001") }, { "TIPO": "COMUM", "SALDO_INI": 50.00, "CADASTRO": Cliente("Maria das gracas meneguel", "(62) 98022-2222") }, { "TIPO": "ESPECIAL", "SALDO_INI": 250000.00, "LIMITE": 1000000, "CADASTRO": Cliente("Silvio Santos", "(11) 98000-0000") }, { "TIPO": "COMUM", "SALDO_INI": 10.00, "CADASTRO": Cliente("Getulio Vargas", "(11) 98044-4444") }, { "TIPO": "ESPECIAL", "SALDO_INI": 500000, "LIMITE": 300000, "CADASTRO": Cliente("Paulo Guedes", "(11) 98000-0001") }] for cliente in clientes: if (cliente["TIPO"] == "COMUM"): conta = Conta(cliente_id=cliente["CADASTRO"].getID(), saldo=cliente["SALDO_INI"]) elif (cliente["TIPO"] == "ESPECIAL"): conta = ContaEspecial( cliente_id=cliente["CADASTRO"].getID(), saldo=cliente["SALDO_INI"]).limite(cliente["LIMITE"]) self._dataset["CLIENTES"].append(cliente["CADASTRO"]) self._dataset["CONTAS"].append(conta) # salvar em arquivo binario compactado... with open(self._filename, 'wb') as fp: fp.write( zlib.compress( pickle.dumps(self._dataset, pickle.HIGHEST_PROTOCOL), 9)) return self
def adicMeio(self, indice, ident, cpf, saldo): if self.__vazia(): return True no = Conta(ident, cpf, saldo) q = 0 p = self.__inicio cont = 1 while cont < indice and p != None: q = p p = p.prox cont += 1 if indice == 0 or p.prox == None: raise ValueError('Posição indicada não é permitida.') no.prox = p.prox p.prox = no p = q self.__tamanho += 1
def adicFim(self, ident, cpf, saldo): if self.__vazia(): return True p = self.inicio while p.prox != None: p = p.prox no = Conta(ident, cpf, saldo) p.prox = no self.__tamanho += 1
class TestExercicio6(unittest.TestCase): def setUp(self): self.conta = Conta('Astrobaldo', 123, 100.00) def teste_consultar_dados_de_uma_conta(self): self.conta.dados |should| equal_to(['Astrobaldo', 123, 100.00]) def teste_sacar_valor_disponivel_de_uma_conta(self): self.conta.sacar(50) self.conta.dados[2] |should| equal_to(50.0) def teste_sacar_valor_nao_disponivel_de_uma_conta(self): self.conta.sacar(200) |should| equal_to("Saldo insuficiente!") self.conta.dados[2] |should| equal_to(100) def teste_depositar_cinquenta_reais_em_uma_conta(self): self.conta.depositar(50) self.conta.dados[2] |should| equal_to(150)
def setUp(self): self.conta = Conta('Astrobaldo', 123, 100.00)
# -*- coding: utf-8 -*- from conta import Conta try: raw_input except NameError: raw_input = input usuario = raw_input("Proprietário da conta: ") saldo = float(raw_input("Saldo do proprietário: ")) conta_usuario = Conta(usuario, saldo) while True: print(""" 1) Consultar saldo atual 2) Realizar depósito 3) Realizar saque """) escolha = raw_input("\033[0;36m Escolha: \033[0m") if escolha == '1': print("Saldo Atual: \033[0;33m R$ %.2f\033[0m\n\n"%conta_usuario.saldo) elif escolha == '2': deposito = float(raw_input("Valor a ser depositado: \033[0;32m")) print("\033[0m") conta_usuario.depositar(deposito) elif escolha == '3':
# -*- coding: utf-8 -*- # Classe testes.py print(60 * "=") from clientes import Cliente from conta import Conta joão = Cliente("João da Silva", "1234-5678") maria = Cliente("Maria Silva", "5678-1234") josé = Cliente("José Silva", "6578-2134") conta1 = Conta([joão], 1, 1000) conta2 = Conta([maria, joão], 2, 500) conta3 = Conta([joão, maria, josé], 3, 5000) conta1.saque(5000) conta2.deposito(300) conta3.deposito(500) conta1.saque(190) conta2.deposito(95.15) conta2.deposito(250) conta3.deposito(150) conta1.extrato() conta2.extrato() conta3.extrato() print(60 * "=")