# Hotel Management System

• Last Updated : 22 Jun, 2021

Given the data for Hotel management and User:
Hotel Data:

```Hotel Name     Room Available     Location     Rating      Price per Room
H1                4               Bangalore      5           100
H2                5               Bangalore      5           200
H3                6               Mumbai         3           100```

User Data:

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

```User Name         UserID             Booking Cost
U1                 2                  1000
U2                 3                  1200
U3                 4                  1100```

1. Print the hotel data.
2. Sort hotels by Name.
3. Sort Hotel by highest rating.
4. Print Hotel data for Bangalore Location.
5. Sort hotels by maximum number of rooms Available.
6. Print user Booking data.

Machine coding round involves solving a design problem in a matter of a couple of hours.
It requires designing and coding a clean, modular and extensible solution based on a specific set of requirements.

Approach:

• Create classes for Hotel data and User data.
• Initialize variables that stores Hotel data and User data.
• Create Objects for Hotel and user classes that access the Hotel data and User data.
• initialize two vector array that holds the hotel data and user data.
• solve the Above questions one by one.

Below is the implementation of the above approach.

## C++

 `// C++ program to solve``// the given question` `#include ``#include ``#include ``#include ` `using` `namespace` `std;` `// Create class for hotel data.``class` `Hotel {``public``:``    ``string name;``    ``int` `roomAvl;``    ``string location;``    ``int` `rating;``    ``int` `pricePr;``};` `// Create class for user data.``class` `User : ``public` `Hotel {``public``:``    ``string uname;``    ``int` `uId;``    ``int` `cost;``};` `// Function to Sort Hotels by``// Bangalore location``bool` `sortByBan(Hotel& A, Hotel& B)``{``    ``return` `A.name > B.name;``}` `// Function to sort hotels``// by rating.``bool` `sortByr(Hotel& A, Hotel& B)``{``    ``return` `A.rating > B.rating;``}` `// Function to sort hotels``// by rooms availability.``bool` `sortByRoomAvailable(Hotel& A,``                        ``Hotel& B)``{``    ``return` `A.roomAvl < B.roomAvl;``}` `// Print hotels data.``void` `PrintHotelData(vector hotels)``{``    ``cout << ``"PRINT HOTELS DATA:"` `<< endl;``    ``cout << ``"HotelName"``         ``<< ``"   "``         ``<< ``"Room Available"``         ``<< ``"    "``         ``<< ``"Location"``         ``<< ``"    "``         ``<< ``"Rating"``         ``<< ``"    "``         ``<< ``"PricePer Room:"` `<< endl;` `    ``for` `(``int` `i = 0; i < 3; i++) {``        ``cout << hotels[i].name``             ``<< ``"          "``             ``<< hotels[i].roomAvl``             ``<< ``"              "``             ``<< hotels[i].location``             ``<< ``"       "``             ``<< hotels[i].rating``             ``<< ``"            "``             ``<< hotels[i].pricePr``             ``<< endl;``    ``}``    ``cout << endl;``}` `// Sort Hotels data by name.``void` `SortHotelByName(vector hotels)``{``    ``cout << ``"SORT BY NAME:"` `<< endl;` `    ``std::sort(hotels.begin(), hotels.end(),``              ``sortByBan);` `    ``for` `(``int` `i = 0; i < hotels.size(); i++) {``        ``cout << hotels[i].name << ``" "``             ``<< hotels[i].roomAvl << ``" "``             ``<< hotels[i].location << ``" "``             ``<< hotels[i].rating << ``" "``             ``<< ``" "` `<< hotels[i].pricePr``             ``<< endl;``    ``}``    ``cout << endl;``}` `// Sort Hotels by rating``void` `SortHotelByRating(vector hotels)``{``    ``cout << ``"SORT BY A RATING:"` `<< endl;` `    ``std::sort(hotels.begin(),``              ``hotels.end(), sortByr);` `    ``for` `(``int` `i = 0; i < hotels.size(); i++) {``        ``cout << hotels[i].name << ``" "``             ``<< hotels[i].roomAvl << ``" "``             ``<< hotels[i].location << ``" "``             ``<< hotels[i].rating << ``" "``             ``<< ``" "` `<< hotels[i].pricePr``             ``<< endl;``    ``}``    ``cout << endl;``}` `// Print Hotels for any city Location.``void` `PrintHotelBycity(string s,``                      ``vector hotels)``{``    ``cout << ``"HOTELS FOR "` `<< s``         ``<< ``" LOCATION IS:"``         ``<< endl;``    ``for` `(``int` `i = 0; i < hotels.size(); i++) {` `        ``if` `(hotels[i].location == s) {` `            ``cout << hotels[i].name << ``" "``                 ``<< hotels[i].roomAvl << ``" "``                 ``<< hotels[i].location << ``" "``                 ``<< hotels[i].rating << ``" "``                 ``<< ``" "` `<< hotels[i].pricePr``                 ``<< endl;``        ``}``    ``}``    ``cout << endl;``}` `// Sort hotels by room Available.``void` `SortByRoomAvailable(vector hotels)``{``    ``cout << ``"SORT BY ROOM AVAILABLE:"` `<< endl;` `    ``std::sort(hotels.begin(), hotels.end(),``              ``sortByRoomAvailable);` `    ``for` `(``int` `i = hotels.size() - 1; i >= 0; i--) {` `        ``cout << hotels[i].name << ``" "``             ``<< hotels[i].roomAvl << ``" "``             ``<< hotels[i].location << ``" "``             ``<< hotels[i].rating << ``" "``             ``<< ``" "` `<< hotels[i].pricePr``             ``<< endl;``    ``}``    ``cout << endl;``}` `// Print the user's data``void` `PrintUserData(string userName[],``                   ``int` `userId[],``                   ``int` `bookingCost[],``                   ``vector hotels)``{` `    ``vector user;``    ``User u;` `    ``// Access user data.``    ``for` `(``int` `i = 0; i < 3; i++) {``        ``u.uname = userName[i];``        ``u.uId = userId[i];``        ``u.cost = bookingCost[i];``        ``user.push_back(u);``    ``}` `    ``// Print User data.``    ``cout << ``"PRINT USER BOOKING DATA:"``         ``<< endl;``    ``cout << ``"UserName"``         ``<< ``" "``         ``<< ``"UserID"``         ``<< ``" "``         ``<< ``"HotelName"``         ``<< ``" "``         ``<< ``"BookingCost"` `<< endl;` `    ``for` `(``int` `i = 0; i < user.size(); i++) {``        ``cout << user[i].uname``             ``<< ``"         "``             ``<< user[i].uId``             ``<< ``"        "``             ``<< hotels[i].name``             ``<< ``"         "``             ``<< user[i].cost``             ``<< endl;``    ``}``}` `// Functiont to solve``// Hotel Management problem``void` `HotelManagement(string userName[],``                     ``int` `userId[],``                     ``string hotelName[],``                     ``int` `bookingCost[],``                     ``int` `rooms[],``                     ``string locations[],``                     ``int` `ratings[],``                     ``int` `prices[])``{``    ``// Initialize arrays that stores``    ``// hotel data and user data``    ``vector hotels;` `    ``// Create Objects for``    ``// hotel and user.``    ``Hotel h;` `    ``// Initialise the data``    ``for` `(``int` `i = 0; i < 3; i++) {``        ``h.name = hotelName[i];``        ``h.roomAvl = rooms[i];``        ``h.location = locations[i];``        ``h.rating = ratings[i];``        ``h.pricePr = prices[i];``        ``hotels.push_back(h);``    ``}``    ``cout << endl;` `    ``// Call the various operations``    ``PrintHotelData(hotels);``    ``SortHotelByName(hotels);``    ``SortHotelByRating(hotels);``    ``PrintHotelBycity(``"Bangalore"``,``                     ``hotels);``    ``SortByRoomAvailable(hotels);``    ``PrintUserData(userName,``                  ``userId,``                  ``bookingCost,``                  ``hotels);``}` `// Driver Code.``int` `main()``{` `    ``// Initialize variables to stores``    ``// hotels data and user data.``    ``string userName[] = { ``"U1"``, ``"U2"``, ``"U3"` `};``    ``int` `userId[] = { 2, 3, 4 };``    ``string hotelName[] = { ``"H1"``, ``"H2"``, ``"H3"` `};``    ``int` `bookingCost[] = { 1000, 1200, 1100 };``    ``int` `rooms[] = { 4, 5, 6 };``    ``string locations[] = { ``"Bangalore"``,``                           ``"Bangalore"``,``                           ``"Mumbai"` `};``    ``int` `ratings[] = { 5, 5, 3 };``    ``int` `prices[] = { 100, 200, 100 };` `    ``// Function to perform operations``    ``HotelManagement(userName, userId,``                    ``hotelName, bookingCost,``                    ``rooms, locations,``                    ``ratings, prices);` `    ``return` `0;``}`
Output
```PRINT HOTELS DATA:
HotelName   Room Available    Location    Rating    PricePer Room:
H1          4              Bangalore       5            100
H2          5              Bangalore       5            200
H3          6              Mumbai       3            100

SORT BY NAME:
H3 6 Mumbai 3  100
H2 5 Bangalore 5  200
H1 4 Bangalore 5  100

SORT BY A RATING:
H1 4 Bangalore 5  100
H2 5 Bangalore 5  200
H3 6 Mumbai 3  100

HOTELS FOR Bangalore LOCATION IS:
H1 4 Bangalore 5  100
H2 5 Bangalore 5  200

SORT BY ROOM AVAILABLE:
H3 6 Mumbai 3  100
H2 5 Bangalore 5  200
H1 4 Bangalore 5  100

PRINT USER BOOKING DATA: