当前位置: 首页 > news >正文

【韩顺平 Java满汉楼项目 控制台版】MySQL+JDBC+druid

文章目录

  • 功能
  • 界面
    • 用户登录界面
    • 显示餐桌状态
    • 预定
    • 显示所有菜品
    • 点餐
    • 查看账单
    • 结账
    • 退出满汉楼
  • 程序框架图
  • 项目依赖
  • 项目结构
  • 方法调用图
  • 功能实现
    • 登录
    • 显示餐桌状态
    • 订座
    • 显示所有菜品
    • 点餐
    • 查看账单
    • 结账
    • 退出满汉楼
  • 扩展思考
    • 多表查询
      • 如果将来字段越来越多怎么办?
    • 员工信息字段可能有很多,而且员工数有会很多,为提高效率,可以采用分表设计
  • 数据库设计
    • 满汉楼用户表
    • 满汉楼餐桌表
    • 菜谱表
    • 账单表

功能

image-20241215173902720

界面

用户登录界面

image-20241215174323926

显示餐桌状态

image-20241215174503522

预定

image-20241215174623548

显示所有菜品

image-20241215174743016

点餐

image-20241215174832125

查看账单

image-20241215175047426

结账

image-20241215175218981

退出满汉楼

程序框架图

软件分层是逻辑概念
1.可以用不同包来存放对应的类
2.体现了一个调用的关系
3.可以各司其职

image-20241215180733728

image-20241215180821862

项目依赖

commons-dbutils-1.8.1.jar
druid-1.1.10.jar
mysql-connector-java-5.1.23-bin.jar

项目结构

image-20241218213646153

方法调用图

image-20241218215014812

功能实现

准备工具类Utility

在实际开发中,公司都会提供相应的工具类和开发库,可以提高开发效率

登录

接受用户输入员工号和密码
通过员工ID和密码获取员工信息
如果找到匹配的员工信息,则返回该员工对象;否则返回null
如果!=null则登录成功,否则登录失败

显示餐桌状态

调用diningTableService的list方法获取所有餐桌的列表,然后遍历列表,打印每个餐桌的编号和状态到控制台。最后,打印一条分隔线表示显示完毕。

订座

功能说明

如果该餐桌处于已经预定或者就餐状态,给出提示

思路分析

(1)要检测餐桌是否存在。
(2)要检测餐桌的状态

允许用户选择要预订的餐桌,并输入预订信息。如果用户选择取消预订,则方法会输出取消预订的消息。如果用户确认预订,方法会检查所选餐桌是否存在且未被预订,然后接收用户的预订信息并尝试更新餐桌状态。如果预订成功,会输出预订成功的消息;如果失败,会输出预订失败的消息。 如果用户选择取消预订,则方法会输出取消预订的消息。

显示所有菜品

调用menuService的list方法获取所有菜品列表,然后遍历列表并打印每个菜品的编号、名称、类别和价格。
最后,打印一条分隔线表示显示完毕。

点餐

1.功能说明

要求对餐桌号,菜品编号,做合理性校验,如果不合理,给出提示信息

2.思路分析

(1)餐桌号,菜品编号检验
(2)点餐成功,需要修改餐桌状态
(3)生成账单

允许用户选择餐桌号、菜品编号和点餐数量,并确认是否进行点餐。
如果用户选择取消点餐或输入的餐桌号、菜品编号不存在,则方法会提前退出。
如果用户确认点餐,则调用billService的orderMenu方法进行点餐操作,并根据点餐结果输出相应的提示信息。

查看账单

该方法调用billService的list方法获取所有账单列表,并打印账单的详细信息,包括编号、菜品号、菜品量、金额、桌号、日期和状态。打印完毕后,输出一条分隔线表示显示完毕。

结账

思路分析

(1)对餐桌号进行校验
(2)修改bill表的state
(3)修改diningTable信息
(4)不需要增加新表,不需要增加新的类,需要增加方法

提供结账服务,允许用户选择餐桌进行结账操作。用户可以选择不同的结账方式,并在确认后执行结账。如果用户在过程中选择取消或输入无效信息,将终止结账流程。

退出满汉楼

image-20241218203143438

扩展思考

多表查询

image-20241218203007980

package com.hspedu.mhl.domain;import java.util.Date;/*** @program: mhl* @since: jdk1.8* @description: 这是一个javabean 可以和多张表进行对应* @author: Administrator* @create: 2024-12-18 20:43**/
public class MultiTableBean {private Integer id;private String billId;private Integer menuId;private Integer nums;private Double money;private Integer diningTableId;private Date billDate;private String state;// 增加一个来自menu表的列nameprivate String name;// 增加一个来自menu表的priceprivate Double price;public MultiTableBean() {}public MultiTableBean(Integer id, String billId, Integer menuId, Integer nums, Double money, Integer diningTableId, Date billDate, String state, String name, Double price) {this.id = id;this.billId = billId;this.menuId = menuId;this.nums = nums;this.money = money;this.diningTableId = diningTableId;this.billDate = billDate;this.state = state;this.name = name;this.price = price;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getBillId() {return billId;}public void setBillId(String billId) {this.billId = billId;}public Integer getMenuId() {return menuId;}public void setMenuId(Integer menuId) {this.menuId = menuId;}public Integer getNums() {return nums;}public void setNums(Integer nums) {this.nums = nums;}public Double getMoney() {return money;}public void setMoney(Double money) {this.money = money;}public Integer getDiningTableId() {return diningTableId;}public void setDiningTableId(Integer diningTableId) {this.diningTableId = diningTableId;}public Date getBillDate() {return billDate;}public void setBillDate(Date billDate) {this.billDate = billDate;}public String getState() {return state;}public void setState(String state) {this.state = state;}@Overridepublic String toString() {return id + "\t\t" + menuId + "\t\t\t" + name + "\t\t\t" + price + "\t\t\t" + nums + "\t\t\t" + money + "\t\t" + diningTableId + "\t\t" + billDate + "\t\t" + state;}
}

