Skip to content

codingburgas/null-terminators-reservation-system

 
 

Repository files navigation

Лого

# 🏨 Hotel Reservation System

A high-performance C++ desktop application for managing hotel room bookings, built with Dear ImGui and GLFW/OpenGL. The system features a modern graphical workspace splitting user access into client-facing Guest registration workflows and an advanced Administrative control panel.


📋 Project Description

This application allows users to interact with a hotel platform through a smooth graphical user interface instead of a text terminal. It supports:

  • Dual-Role Access Control: Dedicated client workspaces based on authentication. Guests can register a profile, check room statuses, and submit custom bookings. Administrators have an exclusive operations dashboard to view, track, and filter the global registry.
  • Sorting: Organizes active reservations alphabetically by customer name using an in-memory Bubble Sort implementation.
  • Searching: Tracks down explicit database records instantly using an ID-based lookup framework (Linear Search).
  • Recursive Resource Calculation: Evaluates total cumulative nights booked globally by dynamically partitioning vector tracking indexes via mathematical Recursion.
  • Data Encapsulation: Implements object-oriented architecture patterns to isolate secure data mutations, memory tracking logic, and active GUI render cycles.

Developed following the Scrum methodology using a strict three-tier architecture (Presentation → Logic → Data).


📄 Documentation

Documentation

Presentation


👥 Team Members & Roles

Name Role
Antonio Ivanov Scrum Master
Presiyan Tenev Back-End Developer
Loris Zadikyan Back-End Developer
Ivan Lapchev Front-End Developer

🏗️ Architecture

The project follows a strict Three-Tier Architecture:

┌──────────────────────────────────────┐
│         Presentation Layer           │
│  presentation.h / presentation.cpp   │
│  Renders GUI via Dear ImGui          │
└──────────────────┬───────────────────┘
                   │ calls
┌──────────────────▼───────────────────┐
│            Logic Layer               │
│      logic.h / logic.cpp             │
│  Sorting, Searching, Recursion       │
└──────────────────┬───────────────────┘
                   │ calls
┌──────────────────▼───────────────────┐
│             Data Layer               │
│       data.h / data.cpp              │
│  Reservation struct, storage, I/O    │
└──────────────────────────────────────┘
  • Presentation — renders the ImGui GUI, handles user input, calls only Logic layer functions
  • Logic — implements all algorithms; calls only Data layer functions
  • Data — defines the Reservation struct, holds the in-memory database, exposes getReservations(), addReservation(), initData()

📁 Project Structure

null-terminators-reservation-system/
├── src/
│   ├── main.cpp            # Application entry point
│   ├── presentation.cpp    # GUI rendering views (ImGui + GLFW)
│   ├── logic.cpp           # Algorithmic sorting, searching, and recursion
│   ├── data.cpp            # Core record persistence and storage mechanics
│   └── auth.cpp            # Authentication logic and session flows
├── include/
│   ├── presentation.h
│   ├── logic.h
│   ├── data.h
│   └── auth.h
├── libs/
│   ├── imGui/              # Dear ImGui source files
│   └── glfw/               # GLFW framework binaries
├── Documentation/
│   ├── documentation.docx
│   └── presentation.pptx
└── README.md

⚙️ Setup & Installation

Prerequisites

  • Visual Studio 2022 with the Desktop development with C++ workload
  • GLFW — windowing and OpenGL context (64-bit Windows binaries)
  • Dear ImGui — already included in libs/imGui/
  • OpenGL — included with Windows / Visual Studio

Building & Running

  1. Open reservationManagementSystem.slnx in Visual Studio 2022
  2. Set the configuration to Debug and platform to x64
  3. Press Ctrl+Shift+B to build
  4. Press F5 to run

🚀 How to Use

Once the application launches, the "Reservation Management System" window will appear:

Feature How to use
Authentication Sign up as a Guest to book a stay, or log in as an Admin to access the master dashboard.
Sort by Name Click the "Sort by Name" button to arrange all current records alphabetically by customer name.
Search by ID Type a numeric identifier into the "Search ID" widget and click find — a linear array scanner will highlight the matching reservation row.
Total Nights Calculation Displayed dynamically at the top of the Admin dashboard, calculated recursively across the database.
View Reservations Inspect active bookings containing fields for ID, Name, Phone, Room ID, Nights, Type, Package, and Total Bill.

📦 Dependencies

Library Version Purpose
Dear ImGui Included in libs/imGui/ GUI rendering
GLFW 3.x (64-bit) Window creation and OpenGL context
OpenGL System Graphics rendering backend

About

2026-pd-9-create-repository-2526-9-CPP-SprintProject created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 86.1%
  • C 13.4%
  • Objective-C 0.5%