天空闲话 发表于 2022-10-19 22:36:57

day01-4-订座功能

满汉楼01-4

4.功能实现03

4.5订座功能

4.5.1功能说明

如果该餐桌处于已经预定或者就餐状态时,不能进行预定,并给出相应提示
https://liyuelian.oss-cn-shenzhen.aliyuncs.com/imgs/image-20221019213415517.png4.5.2思路分析

根据显示界面,要考虑以下两种状态

[*]检测餐桌是否存在
[*]检测餐桌的状态
[*]如果餐桌存在且状态为空(即可以预定),在预定过后要修改餐桌状态
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()方法
https://liyuelian.oss-cn-shenzhen.aliyuncs.com/imgs/image-20221019223748319.png4.5.4测试功能


[*]首先登录用户账号
https://liyuelian.oss-cn-shenzhen.aliyuncs.com/imgs/image-20221019223901963.png

[*]查看当前餐桌状态
https://liyuelian.oss-cn-shenzhen.aliyuncs.com/imgs/image-20221019223918572.png

[*]选择预定餐桌功能,输入餐桌编号等信息,显示预定餐桌成功
https://liyuelian.oss-cn-shenzhen.aliyuncs.com/imgs/image-20221019224006604.png

[*]再次查看当前餐桌状态,显示1号餐桌状态为“已预订”
https://liyuelian.oss-cn-shenzhen.aliyuncs.com/imgs/image-20221019224402787.png

[*]再次预定同一个餐桌,预定失败,显示“该餐桌已经预定或者处于就餐中”
https://liyuelian.oss-cn-shenzhen.aliyuncs.com/imgs/image-20221019224458677.png测试完毕,通过

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: day01-4-订座功能