Sistema completo para gerenciamento operacional de pousadas desenvolvido em Java 17, utilizando Java Swing para interface gráfica e MySQL para persistência de dados. O projeto contempla o ciclo de vida completo do hóspede, desde o cadastro e reserva até check-in, check-out, pagamento, logs automatizados e geração de relatórios gerenciais em Excel.
Desenvolvido como projeto final da disciplina de Programação Orientada a Objetos 2 (POO2) na UTFPR - Campus Ponta Grossa.
- Visão Geral & Funcionalidades
- Arquitetura & Estrutura do Projeto
- Tecnologias & Bibliotecas
- Pré-requisitos
- Configuração do Banco de Dados
- Como Executar o Projeto
- Fluxo Recomendado de Demonstração
O sistema visa automatizar a gestão de hospedagem com controle em tempo real de ocupação, integração financeira e relatórios operacionais:
- 👤 Gestão de Clientes: Cadastro, edição, listagem e remoção de hóspedes (validação de dependências ativas).
- 🛏️ Gestão de Quartos: Controle de categorias, valores diários e acompanhamento de status (
DISPONIVEL,RESERVADO,OCUPADO,MANUTENCAO). - 📅 Gerenciamento de Reservas: Agendamento de estadias vinculadas a clientes e quartos com atualização automática de status.
- 🚪 Hospedagem (Check-in & Check-out):
- Check-in: Transição de reserva para hospedagem ativa.
- Check-out: Cálculo automático do total de diárias e encerramento da estadia.
- 💳 Módulo de Pagamentos: Registro financeiro vinculando formas de pagamento (
DINHEIRO,CARTAO_CREDITO,CARTAO_DEBITO,PIX). - 📊 Relatórios & Exportação: Geração de relatórios gerenciais e exportação direta para planilhas
.xls(Apache POI). - ⏱️ Processamento Concorrente (Multi-threading):
RelogioThread: Atualização de data/hora em tempo real na interface gráfica.MonitorReservasThread: Verificação assíncrona em segundo plano do status de reservas.
- 📁 Sistema de Logs: Registro automático em disco (
/logs) formatado por data.
O projeto utiliza uma arquitetura baseada em camadas (Layered Architecture) para promover separação de conceitos:
PousadaJava/
├── database/
│ └── pousada_db.sql # Script de criação e população inicial do banco de dados
├── logs/ # Diretório de geração automática de logs do sistema
├── relatorios/ # Arquivos de relatórios exportados (.xls)
├── resources/
│ └── database.properties # Configurações de conexão com o banco de dados MySQL
├── src/
│ ├── main/java/
│ │ ├── dao/ # Camada de Acesso a Dados (Data Access Object - JDBC)
│ │ ├── dto/ # Objetos de Transferência de Dados / Entidades
│ │ ├── enums/ # Enumeradores (StatusQuarto, StatusReserva, FormaPagamento, etc.)
│ │ ├── exception/ # Trata exceções personalizadas de regras de negócio (NegocioException)
│ │ ├── gui/ # Interface Gráfica Java Swing (Janelas e Painéis)
│ │ ├── service/ # Camada de Serviços e Regras de Negócio
│ │ ├── thread/ # Threads para execução concorrente (Relógio e Monitor)
│ │ └── util/ # Utilitários (Exportador Excel, Loggers)
│ └── test/java/
│ └── dao/ # Testes de integração de banco de dados
├── Leia-me.txt # Instruções sucintas de execução
├── pom.xml # Gerenciamento de dependências e plugins Maven
└── README.md # Documentação oficial do projeto
- Linguagem principal: Java 17
- Interface de Usuário: Java Swing
- Persistência de Dados: JDBC (Java Database Connectivity)
- Banco de Dados: MySQL 8.0+
- Gerenciador de Build: Apache Maven
- Dependências Externas:
mysql-connector-j(v8.3.0) — Driver JDBC do MySQLorg.apache.poi:poi&poi-ooxml(v5.2.5) — Manipulação e exportação para Excel
Antes de iniciar, certifique-se de ter instalado em sua máquina:
- Java JDK 17 ou superior instalado e configurado nas variáveis de ambiente (
JAVA_HOME). - Apache Maven 3.8+ (ou IDE com Maven embutido, como Eclipse/IntelliJ).
- MySQL Server 8.0+ em execução localmente.
-
Acesse o seu cliente MySQL (MySQL Workbench, DBeaver ou CLI).
-
Importe e execute o script SQL localizado em:
database/pousada_db.sqlNota: O script criará o banco
pousada_dbe as tabelascliente,quarto,reserva,hospedagemepagamentocom dados de teste já cadastrados. -
Ajuste as credenciais de acesso no arquivo de propriedades localizado em:
resources/database.propertiesExemplo de configuração:
user=root password=sua_senha_aqui dburl=jdbc:mysql://localhost:3306/pousada_db useSSL=false serverTimezone=UTC
- Abra a IDE e selecione Import Project > Existing Maven Projects.
- Aponte para a pasta raiz
PousadaJava. - Aguarde o download automático das dependências declaradas no
pom.xml. - (Opcional) Para validar a conexão com o banco de dados, execute o teste em:
src/test/java/dao/BancoDadosTeste.java - Para iniciar a aplicação gráfica, execute a classe principal:
src/main/java/gui/TelaPrincipalWindow.java
Na pasta raiz do projeto, execute:
# Compilar o projeto
mvn clean compile
# Executar a classe principal da aplicação
mvn exec:java -Dexec.mainClass="gui.TelaPrincipalWindow"Para testar todas as funcionalidades e regras do sistema em ordem lógica:
- Cadastrar Cliente: Acesse a aba Clientes e adicione um novo hóspede.
- Cadastrar Quarto: Na aba Quartos, adicione uma acomodação com status
DISPONIVEL. - Criar Reserva: Na aba Reservas, crie uma reserva vinculando o cliente e o quarto cadastrado (o status do quarto mudará para
RESERVADO). - Realizar Check-in: Na aba Hospedagem, informe o código da reserva para efetuar o check-in (o quarto mudará para
OCUPADO). - Realizar Check-out: Na aba Hospedagem, encerre a estadia. O sistema calculará o valor total das diárias e liberará o quarto (
DISPONIVEL). - Registrar Pagamento: Na aba Pagamentos, confirme o acerto financeiro informando o código da hospedagem.
- Gerar Relatórios: Na aba Relatórios, visualize o resumo operacional e exporte os dados para um arquivo Excel (
.xls).
Projeto desenvolvido para a disciplina de POO2 da UTFPR - Campus Ponta Grossa: