Untitled
unknown
plain_text
6 months ago
4.4 kB
2
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