The Hotel Management System streamlines core hotel operations such as room management, guest billing,reservations and restaurent management.
- Guest Management: Add, update, and delete guest records.
- Room Booking: View availability, manage check-ins/outs.
- Billing System: Generate and manage invoices efficiently.
- Statistics: Generate occupancy rate and revenue on dashboard dynamically.
- Scalable Backend:The backend is designed with modularity in mind, enabling seamless integration with various database systems.
- DataAccess Layer-The system uses a well-defined data access layer (DAL) with interfaces and abstract classes. This ensures that database-specific operations (e.g., CRUD) are encapsulated, making it easy to swap or add databases like MySQL, PostgreSQL, MongoDB, or even NoSQL options with minimal changes to the codebase.
This UML diagram represents the Customer class hierarchy, where RestaurantCustomer and HotelCustomer inherit from the abstract Customer class. The Customer class includes common attributes like customerId, name, and billing details, along with methods to manage bills and reservations. RestaurantCustomer adds functionality for handling dishes, tables, and servers, while HotelCustomer focuses on managing reservations.
This UML diagram illustrates the Bill class, which represents a bill with details about a purchase. It includes attributes like a unique bill ID, the total amount, a list of purchased items, their corresponding prices and quantities, and timestamps for generation and payment. The class also provides getter methods to access these attributes and setter methods to modify them, allowing for comprehensive management of bill information.
This UML diagram represents a hotel reservation system. The Hotel class manages details like name, location, rooms, staff, and reservations. The Reservation class handles booking information, including room details, reservation period, tariff, and associated bills, with methods to calculate bills and display reservation details.
The UML diagram illustrates the Staff class, defining its attributes like ID, name, salary, and role, and methods for operations such as assigning tasks, calculating service years, and managing retirement. This class serves as a blueprint for representing staff members within the system.
The UML diagram showcases the DateTime class, which encapsulates the attributes year, month, day, hour, minute, and second to represent a specific date and time. It offers methods to retrieve the current time, determine leap years, validate time and date, check if a date is past the current time, calculate date and time differences, increment days, and format dates and times into strings.
The UML diagram depicts the Room and RoomType classes. The Room class represents a physical room with its attributes and methods, while the RoomType class defines different room types with their associated properties. A one-to-many relationship exists between the two, where a Room can belong to a specific RoomType, but a RoomType can be associated with multiple Rooms.
The UML diagram illustrates the Logon class, which encapsulates user login information. It includes attributes like role ID, access level, email, password, and salt, along with corresponding getter and setter methods for data retrieval and modification. This class likely represents user accounts in a system requiring authentication and authorization.
The UML diagram depicts a Restaurant Management System with three main classes: Table, Restaurant, and Dish. The Table class represents individual tables, the Restaurant class encapsulates the overall restaurant with its tables and dishes, and the Dish class defines the menu items. The relationships between these classes are one-to-many, with a Restaurant having multiple Tables and Dishes.
This project utilizes the following technologies:
Front end
MiddleWare
Backend
Tools
- Ensure to use a Linux based Operating system.
- Install Java 21 OpenJDK and Maven.
- Clone the project with:
git clone https://github.com/mrtechtroid/Programming_2_Project.git`
-
For the first time usage of the project, navigate to the root directory and run
mvn clean install
(This step will take a long time initially, and consists of downloading all required packages, building the frontend, building the cpp libraries, and compiling the java files. -
To run the GUI:
mvn spring-boot:run -Dspring-boot.run.arguments="in-memory gui" -Dskip.npm
(You can also use without the
-Dskip.npm
argument) -
To run the CLI: `
mvn spring-boot:run -Dspring-boot.run.arguments="in-memory cli" -Dskip.npm
The Hotel Management System offers:
- Authentication: Secure access via login/logout (JWT-based).
- Room & Staff Management: Admins manage room inventory, bookings, and staff assignments.
- Billing Systems: Handle room charges, restaurant orders, and table reservations.
- Customer Relationship Management: Maintain guest records for personalized services.
Admin Features:
- Manage rooms, bookings, staff, dishes, and tables.
- Generate bills and reserve rooms.
Usability:
- Intuitive User Interface: The system should provide a clean, user-friendly interface for hotel admins, allowing them to perform operations without specialized training.
- Mobile Responsiveness: The customer-facing website (React app) should be fully responsive and usable on mobile devices.
- Error Handling: Provide user-friendly error messages in case of invalid inputs, system errors, or failures.
Distributed under MIT License. See LICENSE.txt
for more information.