image-20241218213542012

如果将来字段越来越多怎么办?

image-20241218212754186

员工信息字段可能有很多,而且员工数有会很多,为提高效率,可以采用分表设计

image-20241218213942554

数据库设计

满汉楼用户表

# 员工表
CREATE TABLE employee (id INT PRIMARY KEY auto_increment,empId VARCHAR (50) UNIQUE NOT NULL DEFAULT '',pwd CHAR(32) NOT NULL DEFAULT '',`name` VARCHAR (50) NOT NULL DEFAULT '',job VARCHAR (50) NOT NULL DEFAULT ''
) CHARSET='utf8';# 测试数据
insert into employee values(null,'6668612',md5('1123456'),'张三丰','经理');
insert into employee values (null,'6668622', md5('1123456'),'小龙女','服务员');
insert into employee values(null,'6668633', md5('123456'),'张无忌','收银员');
insert into employee values(null,'666666',md5('123456'),'老韩','经理');
image-20241215213350987

满汉楼餐桌表

# 餐桌表
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, '空', '','');
image-20241216195216385

菜谱表

# 菜谱表
CREATE TABLE menu(id INT PRIMARY KEY auto_increment,`name` VARCHAR(50) not null default '',type varchar(50) not null DEFAULT '',price DOUBLE not null DEFAULT 0
) CHARSET = utf8;# 测试数据
insert into menu VALUES(NULL,'八宝饭','主食', 10);
insert into menu VALUES(NULL,'叉烧饭','主食', 20); 
insert into menu VALUES(NULL,'宫保鸡丁','热菜', 30);
insert into menu VALUES(NULL,'山药拨鱼','凉菜', 14);
insert into menu VALUES(NULL,'银丝卷','甜食', 9); 
insert into menu VALUES(NULL,'水煮鱼','热菜', 26); 
insert into menu VALUES(NULL,'甲鱼汤','汤类', 100); 
insert into menu VALUES(NULL,'鸡蛋汤','汤类', 16);
image-20241217120142699

账单表

CREATE TABLE bill(id INT PRIMARY KEY auto_increment,billId VARCHAR(50) NOT NULL DEFAULT '',menuId INT NOT NULL DEFAULT 0,nums INT NOT NULL DEFAULT 0,money DOUBLE NOT NULL DEFAULT 0,diningTableId INT NOT NULL DEFAULT 0,billDate DATETIME NOT NULL,state VARCHAR(50) NOT NULL DEFAULT ''
)CHARSET = utf8

自增主键 账单号(UUID) 菜品编号 份数 金额 餐桌 订单日期 状态

image-20241217223136155

http://www.lryc.cn/news/505854.html

相关文章:

  • 【HAL库】STM32CubeMX开发----STM32F407----Time定时器中断实验
  • react18+ts 封装图表及词云组件
  • 图像根据mask拼接时,边缘有色差 解决
  • 17、ConvMixer模型原理及其PyTorch逐行实现
  • Spring整合Redis基本操作步骤
  • STM32使用SFUD库驱动W25Q64
  • ArKTS基础组件
  • 如何理解TCP/IP协议?如何理解TCP/IP协议是什么?
  • 如何使用 Python 连接 SQLite 数据库?
  • 【博弈模型】古诺模型、stackelberg博弈模型、伯特兰德模型、价格领导模型
  • 单片机:实现花样灯数码管的显示(附带源码)
  • 什么是芯片电阻
  • 【C++】sophus : geometry.hpp 位姿(SE2 和 SE3)和(2D 直线\3D 平面)转换函数 (五)
  • moment()获取时间
  • Azure虚拟机非托管磁盘大小调整
  • 流匹配模型[Flow Matching]
  • Unix 和 Windows 的有趣比较
  • 算法(三)——贪心算法
  • LeetCode 704.二分查找
  • Linux介绍与安装CentOS 7操作系统
  • 使用 rbenv 切换 Ruby 版本
  • C语言(结构体练习)
  • 你了解网络层的 ICMP 吗?
  • 清理C盘小记
  • Excel中如何消除“长短款”
  • 超越 RAG 基础:AI 应用的高级策略
  • [shader]【图形渲染】【unity】【游戏开发】 Shader数学基础2-认识点和矢量
  • 微软开源Python Markdown转换工具
  • 安装与配置MongoDB 6.0以支持远程连接
  • 零衍门户国际化:助力拓展全球视野