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.
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
- Registo de Transações: Adição de receitas e despesas com validação de valores.
- Data Automática: Utilização da API
java.timepara 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.
- 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óciorepository: Acesso a dados (SQL)database: Configuração JDBC
- Tratamento de Exceções:
try-catch,InputMismatchException, validações robustas
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)
- Java 17 ou superior
- Maven 3.6 ou superior
- Git
# 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"# 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===== 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
- 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
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.cgiSolução: Execute mvn clean install para Maven descarregar o driver automaticamente.
Solução: O programa valida entradas - certifica-te de digitar números válidos e maiores que zero.
- 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
- 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 são bem-vindas! Se encontraste um bug ou tens uma sugestão:
- Abre uma Issue descrevendo o problema
- Faz um Fork do projeto
- Cria uma Branch para tua feature (
git checkout -b feature/AmazingFeature) - Faz Commit das tuas mudanças (
git commit -m 'Add some AmazingFeature') - Faz Push para a branch (
git push origin feature/AmazingFeature) - Abre um Pull Request
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! ⭐