You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
def menu():
menu = """\n
*************** MENU ***************
[nu]\tNovo usuário
[nc]\tNova conta
[d]\tDepositar
[lc]\tListar contas
[s]\tSacar
[e]\tExtrato
[q]\tSair
=> """
return input(textwrap.dedent(menu))
def filtrar_cliente(cpf, clientes):
clientes_filtrados = [cliente for cliente in clientes if cliente.cpf == cpf]
return clientes_filtrados[0] if clientes_filtrados else None
def recuperar_conta_cliente(cliente):
if not cliente.contas:
print("\n*** Cliente não possui conta! ***")
return
# FIXME: não permite cliente escolher a conta
return cliente.contas[0]
def depositar(clientes):
cpf = input("Informe o CPF do cliente: ")
cliente = filtrar_cliente(cpf, clientes)
if not cliente:
print("\n*** Cliente não encontrado! ***")
return
valor = float(input("Informe o valor do depósito: "))
transacao = Deposito(valor)
conta = recuperar_conta_cliente(cliente)
if not conta:
return
cliente.realizar_transacao(conta, transacao)
def sacar(clientes):
cpf = input("Informe o CPF do cliente: ")
cliente = filtrar_cliente(cpf, clientes)
if not cliente:
print("\n*** Cliente não encontrado! ***")
return
valor = float(input("Informe o valor do saque: "))
transacao = Saque(valor)
conta = recuperar_conta_cliente(cliente)
if not conta:
return
cliente.realizar_transacao(conta, transacao)
def exibir_extrato(clientes):
cpf = input("Informe o CPF do cliente: ")
cliente = filtrar_cliente(cpf, clientes)
if not cliente:
print("\n*** Cliente não encontrado! ***")
return
conta = recuperar_conta_cliente(cliente)
if not conta:
return
print("\n************ EXTRATO ************")
transacoes = conta.historico.transacoes
extrato = ""
if not transacoes:
extrato = "Não foram realizadas movimentações."
else:
for transacao in transacoes:
extrato += f"\n{transacao['tipo']}:\n\tR$ {transacao['valor']:.2f}"
print(extrato)
print(f"\nSaldo:\n\tR$ {conta.saldo:.2f}")
print("***********************************")
if cliente:
print("\n*** Já existe cliente com esse CPF! ***")
return
nome = input("Informe o nome completo: ")
data_nascimento = input("Informe a data de nascimento (dd-mm-aaaa): ")
endereco = input("Informe o endereço (logradouro, nro - bairro - cidade/sigla estado): ")
cliente = PessoaFisica(nome=nome, data_nascimento=data_nascimento, cpf=cpf, endereco=endereco)
clientes.append(cliente)
print("\n=== Cliente criado com sucesso! ===")
def criar_conta(numero_conta, clientes, contas):
cpf = input("Informe o CPF do cliente: ")
cliente = filtrar_cliente(cpf, clientes)
if not cliente:
print("\n*** Cliente não encontrado, fluxo de criação de conta encerrado! ***")
return
conta = ContaCorrente.nova_conta(cliente=cliente, numero=numero_conta)
contas.append(conta)
cliente.contas.append(conta)
print("\n*** Conta criada com sucesso! ***")
def listar_contas(contas):
for conta in contas:
print("=" * 100)
print(textwrap.dedent(str(conta)))
*************** MENU ***************
[nu] Novo usuário
[nc] Nova conta
[d] Depositar
[lc] Listar contas
[s] Sacar
[e] Extrato
[q] Sair
=> nu
Informe o CPF (somente número): 199430
Informe o nome completo: Marina Freitas
Informe a data de nascimento (dd-mm-aaaa): 30041994
Informe o endereço (logradouro, nro - bairro - cidade/sigla estado): Av 08, 822 - Jd Finotti - Uberlandia MG
=== Cliente criado com sucesso! ===
*************** MENU ***************
[nu] Novo usuário
[nc] Nova conta
[d] Depositar
[lc] Listar contas
[s] Sacar
[e] Extrato
[q] Sair
=> nc
Informe o CPF do cliente: 199430
*** Conta criada com sucesso! ***
*************** MENU ***************
[nu] Novo usuário
[nc] Nova conta
[d] Depositar
[lc] Listar contas
[s] Sacar
[e] Extrato
[q] Sair
=> d
Informe o CPF do cliente: 199430
Informe o valor do depósito: 10000
*** Depósito realizado com sucesso! ***
*************** MENU ***************
[nu] Novo usuário
[nc] Nova conta
[d] Depositar
[lc] Listar contas
[s] Sacar
[e] Extrato
[q] Sair
=> s
Informe o CPF do cliente: 199430
Informe o valor do saque: 500
*** Saque realizado com sucesso! ***
*************** MENU ***************
[nu] Novo usuário
[nc] Nova conta
[d] Depositar
[lc] Listar contas
[s] Sacar
[e] Extrato
[q] Sair
=> e
Informe o CPF do cliente: 199430
************ EXTRATO ************
Deposito:
R$ 10000.00
Saque:
R$ 500.00
Saldo:
R$ 9500.00
*************** MENU ***************
[nu] Novo usuário
[nc] Nova conta
[d] Depositar
[lc] Listar contas
[s] Sacar
[e] Extrato
[q] Sair
=> q
The text was updated successfully, but these errors were encountered:
from abc import ABC, abstractclassmethod, abstractproperty
from datetime import datetime
class Cliente:
def init(self, endereco):
self.endereco = endereco
self.contas = []
class PessoaFisica(Cliente):
def init(self, nome, data_nascimento, cpf, endereco):
super().init(endereco)
self.nome = nome
self.data_nascimento = data_nascimento
self.cpf = cpf
class Conta:
def init(self, numero, cliente):
self._saldo = 0
self._numero = numero
self._agencia = "0001"
self._cliente = cliente
self._historico = Historico()
class ContaCorrente(Conta):
def init(self, numero, cliente, limite=500, limite_saques=3):
super().init(numero, cliente)
self.limite = limite
self.limite_saques = limite_saques
class Historico:
def init(self):
self._transacoes = []
class Transacao(ABC):
@Property
@abstractproperty
def valor(self):
pass
class Saque(Transacao):
def init(self, valor):
self._valor = valor
class Deposito(Transacao):
def init(self, valor):
self._valor = valor
from abc import ABC, abstractclassmethod, abstractproperty
from datetime import datetime
class Cliente:
def init(self, endereco):
self.endereco = endereco
self.contas = []
class PessoaFisica(Cliente):
def init(self, nome, data_nascimento, cpf, endereco):
super().init(endereco)
self.nome = nome
self.data_nascimento = data_nascimento
self.cpf = cpf
class Conta:
def init(self, numero, cliente):
self._saldo = 0
self._numero = numero
self._agencia = "0001"
self._cliente = cliente
self._historico = Historico()
class ContaCorrente(Conta):
def init(self, numero, cliente, limite=500, limite_saques=3):
super().init(numero, cliente)
self._limite = limite
self._limite_saques = limite_saques
class Historico:
def init(self):
self._transacoes = []
class Transacao(ABC):
@Property
@abstractproperty
def valor(self):
pass
class Saque(Transacao):
def init(self, valor):
self._valor = valor
class Deposito(Transacao):
def init(self, valor):
self._valor = valor
def menu():
menu = """\n
*************** MENU ***************
[nu]\tNovo usuário
[nc]\tNova conta
[d]\tDepositar
[lc]\tListar contas
[s]\tSacar
[e]\tExtrato
[q]\tSair
=> """
return input(textwrap.dedent(menu))
def filtrar_cliente(cpf, clientes):
clientes_filtrados = [cliente for cliente in clientes if cliente.cpf == cpf]
return clientes_filtrados[0] if clientes_filtrados else None
def recuperar_conta_cliente(cliente):
if not cliente.contas:
print("\n*** Cliente não possui conta! ***")
return
def depositar(clientes):
cpf = input("Informe o CPF do cliente: ")
cliente = filtrar_cliente(cpf, clientes)
def sacar(clientes):
cpf = input("Informe o CPF do cliente: ")
cliente = filtrar_cliente(cpf, clientes)
def exibir_extrato(clientes):
cpf = input("Informe o CPF do cliente: ")
cliente = filtrar_cliente(cpf, clientes)
def criar_cliente(clientes):
cpf = input("Informe o CPF (somente número): ")
cliente = filtrar_cliente(cpf, clientes)
def criar_conta(numero_conta, clientes, contas):
cpf = input("Informe o CPF do cliente: ")
cliente = filtrar_cliente(cpf, clientes)
def listar_contas(contas):
for conta in contas:
print("=" * 100)
print(textwrap.dedent(str(conta)))
def main():
clientes = []
contas = []
main()
IMPRESSÃO
*************** MENU ***************
[nu] Novo usuário
[nc] Nova conta
[d] Depositar
[lc] Listar contas
[s] Sacar
[e] Extrato
[q] Sair
=> nu
Informe o CPF (somente número): 199430
Informe o nome completo: Marina Freitas
Informe a data de nascimento (dd-mm-aaaa): 30041994
Informe o endereço (logradouro, nro - bairro - cidade/sigla estado): Av 08, 822 - Jd Finotti - Uberlandia MG
=== Cliente criado com sucesso! ===
*************** MENU ***************
[nu] Novo usuário
[nc] Nova conta
[d] Depositar
[lc] Listar contas
[s] Sacar
[e] Extrato
[q] Sair
=> nc
Informe o CPF do cliente: 199430
*** Conta criada com sucesso! ***
*************** MENU ***************
[nu] Novo usuário
[nc] Nova conta
[d] Depositar
[lc] Listar contas
[s] Sacar
[e] Extrato
[q] Sair
=> d
Informe o CPF do cliente: 199430
Informe o valor do depósito: 10000
*** Depósito realizado com sucesso! ***
*************** MENU ***************
[nu] Novo usuário
[nc] Nova conta
[d] Depositar
[lc] Listar contas
[s] Sacar
[e] Extrato
[q] Sair
=> s
Informe o CPF do cliente: 199430
Informe o valor do saque: 500
*** Saque realizado com sucesso! ***
*************** MENU ***************
[nu] Novo usuário
[nc] Nova conta
[d] Depositar
[lc] Listar contas
[s] Sacar
[e] Extrato
[q] Sair
=> e
Informe o CPF do cliente: 199430
************ EXTRATO ************
Deposito:
R$ 10000.00
Saque:
R$ 500.00
Saldo:
R$ 9500.00
*************** MENU ***************
[nu] Novo usuário
[nc] Nova conta
[d] Depositar
[lc] Listar contas
[s] Sacar
[e] Extrato
[q] Sair
=> q
The text was updated successfully, but these errors were encountered: