当前位置:   article > 正文

简化版满汉楼(命令行)项目--韩顺平老师_韩顺平 满汉楼项目

韩顺平 满汉楼项目

介绍满汉楼项目

就是一个 点餐项目,
满汉楼只是一个名字,就是高级饭店的名字,
本项目不是界面的,是采用命令行的.
涉及到的技术:
javase+jdbc+mysql+druid+apache-dbutils工具类
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

第一步:创建数据库(mysql8.x)

1、创建数据库

-- 创建mymhl数据库
create database mymhl charset utf8;
-- 使用mymhl数据库
use mymhl;
  • 1
  • 2
  • 3
  • 4

2、创建员工表(用于登录系统)

-- 创建员工表employee
create table employee(
    empId int primary key auto_increment,#编号
    empCount varchar(30)not null unique default 'null',#账户
    empName varchar(30) not null default 'null',#姓名
    empPwd varchar(32)not null default 'null',#密码
    empSex char(1) not null default '男',# 性别
    empAge int not null default 20 #年龄
)charset utf8;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 添加数据
-- 添加初始化数据
insert into employee
values
       (null,'666666','楠小弟',md5('123456'),'男',24),
        (null,'666989','tom',md5('123456'),'男',23),
        (null,'777777','lina',md5('123456'),'女',24);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3、创建餐桌表

-- 创建diningTable座位表
create table diningTable(
    dinId int primary key auto_increment,# 座位号
    dinState int default 0,#餐桌状态:0空闲,1已预定,2就餐中...
    dinUser varchar(30) not null default '',#预定者姓名
    dinTel varchar(11) not null #预定者电话
);
-- 添加数据
insert into diningTable values (null,0,'','');
select *from diningTable;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4、创建菜单表(菜的列表)

-- 菜单表menu
create table menu(
    mId int primary key auto_increment,#唯一编号
    mName varchar(30) not null default 'null',#菜名
    mPrice double not null default 0,#菜的价格
    mType varchar(30) # 菜的类型
);
insert into menu
    values(null,'爆炒腐竹',12,'热菜'),
           (null,'紫菜蛋花汤',15,'汤类'),
           (null,'烧饼',2,'面食'),
           (null,'水饺',15,'面食'),
           (null,'牛肉烩面',10,'面食'),
           (null,'紫菜蛋花汤',15,'汤类'),
           (null,'麻球',10,'甜食'),
           (null,'紫菜蛋花汤',15,'汤类'),
           (null,'麻辣鸡',40,'肉类'),
           (null,'麻辣鱼',35,'肉类'),
           (null,'红糖年糕',15,'甜食'),
           (null,'鱼香肉丝',15,'热菜');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

5、创建账单表

