Skip to main content

Aplicativo bancário em Python (CLI), evoluindo desde v1 até v3 (POO), com múltiplos usuários, contas e persistência em JSON.

Project description

Sistema Bancário em Python Desafio DIO

Bank Application v1

Bank Application v1

Este projeto é uma aplicação bancária simples desenvolvida em Python, com foco em operações básicas para um único usuário.
A versão 1 implementa as seguintes funcionalidades:


Funcionalidades

Depósito

  • Permite ao usuário realizar depósitos de valores positivos, que são registrados no extrato.

Saque

  • O usuário pode realizar até 3 saques diários, com limite máximo de R$ 500,00 por saque.
  • Caso o limite diário seja excedido, é oferecida a opção de saque adicional com uma taxa extra de R$ 0,50.
  • Saques só são permitidos se houver saldo suficiente e o valor for positivo.

Extrato

  • Exibe todas as movimentações (depósitos e saques) realizadas, mostrando o saldo atual.
  • Se não houver movimentações, informa ao usuário.

Regras de Negócio

  • Apenas valores positivos e com até duas casas decimais são aceitos para depósito e saque.
  • O sistema trabalha com apenas um usuário, sem necessidade de agência ou número de conta.
  • Todas as operações são registradas em memória (não há persistência em banco de dados).

Estrutura do Código

  • Utiliza o módulo decimal para garantir precisão nos valores monetários.
  • Funções separadas para cada operação: depósito, saque, extrato e validação de valores.
  • Interface simples via terminal, com menu interativo.

Testes

  • Testes automatizados com pytest garantem o funcionamento correto das operações de depósito e saque, incluindo casos de erro e validação de regras.

Bank Application v1 é uma base sólida para evoluir o sistema, permitindo futuras melhorias como múltiplos usuários, persistência de dados e interface gráfica.

Bank Application v2

Bank Application v2

Esta versão aprimora a aplicação bancária simples desenvolvida em Python, trazendo novas regras, persistência de dados e correções importantes em relação à v1.
Agora o sistema mantém o histórico mesmo após reiniciar, calcula dinamicamente os limites de operações e garante estabilidade em todas as funções.


Novidades da v2

  • Implementado cálculo dinâmico de operações diárias com operacoes_diarias_totais() que considera transacao_plus.
  • Persistência em JSON (state.json) para salvar e carregar saldo, extrato e contadores de forma confiável.
  • Correção crítica no carregamento do extrato: sempre inicializado como lista mutável, evitando erros em .append().
  • Função carregar_dados_de_entrada() agora atualiza diretamente as variáveis globais (saldo, extrato, numero_operacoes, etc.).
  • Incremento de numero_operacoes revisado em depositar, sacar e exibir_extrato.
  • Registro adicional no extrato para operações especiais:
    • Transação Plus (expansão do limite de operações por R$ 0,50).
    • Saque Plus (saque além do limite diário de 3 operações, também com taxa de R$ 0,50).
    • Exibir Extrato (consulta registrada no histórico).
  • Padronização de funções (limpar_tela, formatar_brl, checar_valor) e nomes de variáveis (valor_sacar_plus, valor_transacao_plus).

Funcionalidades

Depósito

  • Permite ao usuário realizar depósitos de valores positivos, registrados no extrato e salvos em JSON.
  • Valida entradas com até duas casas decimais.

Saque

  • O usuário pode realizar até 3 saques diários, com limite máximo de R$ 500,00 por saque.
  • Se o limite de saques for atingido, é oferecido o Saque Plus com taxa de R$ 0,50.
  • Caso o valor seja maior que o saldo, o saque é recusado.

Transações diárias

  • O sistema limita a 10 operações diárias, mas o usuário pode comprar uma Transação Plus por R$ 0,50, aumentando esse limite.
  • As operações válidas que contam para o limite incluem depósito, saque e consulta ao extrato.

Extrato

  • Exibe todas as movimentações registradas (Depósito, Saque, Saque Plus, Transação Plus, Exibir Extrato).
  • Informa o saldo atual, número de operações realizadas e número de saques feitos.
  • Se não houver movimentações, informa ao usuário.

Regras de Negócio

  • Apenas valores positivos e com até duas casas decimais são aceitos para depósito e saque.
  • O sistema funciona para um único usuário (não há múltiplas contas).
  • Todas as operações são registradas em JSON para garantir histórico após reinício.
  • Consultar o extrato também conta como uma operação diária.

Estrutura do Código

  • Uso de Decimal para precisão monetária.
  • Funções principais:
    • depositar(valor)
    • sacar(valor)
    • exibir_extrato()
    • registrar_operações(opcao)
    • transacao_alem_limite_diario()
    • sacar_alem_limite_diario(valor)
  • Funções auxiliares:
    • carregar_dados_de_entrada() (atualiza globais)
    • armazenar_dados_de_saida()
    • limpar_tela()
    • formatar_brl(valor)
    • tem_duas_casas(valor)
    • checar_valor(mensagem)
  • Menu interativo via terminal.

Bank Application v2 traz robustez, persistência e flexibilidade ao sistema, preparando o terreno para futuras melhorias como suporte a múltiplos usuários e banco de dados.

Bank Application v2.2

Bank Application v2_2

Versão mais completa até agora: suporte a múltiplos usuários, múltiplas contas por CPF, transações isoladas por conta e rollback seguro em JSON.

