day01-3-界面显示&用户登录&餐桌状态显示
满汉楼01-3
4.功能实现02
4.2菜单界面显示
4.2.1功能说明
显示主菜单、二级菜单和退出系统功能


4.2.2代码实现
先搭建界面显示的大体框架,具体的功能后面再实现
创建MHLView类:
package com.li.mhl.view;
import com.li.mhl.utils.Utility;
/**
* @author 李
* @version 1.0
* 这是主界面
*/
public class MHLView {
//控制是否退出菜单
private boolean loop = true;
private String key = "";//接收用户的输入
public static void main(String[] args) {
new MHLView().mainMenu();
}
//显示主菜单
public void mainMenu() {
while (loop) {
System.out.println("==================满汉楼==================");
System.out.println("\t\t 1 登录满汉楼");
System.out.println("\t\t 2 退出满汉楼");
System.out.print("请输入你的选择:");
key = Utility.readString(1);//接收用户选择
switch (key) {
case "1":
System.out.print("请输入员工号: ");
String id=Utility.readString(50);
System.out.print("请输入密 码: ");
String pws = Utility.readString(50);
//到数据库去判断,这里先简单判断一下
if ("123".equals(pws)) {
System.out.println("==================登录成功=================\n");
//显示二级菜单,这里也和一级菜单一样是循环操作,也放在循环语句中
while (loop){
System.out.println("==================满汉楼(二级菜单)==================");
System.out.println("\t\t 1 显示餐桌状态");
System.out.println("\t\t 2 预定餐桌");
System.out.println("\t\t 3 显示所有菜品");
System.out.println("\t\t 4 点餐服务");
System.out.println("\t\t 5 参看账单");
System.out.println("\t\t 6 结账");
System.out.println("\t\t 9 退出满汉楼");
System.out.print("请输入你的选择:");
key = Utility.readString(1);//接收用户的选择
switch(key){
case "1":
System.out.println("显示餐桌状态");
break;
case "2":
System.out.println("预定餐桌");
break;
case "3":
System.out.println("显示所有菜品");
break;
case "4":
System.out.println("点餐服务");
break;
case "5":
System.out.println("参看账单");
break;
case "6":
System.out.println("结账");
break;
case "9":
//因为loop同时控制两层循环,因此当loop设为false时,
// 里层循环退出之后,外层循环也会随之退出
loop=false;
break;
default:
System.out.println("输入有误,请重新输入");
break;
}
}
}else {
System.out.println("==================登录失败==================");
}
break;
case "2":
loop = false;//退出一级菜单的循环
break;
default:
System.out.println("输入有误,重新输入..");
}
}
System.out.println("你退出了满汉楼系统~");
}
}
4.3用户登录功能
4.3.1功能说明

4.3.2思路分析
在数据库创建一张employee表,创建对应的Javabean,创建对应的EmployeeDAO,service层...
(大体上就是根据框架图从下至上编写代码)
4.3.3代码实现
4.3.3.1创建数据库mhl和表employee
-- 创建满汉楼的数据库
CREATE DATABASE mhl;
-- 创建表employee(主键id,empId,name,pwd,job等)
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT,#自增
empId VARCHAR(50) UNIQUE NOT NULL DEFAULT '',#员工号
pwd CHAR(32) NOT NULL DEFAULT '',#密码md5
NAME VARCHAR(50) NOT NULL DEFAULT '',#姓名
job VARCHAR(50) NOT NULL DEFAULT ''#岗位
)CHARSET=utf8
-- 插入测试数据
INSERT INTO employee VALUES(NULL,'6668612',MD5('123456'),'张三丰','经理');
INSERT INTO employee VALUES(NULL,'6668622',MD5('123456'),'小龙女','服务员');
INSERT INTO employee VALUES(NULL,'6668633',MD5('123456'),'张无忌','收银员');
INSERT INTO employee VALUES(NULL,'666666',MD5('123456'),'olien','经理');
SELECT * FROM employee;

