day01-4-訂座功能

滿漢樓01-4

4.功能實現03

4.5訂座功能

4.5.1功能說明

如果該餐桌處於已經預定或者就餐狀態時,不能進行預定,並給出相應提示

image-20221019213415517

4.5.2思路分析

根據顯示介面,要考慮以下兩種狀態

  1. 檢測餐桌是否存在
  2. 檢測餐桌的狀態
  3. 如果餐桌存在且狀態為空(即可以預定),在預定過後要修改餐桌狀態

4.5.3程式碼實現

1.修改DiningTableService類

在該類中增加方法getDiningTableById和方法orderDiningTable

//根據id,查詢對應的餐桌DiningTable對象
//如果返回null,則表示對應id編號的餐桌不存在
public DiningTable getDiningTableById(int id) {
    //把寫完的sql語句放在查詢分析其去測試一下
    DiningTable diningTable =
            diningTableDAO.querySingle("select * from diningTable where id=?", DiningTable.class, id);
    return diningTable;
}

//如果餐桌可以預定,調用方法,對其狀態進行更新(包括預定人的名字和電話)
public boolean orderDiningTable(int id, String orderName, String orderTel) {
    int update = diningTableDAO.update("update diningTable set state='已經預定',orderName=?,orderTel=? where id=?", orderName, orderTel, id);
    return update > 0;
}
2.修改MHLView類

修改處1:在該類中增加方法orderDiningTable,完成訂座功能

//完成訂座功能
public void orderDiningTable() {
    System.out.println("============預定餐桌============");
    System.out.println("請選擇要預定的餐桌編號(-1退出): ");
    int orderId = Utility.readInt();
    if (orderId == -1) {
        System.out.println("============取消預定餐桌============");
        return;
    }
    //readConfirmSelection方法得到 Y 或者 N
    char key = Utility.readConfirmSelection();
    if (key == 'Y') {//要預定
        //根據orderId返回對應的DiningTable,如果為null,說明該編號的餐桌不存在
        DiningTable diningTable = diningTableService.getDiningTableById(orderId);
        if (diningTable == null) {
            System.out.println("============預定餐桌的餐桌不存在============");
            return;
        }

        //判斷餐桌的狀態是否為 「空」
        if (!"空".equals(diningTable.getState())) {//如果餐桌狀態不為空
            //不能預定
            System.out.println("============該餐桌已經預定或者處於就餐中============");
            return;
        }

        //如果前兩個判斷都不滿足,說明餐桌存在且可以預定
        //接收預定資訊
        System.out.print("預訂人名字: ");
        String orderName = Utility.readString(50);
        System.out.print("預訂人電話: ");
        String orderTel = Utility.readString(50);
        //更新餐桌狀態
        if (diningTableService.orderDiningTable(orderId, orderName, orderTel)) {
            System.out.println("============預定餐桌成功============");
        } else {
            System.out.println("============預定餐桌失敗============");
        }
    } else {
        System.out.println("============取消預定餐桌============");
        return;
    }
}

修改處2:在顯示介面的內層循環中調用orderDiningTable()方法

image-20221019223748319

4.5.4測試功能

  • 首先登錄用戶帳號

image-20221019223901963

  • 查看當前餐桌狀態

image-20221019223918572

  • 選擇預定餐桌功能,輸入餐桌編號等資訊,顯示預定餐桌成功

  • 再次查看當前餐桌狀態,顯示1號餐桌狀態為「已預訂」

image-20221019224402787

  • 再次預定同一個餐桌,預定失敗,顯示「該餐桌已經預定或者處於就餐中」

image-20221019224458677

測試完畢,通過

Tags: