{"id":37316622,"url":"https://github.com/calebeaf02/hotelaria_unb_tp1","last_synced_at":"2026-05-30T08:03:37.254Z","repository":{"id":315824793,"uuid":"1060735486","full_name":"CalebeAF02/Hotelaria_UnB_TP1","owner":"CalebeAF02","description":"Gestão hoteleira em C++: Domínios, Entidades, POO.","archived":false,"fork":false,"pushed_at":"2025-11-24T01:08:26.000Z","size":4618,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-26T18:06:34.442Z","etag":null,"topics":["controladores","cpp","crud","gerenciador","hotel","interfaces","poo","unb"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CalebeAF02.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-20T13:41:48.000Z","updated_at":"2025-11-24T01:08:30.000Z","dependencies_parsed_at":"2025-10-01T07:13:44.504Z","dependency_job_id":"f4dbf71a-5e9c-4d37-9eb2-718aeccfa872","html_url":"https://github.com/CalebeAF02/Hotelaria_UnB_TP1","commit_stats":null,"previous_names":["calebeaf02/gerenciador_hotel_unb","calebeaf02/antigo_projeto_hotel_clion","calebeaf02/finalizado_projeto_hotel_clion","calebeaf02/gerenciador-de-hoteis---unb","calebeaf02/hotelaria_unb_tp1"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CalebeAF02/Hotelaria_UnB_TP1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalebeAF02%2FHotelaria_UnB_TP1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalebeAF02%2FHotelaria_UnB_TP1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalebeAF02%2FHotelaria_UnB_TP1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalebeAF02%2FHotelaria_UnB_TP1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CalebeAF02","download_url":"https://codeload.github.com/CalebeAF02/Hotelaria_UnB_TP1/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalebeAF02%2FHotelaria_UnB_TP1/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33684419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["controladores","cpp","crud","gerenciador","hotel","interfaces","poo","unb"],"created_at":"2026-01-16T03:10:54.510Z","updated_at":"2026-05-30T08:03:37.248Z","avatar_url":"https://github.com/CalebeAF02.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏨 Hotelaria_UnB_TP1\n\nProjeto acadêmico em **C++**, desenvolvido na Universidade de Brasília (UnB), com foco em **Programação Orientada a\nObjetos (POO)**, **arquitetura modular**, **persistência com SQLite** e **documentação automatizada com Doxygen**.\n\nO sistema simula um **gerenciador de hotel**, permitindo:\n\n- Cadastro e login de **hóspedes** e **gerentes**\n- Gerenciamento de **quartos**, **reservas**, **solicitações** e **hotéis**\n- Validação de dados diretamente nas classes de domínio\n- Navegação por menus interativos via **interface de terminal (CLI)**\n- Separação por pacotes funcionais: apresentação, serviço, persistência e fábrica\n\n---\n\n## 🚀 Funcionalidades Atuais\n\n- Interface de terminal com menus dinâmicos\n- CRUD completo de gerentes\n- Fluxo de hóspedes com registro de hospedagem e consulta de status\n- Validação embutida nos domínios com tratamento de exceções\n- Persistência local com banco SQLite (`hotel.db`)\n- Documentação gerada automaticamente em `docs/html` e `docs/latex`\n- Script `gerar_documentacao.bat` para automatizar a geração da documentação\n- Modo de desenvolvimento com acesso rápido via `SistemaHacker`\n\n---\n\n## 🧭 Linha do Tempo de Funcionalidades\n\n| Etapa | Funcionalidade      | Descrição                                            |\n|-------|---------------------|------------------------------------------------------|\n| 1️⃣   | Tela Inicial        | Escolha entre gerente ou hóspede                     |\n| 2️⃣   | Acesso como Gerente | Menu com opções de criar, logar e gerenciar          |\n| 3️⃣   | Criar Gerente       | Cadastro com validação de nome, email, ramal e senha |\n| 4️⃣   | Login de Gerente    | Verificação no banco com feedback de sucesso ou erro |\n| 5️⃣   | Central de Serviços | Acesso às operações CRUD de gerentes                 |\n| 6️⃣   | Ler Gerentes        | Listagem formatada dos gerentes cadastrados          |\n| 7️⃣   | Remover Gerente     | Exclusão por email com confirmação                   |\n| 8️⃣   | Acesso como Hóspede | Menu com opções de hospedagem e status               |\n| 9️⃣   | Criar Solicitação   | Interface para registrar interesse em hospedagem     |\n| 🔟    | Ver Status          | Consulta ao status da solicitação feita              |\n| 🔜    | Atualizar Gerente   | (Em desenvolvimento) Edição de dados do gerente      |\n\n---\n\n## 🧭 Fluxo de Navegação\n\n- Gerente:\n    - Login via autenticação persistente\n    - Acesso à central de serviços\n    - CRUD de gerentes, hotéis, quartos, reservas\n    - Avaliação de solicitações de hospedagem\n- Hóspede:\n    - Registro de solicitação de hospedagem\n    - Consulta de status por email\n- Hacker:\n    - Criação automática de gerente para testes\n    - Acesso direto à central de serviços\n\n---\n\n## 📸 Exemplos Visuais da Interface\n\n### 🏁 Tela Inicial do Sistema\n\n![Tela de boas-vindas com opções de acesso](docs/imagens/tela_inicial.png)\n\n### 🛏️ Menu para Hospedagem\n\n![Menu para hospedagem com opções de solicitação e status](docs/imagens/menu_hospedagem.png)\n\n### 🧑‍💼 Menu Inicial do Gerente\n\n![Opções de criar gerente ou fazer login](docs/imagens/menu_inicial_gerente.png)\n\n### Tentativa de Login com Erro\n\n![Erro de login: usuário não encontrado ou senha incorreta](docs/imagens/login_erro.png)\n\n### 👤 Cadastro de Novo Gerente\n\n![Cadastro de gerente com nome, email, ramal e senha](docs/imagens/cadastro_gerente.png)\n\n### 🔐 Login de Gerente com Sucesso\n\n![Login realizado com sucesso e acesso à central de serviços](docs/imagens/login_sucesso_menu_servicos.png)\n\n### 🧠 Central de Serviços\n\n![Menu principal após login, com acesso aos módulos do sistema](docs/imagens/central_servicos.png)\n\n### 🧭 Menu CRUD de Gerentes\n\n![Central de serviços com opções de criar, ler, atualizar e remover](docs/imagens/menu_crud_gerente.png)\n\n### 📋 Lista de Gerentes\n\n![Exibição dos gerentes cadastrados](docs/imagens/lista_gerentes.png)\n\n---\n\n## 📂 Estrutura do Projeto\n\nHotelaria_UnB_TP1/\n├── docs/ #Documentação gerada (HTML/LaTeX/Imagens)\n├── include/ #Headers (.hpp) da aplicação\n│ ├── HACKER/\n│ │ └── SistemaHacker.hpp\n│ └── sistema/\n│ ├── banco/\n│ │ └── BancoDeDados.hpp\n│ ├── objetos/\n│ │ ├── dominios/ #Tipos de valor com validação (Nome, Email, Senha, etc.)\n│ │ ├── entidades/ #Pessoa, Gerente, Hospede, Hotel, Quarto, Reserva, SolicitacaoHospedagem\n│ │ ├── entidades_dto/ #DTOs correspondentes\n│ │ └── sub_sistema/\n│ │ ├── ControladoraPersistenciaSolicitacaoHospedagem.hpp\n│ │ ├── pacote_acesso/\n│ │ │ ├── InterfaceApresentacaoAcessoGerente.hpp\n│ │ │ ├── InterfaceApresentacaoAcessoHospede.hpp\n│ │ │ └── modulo_apresentacao_acesso/\n│ │ │ ├── ControladoraApresentacaoAcessoGerente.hpp\n│ │ │ └── ControladoraApresentacaoAcessoHospede.hpp\n│ │ ├── pacote_autenticavel/\n│ │ │ ├── InterfaceApresentacaoAutenticavel.hpp\n│ │ │ ├── InterfacePersistenciaAutenticavel.hpp\n│ │ │ ├── InterfaceServicoAutenticavel.hpp\n│ │ │ ├── modulo_apresentacao_autenticavel/\n│ │ │ │ └── ControladoraApresentacaoAutenticavel.hpp\n│ │ │ ├── modulo_persistencia_autenticavel/\n│ │ │ │ └── ControladoraPersistenciaAutenticavel.hpp\n│ │ │ └── modulo_servico_autenticavel/\n│ │ │ └── ControladoraServicoAutenticavel.hpp\n│ │ ├── pacote_fabrica/\n│ │ │ ├── InterfaceFabricaGerenciavel.hpp\n│ │ │ └── modulo_apresentacao_fabrica/\n│ │ │ └── FabricaGerenciavel.hpp\n│ │ ├── pacote_gerente/\n│ │ │ ├── InterfaceApresentacaoGerente.hpp\n│ │ │ ├── InterfacePersistenciaGerente.hpp\n│ │ │ ├── InterfaceServicoGerente.hpp\n│ │ │ ├── modulo_apresentacao_gerente/\n│ │ │ │ └── ControladoraApresentacaoGerente.hpp\n│ │ │ ├── modulo_persistencia_gerente/\n│ │ │ │ └── ControladoraPersistenciaGerente.hpp\n│ │ │ └── modulo_servico_gerente/\n│ │ │ └── ControladoraServicoGerente.hpp\n│ │ ├── pacote_hospede/\n│ │ │ ├── InterfaceApresentacaoHospede.hpp\n│ │ │ ├── InterfacePersistenciaHospede.hpp\n│ │ │ ├── InterfaceServicoHospede.hpp\n│ │ │ ├── modulo_apresentacao_hospede/\n│ │ │ │ └── ControladoraApresentacaoHospede.hpp\n│ │ │ ├── modulo_persistencia_hospede/\n│ │ │ │ └── ControladoraPersistenciaHospede.hpp\n│ │ │ └── modulo_servico_hospede/\n│ │ │ └── ControladoraServicoHospede.hpp\n│ │ ├── pacote_hotel/\n│ │ │ ├── InterfaceApresentacaoHotel.hpp\n│ │ │ ├── InterfacePersistenciaHotel.hpp\n│ │ │ ├── InterfaceServicoHotel.hpp\n│ │ │ ├── modulo_apresentacao_hotel/\n│ │ │ │ └── ControladoraApresentacaoHotel.hpp\n│ │ │ ├── modulo_persistencia_hotel/\n│ │ │ │ └── ControladoraPersistenciaHotel.hpp\n│ │ │ └── modulo_servico_hotel/\n│ │ │ └── ControladoraServicoHotel.hpp\n│ │ ├── pacote_quarto/\n│ │ │ ├── InterfaceApresentacaoQuarto.hpp\n│ │ │ ├── InterfacePersistenciaQuarto.hpp\n│ │ │ ├── InterfaceServicoQuarto.hpp\n│ │ │ ├── modulo_apresentacao_quarto/\n│ │ │ │ └── ControladoraApresentacaoQuarto.hpp\n│ │ │ ├── modulo_persistencia_quarto/\n│ │ │ │ └── ControladoraPersistenciaQuarto.hpp\n│ │ │ └── modulo_servico_quarto/\n│ │ │ └── ControladoraServicoQuarto.hpp\n│ │ └── pacote_reserva/\n│ │ ├── InterfaceApresentacaoReserva.hpp\n│ │ ├── InterfacePersistenciaReserva.hpp\n│ │ ├── InterfaceServicoReserva.hpp\n│ │ ├── modulo_apresentacao_reserva/\n│ │ │ └── ControladoraApresentacaoReserva.hpp\n│ │ ├── modulo_persistencia_reserva/\n│ │ │ └── ControladoraPersistenciaReserva.hpp\n│ │ └── modulo_servico_reserva/\n│ │ └── ControladoraServicoReserva.hpp\n│ └── utilitarios/\n│ ├── enum/ #Modos.hpp\n│ ├── Utils.hpp\n│ ├── AplicacaoSistema.hpp\n│ ├── Sistema.hpp\n│ ├── SistemaSessao.hpp\n│ └── Versao.hpp\n├── libs/ #Bibliotecas e componentes reutilizáveis\n│ ├── formato/ #Formato.cpp/.hpp\n│ ├── io/ #IO.cpp/.hpp\n│ ├── menu/ #Menu, MenuCRUD, MenuItem, ExibirMenu\n│ ├── sqlite/ #sqlite3.c/.h (embutido)\n│ ├── tabela/ #Atributo, Linha, Tabela, TamanhoAtributo\n│ └── teste/ #SmokeTeste, InterfaceDeTestes\n├── src/ #Implementações (.cpp) — espelha include/ quando aplicável\n│ ├── HACKER/SistemaHacker.cpp\n│ └── sistema/sub_sistema/\n│ ├── ControladoraPersistenciaSolicitacaoHospedagem.cpp\n│ ├── pacote_acesso/\n│ │ └── modulo_apresentacao_acesso/\n│ │ ├── ControladoraApresentacaoAcessoGerente.cpp\n│ │ └── ControladoraApresentacaoAcessoHospede.cpp\n│ ├── pacote_autenticavel/\n│ │ ├── modulo_apresentacao_autenticavel/\n│ │ │ └── ControladoraApresentacaoAutenticavel.cpp\n│ │ ├── modulo_persistencia_autenticavel/\n│ │ │ └── ControladoraPersistenciaAutenticavel.cpp\n│ │ └── modulo_servico_autenticavel/\n│ │ └── ControladoraServicoAutenticavel.cpp\n│ ├── pacote_fabrica/\n│ │ └── modulo_apresentacao_fabrica/\n│ │ └── FabricaGerenciavel.cpp\n│ ├── pacote_gerente/\n│ │ ├── modulo_apresentacao_gerente/\n│ │ │ └── ControladoraApresentacaoGerente.cpp\n│ │ ├── modulo_persistencia_gerente/\n│ │ │ └── ControladoraPersistenciaGerente.cpp\n│ │ └── modulo_servico_gerente/\n│ │ └── ControladoraServicoGerente.cpp\n│ ├── pacote_hospede/\n│ │ ├── modulo_apresentacao_hospede/\n│ │ │ └── ControladoraApresentacaoHospede.cpp\n│ │ ├── modulo_persistencia_hospede/\n│ │ │ └── ControladoraPersistenciaHospede.cpp\n│ │ └── modulo_servico_hospede/\n│ │ └── ControladoraServicoHospede.cpp\n│ ├── pacote_hotel/\n│ │ ├── modulo_apresentacao_hotel/\n│ │ │ └── ControladoraApresentacaoHotel.cpp\n│ │ ├── modulo_persistencia_hotel/\n│ │ │ └── ControladoraPersistenciaHotel.cpp\n│ │ └── modulo_servico_hotel/\n│ │ └── ControladoraServicoHotel.cpp\n│ ├── pacote_quarto/\n│ │ ├── modulo_apresentacao_quarto/\n│ │ │ └── ControladoraApresentacaoQuarto.cpp\n│ │ ├── modulo_persistencia_quarto/\n│ │ │ └── ControladoraPersistenciaQuarto.cpp\n│ │ └── modulo_servico_quarto/\n│ │ └── ControladoraServicoQuarto.cpp\n│ └── pacote_reserva/\n│ ├── modulo_apresentacao_reserva/\n│ │ └── ControladoraApresentacaoReserva.cpp\n│ ├── modulo_persistencia_reserva/\n│ │ └── ControladoraPersistenciaReserva.cpp\n│ └── modulo_servico_reserva/\n│ └── ControladoraServicoReserva.cpp\n├── meta/ #Tema Doxygen Awesome e customizações (CSS/JS/header)\n├── testes/\n│ ├── testes_dominios/ #Testes por domínio\n│ └── testes_entidades/ #Testes por entidade\n├── Doxyfile\n├── gerar_documentacao.bat\n└── README.md\n\n---\n\n## 🔹 Validação Embutida nos Domínios\n\nA validação de dados agora é feita diretamente dentro das classes de domínio. Cada classe é responsável por garantir sua\nprópria integridade, lançando exceções (`invalid_argument`) quando os dados são invalidos.\n\nExemplos:\n\nNome nome(\"Calebe\"); // valido  \nEmail email(\"email@invalido\"); // lança exceção  \nSenha senha(\"123\"); // lança exceção se nao atender aos critérios\n\n---\n\n## 🧪 Testes\n\n- testes_dominios/ → Testes unitários por tipo de dado\n\n- testes_entidades/ → Testes por entidade\n\n- libs/teste/ → SmokeTeste e InterfaceDeTestes\n\n- Contadores estáticos:\n\n    - contTotalTestes\n\n    - contTotalTestesOk\n\n    - contTotalTestesProblema\n\n---\n\n## 🛠️ Como Compilar\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake ..\nmake\n./gerenciador_hotel_unb\n```\n\n- Este projeto já inclui o SQLite como biblioteca estática:\n\n    - libs/sqlite/sqlite3.h → cabeçalho da API\n\n    - libs/sqlite/sqlite3.c → implementação embutida\n\n- Nenhuma instalação externa é necessária. Basta clonar e compilar.\n\n---\n\n## 🤝 Como Contribuir\n\nSe você deseja colaborar com o projeto, siga estas etapas:\n\n1. Clone o repositório :\n   git clone https://github.com/CalebeAF02/Gerenciador-De-Hoteis---UNB.git\n   cd Hotelaria_UnB_TP1\n\n2. Crie uma branch :\n\n   git checkout -b nome-da-sua-branch\n\n3. Compile e teste localmente :\n\n   mkdir build \u0026\u0026 cd build\n   cmake ..\n   make\n\n4. Commit e push :\n\n   git add .\n   git commit -m \"feat: descrição clara da funcionalidade\"\n   git push origin nome-da-sua-branch\n\n5. Abra um Pull Request no GitHub\n\n---\n\n## 📚 Próximos Passos\n\nReserva: implementar CRUD completo e validar disponibilidade de quartos.\n\nSolicitação de Hospedagem: corrigir persistência e fluxo de atualização.\n\nAutenticação: integrar com persistência real de gerentes.\n\nSessão: reforçar restrições de acesso por gerente/hotel.\n\nTestes: ampliar cobertura para reservas e solicitações.\n\nExportação de dados: implementar saída para .csv ou .tsv.\n\nInterface gráfica: migrar futuramente para Qt ou Web.\n\nDocumentação: expandir exemplos de uso e diagramas UML.\n\n    \n---\n\n## 🛠️ O que falta implementar\n\n    🔎 Situação atual\n\n        - O pacote_reserva já possui:\n\n            - Interfaces (InterfaceApresentacaoReserva.hpp, InterfacePersistenciaReserva.hpp, InterfaceServicoReserva.hpp)\n        \n            - Controladoras nos três módulos (ControladoraApresentacaoReserva, ControladoraPersistenciaReserva, ControladoraServicoReserva)\n        \n        - Porém, a persistência está apenas esboçada (métodos stub retornando valores fixos).\n        \n        - O fluxo de reserva ainda não está integrado com o restante do sistema (hotel, quarto, hóspede).\n\n1. Persistência (ControladoraPersistenciaReserva)\n\n       - Criar tabela reservas no SQLite (se ainda não existir).\n       \n       - Métodos:\n       \n           - inserir(const Reserva \u0026reserva)\n           \n           - atualizar(const Reserva \u0026reserva)\n           \n           - excluir(int id)\n           \n           - listar() -\u003e vector\u003cReservaDTO\u003e\n           \n           - pesquisarPorID(int id)\n           \n           - Usar sqlite3_prepare_v2, sqlite3_bind_* e sqlite3_step como já feito em ControladoraPersistenciaGerente.\n\n2. Serviço (ControladoraServicoReserva)\n\n       - Delegar para a persistência.\n\n       - Validar regras de negócio:\n           \n           - Verificar se o quarto está disponível no período (chegada/partida).\n\n           - Garantir que o hóspede existe.\n\n           - Garantir que o hotel/quarto existem.\n\n       - Retornar bool ou optional\u003cReservaDTO\u003e conforme o caso.\n\n3. Apresentação (ControladoraApresentacaoReserva)\n\n       - Menu CRUD de reservas:\n\n           - Criar reserva (coletar hóspede_id, hotel_id, quarto_id, datas).\n\n           - Listar reservas.\n\n           - Atualizar reserva.\n\n           - Remover reserva.\n\n       - Exibir feedback claro (sucesso/erro).\n\n4. Integração com sessão (SistemaSessao)\n\n       - Usar gerente_id e hotel_id ativos para restringir operações.\n\n       - Exemplo: gerente só pode manipular reservas do seu hotel.\n\n---\n\n## 🎯 Objetivo Educacional\n\nEste projeto visa aplicar conceitos de POO em C++ moderno, com foco em:\n\n- Herança e Polimorfismo\n- Encapsulamento\n- Tratamento de exceções\n- Arquitetura em camadas, limpa e boas práticas\n- Persistência com banco de dados\n\n---\n\n## 👤 Autores\n\nProjeto desenvolvido por:\n\n- [Calebe Alves](https://github.com/CalebeAF02) — Universidade de Brasília (UnB)\n- [Artur Silva](https://github.com/TUTUBOY-PRO) — Universidade de Brasília (UnB)\n\n📎 Repositorio: https://github.com/CalebeAF02/gerenciador_hotel_unb\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalebeaf02%2Fhotelaria_unb_tp1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcalebeaf02%2Fhotelaria_unb_tp1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalebeaf02%2Fhotelaria_unb_tp1/lists"}