Gabriel Garcia
Gabriel Garcia24/08/2025 19:12
Compartilhe

Otimizando o Sistema Bancário com Funções Python

    Otimizando o Sistema Bancário com Funções Python

    Este artigo explora o desenvolvimento de um sistema bancário modularizado utilizando Python, com foco na separação de responsabilidades e na implementação de funcionalidades essenciais para a gestão de contas e usuários.

    Objetivo do Projeto

    O projeto visa aprimorar um sistema bancário básico, implementando as seguintes funcionalidades:

    • Depósito: Permite adicionar valores à conta do usuário.
    • Saque: Permite retirar valores da conta, respeitando limites de saldo e número de saques.
    • Extrato: Exibe o histórico de transações realizadas.
    • Cadastro de Usuário: Registra novos clientes no sistema.
    • Cadastro de Conta Corrente: Associa uma conta bancária a um usuário.DIO

    Essas funcionalidades são implementadas por meio de funções específicas, promovendo a modularização e facilitando a manutenção do código.

    Estrutura do Código

    1. Função menu()

    Exibe o menu principal do sistema e solicita a escolha do usuário.DIO

    
    import textwrap
    
    def menu():
      menu = """
      ----------------- MENU ------------------
      [d] Depositar
      [s] Sacar
      [e] Extrato
      [nc] Nova Conta
      [lc] Lista Contas
      [nu] Novo Usuário
      [q] Sair
      => """
      return input(textwrap.dedent(menu))
    

    2. Função depositar()

    Realiza depósitos na conta do usuário, atualizando o saldo e o extrato.DIO+1

    
    def depositar(saldo, valor, extrato):
      if valor > 0:
          saldo += valor
          extrato += f"Depósito: R$ {valor:.2f}\n"
          print("\n Depósito Realizado. ")
      else:
          print("\n Operação Inválida. ")
      return saldo, extrato
    

    3. Função sacar()

    Permite saques da conta, verificando saldo, limite e número de saques permitidos.DIO

    
    def sacar(*, saldo, valor, extrato, limite, num_saques, limite_saques):
      sem_saldo = valor > saldo
      sem_limite = valor > limite
      sem_saque = num_saques >= limite_saques
      if sem_saldo:
          print("\n Saldo Insuficiente. ")
      elif sem_limite:
          print("\n Sem Limite. ")
      elif sem_saque:
          print("\n Número de Saques Excedido. ")
      elif valor > 0:
          saldo -= valor
          extrato += f"Saque: R$ {valor:.2f}\n"
          num_saques += 1
          print("\n Saque Realizado ")
      else:
          print("\n Operação Inválida ")
      return saldo, extrato
    

    4. Função exibir_extrato()

    Exibe o extrato bancário do usuário, mostrando o histórico de transações e o saldo atual.

    
    def exibir_extrato(saldo, *, extrato):
      print("\n------------------------ EXTRATO ----------------------")
      print("Não Foram Realizadas Movimentações." if not extrato else extrato)
      print(f"\n Saldo: R$ {saldo:.2f}")
      print("---------------------------------------------------------")
    

    5. Função novo_usuario()

    Cadastra um novo usuário no sistema, coletando informações como CPF, nome, data de nascimento e endereço.DIO

    
    def novo_usuario(usuarios):
      cpf = input("CPF (22222222222): ")
      usuario = filtrar_usuario(cpf, usuarios)
      if usuario:
          print("\n Usuário já cadastrado ")
          return
      nome = input("Nome Completo: ")
      data_nascimento = input("Digite a data de nascimento: (dd-mm-aaaa): ")
      endereco = input("Digite o Endereco")
      bairro = input("Digite o Bairro: ")
      cidade = input("Digite a Cidade: ")
      uf = input("Digite o Estado: ")
      usuarios.append({"nome": nome, "data_nascimento": data_nascimento, "cpf": cpf, "endereco": endereco, "bairro": bairro, "cidade": cidade, "estado": uf})
      print("\n Usuário Cadastrado com Sucesso ")
    

    6. Função filtrar_usuario()

    Busca um usuário no sistema pelo CPF.DIO

    
    def filtrar_usuario(cpf, usuarios):
      usuarios_filtrados = [usuario for usuario in usuarios if usuario['cpf'] == cpf]
      return usuarios_filtrados[0] if usuarios_filtrados else None
    

    Conclusão

    Este projeto exemplifica a aplicação de conceitos fundamentais de programação em Python, como funções, controle de fluxo e manipulação de listas e strings. A modularização do código facilita a manutenção e expansão do sistema, permitindo a adição de novas funcionalidades de forma organizada e eficiente.DIO

    Para mais detalhes e acesso ao código completo, visite o repositório no GitHub: Otimizando o Sistema Bancário com Funções Python.

    Compartilhe
    Comentários (2)
    DIO Community
    DIO Community - 26/08/2025 09:43

    Excelente evolução, Gabriel! Você conseguiu transformar um sistema bancário básico em uma solução muito mais organizada e modularizada, aplicando boas práticas como separação de responsabilidades e uso de funções específicas para cada operação. A forma como você estruturou o cadastro de usuários, contas e transações mostra maturidade no uso do Python para criar sistemas escaláveis e de fácil manutenção.

    Na DIO acreditamos exatamente nisso: quanto mais o desenvolvedor pratica modularização e organização de código, mais preparado ele fica para lidar com projetos complexos. O seu projeto é um ótimo exemplo de como pequenos ajustes de arquitetura podem abrir espaço para novas funcionalidades, como persistência em banco de dados, autenticação ou até integração com APIs.

    Olhando para os próximos passos, você pensa em evoluir esse sistema para trabalhar com banco de dados reais (como SQLite ou PostgreSQL), garantindo persistência entre execuções, ou prefere implementar autenticação e segurança para múltiplos usuários primeiro, tornando o sistema mais próximo de um ambiente bancário real?

    EL

    Emerson Liberalino - 24/08/2025 20:30

    Muito bom!