Skip to content

gabmerces/Sistema-Financeiro-SQLite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💰 Sistema de Controlo Financeiro CLI

Este é um projeto de gestão financeira pessoal desenvolvido em Java, focado em aplicar conceitos de Programação Orientada a Objetos (POO), persistência de dados e boas práticas de desenvolvimento.

🎯 Objetivo

Demonstrar conhecimento em:

  • ✅ Arquitetura em camadas (Model, Service, Repository, Database)
  • ✅ Padrão Repository/DAO
  • ✅ Persistência de dados com JDBC e SQLite
  • ✅ Tratamento robusto de exceções
  • ✅ Validação de entrada do utilizador
  • ✅ Gestão de dependências com Maven

🚀 Funcionalidades

  • Registo de Transações: Adição de receitas e despesas com validação de valores.
  • Data Automática: Utilização da API java.time para capturar a data real do sistema.
  • Cálculo de Saldo: Soma e subtração dinâmica de valores para exibir o saldo atualizado.
  • Extrato Detalhado: Listagem de todas as movimentações guardadas no banco de dados.
  • Persistência Real: Armazenamento de dados em base de dados local para que as informações não se percam ao fechar o programa.
  • Tratamento de Erros: Validação completa de entradas para evitar travamentos.

🛠️ Tecnologias e Conceitos Utilizados

  • Linguagem: Java 17+
  • Base de Dados: SQLite (embarcada)
  • Conectividade: JDBC (Java Database Connectivity)
  • Gestão de Dependências: Maven (pom.xml)
  • Arquitetura: Padrão Repository/DAO com separação de responsabilidades
  • Camadas:
    • model: Entidades de dados (Transaction)
    • service: Regras de negócio
    • repository: Acesso a dados (SQL)
    • database: Configuração JDBC
  • Tratamento de Exceções: try-catch, InputMismatchException, validações robustas

📂 Estrutura do Projeto

ControlFinanceiro/
├── src/main/java/
│   ├── database/
│   │   └── ConnectionFactory.java        # Gestão de conexões JDBC
│   ├── model/
│   │   └── Transaction.java               # Classe de dados
│   ├── repository/
│   │   └── TransactionRepository.java     # Acesso ao banco de dados
│   ├── service/
│   │   └── FinancialService.java          # Lógica de negócio
│   └── Main.java                          # Interface CLI
├── .gitignore
├── README.md
├── pom.xml                                # Configuração Maven
└── financeiro.db                          # Banco de dados SQLite (gerado)

📦 Pré-requisitos

  • Java 17 ou superior
  • Maven 3.6 ou superior
  • Git

🔧 Instalação e Execução

Opção 1: Com Maven (Recomendado) ⭐

# 1. Clonar o repositório
git clone https://github.com/gabmerces/ControlFinanceiro.git
cd ControlFinanceiro

# 2. Instalar dependências
mvn clean install

# 3. Executar a aplicação
mvn exec:java -Dexec.mainClass="Main"

Opção 2: Compilação Manual

# 1. Compilar
javac -d bin -cp ".:sqlite-jdbc-3.36.0.1.jar" src/main/java/**/*.java

# 2. Executar
java -cp "bin:sqlite-jdbc-3.36.0.1.jar" Main

💡 Exemplo de Uso

===== BEM-VINDA AO SEU CONTROLE FINANCEIRO, GABRIELA! =====

1 - Adicionar Receita
2 - Adicionar Despesa
3 - Ver Extrato
4 - Ver Saldo Atual
5 - Sair
Escolha uma opção: 1

Descrição da Receita: Salário
Valor: 3000
✅ Receita adicionada com sucesso!

Escolha uma opção: 3

--- SEU EXTRATO ---
ID | Data       | Tipo    | Valor    | Descrição
---+------------+---------+----------+-----------
1  | 21/03/2026 | RECEITA | R$ 3000.00 | Salário

Escolha uma opção: 4

💰 Saldo Atual: R$ 3000.00

🔐 Segurança

  • PreparedStatement: Proteção contra SQL Injection
  • Validação de Entrada: Verificação de valores negativos e vazios
  • Tratamento de Exceções: Nenhuma entrada inválida causa travamento
  • Gestão de Recursos: Uso de try-with-resources para fechar conexões automaticamente

❓ Troubleshooting

"Erro: comando mvn não encontrado"

Solução: Instala Maven

# macOS (com Homebrew)
brew install maven

# Ubuntu/Debian
sudo apt-get install maven

# Windows
# Baixa em: https://maven.apache.org/download.cgi

"SQLite driver not found"

Solução: Execute mvn clean install para Maven descarregar o driver automaticamente.

"Erro de validação ao digitar valores"

Solução: O programa valida entradas - certifica-te de digitar números válidos e maiores que zero.

🔮 Melhorias Futuras

  • Interface gráfica com JavaFX
  • Exportação de relatórios em PDF
  • Categorização automática de despesas
  • Filtro por período de datas
  • Autenticação de utilizadores
  • Sincronização com cloud
  • API REST para integração

📊 Estatísticas do Código

  • Linhas de Código: ~400
  • Classes: 5 (1 Model + 1 Repository + 1 Service + 1 Factory + 1 Main)
  • Métodos: 15+
  • Cobertura Funcional: 100% das features planeadas

🤝 Contribuições

Contribuições são bem-vindas! Se encontraste um bug ou tens uma sugestão:

  1. Abre uma Issue descrevendo o problema
  2. Faz um Fork do projeto
  3. Cria uma Branch para tua feature (git checkout -b feature/AmazingFeature)
  4. Faz Commit das tuas mudanças (git commit -m 'Add some AmazingFeature')
  5. Faz Push para a branch (git push origin feature/AmazingFeature)
  6. Abre um Pull Request

📄 Licença

Este projeto é de código aberto sob a licença MIT. Vê o ficheiro LICENSE para mais detalhes.

Última atualização: 21 de Março de 2026

⭐ Se este projeto foi útil, considera deixar uma estrela! ⭐

About

Projeto de controle de fluxo de caixa em Java. Explora conceitos de JDBC, SQL, manipulação de datas com Java Time API e lógica de negócios para cálculo de saldo.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages