Untitled
unknown
plain_text
a year ago
4.4 kB
5
Indexable
class Usuario:
def __init__(self, nome, cpf):
self.nome = nome
self.cpf = cpf
class ContaCorrente:
LIMITE_SAQUES = 3
LIMITES_DEPOSITO = 500
def __init__(self, usuario):
self.usuario = usuario
self.numero_conta = None # Será definido na criação da conta
self.saldo = 0
self.extrato = ""
self.numero_saques = 0
def depositar(self, valor):
if valor > 0:
self.saldo += valor
self.extrato += f"Depósito: R$ {valor:.2f}\n"
print("Depósito realizado com sucesso!")
else:
print("Operação falhou! O valor informado é inválido.")
def sacar(self, valor):
excedeu_saldo = valor > self.saldo
excedeu_limite = valor > self.LIMITE_DEPOSITO
excedeu_saques = self.numero_saques >= self.LIMITE_SAQUES
if excedeu_saldo:
print("Operação falhou! Você não tem saldo suficiente.")
elif excedeu_limite:
print("Operação falhou! O valor do saque excede o limite.")
elif excedeu_saques:
print("Operação falhou! Número máximo de saques excedido.")
elif valor > 0:
self.saldo -= valor
self.extrato += f"Saque: R$ {valor:.2f}\n"
self.numero_saques += 1
print("Saque realizado com sucesso!")
else:
print("Operação falhou! O valor informado é inválido.")
def visualizar_extrato(self):
print("\n================ EXTRATO ================")
print("Não foram realizadas movimentações." if not self.extrato else self.extrato)
print(f"Saldo: R$ {self.saldo:.2f}")
print("==========================================")
# Funções do sistema bancário
def criar_usuario(usuarios):
nome = input("Informe o nome do usuário: ")
cpf = input("Informe o CPF do usuário: ")
usuarios[cpf] = Usuario(nome, cpf)
print(f"Usuário {nome} criado com sucesso!")
def criar_conta_corrente(usuarios, contas):
cpf = input("Informe o CPF do usuário para vincular a conta: ")
if cpf in usuarios:
conta = ContaCorrente(usuarios[cpf])
conta.numero_conta = len(contas) + 1 # Gera um número de conta sequencial
contas[conta.numero_conta] = conta
print(f"Conta corrente criada com sucesso para {usuarios[cpf].nome}! Número da conta: {conta.numero_conta}")
else:
print("Usuário não encontrado!")
# Inicialização
menu = """
[d] Depositar
[s] Sacar
[e] Extrato
[u] Criar Usuário
[c] Criar Conta Corrente
[q] Sair
=> """
usuarios = {}
contas = {}
while True:
opcao = input(menu)
if opcao == "d":
cpf = input("Informe o CPF do usuário: ")
if cpf in usuarios:
numero_conta = int(input("Informe o número da conta: "))
if numero_conta in contas:
valor = float(input("Informe o valor do depósito: "))
contas[numero_conta].depositar(valor)
else:
print("Conta não encontrada!")
else:
print("Usuário não encontrado!")
elif opcao == "s":
cpf = input("Informe o CPF do usuário: ")
if cpf in usuarios:
numero_conta = int(input("Informe o número da conta: "))
if numero_conta in contas:
valor = float(input("Informe o valor do saque: "))
contas[numero_conta].sacar(valor)
else:
print("Conta não encontrada!")
else:
print("Usuário não encontrado!")
elif opcao == "e":
cpf = input("Informe o CPF do usuário: ")
if cpf in usuarios:
numero_conta = int(input("Informe o número da conta: "))
if numero_conta in contas:
contas[numero_conta].visualizar_extrato()
else:
print("Conta não encontrada!")
else:
print("Usuário não encontrado!")
elif opcao == "u":
criar_usuario(usuarios)
elif opcao == "c":
criar_conta_corrente(usuarios, contas)
elif opcao == "q":
break
else:
print("Operação inválida, por favor selecione novamente a operação desejada.")Editor is loading...
Leave a Comment