4.3.3.2创建Employee类
创建和表employee对应的Javabean-Employee
package com.li.mhl.domain;
/**
* @author 李
* @version 1.0
* 这是一个Javabean ,和表employee对应
*/
public class Employee {
/**
* +-------+-------------+------+-----+---------+----------------+
* | Field | Type | Null | Key | Default | Extra |
* +-------+-------------+------+-----+---------+----------------+
* | id | int(11) | NO | PRI | NULL | auto_increment |
* | empId | varchar(50) | NO | | | |
* | pwd | char(32) | NO | | | |
* | name | varchar(50) | NO | | | |
* | job | varchar(50) | NO | | | |
* +-------+-------------+------+-----+---------+----------------+
*/
private Integer id;
private String empId;
private String pwd;
private String name;
private String job;
public Employee() {//无参构造器,底层的Apache-DBUtils反射需要
}
public Employee(Integer id, String empId, String pwd, String name, String job) {
this.id = id;
this.empId = empId;
this.pwd = pwd;
this.name = name;
this.job = job;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getEmpId() {
return empId;
}
public void setEmpId(String empId) {
this.empId = empId;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", empId='" + empId + '\'' +
", pwd='" + pwd + '\'' +
", name='" + name + '\'' +
", job='" + job + '\'' +
'}';
}
}
4.3.3.3创建EmployeeDAO类
package com.li.mhl.dao;
import com.li.mhl.domain.Employee;
/**
* @author 李
* @version 1.0
*/
public class EmployeeDAO extends BasicDAO<Employee>{
//这里还可以执行特有的操作
}
4.3.3.4创建EmployeeService类
编写一个getEmployeeByIdAndPwd方法,来验证账号密码,并返回相应值
package com.li.mhl.service;
import com.li.mhl.dao.EmployeeDAO;
import com.li.mhl.domain.Employee;
/**
* @author 李
* @version 1.0
* 该类完成对employee表的各种操作(通过调用EmployeeDAO对象完成)
*/
public class EmployeeService {
//定义一个EmployeeDAO属性
private EmployeeDAO employeeDAO = new EmployeeDAO();
//登录校验方法
//根据empId和pwd返回一个Employee对象,如果查询不到,就返回null
public Employee getEmployeeByIdAndPwd(String empId, String pwd) {
//注意密码使用md5加密后再查询比较
Employee employee =
employeeDAO.querySingle("select * from employee where empId=? and pwd=md5(?) ", Employee.class, empId, pwd);
return employee;
}
}
4.3.3.5修改MHLView类
在MHLView类中的里层循环中,调用方法getEmployeeByIdAndPwd,如果返回的employee对象非空,则说明存在该用户,登录成功
修改处1:增加EmployeeService属性
//定义EmployeeService属性
private EmployeeService employeeService=new EmployeeService();

修改处2:

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

day01-3-界面显示&用户登录&餐桌状态显示的更多相关文章
- 切换或者用户登录时 出现 显示 -bash-4.2$ 问题 的解决
集群的普通用户在登录用户或者切换用户时,出现 -bash-4.2$ 的状态: [goldwind@TR-OS-DB 9.4]#su postgres bash-4.2$ 原因:在linux下通过use ...
- DRF 商城项目 - 用户( 登录, 注册,登出,个人中心 ) 逻辑梳理
用户登录 自定义用户登录字段处理 用户的登录时通过 手机号也可以进行登录 需要重写登录验证逻辑 from django.contrib.auth.backends import ModelBacken ...
- 实现Web上的用户登录功能
关于如何实现web上的自动登录功能 文章来源http://coolshell.cn/articles/5353.html Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) ...
- 你会做Web上的用户登录功能吗?
Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能后,我觉得很有必要写一篇文章教大家怎么来做用户登录功能.下面的文章告诉大家这个功能可能并没有你所想像的那么简单,这是一个关 ...
- PHP用户登录解析
Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能后,我觉得很有必要写一篇文章教大家怎么来做用户登录功能.下面 的文章告诉大家这个功能可能并没有你所想像的那么简单,这是一个 ...
- Struts2(三.用户登录状态显示及Struts2标签)
1.编写main.jsp /WebContent/main.jsp 之前用户登录时已把用户存入session <%@ page language="java" content ...
- C# MVC 用户登录状态判断 【C#】list 去重(转载) js 日期格式转换(转载) C#日期转换(转载) Nullable<System.DateTime>日期格式转换 (转载) Asp.Net MVC中Action跳转(转载)
C# MVC 用户登录状态判断 来源:https://www.cnblogs.com/cherryzhou/p/4978342.html 在Filters文件夹下添加一个类Authenticati ...
- Django Admin 后台Admin继承UserAdmin增加用户密码不显示明文和用户登录不了的解决方法
Django后台Admin继承UserAdmin增加用户不显示明文方法 1.在 models.py 中用户表 # 导包规范-1.Python标准模块 from django.db import mod ...
随机推荐
- 2022了你还不会『低代码』?数据科学也能玩转Low-Code啦! ⛵
作者:韩信子@ShowMeAI 数据分析实战系列:http://www.showmeai.tech/tutorials/40 机器学习实战系列:http://www.showmeai.tech/tut ...
- MySQL为什么"错误"选择代价更大的索引
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 MySQL优化器索引选择迷思. 高鹏(八怪)对本文亦有贡献. 1. 问题描述 群 ...
- LuoguP5022 旅行 (割点,基环树)
// luogu-judger-enable-o2 #include <cstdio> //#include <iostream> #include <cstring&g ...
- linux项目环境部署入门
linux目录 /bin 二进制可执行命令 (ls,cat,mkdir等) /dev 设备特殊文件/etc 系统管理和配置文件/etc/rc.d 启动的配置文件和脚本 /opt 额外安装的可选应用程序 ...
- 事物的隔离性和MVCC
事物的隔离性 mysql的服务端是支持多个客户端同时与之连接的,每个客户端可能还并发了好几个连接,所以mysql是需要同时处理很多事情的,每一件独立的事情就叫做事务.我们知道事务有一个叫隔离性的特性, ...
- .NET 7 SDK 对容器的内置支持
大家好,我是等天黑. .NET 又双叒叕出新功能了, 就在前几天,.NET 团队发布博客,宣称在 .NET SDK 中内置了对 .NET 应用容器化的支持. 小试牛刀 在正式介绍它之前,先通过一个简单 ...
- 【设计模式】Java设计模式 - 观察者模式
[设计模式]Java设计模式 - 观察者模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 @一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长 ...
- KingbaseES V8R6集群维护案例之--修改securecmdd工具服务端口
案例说明: 在一些生产环境,为了系统安全,不支持ssh互信,或限制root用户使用ssh登录,KingbaseES V8R6可以使用securecmdd工具支持主机之间的通讯.securecmdd工具 ...
- KingbaseES 数据库软件卸载
关键字: KingbaseES.卸载 一.安装后检查 在安装完成后,可以通过以下几种方式进行安装正确性验证: 1. 查看安装日志,确认没有错误记录; 2. 查看开始菜单: 查看应用程序菜单中是否安 ...
- Java开发学习(三十三)----Maven私服(一)私服简介安装与私服分类
一.私服简介 团队开发现状分析 (1)张三负责ssm_crm的开发,自己写了一个ssm_pojo模块,要想使用直接将ssm_pojo安装到本地仓库即可 (2)李四负责ssm_order的开发,需要用到 ...