← Voltar para Projetos

Sistema de Gestão Agrícola

09 de agosto de 2026

Ver projeto →

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:

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:

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

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.