本小型订餐系统是基于java,通过连接数据库完成。可以有两种运行方式:命令行输出和GUI页面输出。
下面是对本系统的各个功能进行分别说明:
1.管理员:
(1)注册:输入姓名和密码之后进行注册,注册成功后自动登录成功。
(2)登录:输入姓名和密码,进行查询是否有匹配的数据,如果有就登录成功。
(3)查询全部菜品:管理员可以浏览所有的菜品信息
(4)添加菜品:通过输入的菜品信息来添加菜品
(5)修改菜品:通过输入的菜品信息来修改菜品
(6)删除菜品:通过菜品id来进行删除菜品数据
(7)查询全部消费者信息:管理员可以查询全部消费者信息
(8)查询全部管理员信息:管理员可以查询全部管理员信息
(9)查询全部订单信息:管理员可以查询全部订单信息
2.消费者:
(1)注册:输入姓名和密码之后进行注册,注册成功后自动登录成功。
(2)登录:输入姓名和密码,进行查询是否有匹配的数据,如果有就登录成功。
(3)查询全部菜品:消费者可以浏览所有的菜品信息
(4)购买菜品:用户可以选择订什么菜品、菜品数量,购买,生成订单。系统将保留交易的全部信息,包括订单消费人姓名、消费总价、订单日期的信息。
(5)查询订单(是只能查询自己的订单信息):当消费者选择查询的姓名之后,可以进行查询该名字所有的订单信息。
消费者管理主要包括消费者姓名、消费者编号、消费者密码属性。
图一
菜品管理主要包括菜品编号、菜品名称、菜品说明、菜品价格属性。
图二
订单管理主要包括订单编号、消费总价、订单时间、消费者姓名属性。
图三
员工管理主要包括管理员姓名、管理员编号、管理员密码属性。
图四
图五
1-1消费者信息表:Customer
字段名 | 数据类型 | 约束 | 说明 |
xid | int | 主键,长度20 | 消费者编号 |
xname | varchar | 长度20 | 消费者姓名 |
xphone | varchar | 长度11 | 消费者手机号 |
xpassword | varchar | 长度21 | 消费者密码 |
1-2员工信息表:Employee
字段名 | 数据类型 | 约束 | 说明 |
yid | int | 主键,长度20 | 员工编号 |
yname | varchar | 长度20 | 员工姓名 |
yphone | varchar | 长度11 | 员工手机号 |
ypassword | varchar | 长度21 | 员工密码 |
1-3菜品信息表:Food
字段名 | 数据类型 | 约束 | 说明 |
cid | int | 主键,长度20 | 菜品编号 |
cname | varchar | 长度20 | 菜品名 |
cintro | varchar | 长度50 | 菜品说明 |
cprice | int | 长度20 | 菜品价格 |
1-4订单信息表:Order
字段名 | 数据类型 | 约束 | 说明 |
did | int | 主键,长度20 | 订单编号 |
dtime | date | 长度20 | 订单时间 |
dstate | boolean | 长度20 | 订单状态(ture--完成,false--未完成) |
dprice | int | 长度20 | 消费总额 |
xid | int | 长度20 | 消费者编号 |
-- 创建数据库shujuku
CREATE DATABASE shujuku;-- 使用数据库shujuku
USE shujuku;
(1)消费者表
-- 1.创建customer顾客表
CREATE TABLE customer(
xid INT PRIMARY KEY AUTO_INCREMENT COMMENT '消费者编号',
xname VARCHAR(20) COMMENT '消费者姓名',
xpassword VARCHAR(21) COMMENT '消费者密码'
);-- 查询customer顾客表
SELECT * FROM customer;-- 给customer顾客表 插入数据
INSERT INTO customer VALUES(1,'小明','123456');
-- 一些数据 写
INSERT INTO customer VALUES(2,'李华','020203');
INSERT INTO customer VALUES(3,'刘洋','010304');
INSERT INTO customer VALUES(4,'妮妮','100016');
INSERT INTO customer VALUES(5,'小杜','123456');
INSERT INTO customer VALUES(6,'彭飞','102309');
(2)管理员表
-- 2.创建Employee员工表
CREATE TABLE employee(
yid INT PRIMARY KEY AUTO_INCREMENT COMMENT '员工编号',
yname VARCHAR(20) COMMENT '员工姓名',
ypassword VARCHAR(21) COMMENT '员工密码'
);-- 查询employee员工表
SELECT * FROM employee;-- 给employee员工表 插入数据
INSERT INTO employee VALUES(1,'张三','123456');
-- 一些数据
INSERT INTO employee VALUES(2,'小张','123456');
INSERT INTO employee VALUES(3,'小王','123456');
INSERT INTO employee VALUES(4,'小景','123456');
INSERT INTO employee VALUES(5,'小华','123456');
INSERT INTO employee VALUES(6,'小龙','123456');
(3)食物表
-- 3.创建Food食物表
CREATE TABLE food(
cid INT PRIMARY KEY AUTO_INCREMENT COMMENT '菜品编号',
cname VARCHAR(20) COMMENT '菜品名',
cintro VARCHAR(50) COMMENT '菜品说明',
cprice VARCHAR(20) COMMENT '菜品价格'
);-- 查询food食物表
SELECT * FROM food;-- 给food食物表 插入数据
INSERT INTO food VALUES(1,'金陵烤鸭','肥而不腻,卤汁是金陵烤鸭的灵魂','38');
INSERT INTO food VALUES(2,'招牌盐水鸭','秘方腌制,肉质细嫩,咸鲜味十足','30');
INSERT INTO food VALUES(3,'姜汁肴蹄','秘制卤水浸泡,咸鲜味美','28');
INSERT INTO food VALUES(4,'苏式熏鱼','经典传统制法,口感甘香','28');
INSERT INTO food VALUES(5,'松仁香干马兰头','爽口清淡','28');
INSERT INTO food VALUES(6,'鸭血粉丝砂锅','南京传统地方风味,鲜美无比','24');
INSERT INTO food VALUES(7,'王府泡椒鸡','微酸、微辣、微甜,三重口感','32');
INSERT INTO food VALUES(8,'鸡汁白鱼','色泽银白肉质细腻,鲜美无比','78');
INSERT INTO food VALUES(9,'麻辣鸭血','鸭血辣辣很开胃,口感顺滑','18');
INSERT INTO food VALUES(10,'状元大春卷','手工现包,香脆可口','15');
INSERT INTO food VALUES(11,'江南水乡一桶鲜','各色水鲜,汇聚一桶','42');
INSERT INTO food VALUES(12,'民国美龄粥','宋美龄钟爱的一道粥,口味独特','18');
INSERT INTO food VALUES(13,'韭香水晶虾饺','外皮晶莹澄澈,虾仁新鲜大只','9');
INSERT INTO food VALUES(14,'清炖狮子头','肥瘦搭配黄金比例,入口即化','28');
INSERT INTO food VALUES(15,'东北大米饭','颗颗饱满(规格:碗)','2');
(4)订单表
-- 4.创建Order订单表
CREATE TABLE IF NOT EXISTS `order`(
did INT PRIMARY KEY AUTO_INCREMENT COMMENT '订单编号',
dtime DATE COMMENT '订单时间',
dprice VARCHAR(20) COMMENT '消费总额',
xname VARCHAR(20) COMMENT '消费者姓名'
);-- 删除订单表
DROP TABLE `order`;-- 查询order订单表
SELECT * FROM `order`;-- 给order订单表 插入数据
INSERT INTO `order` VALUES(1,'2023-03-20','28','李华');
-- 一些数据
INSERT INTO `order` VALUES(2,'2023-03-22','28','小明');
INSERT INTO `order` VALUES(3,'2023-04-25','30','妮妮');
INSERT INTO `order` VALUES(4,'2023-04-27','42','李华');
INSERT INTO `order` VALUES(5,'2023-05-20','78','刘洋');
首先我们把程序分成几个包:Util类、Entity实体类、Dao接口类、Impl实现类、Test测试类、Gui类
建立连接和释放连接(主要是建立与数据库的连接,可以对数据进行增删改查)
连接数据库时,要注意地址不要写错,写错会导致连接不上数据库。特别是,前面用两个斜线(为什么:要多一个斜线是因为其中一个斜线是转义字符)后面用一个斜线。
public class DBUtil {//连接数据库//1.加载并注册数据库的驱动private static final String DRIVER=sql.jdbc.Driver";//2.通过DriverManager获取数据库连接private static final String URL="jdbc:mysql://localhost:3306/shujuku?useSSL=false";private static final String USERNAME="root";private static final String USERPWD="root";public static Connection DBConnection(){try {Class.forName(DRIVER);} catch (ClassNotFoundException e1) {e1.printStackTrace();}Connection conn=null;try {conn = Connection(URL, USERNAME, USERPWD);} catch (SQLException e) {e.printStackTrace();}return conn;}//prepareStatement会先初始化SQL,先把这个SQL提交到数据库中进行预处理,多次使用可提高效率。public static PreparedStatement setParam(Connection conn,String param) throws SQLException{PreparedStatement pstmt=null;pstmt=conn.prepareStatement(sql);for(int i=0;i<param.length;i++) {pstmt.setObject(i+1, param[i]);}return pstmt;}//ResultSetpublic static int exeUpdate(PreparedStatement pstmt) throws SQLException {int result=0;resultuteUpdate();return result;}//关闭连接public static void closeAll(Connection conn,PreparedStatement pstmt,ResultSet rs) {try {if(pstmt!=null) {pstmt.close();}if(conn!=null) {conn.close();}if(rs!=null) {rs.close();}} catch (SQLException e) {e.printStackTrace();}}/*需要弄懂具体步骤:1.加载并注册数据库驱动程序2.建立连接,获取连接对象3.获取Statement对象4.执行SQL语句(这里是把执行SQL语句放在了测试类)5.操作结果集6.关闭连接,释放资源*/
}
这个包一共有四个类,对应的是数据库的四个表。(这里只贴出来其中的一个)
类里面:首先要定义和数据库表里面的相同属性(比如说消费者表就对应这里面的实体类,定义属性是相同的,xid , xname , xpassword)
其次重写toString方法和get、set方法(直接自动生成)
然后写的就是构造方法(包括无参构造方法和有参构造方法)主要是方便实现类里面需要获取的方法。
//这是数据库中customer表的实体类
public class customerEntity {public static void main(String[] args) {// TODO Auto-generated method stub}//这里是customer表里的属性private int xid = 0;private String xname = null;private String xpassword = null;//可以写多个构造方法,但是参数数量或类型一定不能相同(叫构造方法的重载)//构造方法--无参public customerEntity() {super();this.xid = ame = xname;this.xpassword = xpassword;}//有参--消费者注册登录public customerEntity(String xname1, String xpassword1) {// TODO Auto-generated constructor stubsuper();ame = xname1;this.xpassword = xpassword1;}//有参--查询消费者public customerEntity(int xid, String xname, String xpassword) {// TODO Auto-generated constructor stubsuper();this.xid = ame = xname;this.xpassword = xpassword;}//重写toString方法@Overridepublic String toString() {return "customerEntity [xid=" + xid + ", xname=" + xname + ", xphone=" + xpassword+ "]";}//get、set方法public int getXid() {return xid;}public void setXid(int xid) {this.xid = xid;}public String getXname() {return xname;}public void setXname(String xname) {ame = xname;}public String getXpassword() {return xpassword;}public void setXpassword(String xpassword) {this.xpassword = xpassword;}}
这里面放的是一个DishDao接口,主要是定义出主要功能(操作数据库,对表进行增删改查)就是需求分析里的功能。
接口定义了多个在实现类中需要实现的方法,不关心具体实现方法。所以可以在不改变原有接口情况下,随时进行增加或删除类。(使用接口可以使得程序变得灵活,让实例和实现类的耦合度降低)
像消费者和管理员的注册登录功能是返回布尔值boolean,查询消费者、管理员、菜品和订单都是返回一个集合list,菜品的添加、删除、购买以及订单的删除都是定义成方法void。
public interface DishDao {//消费者注册,返回是否注册成功的结果boolean customerRegister(customerEntity customer);//消费者登录,返回是否登录成功的结果boolean customerLogon(customerEntity customer);//员工注册,返回是否注册成功的结果boolean employeeRegister(employeeEntity employee);//员工登录,返回是否注册成功的结果boolean employeeLogon(employeeEntity employee);//查询消费者,查询全部消费者数据List<customerEntity> customerQuery();//查询管理员,查询全部管理员数据List<employeeEntity> employeeQuery();//菜品添加,传入一个新的菜品信息来添加数据void foodAdd(foodEntity food);//菜品删除,根据返回的菜品id来进行删除void foodDel(int cid);//菜品修改,传入一个新的菜品信息来替代要修改的数据void foodUpdate(foodEntity food);//菜品查询,查询全部菜品数据List<foodEntity> foodQuery();//菜品购买(是新增订单)void orderAdd(orderEntity order);//订单删除,根据返回的订单id来进行删除void orderDel(int did);//消费者订单查询,根据返回的消费者姓名来进行查询List<orderEntity> orderQuery1(String xname);//管理员订单查询,查询全部订单数据List<orderEntity> orderQuery2();}
这里是Dao接口的实现类。接口不能实例化,但我们可以使用接口的实现类来进行实例化。
如何进行实例化:
接口 实例 = new 接口的实现类();
实现类里面主要利用SQL语句来进行方法的实现。方法大同小异。
1.定义sql语句,不同的方法是使用不同的语句。
2.给占位符注入值(有多少个问号就注入多少个,参数是需要和SQL语句相匹配)
//定义一个类实现接口DishDao
public class DishDaoImpl implements DishDao{//实例化四个表customerEntity customer = new customerEntity();employeeEntity employee = new employeeEntity();foodEntity food = new foodEntity();orderEntity order = new orderEntity();//消费者注册@Overridepublic boolean customerRegister(customerEntity customer) {//1.定义sql语句,这里是给消费者表插入数据(姓名和密码),编号设置的是自动增长所以不用插入String sql = "INSERT INTO customer(xname,xpassword) VALUES(?,?)";Connection conn = null;//PreparedStatement是Statement的子接口,这个接口里面的语句可以使用占位符“?”来代替(安全性强)PreparedStatement pstmt = null;if(true) {try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql);//2.给占位符注入值,使用参数与SQL类型相匹配的方法pstmt.setString(Xname());pstmt.setString(Xpassword());//这里是调用了DBUtil的exeUpdate()方法,这个方法里是executeUpdate()用在增删改int result = Update(pstmt);if (result > 0) {System.out.println("注册成功,自动登录");} else {System.out.println("注册失败");}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt, null);} return true;}return false;}//消费者登录@Overridepublic boolean customerLogon(customerEntity customer) {//1.定义sql语句 筛选查询String sql = "SELECT * from customer where xname= ? and xpassword = ? ";int flag=0;Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql);//2.给占位符注入值pstmt.setString(Xname());pstmt.setString(Xpassword());//executeQuery()是用在查询,返回一个ResultSet对象rs = uteQuery();//rs.next()是将游标移动到下一行,如果下一行没数据,则返回()){flag = 1;}if(flag == 1){System.out.println("登录成功!");return true;}else{System.out.println("登录失败!");}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt,rs);}return false;}//员工注册,其实就是把员工的数据信息插入表中@Overridepublic boolean employeeRegister(employeeEntity employee) {String sql = "INSERT INTO employee(yname,ypassword) VALUES(?,?)";Connection conn = null;PreparedStatement pstmt = null;{try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql);pstmt.setString(Yname());pstmt.setString(Ypassword());int result = Update(pstmt);if (result > 0) {System.out.println("注册成功,自动登录");} else {System.out.println("注册失败");}conn.close();} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt, null);}return true;}}//员工登录@Overridepublic boolean employeeLogon(employeeEntity employee) {String sql = "SELECT * from employee where yname= ? and ypassword= ? ";int flag=0;Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql);pstmt.setString(Yname());pstmt.setString(Ypassword());//由于传值过来了,可以直接取到rs = uteQuery();()){flag = 1;}if(flag == 1){System.out.println("登录成功!");return true;}else{System.out.println("登录失败!");}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt,rs);}return false;}//查询消费者@Overridepublic List<customerEntity> customerQuery() {String sql = "SELECT * from customer";List<customerEntity> list = new ArrayList<customerEntity>();Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql);rs = uteQuery();while (rs.next()) {int xid = rs.getInt(1);String xname = rs.getString("xname");String xpassword = rs.getString("xpassword");System.out.println("消费者编号:" + xid + " 消费者名字: "+ xname + " 消费者密码: " + xpassword);list.add(new customerEntity(xid, xname, xpassword));}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt,rs);}return list;}//查询管理员@Overridepublic List<employeeEntity> employeeQuery() {String sql = "SELECT * from employee ";List<employeeEntity> list = new ArrayList<employeeEntity>();Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql);rs = uteQuery();while (rs.next()) {int yid = rs.getInt(1);String yname = rs.getString("yname");String ypassword = rs.getString("ypassword");System.out.println("管理员编号:" + yid + " 管理员名字: "+ yname + " 管理员密码: " + ypassword);list.add(new employeeEntity(yid, yname, ypassword));}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt,rs);}return list;}//菜品添加@Overridepublic void foodAdd(foodEntity food) {String sql = "INSERT INTO food(cname,cintro,cprice) VALUES(?,?,?)";Connection conn = null;PreparedStatement pstmt = null;try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql, Cname(), Cintro(),Cprice());int result = Update(pstmt);if (result > 0) {System.out.println("插入成功");} else {System.out.println("插入失败");}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt, null);}}//菜品删除@Overridepublic void foodDel(int cid) {String sql = "delete from food where cid=?";Connection conn = null;PreparedStatement pstmt = null;try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql, cid);int result = uteUpdate();if (result > 0) {System.out.println("删除成功");} else {System.out.println("删除失败");}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt, null);}}//菜品修改@Overridepublic void foodUpdate(foodEntity food) {String sql = "UPDATE food SET cname=?,cintro=?,cprice=? WHERE cid=?";Connection conn = null;PreparedStatement pstmt = null;try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql);pstmt.setString(1, Cname());pstmt.setString(2, Cintro());pstmt.setString(3, Cprice());pstmt.setInt(4, Cid());int result = Update(pstmt);if (result > 0) {System.out.println("修改成功");} else {System.out.println("修改失败");}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//菜品查询@Overridepublic List<foodEntity> foodQuery() {String sql = "SELECT * from food";List<foodEntity> list = new ArrayList<foodEntity>();Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql);rs = uteQuery();while (rs.next()) {int cid = rs.getInt(1);String cname = rs.getString("cname");String cintro = rs.getString("cintro");String cprice = rs.getString("cprice");System.out.println("菜品编号:" + cid + " 菜品名: "+ cname + " 介绍: " + cintro + " 价格: " + cprice+"元");list.add(new foodEntity(cid, cname, cintro, cprice));}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt,rs);}return list;}//购买(新增订单)@Overridepublic void orderAdd(orderEntity order) {String sql = "INSERT INTO `order`(dtime,dprice,xname) VALUES(?,?,?)";Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql);pstmt.setDate(1,new Date(System.currentTimeMillis()));pstmt.setString(Dprice());pstmt.setString(Xname());int result = Update(pstmt);if ( result == 1) {System.out.println("购买成功,生成订单");} else {System.out.println("购买失败");}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt, null);System.out.println(" 订单生成时间:"Dtime()+" 消费总价:"Dprice()+"元"+" 消费者姓名:"name());}}//订单删除@Overridepublic void orderDel(int did) {String sql = "delete from `order` where did=?";Connection conn = null;PreparedStatement pstmt = null;try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql, did);int result = uteUpdate();if (result > 0) {System.out.println("删除成功");} else {System.out.println("删除失败");}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt, null);}}//消费者订单查询@Overridepublic List<orderEntity> orderQuery1(String xname) {String sql = "SELECT * from `order` where xname=?";int flag=0;List<orderEntity> list = new ArrayList<orderEntity>();Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql);pstmt.setString(1,xname);//传过来rs = uteQuery();()){flag = 1;}if(flag == 1){System.out.println("查询成功!");while (rs.next()) {int did = rs.getInt("did");Date dtime = rs.getDate("dtime");String dprice = rs.getString("dprice");xname = rs.getString("xname");System.out.println("订单编号:" + did + " 订单生成时间: "+ dtime + " 消费总价: " + dprice +"元"+ " 消费者姓名: " + xname);list.add(new orderEntity(did,dtime,dprice,xname));}}else{System.out.println("查询失败,您没有订单!");}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt,rs);}return list;}//管理员订单查询@Overridepublic List<orderEntity> orderQuery2() {String sql = "SELECT * from `order`";List<orderEntity> list = new ArrayList<orderEntity>();Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {conn = DBUtil.DBConnection();pstmt = DBUtil.setParam(conn, sql);rs = uteQuery();while (rs.next()) {int did = rs.getInt(1);Date dtime = rs.getDate("dtime");String dprice = rs.getString("dprice");String xname = rs.getString("xname");System.out.println("订单编号:" + did + " 订单生成时间: "+ dtime + " 消费总价: " + dprice +"元"+ " 消费者姓名: " + xname);list.add(new orderEntity(did,dtime,dprice,xname));}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.closeAll(conn, pstmt,rs);}return list;}}
测试类里写的是命令行里运行的
public class TestMenu {//实例化private DishDao dd=new DishDaoImpl();private foodEntity menu=new foodEntity();private employeeEntity employee=new employeeEntity();private customerEntity customer=new customerEntity();private orderEntity order=new orderEntity();Scanner sc = new Scanner(System.in);String err=""; // 吸收错误输入public void menu() {do {System.out.println("----欢迎订餐管理系统----");System.out.println("1、员工");System.out.println("2、消费者");System.out.println("3、退出系统");System.out.println("请输入对应菜单序号:(输入1~3的数字)");int checkNum =0;if(sc.hasNextInt()) { //判断是否输入格式错误checkNum = sc.nextInt();}else {System.out.println("输入错误!");err(); //吸收错误menu();}switch (checkNum) {// 选择点击菜单case 1:int flag=0;boolean flagmana=employee(); //判断管理员是否登录成功while(flag==0) {if(flagmana==true) {System.out.println("请输入你要进行的操作:(请输入数字)");System.out.println("1.查看菜品");System.out.println("2.添加菜品");System.out.println("3.修改菜品");System.out.println("4.删除菜品");System.out.println("5.查看消费者");System.out.println("6.查看管理员");System.out.println("7.查看订单");System.out.println("8.返回主界面");int manachoose=0;if(sc.hasNextInt()) { //判断是否输入格式错误manachooseInt();}else{System.out.println("输入错误,请输入数字!");err();menu(); //返回菜单}switch(manachoose) {case 1:dishque();continue; //此处不用break,可以让 管理员自主选择退出界面case 2:menuadd();continue;case 3:menuupd();continue;case 4:menudel();continue;case 5://消费者查询System.out.println("管理员的查询消费者功能");dd.customerQuery();break;case 6://管理员查询System.out.println("管理员的查询管理员功能");dd.employeeQuery();break;case 7://订单查询System.out.println("管理员的查询订单功能");dd.orderQuery2();break;case 8:flag=1;System.out.println("退出成功!");menu();break;default :System.out.println("输入错误!");break;} }}break;case 2:int flag02=0;boolean userflag=false; //判断用户是否登录成功customer();while(flag02==0) {if(userflag==false) {System.out.println("请输入你要进行的操作:(请输入数字)");System.out.println("1.查看菜品:");System.out.println("2.购买菜品:");System.out.println("3.查看所有订单:");System.out.println("4.返回主菜单:");int userchoose=0;if(sc.hasNextInt()) { //判断是否输入格式错误userchooseInt();}else{System.out.println("输入错误,请输入数字!");err();menu(); //登录失败,重新回到菜单界面}switch(userchoose) {case 1:dishque();continue;case 2:orderAdd();continue;case 3:orderque1();continue;case 4:flag=1;menu();System.out.println("退出成功!");break;default :System.out.println("输入错误!");break;} }}break;case 3:System.out.println("退出成功!");it(1);break;default:System.out.println("输入错误!!!");break;}} while (1==1);}// 管理员操作public boolean employee() {boolean flag=false;while(flag==false) {System.out.println("1.登录");System.out.println("2.注册");System.out.println("3.返回主菜单");int k=0;if(sc.hasNextInt()) { //判断是否输入格式错误kInt();}else {System.out.println("输入错误,请输入数字!");err();employee();}switch(k) {case 1: //管理员登录功能System.out.println("管理员登录功能");System.out.println("请输入姓名:");String yname();System.out.println("请输入密码(6位数):");String ypassword();employeeEntity employee11=new employeeEntity(yname,ypassword);//这里是直接把两个值传到了employeeEntity里面if(flagployeeLogon(employee11)) {return true;}else{}break;case 2: //管理员注册System.out.println("管理员注册功能");System.out.println("请输入姓名:");String yname1();System.out.println("请输入密码:");String ypassword1();employeeEntity employee111=new employeeEntity(yname1,ypassword1);if(flagployeeRegister(employee111)) {return true;}break;case 3:flag=true;menu();break;default:System.out.println("输入错误!!!");break;}}return false;}//用户操作public boolean customer() {boolean flag=false;while(flag==false) {System.out.println("1.登录");System.out.println("2.注册");System.out.println("3.返回主菜单");int k=0;if(sc.hasNextInt()) { //判断是否使用数字输入kInt();}else {System.out.println("输入错误,请输入数字!");err();customer();}switch(k) {case 1:System.out.println("消费者登录功能");System.out.println("请输入姓名:");String xname();System.out.println("请输入密码(6位数):");String xpassword();customerEntity customer11=new customerEntity(xname,xpassword);if(flag=dd.customerLogon(customer11)) {return true;}break;case 2:System.out.println("消费者注册功能");System.out.println("请输入姓名:");String xname1();System.out.println("请输入密码(6位数):");String xpassword1();customerEntity customer111=new customerEntity(xname1,xpassword1);if(flag=dd.customerRegister(customer111)) {return true;}break;case 3:flag=true;customer();break;default:System.out.println("输入错误!!!");break;} } return false;}//查询菜品public void dishque() {dd.foodQuery();}//添加菜品public void menuadd() {System.out.println("请输入菜品名:");String cname();System.out.println("请输入介绍:(30字以内)");String cintro();System.out.println("请输入价格:(不超过500元)");String cprice();foodEntity menu=new foodEntity(cname,cintro,cprice);dd.foodAdd(menu);}//修改菜品public void menuupd() {System.out.println("请输入你要修改的菜品编号:(请输入数字)");int cidInt();System.out.println("请输入菜品名:");String cname();System.out.println("请输入介绍:");String cintro();System.out.println("请输入价格:");String cprice();foodEntity menu=new foodEntity(cid,cname,cintro,cprice);dd.foodUpdate(menu);}//菜品删除public void menudel() {System.out.println("请输入你要删除的菜品编号:(请输入数字)");int cidInt();dd.foodDel(cid);}//购买菜品(其实是新增订单)public void orderAdd() {Date dtime = new Date(System.currentTimeMillis());int flag=0; //判断是否结束购买int k=0;int id1,id2=0;String price1 = null;int price2,price3 = 0;while(flag==0){System.out.println("请输入您要购买的菜品id:(请输入数字)");id1Int()-1;//price1 = dd.foodQuery().get(id1).getCprice();//这个是一个菜品的价格int i=Integer.parseInt(price1);//我们需要通过菜品id来获取菜品的价格System.out.println("请输入您要购买的菜品数量:(请输入数字)");id2Int();price2 = i*id2;//这个是乘上数量的菜品的价格price3 = price3+price2;//总价System.out.println("是否继续购买?(1.是 2.否)");kInt();String dpriceString(price3);if(k==2) {flag=1;System.out.println("请输入购买人姓名,进行购买");String xname = sc.next();System.out.println("结束购买!");
// System.out.println("总价为:"+dprice+"元");orderEntity order11=new orderEntity( dtime, dprice,xname);dd.orderAdd(order11);}}}//消费者查询订单public void orderque1() {System.out.println("请输入您的名字,进行查询");String xname ();orderEntity order = new orderEntity(xname);//把值传过去dd.orderQuery1(xname);}//管理员查询订单public void orderque2() {dd.orderQuery2();}}
Gui类里写的是在GUI里运行的。
这里贴的是首页(一运行进去的样子),一共有三个按钮:管理员、消费者、退出系统。
给三个按钮都添加监听器,当点击之后做出反应。比如点击管理员会跳转到管理员的板块,也就是利用实例化来跳转页面。
//首页
public class Main {public static void createAndShow() {//创建窗体容器JFrame jf1 = new JFrame("小型订餐系统");jf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf1.setLayout(new FlowLayout(FlowLayout.CENTER));//流式布局jf1.setVisible(true);//按钮JButton button1=new JButton("管理员");JButton button2=new JButton("消费者");JButton button3=new JButton("退出系统");//设置可见jf1.setBounds(800,350,400,400);//添加按钮jf1.add(button1);jf1.add(button2);jf1.add(button3);//给管理员按钮注册鼠标监听器!!button1.addMouseListener(new MouseListener() {@Overridepublic void mouseClicked(MouseEvent arg0) {//如果按的是左键Button() == MouseEvent.BUTTON1){//如果想要跳转页面,要先新建了界面的类,然后通过构造函数对界面进行初始化,然后其他地方用到的话,就直接新建一个实例就好了。(这里就是实例化)employeeFrame ee = new employeeFrame();}else {System.out.println("你点了右键");}}@Overridepublic void mouseEntered(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mousePressed(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mouseReleased(MouseEvent arg0) {// TODO Auto-generated method stub}});//给消费者按钮注册鼠标监听器!!button2.addMouseListener(new MouseListener() {@Overridepublic void mouseClicked(MouseEvent arg0) {//如果按的是左键Button() == MouseEvent.BUTTON1){customerFrame cc = new customerFrame();}else {System.out.println("你点了右键");}}@Overridepublic void mouseEntered(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mousePressed(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mouseReleased(MouseEvent arg0) {// TODO Auto-generated method stub}});//给退出系统按钮注册监听器!!button3.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {it(0);}});}public Main(){createAndShow();}public static void main(String[] args) {createAndShow();}
}
本文发布于:2024-01-31 23:31:15,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170671507832188.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |