这是一个酒店类的实现,包含了添加房间、退房、查询可用房间数、预订房间、续房服务、取消订单、展示订单和删除过期订单等功能。其中,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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录