Curso: Ciência da Computação (URI – Santo Ângelo)
Disciplina: Linguagem de Programação III
Professor: Prof. Denilson Rodrigues da Silva
Autores: Thiago Ruiz e Guilherme Marschall
Versão: 1.0 – 14/06/2025
Repositório: https://github.com/guilhermemarch/cantinasa
Este documento descreve a análise, projeto e instruções de implementação de um terminal digital de autoatendimento para cantinas universitárias. O sistema foi desenvolvido em Spring Boot (camada de negócio e persistência) e JavaFX (interface gráfica), seguindo arquitetura MVC e princípios SOLID.
- Autoatendimento: seleção de produtos, montagem do pedido, confirmação e pagamento.
- Pagamentos: simulação de valores em moeda/cédula com cálculo de troco.
- Administração: autenticação de funcionários, abastecimento de estoque, retirada de valores.
- Relatórios: produtos mais vendidos, horários de pico, transações, itens vencidos/próximos do vencimento.
- Tratamento de Exceções: falta de produto, ausência de troco, cancelamento de compra.
Abaixo, algumas telas do sistema em funcionamento:
- MVC na UI JavaFX (
Controller,Service,Repository). - DTO + Mapper para comunicação REST interna.
- Observer para alertas de estoque.
| Atores | Fluxo Principal |
|---|---|
| Cliente | 1. Seleciona categoria e produto. 2. Ajusta quantidades. 3. Confirma pedido. 4. Realiza pagamento. 5. Recebe comprovante. |
| Componente | Descrição |
|---|---|
| ProductService | Regras de negócio do produto e estoque. |
| OrderService | Orquestra criação do pedido. |
| PaymentStrategy | Implementa Pagamento para dinheiro, cartão, PIX. |
| ReportService | Gera relatórios |
| AuthController | Endpoints de login/logout admin. |
-
Clone e Build
git clone https://github.com/guilhermemarch/cantinasa.git cd cantinasa mvn clean package -DskipTests -
Execução
java -jar backend/target/cantinasa-api.jar java -jar desktop/target/cantinasa-ui.jar
A documentação JavaDoc foi escrita manualmente diretamente no código-fonte, com comentários explicativos em cada classe, método e endpoint relevante.
Essa abordagem visa facilitar a compreensão da estrutura e funcionamento da API para outros desenvolvedores e colaboradores do projeto.