🚀 Novidades do v2_2

  • Multiusuário e múltiplas contas:
    • Usuários armazenados em contas_bancarias.json.
    • Cada CPF pode ter várias contas, com agência fixa "0001".
  • Persistência por conta:
    • Transações registradas em transacoes_bancarias.json, usando chave cpf-agencia-conta.
    • Cada conta mantém saldo, extrato e contadores independentes.
  • Rollback seguro:
    • Antes de salvar, gera backup .bkp.
    • Se falhar, restaura o arquivo anterior automaticamente.
  • Fluxo de acesso revisado:
    • acessar_conta: exige CPF válido, lista contas e valida agência/nº de conta.
    • listar_contas: mostra todas as contas atreladas a um CPF.
    • criar_conta: adiciona nova conta sequencialmente ao CPF.
  • Validação robusta de CPF:
    • checar_limpar_cpf: remove caracteres inválidos, exige 11 dígitos, força loop de entrada até acerto.
  • Correções:
    • carregar_dados_bancarios: loop de contas movido para dentro do loop de usuários.
    • menu_conta: corrigida chamada de resetar_contadores_diarios (sem parâmetros inválidos).
  • UX improvements:
    • Mensagens padronizadas de sucesso/erro.
    • CPF formatado (xxx.xxx.xxx-xx) ao exibir dados.
    • Extrato mais claro com timestamps.

⚙️ Funcionalidades

  • Depósito / Saque (inclui Saque Plus).
  • Exibir extrato (view-only).
  • Imprimir extrato (consome operação e registra no histórico).
  • Transação Plus (expansão do limite diário de operações).
  • Listagem de contas por CPF.
  • Criação de contas e usuários com persistência imediata.

📂 Estrutura de arquivos

  • bank_app_v2_2.py → código principal.
  • contas_bancarias.json → usuários e contas.
  • transacoes_bancarias.json → dados de transações por conta.
  • .bkp → arquivos de rollback em caso de erro de gravação.

▶️ Execução

python bank_app_v2_2.py

Menu inicial:

[ac] Acessar conta
[lc] Listar contas
[nc] Nova conta
[nu] Novo usuário
[q]  Sair

Bank Application v2_2 representa um sistema bancário funcional, com múltiplos usuários e contas, persistência em JSON robusta e validações de entrada confiáveis.

Bank Application v3_0

Bank Application v3_0

A versão 3 marca a migração completa do sistema para um modelo orientado a objetos (POO), trazendo maior organização, reuso e manutenção do código.
Todas as funcionalidades do v2_2 foram preservadas e aprimoradas dentro de classes e métodos.


🚀 Novidades da v3_0

  • Arquitetura orientada a objetos:

    • ConfigBanco: centraliza constantes, limites, valores de taxas e arquivos JSON.
    • Transacao (abstrata) e subclasses (Deposito, Saque, SaquePlus, TransacaoPlus) encapsulam regras de cada operação.
    • Conta: representa uma conta bancária, com métodos para saldo, transações, extrato e persistência em JSON (com rollback seguro).
    • Usuario: armazena dados pessoais e lista de contas associadas.
    • DadosBanco: gerencia múltiplos usuários, cadastro de contas e acesso às informações.
  • Persistência organizada:

    • Arquivo contas_bancarias.json → usuários e suas contas.
    • Arquivo transacoes_bancarias.json → histórico detalhado de cada conta (cpf-agencia-conta).
    • Rotinas automáticas de backup .bkp e recuperação em caso de falha.
  • Melhorias no fluxo de operações:

    • Reset automático de contadores diários ao virar o dia.
    • Extrato em formato tabular com colunas alinhadas.
    • imprimir_extrato consome operação e gera registro no histórico.
    • Controle claro de limites de operações e saques, com opção de ativar Plus.
  • Validação aprimorada:

    • ValidadorValor: garante que todo valor seja Decimal, positivo e com até duas casas decimais.
    • checar_limpar_cpf e formatar_cpf: padronizam entrada e exibição de CPFs.

⚙️ Funcionalidades

  • Depósito / Saque (inclui Saque Plus).
  • Transação Plus (expansão do limite de operações).
  • Extrato: exibir ou imprimir, com saldo e contadores.
  • Cadastro de usuários e contas (multiusuário, multicontas).
  • Persistência automática em JSON com rollback.

📂 Estrutura de arquivos

  • bank_app_v3_0.py → código principal (POO).
  • contas_bancarias.json → usuários e contas.
  • transacoes_bancarias.json → transações de cada conta.
  • .bkp → backups automáticos.

▶️ Execução

python bank_app_v3_0.py

Menu inicial:

[nu] Novo usuário
[nc] Nova conta
[lc] Listar contas
[ac] Acessar conta
[q]  Sair

Menu da conta:

[d] Depositar
[s] Sacar
[e] Exibir extrato
[i] Imprimir extrato
[v] Voltar

Bank Application v3_0 entrega um sistema robusto, modular e orientado a objetos, preparando a base para futuras integrações (ex.: banco de dados, APIs, interface gráfica).

Bank Application v4_0

em breve

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dio_bank_app-3.0.0.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dio_bank_app-3.0.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file dio_bank_app-3.0.0.tar.gz.

File metadata

  • Download URL: dio_bank_app-3.0.0.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for dio_bank_app-3.0.0.tar.gz
Algorithm Hash digest
SHA256 1fdc678c7ea5803dd2d468a592b212320847fb1d879f0b1ff152dd23947f43f8
MD5 3eca01f808a8a101725d4c5c9e152530
BLAKE2b-256 5b1f602e8ed462890a4651032c991c82f7dba64b52c3cf6d2100af37a7e650cc

See more details on using hashes here.

File details

Details for the file dio_bank_app-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: dio_bank_app-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for dio_bank_app-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c317abb5aedd2a45332bc99d75907407b6c852b58d4d26dc53adab5108676224
MD5 a87f48fd5cbe24c7a162f7646211992e
BLAKE2b-256 6b6269d39286bf7e3bb5ce4d697ef9eb3b6a76d1718f401c311bae5fe49b2b76

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page