[英]hotel management system design in java
我正在用Java設計一個簡單的酒店管理系統,但我陷入了設計困境。
在我的主要職能中,我創建2個房間和1個客人。 我希望訪客類能夠bookRoom
Room,並讓一個Room檢查它是否isAvailable
。
由於我沒有使用任何數據庫,因此將房間存儲在HashMap中,其中的鍵是Room,值是一個布爾值,指示是否已預訂。
我的房間班級將如何訪問該哈希圖? 還是設計/思考問題的一種不好的方式?
類似地,我的訪客類將如何訪問bookRoom
,它應該被稱為isAvailable
,這是一個Room方法。
任何建議將不勝感激!
客人
public class Guest {
String name;
boolean checkedIn;
public Guest(String name) {
this.name = name;
}
public void checkIn() {
setCheckedIn(true);
}
public void checkOut() {
setCheckedIn(false);
}
public boolean getStatus() {
return checkedIn;
}
public void setCheckedIn(boolean checkedIn) {
this.checkedIn = checkedIn;
}
public void bookRoom(String type) {
// check if room of type x is available
// if yes, create a guest booking
// if no, return
}
}
房間
public class Room {
public enum roomType {
ONE_BEDRM, TWO_BEDRM, THREE_BEDRM, PENTHOUSE
}
public int roomNum;
public double price;
public roomType type;
public Room(int roomNum, double price, roomType type) {
this.roomNum = roomNum;
this.price = price;
this.type = type;
}
public boolean isAvailable(Room room) {
boolean available = availability.get(room); // problem here obviously cause hashmap is defined in main
if (available) {
return true;
}
return false;
}
public int getRoomNumber() {
return roomNum;
}
}
主要
public static void main(String[] args) throws Exception {
Guest mike = new Guest("mike");
mike.checkIn();
mike.getStatus();
HashMap<Room, Boolean> availability = new HashMap<>();
Room one_bedroom1 = new Room(1001, 100.00, Room.roomType.ONE_BEDRM);
Room two_bedroom1 = new Room(2001, 200.00, Room.roomType.TWO_BEDRM);
availability.put(one_bedroom1, true);
availability.put(two_bedroom1, true);
}
===================================================== =
感謝所有在評論中提供幫助的人! 這是我現在可以正常進行的編輯:
房間
public class Room {
public enum roomType {
ONE_BEDRM, TWO_BEDRM, THREE_BEDRM, PENTHOUSE
}
private boolean available;
private Guest occupant;
private int roomNum;
private double price;
private roomType type;
public Room(int roomNum, double price, roomType type) {
this.roomNum = roomNum;
this.price = price;
this.type = type;
}
public boolean isAvailable() {
return this.available;
}
public boolean getAvailable() {
return available;
}
public void setAvailable(boolean available) {
this.available = available;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public roomType getRoomType() {
return type;
}
public void setRoomType(roomType type) {
this.type = type;
}
public int getRoomNumber() {
return roomNum;
}
public void setRoomNumber(int roomNum) {
this.roomNum = roomNum;
}
public Guest getGuest() {
return occupant;
}
public void setGuest(Guest occupant) {
this.occupant = occupant;
}
}
客人
public class Guest {
private String name;
private boolean checkedIn;
private Room room;
public Guest(String name) {
this.name = name;
}
public void checkIn(Room room) {
if (this.getStatus() == false) {
this.setCheckedIn(true);
this.setRoom(room);
}
}
public void checkOut() {
if (this.getStatus() == true) {
this.setCheckedIn(false);
this.setRoom(null);
}
}
public boolean getStatus() {
return checkedIn;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Room getRoom() {
return room;
}
public void setRoom(Room room) {
this.room = room;
}
public void setCheckedIn(boolean checkedIn) {
this.checkedIn = checkedIn;
}
public void getRoomInfo(Room room) {
System.out.println("Room # : " + room.getRoomNumber());
System.out.println("Room price : " + room.getPrice());
System.out.println("Room type : " + room.getRoomType());
System.out.println("Room occupant : " + room.getGuest().getName());
}
}
主要
public static void main(String[] args) throws Exception {
Guest mike = new Guest("mike");
Room one_bedroom1 = new Room(1001, 100.00, Room.roomType.ONE_BEDRM);
Room two_bedroom1 = new Room(2001, 200.00, Room.roomType.TWO_BEDRM);
one_bedroom1.setAvailable(true);
two_bedroom1.setAvailable(true);
System.out.println(one_bedroom1.isAvailable());
mike.checkIn(one_bedroom1);
one_bedroom1.setGuest(mike);
mike.getRoomInfo(one_bedroom1);
}
為什么不讓可用性成為Room
的成員?
private boolean available;
public void setAvailable(boolean available) {
this.available = available;
}
public boolean isAvailable() {
return this.available;
}
在main
:
one_bedroom1.setAvailable(false);
您可以讓Guest
引用一個Room
來代替checkedIn
的布爾值或在其之外引用一個Room
。 然后,您可以執行mike.chekcIn(one_bedroom1)
。
您也可以將“ Room
引用為“ Guest
”,例如物業occupant
所以,當你簽入您的客人,您設置的room
在酒店Guest
和occupant
的財產Room
。
這樣,很容易知道您的房間是否可用或您的客人是否已簽到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.