簡體   English   中英

Java酒店管理系統設計

[英]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在酒店Guestoccupant的財產Room

這樣,很容易知道您的房間是否可用或您的客人是否已簽到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM