Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏨 Sistema de Gerenciamento de Pousada (hotel-management-system)

Java Maven MySQL Swing License

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.


📌 Sumário


🎯 Visão Geral & Funcionalidades

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.

📐 Arquitetura & Estrutura do Projeto

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

🛠️ Tecnologias & Bibliotecas

  • 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 MySQL
    • org.apache.poi:poi & poi-ooxml (v5.2.5) — Manipulação e exportação para Excel

⚙️ Pré-requisitos

Antes de iniciar, certifique-se de ter instalado em sua máquina:

  1. Java JDK 17 ou superior instalado e configurado nas variáveis de ambiente (JAVA_HOME).
  2. Apache Maven 3.8+ (ou IDE com Maven embutido, como Eclipse/IntelliJ).
  3. MySQL Server 8.0+ em execução localmente.

🗄️ Configuração do Banco de Dados

  1. Acesse o seu cliente MySQL (MySQL Workbench, DBeaver ou CLI).

  2. Importe e execute o script SQL localizado em:

    database/pousada_db.sql
    

    Nota: O script criará o banco pousada_db e as tabelas cliente, quarto, reserva, hospedagem e pagamento com dados de teste já cadastrados.

  3. Ajuste as credenciais de acesso no arquivo de propriedades localizado em:

    resources/database.properties
    

    Exemplo de configuração:

    user=root
    password=sua_senha_aqui
    dburl=jdbc:mysql://localhost:3306/pousada_db
    useSSL=false
    serverTimezone=UTC

🚀 Como Executar o Projeto

Opção 1: Via IDE (Eclipse / IntelliJ IDEA / VS Code)

  1. Abra a IDE e selecione Import Project > Existing Maven Projects.
  2. Aponte para a pasta raiz PousadaJava.
  3. Aguarde o download automático das dependências declaradas no pom.xml.
  4. (Opcional) Para validar a conexão com o banco de dados, execute o teste em:
    src/test/java/dao/BancoDadosTeste.java
    
  5. Para iniciar a aplicação gráfica, execute a classe principal:
    src/main/java/gui/TelaPrincipalWindow.java
    

Opção 2: Via Linha de Comando (Terminal / Maven)

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"

🔄 Fluxo Recomendado de Demonstração

Para testar todas as funcionalidades e regras do sistema em ordem lógica:

  1. Cadastrar Cliente: Acesse a aba Clientes e adicione um novo hóspede.
  2. Cadastrar Quarto: Na aba Quartos, adicione uma acomodação com status DISPONIVEL.
  3. Criar Reserva: Na aba Reservas, crie uma reserva vinculando o cliente e o quarto cadastrado (o status do quarto mudará para RESERVADO).
  4. Realizar Check-in: Na aba Hospedagem, informe o código da reserva para efetuar o check-in (o quarto mudará para OCUPADO).
  5. Realizar Check-out: Na aba Hospedagem, encerre a estadia. O sistema calculará o valor total das diárias e liberará o quarto (DISPONIVEL).
  6. Registrar Pagamento: Na aba Pagamentos, confirme o acerto financeiro informando o código da hospedagem.
  7. 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:

About

Sistema de gerenciamento de pousada em Java, MySQL/JDBC, arquitetura em camadas (DAO/DTO/Service/GUI), Multi-threading (Daemon Threads) e geração de relatórios em XML.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages