Sistema desktop desenvolvido em Java com Swing para controle de investimentos em ações e FIIs, com persistência em banco de dados MySQL. Este projeto foi realizado como trabalho acadêmico para a disciplina de FPOO (Fundamentos de Programação Orientada a Objetos) no curso de Análise e Desenvolvimento de Sistemas – Faculdades Integradas Vianna Júnior.
- Java Desktop (Swing)
- MySQL
- POO (Herança, Encapsulamento, Composição, Pacotes)
- Tratamento de Exceções e Validações
- Git e GitLab para versionamento
- Investidor: realiza operações, registra proventos, consulta histórico e posição.
- Administrador: gerencia ativos, corrige lançamentos via estorno, gera relatórios consolidados.
- Ticker, tipo (Ação/FII), setor, observações.
- Herança:
Ativo→Acao,FII.
- Saldo inicial, aportes e retiradas.
- Bloqueio de compra sem saldo.
- Venda credita automaticamente.
- Compra/Venda com data, quantidade, preço, taxa.
- Validações: sem venda descoberta, valores positivos.
- Histórico imutável com estorno para correções.
- Atualização por média ponderada.
- Venda não altera PM, apenas reduz quantidade.
- Registro por ativo: tipo, valor por cota, data.
- Crédito automático no caixa.
- Histórico de proventos e extrato.
- Posição atual da carteira.
- Extrato do caixa.
- Histórico de operações.
- Proventos recebidos e DY sobre PM.
- Tela de login com perfis distintos.
- Simulação de taxa de corretagem com diversas corretoras.
O projeto SIBOV está organizado de forma modular, seguindo boas práticas de separação de responsabilidades e arquitetura em camadas. Abaixo está a descrição dos principais pacotes:
-
org.matheus.sibov.config
Armazena a classe de conexão com banco de dados. -
org.matheus.sibov.dao
Implementa o padrão DAO (Data Access Object), contendo classes que fazem a persistência e recuperação de dados no banco. -
org.matheus.sibov.model
Define os modelos de dados (entidades) utilizados na aplicação. -
org.matheus.sibov.model.perfis
Subpacote especializado para representar perfis de usuários ou tipos de acesso. -
org.matheus.sibov.service
Contém a lógica de serviço, intermediando entre os DAOs e as interfaces gráficas. -
org.matheus.sibov.view
Responsável pela interface gráfica principal. Inclui a classeTelaDeLogin.java, que provavelmente gerencia a tela de autenticação do sistema. -
org.matheus.sibov.view.admin
Interface gráfica voltada para usuários com perfil administrativo. -
org.matheus.sibov.view.investidor
Interface gráfica voltada para usuários com perfil de investidor.
Contém recursos adicionais que não fazem parte diretamente do código-fonte Java.
-
src/main/resources
Diretório padrão para arquivos de configuração, propriedades, e outros recursos utilizados pela aplicação. -
images
Pasta dedicada ao armazenamento de imagens utilizadas na interface gráfica, como ícones, logotipos ou fundos.
Essa estrutura favorece a organização, reutilização de código e facilita a manutenção do projeto. Cada pacote tem uma responsabilidade clara, o que contribui para a escalabilidade e legibilidade do sistema.
Para executar o sistema SIBOV localmente, siga os passos abaixo:
Clonar o repositório
git clone https://github.com/mathewsph2/SIBOV-Java_SwingConfigurar o banco de dados
-
Executar o scritp
SQL_Sibov.sqlno seu SGBD -
Edite o arquivo de configuração em
org.matheus.sibov.configcom os dados de acesso ao banco -
Certifique-se de que o banco está ativo e acessível
Executar a aplicação
-
Localize a classe principal
TelaDeLogin.java -
Execute como aplicação Java
-
A interface de login será exibida
Acessar o sistema
-
Use credenciais válidas para acessar como administrador ou investidor
-
Navegue pelas funcionalidades conforme seu perfil
Este projeto está em constante evolução. Abaixo estão algumas sugestões de melhorias e funcionalidades que podem ser implementadas nas próximas versões:
-
Criação de testes automatizados
-
Suporte a criptomoedas
-
Migrações de banco de dados
-
Sistema de segurança mais robusto
-
Abra uma issue para sugerir melhorias ou reportar erros.
-
Faça um fork e envie um Pull Request para contribuições de conteúdo.
-
Use padrões de commit claros e descreva a motivação da mudança no PR.
-
Coordenador / Maintainer: @mathewsph2 (GitHub)
-
Para dúvidas e sugestões: abra uma issue no repositório
Este projeto é acadêmico e não possui licença comercial.

