Hotel Management System Project in C++
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:
User Name UserID Booking Cost
U1 2 1000
U2 3 1200
U3 4 1100
The task is to answer the following question.
Print the hotel data.
Sort hotels by Name.
Sort Hotel by highest rating.
Print Hotel data for Bangalore Location.
Sort hotels by maximum number of rooms Available.
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 and user data.
solve the Above questions one by one.
Below is the implementation of the above approach
Solution C++
// C++ program to solve the given question
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
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 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 sortByRoomAvalable(Hotel& A,Hotel& B)
{
return A.roomAvl < B.roomAvl;
}
// Print hotels data.
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 sortByRoomAvalable(Hotel& A,Hotel& B)
{
return A.roomAvl < B.roomAvl;
}
// Print hotels data.
void PrintHotelData(vector<Hotel> hotels)
{
cout << "PRINT HOTELS DATA:" << endl;
cout << "HotelName" << " " << "Room Avalable"<< " " << "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<Hotel> 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<Hotel> 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<Hotel> 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<Hotel> hotels)
{
cout << "SORT BY ROOM AVAILABLE:" << endl;
std::sort(hotels.begin(), hotels.end(),
sortByRoomAvalable);
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<Hotel> hotels)
{
vector<User> 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
<< user[i].cost << endl;
}
}
// Function 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<Hotel> 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 operation;
HotelManagement(userName, userId, hotelName, bookingCost, rooms, locations, ratings, prices);
return 0;
}
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:
UserName UserID HotelName BookingCost
U1 2 H1 1000
U2 3 H2 1200
U3 4 H3 1100
}
// Function 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<Hotel> 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 operation;
HotelManagement(userName, userId, hotelName, bookingCost, rooms, locations, ratings, prices);
return 0;
}
***Output***
***Print The Hotel Data***
HotelName Room Avalable Location Rating PricePer Room:***Print The Hotel Data***
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:
UserName UserID HotelName BookingCost
U1 2 H1 1000
U2 3 H2 1200
U3 4 H3 1100
0 Comments:
Post a Comment