欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

day01-4-餐桌状态显示&订座功能,

来源: javaer 分享于  点击 41682 次 点评:182

day01-4-餐桌状态显示&订座功能,


满汉楼01-4

4.功能实现03

4.4显示餐桌状态

4.4.1功能说明

当用户登录成功之后,选择显示餐桌状态,可以看到所有的餐桌编号以及对应的餐桌状态

4.4.2思路分析

创建表diningTable,创建对应的Javabean,创建对应的DAO,service层...

4.4.3代码实现

4.4.3.1创建diningTable表
-- 创建表diningTable(主键id,empId,name,pwd,job等)
CREATE TABLE diningTable(
	id INT PRIMARY KEY AUTO_INCREMENT,#自增,表示餐桌编号
	state VARCHAR(20)NOT NULL DEFAULT '',#餐桌状态
	orderName VARCHAR(50) NOT NULL DEFAULT '',#预定人的名字
	orderTel VARCHAR(20) NOT NULL DEFAULT ''#预定人的电话
)CHARSET=utf8

-- 插入测试数据
INSERT INTO diningTable VALUES(NULL,'空','','');
INSERT INTO diningTable VALUES(NULL,'空','','');
INSERT INTO diningTable VALUES(NULL,'空','','');

SELECT * FROM diningTable;
4.4.3.2创建DiningTable类
package com.li.mhl.domain;
/**
 * @author 李
 * @version 1.0
 * 这是一个Javabean ,和表 diningTable对应
 */
public class DiningTable {
    /**
     * Field      Type         Null    Key     Default  Extra
     * ---------  -----------  ------  ------  -------  ----------------
     * id         int(11)      NO      PRI     (NULL)   auto_increment
     * state      varchar(20)  NO
     * orderName  varchar(50)  NO
     * orderTel   varchar(20)  NO
     */
    private Integer id;
    private String state;
    private String orderName;
    private String orderTel;

    public DiningTable() {//无参构造器,反射需要
    }

    public DiningTable(Integer id, String state, String orderName, String orderTel) {
        this.id = id;
        this.state = state;
        this.orderName = orderName;
        this.orderTel = orderTel;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getOrderName() {
        return orderName;
    }

    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }

    public String getOrderTel() {
        return orderTel;
    }

    public void setOrderTel(String orderTel) {
        this.orderTel = orderTel;
    }

    @Override
    public String toString() {
        return  id + "\t\t\t" + state;
    }
}
4.4.3.3创建DiningTableDAO类
package com.li.mhl.dao;

import com.li.mhl.domain.DiningTable;

/**
 * @author 李
 * @version 1.0
 */
public class DiningTableDAO extends BasicDAO<DiningTable>{
    //如果有特别的操作,可以写在DiningTableDAO中
}
4.4.3.4创建DiningTableService类
package com.li.mhl.service;

import com.li.mhl.dao.DiningTableDAO;
import com.li.mhl.domain.DiningTable;

import java.util.List;

/**
 * @author 李
 * @version 1.0
 * 该类完成对 diningTable表的各种操作(通过调用DiningTableDAO对象完成)
 */
public class DiningTableService {//业务层
    //定义一个DiningTableDAO对象
    private DiningTableDAO diningTableDAO = new DiningTableDAO();

    //返回所有餐桌的信息
    public List<DiningTable> list(){
        List<DiningTable> diningTables =
                diningTableDAO.queryMulti("select id,state from diningTable", DiningTable.class);
        return diningTables;
    }
}
4.4.3.5修改MHLView类

修改处1:增加DiningTableService属性

//定义DiningTableService属性
private DiningTableService diningTableService=new DiningTableService();

修改处2:增加listDiningTable()方法,显示餐桌信息

//显示餐桌状态
public void listDiningTable(){
    List<DiningTable> list = diningTableService.list();
    System.out.println("\n餐桌编号\t\t餐桌状态");
    for (DiningTable diningTable:list) {
        System.out.println(diningTable);
    }
    System.out.println("============显示完毕============");
}

修改处3:在内层循环中调用方法listDiningTable

4.5订座功能

4.5.1功能说明

如果该餐桌处于已经预定或者就餐状态时,不能进行预定,并给出相应提示

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()方法

4.5.4测试功能

  • 首先登录用户账号
  • 查看当前餐桌状态
  • 选择预定餐桌功能,输入餐桌编号等信息,显示预定餐桌成功
  • 再次查看当前餐桌状态,显示1号餐桌状态为“已预订”
  • 再次预定同一个餐桌,预定失败,显示“该餐桌已经预定或者处于就餐中”

测试完毕,通过

相关栏目:

用户点评