我们需要设计一个在线酒店预订系统,用户可以在其中搜索给定城市的酒店并进行预订。这是一个 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.支付状态等
此类中的其他字段也是不言自明的。