酒店类实现:管理房间、订单和用户预订
这是一个酒店类的实现,包含了添加房间、退房、查询可用房间数、预订房间、续房服务、取消订单、展示订单和删除过期订单等功能。其中,Room类表示酒店的房间,包含房间类型和是否可用等属性;Order类表示客户的订单,包含订单ID、房间类型、预订房间数量、客户信息、订单过期时间和预订天数等属性。酒店类维护了一个房间列表和一个订单列表,并提供了各种操作这些列表的方法。
class Hotel {
public:
void add_room(Room::Type type)
{
rooms.push_back(Room(type));
}
void remove_room(int index) //退房
{
if (index >= 0 && index < rooms.size())
{
rooms.erase(rooms.begin() + index);
}
}
int get_available_rooms(Room::Type type) const
{
int count = 0;
for (const auto& room : rooms)
{
if (room.get_type() == type && room.is_room_available())
{
count++;
}
}
return count;
}
bool add_order(Room::Type room_type, int num_rooms, const string& name, const string& phone, const string& email, time_t expiration, int day)
{
if (get_available_rooms(room_type) >= num_rooms)
{
orders.push_back(Order(next_order_id++, room_type, num_rooms, name, phone, email, expiration, day));
return true;
}
return false;
}
bool renew_order(int order_id, int day)//用于续房服务
{
for (auto& order : orders)
{
if (order.get_id() == order_id && order.get_expiration() >= time(nullptr))
{
order = Order(order.get_id(), order.get_room_type(), order.get_num_rooms(), order.get_name(), order.get_phone(), order.get_email(), order.get_expiration() + (86400 * day), order.get_day() + day);
return true;
}
}
return false;
}
void cancel_order(int order_id)
{
for (auto& order : orders)
{
if (order.get_id() == order_id)
{
order = orders.back();
orders.pop_back();
break;
}
}
}
void show_orders() const
{
cout << left << setw(10) << "ID" << setw(15) << "Room Type" << setw(15) << "Num Rooms" << setw(15) << "Name" << setw(15) << "Phone" << setw(15) << "Email" << setw(15) << "Day" << endl;
for (const auto& order : orders)
{
cout << left << setw(10) << order.get_id() << setw(15) << (order.get_room_type() == Room::Type::Standard ? "Standard" : "Deluxe") << setw(15) << order.get_num_rooms() << std::setw(15) << order.get_name() << setw(15) << order.get_phone() << setw(15) << order.get_email() << setw(15) << order.get_day() << endl;
}
}
//删除过期订单
void remove_expired_orders()
{
time_t now = time(nullptr);
orders.erase(std::remove_if(orders.begin(), orders.end(), [now](const Order& order) { return order.get_expiration() < now; }), orders.end());
}
private:
vector<Room> rooms;
vector<Order> orders;
int next_order_id = 1;
};
代码中,酒店类包含了以下方法:
- add_room(Room::Type type): 添加一个新的房间,指定房间类型。
- remove_room(int index): 移除指定索引的房间,模拟退房操作。
- get_available_rooms(Room::Type type): 返回指定类型房间的可用数量。
- add_order(...): 添加一个新的预订订单,包含房间类型、房间数量、客户信息、过期时间和预订天数等信息。
- renew_order(int order_id, int day): 续订指定订单,延长预订天数。
- cancel_order(int order_id): 取消指定订单。
- show_orders(): 展示所有订单信息。
- remove_expired_orders(): 删除所有过期订单。
这个酒店类的实现提供了一个基本的酒店管理功能,可以用来管理房间、订单和客户预订信息。当然,这只是一个简单的示例,实际的酒店管理系统会更加复杂,需要考虑更多因素,例如支付、房间状态管理、用户权限等。
原文地址: https://www.cveoy.top/t/topic/ob3U 著作权归作者所有。请勿转载和采集!