📜  设计一个像 OYO Rooms 这样的在线酒店预订系统

📅  最后修改于: 2021-09-10 02:48:12             🧑  作者: Mango

我们需要设计一个在线酒店预订系统,用户可以在其中搜索给定城市的酒店并进行预订。这是一个 OOP 设计问题,所以我没有在这个解决方案中编写完整的代码。我只创建了类和属性。
解决方案 :
主要课程:
1. 用户
2. 房间
3. 酒店
4. 预订
5. 地址
6. 设施

Java
// Java code skeleton to design an online hotel
// booking system.
Enums:
 
public enum RoomStatus {
    EMPTY
        NOT_EMPTY;
}
 
public enum RoomType {
    SINGLE,
    DOUBLE,
    TRIPLE;
}
 
public enum PaymentStatus {
    PAID,
    UNPAID;
}
 
public enum Facility {
    LIFT;
    POWER_BACKUP;
    HOT_WATER;
    BREAKFAST_FREE;
    SWIMMING_POOL;
}
 
class User {
 
    int userId;
    String name;
    Date dateOfBirth;
    String mobNo;
    String emailId;
    String sex;
}
 
// For the room in any hotel
class Room {
 
    int roomId; // roomNo
    int hotelId;
    RoomType roomType;
    RoomStatus roomStatus;
}
 
class Hotel {
 
    int hotelId;
    String hotelName;
    Address address;
 
    // hotel contains the list of rooms
    List rooms;
    float rating;
    Facilities facilities;
}
 
// a new booking is created for each booking
// done by any user
class Booking {
    int bookingId;
    int userId;
    int hotelId;
 
    // We are assuming that in a single
    // booking we can book only the rooms
    // of a single hotel
    List bookedRooms;
     
    int amount;
    PaymentStatus status_of_payment;
    Date bookingTime;
    Duration duration;
}
 
class Address {
 
    String city;
    String pinCode;
    String state;
    String streetNo;
    String landmark;
}
 
class Duration {
 
    Date from;
    Date to;
 
}
 
class Facilities {
 
    List facilitiesList;
}


让我解释一下这些类以及它们之间的关系。

此处定义的枚举是不言自明的。 User、Room 和 Address 类也是不言自明的。设施类包含酒店提供的设施列表(枚举)。如果需要,我们可以在 Facility 枚举中添加更多设施。持续时间类有两个属性“from”和“to”,这是显而易见的。

现在,“酒店”类包含:
1.房间列表(Room class)//这是酒店的房间列表
2. 地址类 // 它的地址
3. 设施类 // 它拥有的设施
“预订”类包含:
1. 用户 // 相关信息
2. 酒店 // 酒店信息
3. 房间列表
4.支付状态等
此类中的其他字段也是不言自明的。