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 consideratransacao_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_operacoesrevisado emdepositar,sacareexibir_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 Pluscom 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 Pluspor 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
Decimalpara 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".
- Usuários armazenados em
- Persistência por conta:
- Transações registradas em
transacoes_bancarias.json, usando chavecpf-agencia-conta. - Cada conta mantém saldo, extrato e contadores independentes.
- Transações registradas em
- Rollback seguro:
- Antes de salvar, gera backup
.bkp. - Se falhar, restaura o arquivo anterior automaticamente.
- Antes de salvar, gera backup
- 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 deresetar_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
.bkpe recuperação em caso de falha.
- Arquivo
-
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_extratoconsome 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 sejaDecimal, positivo e com até duas casas decimais.checar_limpar_cpfeformatar_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fdc678c7ea5803dd2d468a592b212320847fb1d879f0b1ff152dd23947f43f8
|
|
| MD5 |
3eca01f808a8a101725d4c5c9e152530
|
|
| BLAKE2b-256 |
5b1f602e8ed462890a4651032c991c82f7dba64b52c3cf6d2100af37a7e650cc
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c317abb5aedd2a45332bc99d75907407b6c852b58d4d26dc53adab5108676224
|
|
| MD5 |
a87f48fd5cbe24c7a162f7646211992e
|
|
| BLAKE2b-256 |
6b6269d39286bf7e3bb5ce4d697ef9eb3b6a76d1718f401c311bae5fe49b2b76
|