-- 创建账单表bill
create table bill(
    bId int primary key auto_increment,#账单编号
    bCount char(36) not null default '',#账单号,UUId随机获取
    mId int not null ,#菜的编号
    bName varchar(30)not null default '',#菜的名字
    bNums int not null default 0,#菜的数量
    bPrice double not null default 0,
    diningTableId int not null ,
    bTime datetime ,#结账时间
    bState int not null default 0 #账单状态:0未结账,1现金2支付宝3微信...
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

第二步:在idea中创建mhlperson项目

1、项目目录

在这里插入图片描述

2、新建libs包

在这里插入图片描述

3、把相关jar包复制到libs包中并导入项目中

在这里插入图片描述

4、在src目录下新建文件:druid.properties

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mymhl?serverTimeZone=Asia/ShangHai
#数据库用户
username=root
#密码
password=123456
#初始化大小
initialSize=10
# 最大连接数量
maxActive=100
# 最大等待时间
maxWait=3000

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

5、在domain包中创建相对应的类

  • 是和数据库中的表相对应

a、员工类employee.java

public class Employee {
    private Integer empId;
    private String empCount;
    private String empName;
    private String empPwd;
    private String empSex;
    private String empAge;

    public Employee() {
    }

    public Integer getEmpId() {
        return empId;
    }

    public void setEmpId(Integer empId) {
        this.empId = empId;
    }

    public String getEmpCount() {
        return empCount;
    }

    public void setEmpCount(String empCount) {
        this.empCount = empCount;
    }

    public String getEmpName() {
        return empName;
    }

    public void setEmpName(String empName) {
        this.empName = empName;
    }

    public String getEmpPwd() {
        return empPwd;
    }

    public void setEmpPwd(String empPwd) {
        this.empPwd = empPwd;
    }

    public String getEmpSex() {
        return empSex;
    }

    public void setEmpSex(String empSex) {
        this.empSex = empSex;
    }

    public String getEmpAge() {
        return empAge;
    }

    public void setEmpAge(String empAge) {
        this.empAge = empAge;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

b、餐桌类diningTable.java

public class DiningTable {
    /**
     * 座位号
     */
    private Integer dinId;
    /**
     * 座位状态
     */
    private Integer dinState;
    /**
     * 座位预定者
     */
    private String dinUser;
    /**
     * 座位预定者电话
     */
    private String dinTel;

    public DiningTable() {
    }

    @Override
    public String toString() {
        String str;
        if(dinState==0){
            str="空闲ing";
        }else if (dinState==1){
            str="已预定";
        }else{
            str="就餐中";
        }
        String na="";
       if(!dinUser.isEmpty()){
          na =dinUser.substring(0,1)+"**";
       }
        return dinId+"\t\t"+str+"\t\t"+na;
    }

    public Integer getDinId() {
        return dinId;
    }

    public void setDinId(Integer dinId) {
        this.dinId = dinId;
    }

    public Integer getDinState() {
        return dinState;
    }

    public void setDinState(Integer dinState) {
        this.dinState = dinState;
    }

    public String getDinUser() {
        return dinUser;
    }

    public void setDinUser(String dinUser) {
        this.dinUser = dinUser;
    }

    public String getDinTel() {
        return dinTel;
    }

    public void setDinTel(String dinTel) {
        this.dinTel = dinTel;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71

c、菜单类menu.java

public class Menu {
    private Integer mId;
    private String mName;
    private Double mPrice;
    private String mType;

    public Menu() {
    }

    @Override
    public String toString() {
        return  mId +
                "\t\t" + mName  +
                "\t\t" + mPrice +
                "\t\t" + mType;
    }

    public Integer getmId() {
        return mId;
    }

    public void setmId(Integer mId) {
        this.mId = mId;
    }

    public String getmName() {
        return mName;
    }

    public void setmName(String mName) {
        this.mName = mName;
    }

    public Double getmPrice() {
        return mPrice;
    }

    public void setmPrice(Double mPrice) {
        this.mPrice = mPrice;
    }

    public String getmType() {
        return mType;
    }

    public void setmType(String mType) {
        this.mType = mType;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

d、账单类bill.java

public class Bill {
    private Integer bId;
    private String bCount;
    private Integer mId;
    private String bName;
    private Integer bNums;
    private Double bPrice;
    private Integer diningTableId;
    private String bTime;
    private Integer bState;

    public Bill() {
    }

    @Override
    public String toString() {
        String str="";
        if(bState==0){
            str="未付款";
        }else if(bState==1){
            str="现金付款";
        }else if(bState==2){
            str="微信付款";
        }else {
            str="支付宝付款";
        }
        return  bId +"\t\t" + mId +
                "\t\t" + bName  +
                "\t\t" + bNums +
                "\t\t" + bPrice +
                "\t\t" + diningTableId +
                "\t\t" + bTime  +
                "\t" + str ;
    }

    public Integer getbId() {
        return bId;
    }

    public void setbId(Integer bId) {
        this.bId = bId;
    }

    public String getbCount() {
        return bCount;
    }

    public void setbCount(String bCount) {
        this.bCount = bCount;
    }

    public Integer getmId() {
        return mId;
    }

    public void setmId(Integer mId) {
        this.mId = mId;
    }

    public String getbName() {
        return bName;
    }

    public void setbName(String bName) {
        this.bName = bName;
    }

    public Integer getbNums() {
        return bNums;
    }

    public void setbNums(Integer bNums) {
        this.bNums = bNums;
    }

    public Double getbPrice() {
        return bPrice;
    }

    public void setbPrice(Double bPrice) {
        this.bPrice = bPrice;
    }

    public Integer getDiningTableId() {
        return diningTableId;
    }

    public void setDiningTableId(Integer diningTableId) {
        this.diningTableId = diningTableId;
    }

    public String getbTime() {
        return bTime;
    }

    public void setbTime(String bTime) {
        this.bTime = bTime;
    }

    public Integer getbState() {
        return bState;
    }

    public void setbState(Integer bState) {
        this.bState = bState;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108

6、在dao包中创建类

a、创建BasicDao父类

public class BasicDao<T> {
    private QueryRunner qr=new QueryRunner();
    private Connection conn=null;

    /**
     * 通用的查询:多条语句
     * @param sql
     * @param clazz
     * @param obj
     * @return
     */
    public List<T>getAllDate(String sql,Class<T>clazz,Object...obj){
        try {
            conn= JdbcDruid.getConn();
            return qr.query(conn,sql,new BeanListHandler<>(clazz),obj);
        } catch (SQLException e) {
           throw new RuntimeException(e);
        } finally {
            JdbcDruid.getCLose(null,null,conn);
        }
    }

    /**
     * 通用的查询:根据条件得到单条数据
     * @param sql
     * @param clazz
     * @param obj
     * @return
     */
    public T getDateById(String sql,Class<T>clazz,Object...obj){
        try {
            conn=JdbcDruid.getConn();
            return qr.query(conn,sql,new BeanHandler<>(clazz),obj);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            JdbcDruid.getCLose(null,null,conn);
        }
    }

    /**
     * 通用获取某列的值,eg:姓名
     * @param sql
     * @param obj
     * @return
     */
    public Object getScalarDate(String sql,Object...obj){
        try {
            conn=JdbcDruid.getConn();
            return qr.query(conn,sql,new ScalarHandler<>(),obj);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            JdbcDruid.getCLose(null,null,conn);
        }
    }

    /**
     * 通用的dml操作:增 删 改
     * @return
     */
    public boolean updateDate(String sql,Object...obj){
        int num=0;
        try {
            conn=JdbcDruid.getConn();
            //开启手动提交
            conn.setAutoCommit(false);
            num= qr.update(conn,sql,obj);
            //走到这说明没出现异常,可以提交
            conn.commit();
        } catch (SQLException e) {
            try {
                //异常时回滚
                conn.rollback();
            } catch (SQLException ex) {
                throw new RuntimeException(ex);
            }
        } finally {
            JdbcDruid.getCLose(null,null,conn);
        }
        return num>0;
    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85

b、创建EmployeeDao

public class EmployeeDao extends BasicDao<Employee>{
}
  • 1
  • 2

c、创建diningTableDao

public class DiningTableDao extends BasicDao<DiningTable>{
}
  • 1
  • 2

d、创建MenuDao

public class MenuDao extends BasicDao<Menu>{
}
  • 1
  • 2

e、创建BillDao

public class BillDao extends BasicDao<Bill>{
}
  • 1
  • 2

7、在service包创建类

a、创建employeeService

public class EmployeeService {
    private EmployeeDao ed=new EmployeeDao();

    /**
     * 登录时使用
     * @param count 员工账户
     * @param pwd 员工密码
     * @return
     */
    public Employee logIn(String count,String pwd){
        String sql="select * from employee where empCount=? and empPwd=MD5(?)";
        return ed.getDateById(sql, Employee.class, count, pwd);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

b、创建diningTableService

public class DiningTableService {
    private DiningTableDao dtd=new DiningTableDao();
    private String sql;

    /**
     * 获取所有餐桌
     * @return
     */
    public List<DiningTable> getAllTable(){
        sql="select * from diningTable";
        return dtd.getAllDate(sql,DiningTable.class);
    }

    /**
     * 根据id获取数据
     * @param id
     * @return
     */
    public DiningTable getTableById(int id){
        sql="select*from diningTable where dinId=?";
       return dtd.getDateById(sql,DiningTable.class,id);
    }

    /**
     * 修改餐桌信息
     * @param id 餐桌号
     * @param name 预定姓名
     * @param tel 预订电话
     * @param state 餐桌状态
     * @return
     */
    public boolean updateTable(int id,String name,String tel,int state){
        sql="update diningTable set dinState=?,dinUser=?,dinTel=? where dinId=?";
       return dtd.updateDate(sql,state,name,tel,id);
    }

    /**
     * 根据id修改状态
     * @param id
     * @param state
     * @return
     */
    public boolean updateTableById(int id,int state){
        sql="update diningTable set dinState=? where dinId=?";
        return dtd.updateDate(sql,state,id);
    }

    /**
     * 根据预定者信息获取餐桌数据
     * @param name
     * @param tel
     * @return
     */
    public DiningTable getTableByUserInfo(String name,String tel){
        sql="select *from diningTable where dinUser=? and dinTel=?";
       return dtd.getDateById(sql,DiningTable.class,name,tel);
    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

c、创建menuService

public class MenuService {
    private MenuDao md=new MenuDao();
    private String sql;

    /**
     * 获取所有数据
     * @return
     */
    public List<Menu> getAllDate(){
        sql="select*from menu";
        return md.getAllDate(sql,Menu.class);
    }

    /**
     * 通过id获取数据
     * @param id
     * @return
     */
    public Menu getDateById(int id){
        sql="select*from menu where mId=?";
       return md.getDateById(sql,Menu.class,id);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

d、创建billService

public class BillService {
    private BillDao bd=new BillDao();
    private String sql;
    private DiningTableService dts=new DiningTableService();

    /**
     * 通过餐桌号查询账单
     * @param did
     * @return
     */
    public Bill getByDinTable(int did){
        sql="select * from bill where diningTableId=?";
        return bd.getDateById(sql,Bill.class,did);
    }
    /**
     * 添加账单
     * @param mId
     * @param bName
     * @param nums
     * @param price
     * @param dinId
     * @param state
     * @return
     */
    public boolean addBill(int mId,String bName,int nums,double price,int dinId,int state){
        sql="insert into bill values(null,?,?,?,?,?,?,?,?)";
        String uuid = UUID.randomUUID().toString();
       boolean rs= bd.updateDate(sql,uuid,mId,bName,nums,price,dinId,new Date(),state);
       if(!rs){
           System.out.println("添加账单出错");
           return false;
       }
       //修改餐桌状态
       return dts.updateTableById(dinId,2);
    }

    /**
     * 获取未支付的账单
     * @return
     */
    public List<Bill> getDateNonPay(){
        sql="select * from bill where bState=0";
        return bd.getAllDate(sql,Bill.class);
    }

    /**
     * 获取已支付的账单
     * @return
     */
    public List<Bill> getDateAlPay(){
        sql="select * from bill where bState>0";
        return bd.getAllDate(sql,Bill.class);
    }

    /**
     * 结账时
     * @return
     */
    public boolean updateSate(int state,int dinId){
        sql="update bill set bState=? where diningTableId=?";
       boolean rs= bd.updateDate(sql,state,dinId);
       if(!rs){
           System.out.println("结账时失败");
           return false;
       }
       return dts.updateTable(dinId,"","",0);

    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71

8、在utils包创建类

a、创建JdbcDruid

public class JdbcDruid {
   private static DataSource ds=null;
    /**
     * 初始化数据
     */
    static {
        //声明properties类
        Properties p=new Properties();
        try {
            //加载目标文件
            p.load(new FileInputStream("src\\druid.properties"));
            //使用druid工具类获取连接
            ds = DruidDataSourceFactory.createDataSource(p);

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 返回Connection对象
     * @return
     */
    public static Connection getConn(){
        try {
            return ds.getConnection();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 关闭对象
     */
    public static void getCLose(ResultSet rs, Statement sta,Connection con){
        try {
            if(rs!=null){
                rs.close();
            }
            if(sta!=null){
                sta.close();
            }
            if(con!=null){
                con.close();
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

b、创建KeyBoardTools

/**
 * 输入工具类,使用正则表达
 * @author 楠小弟
 * @version 1.0
 * 2023/3/2 10:34
 */
public class KeyBoardTools {
    private static Scanner inp=new Scanner(System.in);

    /**
     * 读取字符串
     * @param limit
     * @return
     */
    public static String readString(int limit){
        String str="";
       while (true){
           str= inp.next();
           if (str.length()>limit){
               System.out.println("输入的请不要超过限定长度("+limit+"),请重新输入:");
               continue;
           }
           break;
       }
       return str;
    }

    /**
     * 读取整数
     * @param limit
     * @return
     */
    public static int readInt(int limit){
        String str="";
        while (true){
            str=inp.next();
            //判断长度
            if(str.length()>limit){
                System.out.println("长度请不要超过("+limit+"),请重新输入:");
                continue;
            }
            //判断输入的是不是整数
            if (!str.matches("\\d")) {
                System.out.println("只能输入整数,请重新输入:");
                continue;
            }
            break;
        }
        return Integer.parseInt(str);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

9、在view包创建类

a、创建MhlView

/**
 * 界面
 * @author 楠小弟
 * @version 1.0
 * 2023/3/2 10:35
 */
public class MhlView {
    /**
     * 接收用户输入的值
     */
    private String key;
    /**
     * 循环条件
     */
    private boolean loop=true;
    /**
     * 员工表操作类
     */
    private EmployeeService es=new EmployeeService();
    /**
     * 餐桌操作类
     */
    private DiningTableService dts=new DiningTableService();
    /**
     * 菜单操作类
     */
    private MenuService ms=new MenuService();
    /**
     * 账单操作类
     */
    private BillService bs=new BillService();

    public static void main(String[] args) {
        new MhlView().showMenu();
    }
    /**
     * 功能菜单
     */
    private void showMenu(){
        System.out.println("==========欢迎来到老六满汉楼餐厅==========");
        while (loop){
            System.out.println("\t\t1 登录系统");
            System.out.println("\t\t9 退出系统");
            System.out.print("请输入你的选择:");
            key= KeyBoardTools.readString(1);
            switch (key){
                case "1":
                System.out.println("==========登陆操作==========");
                    System.out.println("请输入员工账号:");
                    String count = KeyBoardTools.readString(30);
                    System.out.println("请输入员工密码:");
                    String pwd = KeyBoardTools.readString(30);
                    //验证账户密码
                    Employee emp = es.logIn(count, pwd);
                    if(emp!=null){
                        System.out.println("========欢迎你["+emp.getEmpName()+"]========");
                       while (loop){
                           System.out.println("\t\t1 显示餐桌");
                           System.out.println("\t\t2 预定餐桌");
                           System.out.println("\t\t3 显示菜单");
                           System.out.println("\t\t4 进行点餐");
                           System.out.println("\t\t5 显示账单");
                           System.out.println("\t\t6 进行结账");
                           System.out.println("\t\t7 已结账单");
                           System.out.println("\t\t9 退出当前帐号");
                           System.out.print("请输入你的选择:");
                           int k = KeyBoardTools.readInt(1);
                           switch (k){
                               case 1:
                                   showTable1();
                                   break;
                               case 2:
                                   yuDingTable2();
                                   break;
                               case 3:
                                   showCai3();
                                   break;
                               case 4:
                                   dianCai4();
                                   break;
                               case 5:
                                   showZhang5();
                                   break;
                               case 6:
                                   jieZha6();
                                   break;
                               case 7:
                                   showZhang7();
                                   break;
                               case 9:
                                   goBack9();
                                   break;
                               default:
                                   System.out.println("输入有误,请重新输入!");
                                   break;
                           }
                       }
                    }else{
                        System.out.println("-----账户或密码有误-----");
                    }
                    break;
                case "9":
                    System.out.println("确定要退出吗(Y/n):");
                    key=KeyBoardTools.readString(1).toUpperCase();
                    if("Y".equals(key)){
                        loop=false;
                    }
                    break;

                default:
                    System.out.println("------输入的不正正确------");
                    break;
            }
        }
        System.out.println("********你退出了,再见!********");
    }

    /**
     * 二级菜单功能1:显示餐桌
     */
    private void showTable1(){
        System.out.println("===========显示餐桌==========");
        System.out.println("餐桌号\t\t状态\t\t预定人");
        List<DiningTable> tables = dts.getAllTable();
        for (DiningTable table : tables) {
            System.out.println(table);
        }
        System.out.println("===========显示完毕==========");
    }

    /**
     * 二级菜单功能2:预定餐桌
     */
    private void yuDingTable2(){
        System.out.println("===========预定餐桌==========");
        System.out.print("请输入要预定的餐桌号(-1退出):");
        int dinId = KeyBoardTools.readInt(1);
        //判断
        if(dinId==-1){
            System.out.println("--------取消了预定--------");
            return;
        }
        //判断餐桌是否存在
        DiningTable tab = dts.getTableById(dinId);
        if(tab==null){
            System.out.println("--------未查到编号为"+dinId+"的餐桌!!--------");
            return;
        }
        //判断当前餐桌是否为空闲
        if(tab.getDinState()>0){
            System.out.println("--------编号为"+dinId+"的餐桌,已经被预定!!--------");
            return;
        }
        System.out.print("请输入你的姓名(-1退出):");
        String userName=KeyBoardTools.readString(30);
        //判断
        if("-1".equals(userName)){
            System.out.println("--------取消了预定--------");
            return;
        }
        System.out.print("请输入你的电话(-1退出):");
        String userTel=KeyBoardTools.readString(11);
        //判断
        if("-1".equals(userTel)){
            System.out.println("--------取消了预定--------");
            return;
        }
        System.out.print("确定信息是否正确y/n(-1退出):");
        key=KeyBoardTools.readString(1).toUpperCase();
        if(!"Y".equals(key)){
            System.out.println("--------取消了预定--------");
            return;
        }
        //进行修改餐桌信息
        boolean res = dts.updateTable(tab.getDinId(), userName, userTel, 1);
        if(res){
            System.out.println("==========预定成功!==========");
        }else{
            System.out.println("==========预定失败!==========");
        }
    }

    /**
     * 二级菜单功能3:查看菜单
     */
    private void showCai3(){
        System.out.println("==========菜单列表==========");
        System.out.println("编号\t\t菜名\t\t价格\t\t类型");
        List<Menu> menus = ms.getAllDate();
        for (Menu menu : menus) {
            System.out.println(menu);
        }
        System.out.println("==========展示结束==========");
    }

    /**
     * 二级菜单功能4:点餐
     */
    private void dianCai4(){
        System.out.println("==========点餐服务=========");
        System.out.print("请输入预定姓名:");
        String name = KeyBoardTools.readString(30);
        System.out.print("请输入预订电话:");
        String tel = KeyBoardTools.readString(11);
        //判断是否有此信息
        DiningTable tab = dts.getTableByUserInfo(name, tel);
        if(tab==null){
            System.out.println("--------未查到相关信息--------");
            return;
        }
        //点餐
        System.out.print("请输入菜品的编号(-1退出):");
        int mId = KeyBoardTools.readInt(2);
        if(mId==-1){
            System.out.println("********点餐取消********");
            return;
        }
        System.out.print("请输入数量(-1退出):");
        int nums = KeyBoardTools.readInt(1);
        if(nums==-1){
            System.out.println("********点餐取消********");
            return;
        }
        //判断用户输入的编号是否存在
        Menu m = ms.getDateById(mId);
        if(m==null){
            System.out.println("********本店暂未拥有编号为"+mId+"的菜品*******");
            return;
        }
        //添加账单信息
        boolean rs = bs.addBill(mId, m.getmName(), nums, m.getmPrice()*nums, tab.getDinId(), 0);
        if(rs){
            System.out.println("--------点菜成功-------");
        }else{
            System.out.println("-------点菜失败--------");
        }
    }

    /**
     * 二级菜单功能5:显示未支付的账单
     */
    private void showZhang5(){
        System.out.println("==========未付款账单显示==========");
        System.out.println("账单编号\t\t菜编号\t\t菜名\t\t数量\t\t价格\t\t餐桌\t\t点餐时间\t\t\t\t\t\t状态");
        List<Bill> bills = bs.getDateNonPay();
        for (Bill bill : bills) {
            System.out.println(bill);
        }
        System.out.println("==========显示完毕===========");
    }

    /**
     * 二级菜单功能7:显示已支付的账单
     */
    private void showZhang7(){
        System.out.println("==========已付款账单显示==========");
        System.out.println("账单编号\t\t菜编号\t\t菜名\t\t数量\t\t价格\t\t餐桌\t\t点餐时间\t\t\t\t\t\t状态");
        List<Bill> bills = bs.getDateAlPay();
        for (Bill bill : bills) {
            System.out.println(bill);
        }
        System.out.println("==========显示完毕===========");
    }

    /**
     * 二级菜单6:支付账单
     */
    private void jieZha6(){
        System.out.println("==========结账服务=========");
        System.out.print("请输入预定姓名:");
        String name = KeyBoardTools.readString(30);
        System.out.print("请输入预订电话:");
        String tel = KeyBoardTools.readString(11);
        //判断是否有此信息
        DiningTable tab = dts.getTableByUserInfo(name, tel);
        if(tab==null){
            System.out.println("--------未查到相关信息--------");
            return;
        }
        //获取账单信息
        Bill bi = bs.getByDinTable(tab.getDinId());
        if(bi==null){
            System.out.println("--------当前餐桌没有未支付的账单--------");
            return;
        }
        System.out.println("请选择支付方式(现金,微信,支付宝):");
        key=KeyBoardTools.readString(5);
        int n=1;
        if("微信".equals(key)){
            n=2;
        }else if("支付宝".equals(key)){
            n=3;
        }
        //进行修改信息
        boolean rs = bs.updateSate(n, tab.getDinId());
        if(rs){
            System.out.println("---------结账欧克--------");
        }else{
            System.out.println("----------结账失败----------");
        }
    }
    /**
     * 二级菜单功能9:退出
     */
    private void goBack9(){
        System.out.println("确定要退出吗y/n:");
        key=KeyBoardTools.readString(1).toUpperCase();
        if("Y".equals(key)){
            loop=false;
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312

源代码

资源请点击
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/716699

推荐阅读
相关标签