O Sistema de Gerenciamento Bancário é uma aplicação em Python que permite criar e gerenciar contas bancárias, realizar transferências, movimentar dinheiro, consultar históricos de transações e gerar relatórios gráficos. O sistema conta com um banco de dados SQLite para armazenar informações e utiliza uma interface de linha de comando para interação com o usuário.
- Python
- SQLModel (para interação com SQLite)
- Matplotlib (para geração de gráficos)
- Tabulate (para exibição de dados formatados em tabela)
/
├── models.py # Definição das tabelas e estrutura do banco de dados
├── views.py # Funções de manipulação do banco de dados e lógica de negócio
├── temple.py # Interface de linha de comando para interação com o usuário
├── database.db # Arquivo do banco de dados SQLite (gerado automaticamente)
Antes de executar o projeto, certifique-se de ter o Python 3.13+ instalado.
-
Clone o repositório:
git clone https://github.com/GabrielHenri39/sistema-bancario.git cd sistema-bancario
-
Crie um ambiente virtual e instale as dependências:
python -m venv venv source venv/bin/activate # No Windows, use venv\Scripts\activate pip install -r requirements.txt
-
Execute a criação do banco de dados:
python models.py
-
Inicie o sistema:
python temple.py
O trecho abaixo mostra a função que realiza uma transferência entre contas, garantindo que ambas existam e que haja saldo suficiente:
def transferir_saldo(id_conta_saida: int, id_conta_entrada: int, valor: float) -> None:
"""
Transfere saldo entre contas, registrando a movimentação no histórico.
"""
with Session(engine) as session:
contas = session.exec(select(Conta).where(Conta.id.in_([id_conta_saida, id_conta_entrada]))).all()
conta_saida, conta_entrada = contas if len(contas) == 2 else (None, None)
if not conta_saida or not conta_entrada:
raise ValueError("Uma das contas não existe.")
if conta_saida.valor < valor:
raise ValueError("Saldo insuficiente.")
if id_conta_saida == id_conta_entrada:
raise ValueError("Não é possível transferir para a mesma conta.")
conta_saida.valor -= valor
conta_entrada.valor += valor
session.add(Historico(conta_id=id_conta_saida, tipo=Tipos.SAIDA, valor=valor, data=date.today()))
session.add(Historico(conta_id=id_conta_entrada, tipo=Tipos.ENTRADA, valor=valor, data=date.today()))
session.commit()
Essa função evita erros comuns, como transferências para a mesma conta e transações com saldo insuficiente.
- Fork este repositório.
- Crie uma branch para sua nova feature:
git checkout -b minha-feature
- Implemente suas melhorias e faça commit:
git commit -m "Adiciona nova funcionalidade"
- Envie suas alterações:
git push origin minha-feature
- Abra um Pull Request no repositório original.
Desenvolvido por Gabriel Henrique Alves Dias.