Skip to content

Latest commit

 

History

History
134 lines (86 loc) · 6.3 KB

README.md

File metadata and controls

134 lines (86 loc) · 6.3 KB

Sistema de hotel integrado com banco de dados

Versão do programa GitHub stars GitHub issues

Uma aplicação desktop que simula o sistema de um hotel conectado a um banco de dados para manter reservas e hóspedes. Desenvolvida com Java, utilizando Swing para a interface gráfica, e conectada com MySQL.

Badge do desafio

Índice

Sobre o projeto

Este foi o último challenge do programa ONE. A identidade visual do projeto é o "Hotel Alura", posto que a Alura forneceu as imagens e modelos para o design da aplicação.

Os principais requisitos do projeto eram:

  • Sistema de autenticação de usuários, para que somente usuários pertencentes ao hotel possam acessar o sistema;
  • Manter reservas e hóspedes;
  • Calcular o valor da reserva com base no número de dias e no valor da diária, informados no momento do cadastro;
  • Banco de dados para armazenar todos os dados solicitados anteriormente.

Decidi por codar o projeto 100% em inglês, porém mantive a interface em português.

O único acesso ao sistema é por meio do login e senha "admin", pois o foco do projeto era a integração com o banco de dados por meio do cadastro de reservas e hóspedes.

Menu principal

Aqui são exibidas a data atual e as informações do sistema. O usuário tem a opção de registrar uma nova reserva ou de consultar o banco de dados.

Registro de reservas

Consiste em uma tela com 5 campos que devem ser preenchidos pelo usuário:

  • Data de check-in;
  • Data de check-out;
  • Valor da diária;
  • Valor total;
  • Forma de pagamento.

As datas são formatadas com JFormattedTextField e validadas com a classe LocalTime; não é possível inserir uma data passada nem inserir um check-out anterior ao check-in. O sistema também reconhece anos bissextos e altera o valor do campo caso a data esteja incorreta.

O valor da diária também deve ser preenchido pelo usuário; após isso, ao clicar no botão calcular no campo valor total, o programa multiplica a quantidade de dias pelo valor da diária e exibe o valor total no campo.

Após isso, o usuário seleciona a forma de pagamento em uma combo box e clica em próximo.

Todos os inputs são validados e, caso atendam aos critérios, o usuário recebe uma confirmação do cadastro, o Id da reserva e é redirecionado à tela de registro de hóspede.

Caso algum input não esteja válido, uma mensagem é exibida para que o usuário preencha o campo corretamente.

Registro de hóspedes

Consiste em uma tela com 6 campos que devem ser preenchidos pelo usuário:

  • Nome;
  • Sobrenome;
  • Data de nascimento;
  • Nacionalidade;
  • Telefone;
  • Id da reserva.

Nome, sobrenome e nacionalidade são campos de texto normais, apenas com limite de caracteres e que devem ser preenchidos.

A data de nascimento, assim como outros inputs de datas, é formatada com JFormattedTextField e validada com a classe LocalTime; para que um hóspede possa ser registrado, ele deve ter mais que 21 anos.

O telefone é validado com uma regex no padrão brasileiro, podendo conter parênteses, espaços e/ou hífen e devendo conter o ddd do estado; são aceitos números residenciais (ddd + 8 dígitos) e celulares (ddd + 9 seguido de 8 dígitos).

O Id da reserva é preenchido automaticamente com o número gerado no cadastro de reserva, porém pode ser alterado; ele deve ser maior que 0 e conter apenas números. Caso o Id informado não conste no banco de dados, o hóspede será registrado com um Id da resrva de valor null.

Consulta ao banco de dados

Aqui o usuário encontra um JTabbedPane com duas abas: Reservas e Hóspedes. Cada aba contém uma tabela com as informações correspondentes aos registros no banco de dados.

Ao selecionar qualquer elemento da tabela clicando duas vezes, o usuário pode alterar o valor e salvar as aletrações clicando no botão Editar; o programa informará se a operação foi bem-sucedida e atualizará a tabela.

Ao selecionar qualquer linha da tabela clicando uma vez, o usuário poderá excluir todas as informações daquele cadastro no banco de dados clicando no botão Deletar; o programa informará se a operação foi bem-sucedida e atualizará a tabela.

Telas

  • Tela inicial:
Tela inicial da aplicação com um botão de login
  • Tela de login:
Um campo para nome de usuário, um campo para senha e um botão para entrar
  • Menu principal:
Data atual, informações do sistema, botão para registrar uma reserva e botão para consultar banco de dados
  • Registro de reserva:
Tela de registro com 5 campos para input do usuário e botão próximo
  • Registro de hóspede:
Tela de registro com 6 campos para input do usuário e botão concluído
  • Tela de consulta:
Um painel de abas com 2 abas, uma para reservas e outra para hóspedes, cada um contendo uma tabela correspondente e botões editar e deletar

Updates

A concluir:

  • Implementar cadastro de hóspede independente do cadastro de reservas;
  • Implementar filtro para busca de registro específico na tela de consulta;
  • Padronizar tamanho das telas;
  • Padronizar cores dentro das views, talvez como atributos.