Este projeto é um sistema desktop de gestão agrícola, desenvolvido em Java durante a disciplina de Programação Avançada do curso Técnico em Informática. Ele permite organizar clientes, produtos, safras, produções e os custos envolvidos em cada etapa.
Mais do que um trabalho acadêmico, o sistema surgiu de uma situação real: percebi uma dificuldade enfrentada pelo meu pai no controle dessas informações e decidi transformá-la em uma oportunidade para aprender e criar uma possível solução.
O problema
Controlar uma produção agrícola envolve informações que estão diretamente relacionadas. É necessário saber qual cliente está ligado à produção, o produto cultivado, a safra correspondente, o período, a quantidade produzida e os custos gerados durante o processo.
Quando esses dados ficam espalhados ou são registrados manualmente, acompanhar a produção e compreender seus gastos se torna mais difícil. O projeto busca reunir essas informações em um único sistema, seguindo o fluxo:
cliente → produto → safra → produção → custo
A solução desenvolvida
A aplicação oferece uma interface gráfica para cadastrar, consultar, editar e excluir os principais dados do processo agrícola. O acesso começa por uma tela de login e, depois da autenticação, o usuário pode utilizar os diferentes módulos do sistema.
Entre as funcionalidades implementadas estão:
- cadastro de clientes, com documento, telefone e endereço;
- cadastro de produtos e suas unidades de medida;
- cadastro de safras e seus períodos;
- registro de produções ligadas a um cliente, produto e safra;
- controle de tipos de custo e custos de cada produção;
- máscaras e validações para os campos dos formulários;
- geração de relatórios em PDF.
Organização do código
Um dos principais objetivos da disciplina era evitar que toda a lógica ficasse dentro das telas. Por isso, o projeto foi organizado em camadas inspiradas no padrão MVC:
- Model: representa entidades como
Cliente,Produto,Safra,ProducaoeCusto; - View: reúne as telas desenvolvidas com Java Swing;
- Controller: conecta as ações da interface às regras da aplicação;
- DAO: concentra as operações de leitura e escrita no banco de dados.
Essa separação tornou o código mais organizado e ajudou a compreender melhor a responsabilidade de cada classe. Os cadastros seguem uma estrutura semelhante, o que também facilita a manutenção e a criação de novas funcionalidades.
Banco de dados
Os dados são armazenados em um banco PostgreSQL. A modelagem utiliza tabelas para clientes, produtos, safras, produções, custos, tipos de custo e usuários.
As chaves estrangeiras representam os relacionamentos do domínio: uma produção está vinculada a um cliente, um produto e uma safra; cada custo, por sua vez, está ligado a uma produção e a um tipo de custo.
A conexão é centralizada na classe ConexaoBD, utilizando o padrão Singleton.
As credenciais ficam em um arquivo externo de propriedades, permitindo separar a
configuração normal da configuração destinada aos testes.
Relatórios em PDF
O projeto utiliza a biblioteca Apache PDFBox para transformar os registros da aplicação em relatórios PDF. O gerador organiza os dados em tabelas, calcula a largura das colunas, trata a quebra de conteúdo e cria novas páginas quando necessário.
Essa funcionalidade foi importante para praticar a integração com bibliotecas externas e a manipulação de arquivos além das operações tradicionais de cadastro.
Tecnologias utilizadas
- Java 21;
- Java Swing e NetBeans GUI Builder;
- PostgreSQL e JDBC;
- Maven;
- Apache PDFBox;
- JUnit 4 e Hamcrest;
- arquitetura MVC e padrão DAO.
Principais aprendizados
Durante o desenvolvimento, pude praticar conceitos que vão além da construção de uma interface. Aprendi mais sobre orientação a objetos, divisão de responsabilidades, persistência de dados, relacionamentos entre tabelas, configuração de ambientes e gerenciamento de dependências com Maven.
O projeto também mostrou a importância de começar pelo problema. Utilizar uma necessidade próxima tornou o processo mais interessante e me ajudou a pensar não apenas em fazer o código funcionar, mas em como organizar informações de forma útil para quem utiliza o sistema.
Próximos passos
Como continuação, o sistema pode receber melhorias na segurança da autenticação, no tratamento das consultas SQL, na experiência visual das telas e na cobertura de testes automatizados. Também seria interessante ampliar os relatórios e criar uma visão mais detalhada dos resultados e custos de cada produção.
Este foi um passo importante na minha evolução com Java e bancos de dados. O código-fonte, o script de criação das tabelas e as instruções para executar a aplicação estão disponíveis no repositório do projeto.
