Skip to content
arianegomescPublic

About

Sistema de controle de finanças pessoais via console em Java, aplicando POO com camadas Model, Controller, View e tratamento de exceptions customizadas.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

💰 FinTrack — Sistema de Controle de Finanças Pessoais

Projeto desenvolvido como atividade prática da Capacitação Java iREDE


📋 Descrição

O FinTrack é um sistema de controle de finanças pessoais em Java, com versão console e interface gráfica JavaFX. Permite cadastrar receitas e despesas, visualizar o extrato completo, acompanhar o saldo e remover transações. Os dados são persistidos em um banco SQLite via JDBC, aplicando o padrão DAO.

O projeto foi organizado em camadas e usa conceitos de Orientação a Objetos, exceções customizadas para regras de negócio e testes unitários.


✅ Funcionalidades

  • 📥 Cadastrar receitas (entradas)
  • 📤 Cadastrar despesas (saídas)
  • 📄 Listar todas as transações
  • 💵 Exibir saldo atual (receitas − despesas)
  • 🗑️ Remover uma transação pelo ID
  • 💾 Persistência dos dados em SQLite (arquivo fintrack.db)
  • 🖥️ Duas interfaces: JavaFX e console

🏗️ Estrutura do Projeto

FinTrack/
├── pom.xml
└── src/
    └── fintrack/
        ├── model/
        │   ├── Transacao.java                  # Entidade principal
        │   └── TipoTransacao.java              # Enum: RECEITA | DESPESA
        ├── controller/
        │   └── FinanceiroController.java       # Regras de negócio
        ├── exception/
        │   ├── ValorInvalidoException.java
        │   ├── DescricaoInvalidaException.java
        │   └── TransacaoNaoEncontradaException.java
        ├── view/
        │   └── ConsoleView.java                # Interface via console
        ├── RepositorioGenerico.java            # Operações reutilizáveis de persistência
        ├── Conexao.java                        # Conexão SQLite e criação da tabela
        ├── TransacaoDAO.java                   # CRUD com JDBC
        ├── FinApp.java                         # Aplicação JavaFX
        ├── main.fxml                           # Layout da interface JavaFX
        ├── style.css                           # Estilos da interface JavaFX
        └── Main.java                           # Ponto de entrada (console)

Camadas e Responsabilidades

Camada Responsabilidade
Model Entidade Transacao e enum TipoTransacao
Controller Regras de negócio e validações (FinanceiroController)
DAO / Repositório Acesso a dados com RepositorioGenerico<T, ID> e TransacaoDAO
View ConsoleView (console) e FinApp + main.fxml (JavaFX)
Exception Exceções customizadas para erros de negócio

🧠 Conceitos Aplicados

Conceito Aplicação
Encapsulamento Atributos private com getters e setters em Transacao
Enum TipoTransacao tipando as categorias de transação
Imutabilidade Campos id e tipo declarados como final
Exceptions customizadas 3 classes que estendem Exception para erros de negócio
Separação de responsabilidades Camadas Model / Controller / View / DAO
Collections List<Transacao> com acesso protegido via unmodifiableList
Generics RepositorioGenerico<T, ID> define operações reutilizáveis
Padrão DAO TransacaoDAO isola o acesso ao banco de dados
JDBC PreparedStatement e ResultSet para o CRUD em SQLite

🛠️ Tecnologias

  • Java 25 (LTS)
  • JavaFX 25 — interface gráfica
  • SQLite com JDBC — persistência
  • Maven — build e gerenciamento de dependências
  • Testes unitários, incluindo o DAO com SQLite em memória
  • IntelliJ IDEA — IDE
  • Git / GitHub — versionamento

▶️ Como Executar

Pré-requisitos

  • JDK 25
  • Maven

Passos

# Clonar o repositório
git clone https://github.com/arianegomesc/FinTrack.git
cd FinTrack

# Interface JavaFX (o banco SQLite é criado automaticamente em fintrack.db)
mvn javafx:run

# Versão console
mvn package
java -cp target/classes fintrack.Main

# Testes unitários (incluindo o DAO em SQLite em memória)
mvn test

🚀 Próximos Passos

  • Categorias de transação (alimentação, transporte, lazer etc.)
  • Filtro de transações por período
  • Relatórios mensais
  • Exportação do extrato para CSV

👩‍💻 Autora

Ariane Gomes Cunha
Capacitação Java — iREDE
GitHub LinkedIn

About

Sistema de controle de finanças pessoais via console em Java, aplicando POO com camadas Model, Controller, View e tratamento de exceptions customizadas.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages