大家好,本次带来的是基于java的外卖点餐系统部分模块设计(无界面版),也算是对这一个月所学的检测吧,由于还没学习前端,所有只能在控制台进行界面模拟,可能存在一些小bug,望大家指正。
本项目一个有4个实体类:Administrator(管理员类)、Client(客户类)、Dishes(菜品类)、OrderForm(订单类)。
import java.util.ArrayList;
import java.util.List;
/**
* 管理员类
*
* @author Administrator
*
*/
public class Administrator {
/** 管理员ID */
private int aid;
/** 账号 */
private String azhangHao;
/** 密码 */
private String amiMa;
public Administrator() {
this(1001, "sunkai", "sunkai001");
}
private Administrator(int aid, String azhangHao, String amiMa) {
super();
this.aid = aid;
this.azhangHao = azhangHao;
this.amiMa = amiMa;
}
public int getAid() {
return aid;
}
public void setAid(int aid) {
this.aid = aid;
}
public String getAzhangHao() {
return azhangHao;
}
public void setAzhangHao(String azhangHao) {
this.azhangHao = azhangHao;
}
public String getAmiMa() {
return amiMa;
}
public void setAmiMa(String amiMa) {
this.amiMa = amiMa;
}
@Override
public String toString() {
return "管理员id:" + aid + ", 账号:" + azhangHao + ", 密码:" + amiMa;
}
}
import java.text.DateFormat;
import java.text.FieldPosition;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
* 客户类
*
* @author Administrator
*
*/
public class Client {
/** 客户id */
private int cid;
/** 客户名 */
private String cname;
/** 性别 */
private String sex;
/** 密码 */
private String cmiMa;
/** 送餐地址 */
private String songCanDiZhi;
/** 手机号 */
private String shouJiHao;
/** 创建时间 */
private LocalDate chuangJianShiJian;
private Client() {
// TODO Auto-generated constructor stub
}
public Client(int cid, String cname, String sex, String cmiMa, String songCanDiZhi, String shouJiHao) {
super();
this.cid = cid;
this.cname = cname;
this.sex = sex;
this.cmiMa = cmiMa;
this.songCanDiZhi = songCanDiZhi;
this.shouJiHao = shouJiHao;
chuangJianShiJian = LocalDate.now();
}
public Client(int cid, String cname, String sex, String cmiMa, String shouJiHao) {
super();
this.cid = cid;
this.cname = cname;
this.sex = sex;
this.cmiMa = cmiMa;
this.shouJiHao = shouJiHao;
chuangJianShiJian = LocalDate.now();
}
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getCmiMa() {
return cmiMa;
}
public void setCmiMa(String cmiMa) {
this.cmiMa = cmiMa;
}
public String getSongCanDiZhi() {
return songCanDiZhi;
}
public void setSongCanDiZhi(String songCanDiZhi) {
this.songCanDiZhi = songCanDiZhi;
}
public String getShouJiHao() {
return shouJiHao;
}
public void setShouJiHao(String shouJiHao) {
this.shouJiHao = shouJiHao;
}
public LocalDate getChuangJianShiJian() {
return chuangJianShiJian;
}
@Override
public String toString() {
return "客户id:" + cid + ", 客户名:" + cname + ", 性别:" + sex + ", 密码:" + cmiMa + ", 送餐地址:"
+ songCanDiZhi + ", 手机号:" + shouJiHao + ", 创建时间:" + chuangJianShiJian;
}
}
import java.time.LocalDate;
/**
* 菜品类
*
* @author Administrator
*
*/
public class Dishes {
/** 菜品ID */
private int dno;
/** 菜品名 */
private String dname;
/** 菜品类型 */
private String dleiXin;
/** 上架时间 */
private LocalDate dshangJiaShiJian;
/** 单价 */
private double dshouJia;
/** 月销售量 */
private int dyueXiaoShouLiang;
/** 总数量 */
private int dzonShuLiang;
private Dishes() {
// TODO Auto-generated constructor stub
}
public Dishes(int dno, String dname, String dleiXin, double dshouJia,int dzonShuLiang) {
super();
this.dno = dno;
this.dname = dname;
this.dleiXin = dleiXin;
this.dshangJiaShiJian = LocalDate.now();
this.dshouJia = dshouJia;
this.dzonShuLiang = dzonShuLiang;
}
public int getDno() {
return dno;
}
public void setDno(int dno) {
this.dno = dno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getDleiXin() {
return dleiXin;
}
public void setDleiXin(String dleiXin) {
this.dleiXin = dleiXin;
}
public LocalDate getDshangJiaShiJian() {
return dshangJiaShiJian;
}
public double getDshouJia() {
return dshouJia;
}
public void setDshouJia(double dshouJia) {
this.dshouJia = dshouJia;
}
public int getDyueXiaoShouLiang() {
return dyueXiaoShouLiang;
}
public void setDyueXiaoShouLiang(int dyueXiaoShouLiang) {
this.dyueXiaoShouLiang = dyueXiaoShouLiang;
}
public int getDzonShuLiang() {
return dzonShuLiang;
}
public void setDzonShuLiang(int dzonShuLiang) {
this.dzonShuLiang = dzonShuLiang;
}
@Override
public String toString() {
return "菜品id:" + dno + ", 菜品名:" + dname + ", 菜品类型:" + dleiXin + ", 上架时间:"
+ dshangJiaShiJian + ", 单价:" + dshouJia + ", 月销售量:" + dyueXiaoShouLiang
+ ", 总数量:" + dzonShuLiang;
}
}
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Map;
public class OrderForm {
/**订单号*/
private int oid;
/**订单创建时间*/
private LocalDateTime datetime;
/**菜品id及购买数*/
private Map<Integer,Integer> dnoAndshuLian;
/**客户id*/
private int cid;
/**总价格*/
private double zonJiaGe;
/**订单状态*/
private int dingDanZhuangTai;
public OrderForm() {
// TODO Auto-generated constructor stub
}
public OrderForm(int oid, Map<Integer, Integer> dnoAndshuLian, int cid, double zonJiaGe,
int dingDanZhuangTai) {
super();
this.oid = oid;
this.datetime = LocalDateTime.now();
this.dnoAndshuLian = dnoAndshuLian;
this.cid = cid;
this.zonJiaGe = zonJiaGe;
this.dingDanZhuangTai = dingDanZhuangTai;
}
public int getOid() {
return oid;
}
public void setOid(int oid) {
this.oid = oid;
}
public LocalDateTime getDatetime() {
return datetime;
}
public void setDatetime(LocalDateTime datetime) {
this.datetime = datetime;
}
public Map<Integer, Integer> getDnoAndshuLian() {
return dnoAndshuLian;
}
public void setDnoAndshuLian(Map<Integer, Integer> dnoAndshuLian) {
this.dnoAndshuLian = dnoAndshuLian;
}
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public double getZonJiaGe() {
return zonJiaGe;
}
public void setZonJiaGe(double zonJiaGe) {
this.zonJiaGe = zonJiaGe;
}
public int getDingDanZhuangTai() {
return dingDanZhuangTai;
}
public void setDingDanZhuangTai(int dingDanZhuangTai) {
this.dingDanZhuangTai = dingDanZhuangTai;
}
//返回由菜品id和购买数拼接成的字符串
public StringBuffer sk() {
StringBuffer s = new StringBuffer();
dnoAndshuLian.entrySet().stream().forEach(e->{
s.append("\n菜品id:"+e.getKey().toString()+"\t购买数:"+e.getValue().toString());
});
return s;
}
//将订单创建的时间格式改为yyyy.MM.dd HH:mm:ss
public String ks() {
return datetime.format(DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss"));
}
@Override
public String toString() {
return "订单号:" + oid + ", 订单创建时间:" + ks() + ", 客户id:" + cid+sk()
+ "\n总价格:" + zonJiaGe + ", 订单状态:" + dingDanZhuangTai ;
}
}
本系统共有1个接口加4个管理类:DAO(管理类接口)、AdminManagement(管理员管理类)、ClientManagement(客户管理类)、DishesManagement(菜品管理类)、OrderManagement(订单管理类)
import java.util.List;
public interface DAO<T> {
/** 添加T类型对象到Map中 */
boolean insert(T t);
/** 根据id获取Map中的元素 */
T findById(int id);
/** 返回map中的所有元素值集 */
List<T> findAll();
/** 根据id删除Map中的元素 */
boolean delete(int id);
}
* 管理员管理类
* 采用单例模式(饿汉式)
* @author Lenovo
*
*/
import com.sunkai.chengyuanlei.Administrator;
public class AdminManagement {
/**创建管理员对象 ,同时只允许一个管理员对象存在*/
private static Administrator admin = new Administrator();
/**创建管理员管理对象*/
private static AdminManagement am = new AdminManagement();
private AdminManagement() { }
public static AdminManagement toAdmin() {
return am;
}
/**管理员登录*/
public boolean guanLiYuanDengLu(String s1,String s2) {
boolean bl = false;
if(admin.getAzhangHao().equals(s1)&&admin.getAmiMa().equals(s2)) {
bl = true;
}
return bl;
}
}
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.sunkai.chengyuanlei.Client;
import com.sunkai.chengyuanlei.Dishes;
public class ClientManagement implements DAO<Client> {
/**存储客户信息的map集合,键为客户id、值为客户信息*/
private static Map<Integer, Client> map = new HashMap<>();
/**存储当前登录的客户id*/
private static int id;
public static int getId() {
return id;
}
@Override
/** 将客户信息存到Map集合中 */
public boolean insert(Client t) {
boolean bl = true;
if (map.containsKey(t.getCid())) {
bl = false;
} else {
map.put(t.getCid(), t);
}
return bl;
}
@Override
/** 根据客户ID查询客户信息 */
public Client findById(int id) {
Client d = null;
if (map.containsKey(id)) {
d = map.get(id);
}
return d;
}
@Override
/** 返回所有客户信息所构成的集合 */
public List<Client> findAll() {
Collection<Client> values = map.values();
return new ArrayList(values);
}
@Override
/** 根据ID删除客户信息 */
public boolean delete(int id) {
boolean bl = true;
if (map.containsKey(id)) {
map.remove(id);
} else {
bl = false;
}
return bl;
}
/** 将客户信息进行分页显示,每页最多5条信息 */
public List<Client> fenYe(List<Client> list, int a) {
int b = list.size() / 5;
int c = list.size() % 5;
if (a > b && c == 0 || a > (b + 1)) {
} else if (a == (b + 1) && c != 0) {
list = list.subList(5 * (a - 1), list.size());
} else {
list = list.subList(5 * (a - 1), 5 * a);
}
return list;
}
/** 查看所有客户信息,以分页的方式显示,每页最多显示5条信息 */
public List<Client> fenYeXianShi(int a) {
List<Client> list = findAll();
//接收第a页的菜品信息的集合
list = fenYe(list, a);
return list;
}
/**用户登录*/
public boolean yonHuDengLu(String s1,String s2) {
boolean bl = false;
List<Client> list = findAll();
for(Client c:list) {
if(c.getShouJiHao().equals(s1)&&c.getCmiMa().equals(s2)) {
id = c.getCid();
bl = true;
}
}
return bl;
}
/**修改密码(当前登录用户)*/
public boolean xiuGaiMiMa(String s) {
boolean bl = false;
//密码限制:只能是6-10位的数字或字母
if(s.matches("^[1-9a-zA-Z]\\w{5,9}")) {
map.get(id).setCmiMa(s);
bl = true;
}
return bl;
}
/**显示当前登录用户的信息*/
public Client xianShiDangQianYonHu() {
return map.get(id);
}
}
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.stream.Collector;
import java.util.stream.Collectors;
/**
* 菜品管理类
*/
import com.sunkai.chengyuanlei.Dishes;
public class DishesManagement implements DAO<Dishes> {
/** 存储菜品信息的Map集合,键为菜品ID,值为菜品类 */
private static Map<Integer, Dishes> map = new HashMap<>();
@Override
/** 添加菜品信息到Map集合 */
public boolean insert(Dishes t) {
boolean bl = true;
if (map.containsKey(t.getDno())) {
bl = false;
} else {
map.put(t.getDno(), t);
}
return bl;
}
@Override
/** 根据id获取菜品信息 */
public Dishes findById(int id) {
Dishes d = null;
if (map.containsKey(id)) {
d = map.get(id);
}
return d;
}
@Override
/** 返回所有菜品信息所构成的集合 */
public List<Dishes> findAll() {
Collection<Dishes> values = map.values();
return new ArrayList(values);
}
@Override
/** 删除指定ID的菜品 */
public boolean delete(int id) {
boolean bl = true;
if (map.containsKey(id)) {
map.remove(id);
} else {
bl = false;
}
return bl;
}
/** 将菜品信息进行分页显示,每页最多5条信息 */
public List<Dishes> fenYe(List<Dishes> list, int a) {
int b = list.size() / 5;
int c = list.size() % 5;
if (a > b && c == 0 || a > (b + 1)) {
} else if (a == (b + 1) && c != 0) {
list = list.subList(5 * (a - 1), list.size());
} else {
list = list.subList(5 * (a - 1), 5 * a);
}
return list;
}
/** 查看所有菜品信息,以分页的方式显示,每页最多显示5条信息 */
public List<Dishes> fenYeXianShi(int a) {
List<Dishes> list = findAll();
//接收第a页的菜品信息的集合
list = fenYe(list, a);
return list;
}
/** 查看指定类别的菜品信息 */
public List<Dishes> anLeiBie(String s) {
List<Dishes> list = findAll();
// 筛选符合要求的菜品,并返回新的集合
list = list.stream().filter(d -> d.getDleiXin().equals(s)).collect(Collectors.toList());
return list;
}
/** 根据菜品ID修改菜品价格 */
public boolean xiuGaiJiaGe(int id, double b) {
List<Dishes> list = findAll();
Dishes d = findById(id);
boolean bl = true;
if (d != null) {
d.setDshouJia(b);
} else {
bl = false;
}
return bl;
}
/** 显示所有菜品(按菜品销量从高到低排序输出) */
public List<Dishes> xianShiSuoYouCaiPin(int a) {
List<Dishes> list = findAll();
// 将所有菜品信息按照销售量从高到低排序
list = list.stream().sorted((d1, d2) -> d2.getDyueXiaoShouLiang() - d1.getDyueXiaoShouLiang())
.collect(Collectors.toList());
//将排好序的菜品信息进行分页
list = fenYe(list,a);
return list;
}
/** 根据菜品类别显示所有菜品 */
public List<Dishes> genJuLeiBie(int a) {
List<Dishes> list = findAll();
//将类别一样的菜品信息放到一起
list = list.stream().sorted((d1,d2)->d1.getDleiXin().compareTo(d2.getDleiXin())).collect(Collectors.toList());
//然后将菜品信息进行分页
list = fenYe(list, a);
return list;
}
}
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.sunkai.chengyuanlei.Client;
import com.sunkai.chengyuanlei.OrderForm;
public class OrderManagement implements DAO<OrderForm> {
/**存储订单信息的map集合,键为订单id、值为订单信息*/
Map<Integer, OrderForm> map = new HashMap<>();
@Override
/**添加订单信息到集合中*/
public boolean insert(OrderForm t) {
boolean bl = true;
if (map.containsKey(t.getCid())) {
bl = false;
} else {
map.put(t.getCid(), t);
}
return bl;
}
@Override
/**根据定订单id获取订单信息*/
public OrderForm findById(int id) {
OrderForm o = null;
if (map.containsKey(id)) {
o = map.get(id);
}
return o;
}
@Override
/**返回所有订单信息构成的集合*/
public List<OrderForm> findAll() {
Collection<OrderForm> values = map.values();
return new ArrayList(values);
}
@Override
/**根据订单id删除订单*/
public boolean delete(int id) {
boolean bl = true;
if (map.containsKey(id)) {
map.remove(id);
} else {
bl = false;
}
return bl;
}
/**显示当前登录用户的订单*/
public OrderForm yonHuDingDan() {
List<OrderForm> list = findAll();
OrderForm order = null;
for(OrderForm o: list) {
if(o.getCid()==ClientManagement.getId()) {
order = o;
}
}
return order;
}
/** 将订单信息进行分页显示,每页最多5条信息 */
public List<OrderForm> fenYe(List<OrderForm> list, int a) {
int b = list.size() / 5;
int c = list.size() % 5;
if (a > b && c == 0 || a > (b + 1)) {
} else if (a == (b + 1) && c != 0) {
list = list.subList(5 * (a - 1), list.size());
} else {
list = list.subList(5 * (a - 1), 5 * a);
}
return list;
}
/** 查看所有订单信息,以分页的方式显示,每页最多显示5条信息 */
public List<OrderForm> fenYeXianShi(int a) {
List<OrderForm> list = findAll();
//接收第a页的菜品信息的集合
list = fenYe(list, a);
return list;
}
/**根据订单ID修改订单状态
* (0:未支付 1:已支付 2:配送中 3:已完成)*/
public boolean xiuGaiDinDanZhuangTai(int a,int b) {
boolean bl = false;
if(map.containsKey(a)) {
map.get(a).setDingDanZhuangTai(b);
bl = true;
}
return bl;
}
}
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
import com.sunkai.chengyuanlei.Client;
import com.sunkai.chengyuanlei.Dishes;
import com.sunkai.chengyuanlei.OrderForm;
import com.sunkai.guanlilei.AdminManagement;
import com.sunkai.guanlilei.ClientManagement;
import com.sunkai.guanlilei.DishesManagement;
import com.sunkai.guanlilei.OrderManagement;
public class Main {
/** 创建Scanner对象,用于从对象接收数据 */
private static Scanner sc = new Scanner(System.in);
/** 创建管理员管理对象 */
private static AdminManagement am = AdminManagement.toAdmin();
/** 创建用户管理对象 */
private static ClientManagement client = new ClientManagement();
/** 创建菜品管理对象 */
private static DishesManagement dm = new DishesManagement();
/** 创建订单管理对象 */
private static OrderManagement om = new OrderManagement();
/** 定义一个用于生成用户id的变量,初始值为10001,每创建一个用户就+1 */
private static int cid = 10001;
/** 定义一个用于生成菜品id的变量,初始值为10001,每添加就一条菜品信息就+1 */
private static int did = 10001;
/** 定义一个用于生成订单id的变量,初始值为10001,每生成一个订单就+1 */
private static int oid = 10001;
/** 首页界面,包含:登录、注册、退出选项 */
public void shouYeJieMian() {
System.out.println("==========呆呆的餐厅=========");
System.out.println("===========[1]登录==========");
System.out.println("===========[2]注册==========");
System.out.println("===========[0]退出==========");
String a = sc.next();
switch (a) {
case "1":
// 登录
dengLuJieMian();
break;
case "2":
// 注册
zhuCeJieMian();
break;
default:
// 退出
return;
}
}
/** 登录界面 */
public void dengLuJieMian() {
System.out.println("=========登录界面========");
System.out.print("用户名:");
String s1 = sc.next();
System.out.print("密码:");
String s2 = sc.next();
// 先判断登录对象是否为管理员
if (am.guanLiYuanDengLu(s1, s2)) {
// 登录成功进入管理员功能界面
guanLiYuanGonNengJieMian();
// 如果管理员验证未通过,再进行客户登录验证
} else if (client.yonHuDengLu(s1, s2)) {
// 登录成功进入客户功能界面
yonHuGonNengJieMian();
} else {
System.out.println("=====登录失败,请重新登录=====");
dengLuJieMian();
}
}
/** 用户注册界面 */
public void zhuCeJieMian() {
System.out.println("======注册界面======");
System.out.print("名称:");
String s1 = sc.next();
System.out.print("性别:");
String s2 = sc.next();
System.out.print("送餐地址:");
String s3 = sc.next();
String s4;
String s5;
while (true) {
System.out.print("手机号:");
s4 = sc.next();
System.out.print("密码:");
s5 = sc.next();
if (s4.matches("^1[0-9]{10}") && s5.matches("^[1-9a-zA-Z]\\w{5,9}")) {
break;
} else {
System.out.println("手机号或密码错误");
}
}
if (client.insert(new Client(cid, s1, s2, s5, s3, s4))) {
// 用户创建成功,cid加一,供下一位用户创建时使用
cid++;
System.out.println("=======创建成功=======");
} else {
System.out.println("=======创建失败=======");
}
System.out.println("请牢记手机号和密码,这将是您登录本系统的凭证");
System.out.println("=======[1]登录=======");
System.out.println("=======[0]退出=======");
String s = sc.next();
switch (s) {
case "1":
// 登录界面
dengLuJieMian();
break;
default:
// 退出系统
return;
}
}
/** 管理员功能界面 */
public void guanLiYuanGonNengJieMian() {
System.out.println("================管理员===============");
System.out.println("=============[1]添加菜品==============");
System.out.println("=============[2]查看所有菜品信息========");
System.out.println("=============[3]查看指定类别的菜品信息====");
System.out.println("=============[4]根据菜品id修改菜品价格====");
System.out.println("=============[5]删除指定id的菜品=========");
System.out.println("=============[6]添加客户===============");
System.out.println("=============[7]查看客户列表============");
System.out.println("=============[8]删除指定id的客户=========");
System.out.println("=============[9]订单列表显示=============");
System.out.println("=============[10]根据订单id修改订单状态====");
System.out.println("=============[11]返回首页界面=============");
System.out.println("=============[0]退出系统================");
String s1 = sc.next();
switch (s1) {
case "1":
// 添加菜品
tianJiaCaiPin();
break;
case "2":
// 查看所有菜品信息
chaKanSuoYoucaiPinXinXiJieMian();
break;
case "3":
// 查看指定类别的菜品信息
chaKanZhiDingLeiBieCaiPinXinXi();
break;
case "4":
// 根据菜品id修改菜品价格
genKJuCaiPinIdXiuGaiCaiPinJiage();
break;
case "5":
// 删除指定id的菜品
shanChuZhiDingIdDeCaiPin();
break;
case "6":
// 添加客户
tianJiaYonHuJieMian();
break;
case "7":
// 查看客户列表
chaKanKeHuLieBiaoJieMian();
break;
case "8":
// 删除指定id的客户
shanChuZhiDingIdDeKeHu();
break;
case "9":
// 订单列表显示
xianShiDingDanLieBiaoJieMian();
break;
case "10":
// 根据订单id修改订单状态
genKJuDinDanIdXiuGaiDinDanZhuangTai();
break;
case "11":
// 返回首页界面
shouYeJieMian();
default:
// 退出系统
return;
}
}
/** 用户功能界面 */
public void yonHuGonNengJieMian() {
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("=============[0]退出系统===============");
String s1 = sc.next();
switch (s1) {
case "1":
// 显示所有菜品
xianShiSuoYoucaiPinJieMian();
break;
case "2":
// 根据菜品类别显示所有菜品
genJuCaiPinLeiBieXianShiSuoYouCaiPin();
break;
case "3":
// 点餐
dianCanJieMian();
break;
case "4":
// 查看订单
chaKanDingDan();
break;
case "5":
// 修改密码
xiuGaiMiMa();
break;
case "6":
// 个人信息显示
geRenXinXiXianShi();
break;
case "7":
// 返回首页界面
shouYeJieMian();
default:
// 退出系统
return;
}
}
/** 添加菜品 */
public void tianJiaCaiPin() {
System.out.println("============添加菜品=========");
System.out.print("菜品名:");
String s1 = sc.next();
System.out.print("菜品类型:");
String s2 = sc.next();
System.out.print("单价:");
double d1 = sc.nextDouble();
System.out.print("总数量:");
int i1 = sc.nextInt();
if (dm.insert(new Dishes(did, s1, s2, d1, i1))) {
// 菜品添加成功,did加一,供下一个菜品添加时使用
did++;
System.out.println("========添加成功=======");
} else {
System.out.println("=======添加失败=====");
}
System.out.println("=======[1]继续添加=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 继续添加
tianJiaCaiPin();
break;
case "2":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
}
/** 查看所有菜品信息界面 */
public void chaKanSuoYoucaiPinXinXiJieMian() {
System.out.println("======所有菜品信息======");
int a = 1;
// 查看所有菜品信息(分页显示)
chaKanSuoYoucaiPinXinXi(a);
}
/** 查看所有菜品信息 */
public void chaKanSuoYoucaiPinXinXi(int a) {
if (dm.fenYeXianShi(a).size() == 0) {
System.out.println("暂无菜品信息");
System.out.println("=======[1]继续查看=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 继续查看
chaKanSuoYoucaiPinXinXiJieMian();
break;
case "2":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
} else if (dm.fenYeXianShi(a).size() == 5) {
for (Dishes d : dm.fenYeXianShi(a)) {
System.out.println(d);
}
System.out.println("=======[1]上一页=====");
System.out.println("=======[2]下一页=====");
System.out.println("=======[3]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 上一页
a--;
chaKanSuoYoucaiPinXinXi(a);
break;
case "2":
// 下一页
a++;
chaKanSuoYoucaiPinXinXi(a);
break;
case "3":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
} else {
for (Dishes d : dm.fenYeXianShi(a)) {
System.out.println(d);
}
System.out.println("=======[1]上一页=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 上一页
a--;
chaKanSuoYoucaiPinXinXi(a);
break;
case "2":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
}
}
/** 查看指定类别菜品信息 */
public void chaKanZhiDingLeiBieCaiPinXinXi() {
System.out.println("========查看指定类别菜品信息=======");
System.out.print("菜品类别:");
String s1 = sc.next();
if (dm.anLeiBie(s1).size() == 0) {
System.out.println("=======无该类别菜品======");
} else {
for (Dishes d : dm.anLeiBie(s1)) {
System.out.println(d);
}
}
System.out.println("=======[1]继续查看=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s2 = sc.next();
switch (s2) {
case "1":
// 继续查看
chaKanZhiDingLeiBieCaiPinXinXi();
break;
case "2":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
}
/** 根据菜品id修改菜品价格 */
public void genKJuCaiPinIdXiuGaiCaiPinJiage() {
System.out.println("==========根据菜品id修改菜品价格=========");
System.out.print("菜品ID:");
int a = sc.nextInt();
System.out.print("菜品价格:");
double d = sc.nextDouble();
if (dm.xiuGaiJiaGe(a, d)) {
System.out.println("=======修改成功======");
} else {
System.out.println("======修改失败,无对应菜品=====");
}
System.out.println("=======[1]继续修改=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s2 = sc.next();
switch (s2) {
case "1":
// 继续修改
genKJuCaiPinIdXiuGaiCaiPinJiage();
break;
case "2":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
}
/** 删除指定id的菜品 */
public void shanChuZhiDingIdDeCaiPin() {
System.out.println("==========删除指定id的菜品=========");
System.out.print("菜品ID:");
int a = sc.nextInt();
if (dm.delete(a)) {
System.out.println("=======删除成功======");
} else {
System.out.println("======删除失败,无对应菜品=====");
}
System.out.println("=======[1]继续删除=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s2 = sc.next();
switch (s2) {
case "1":
// 继续删除
shanChuZhiDingIdDeCaiPin();
break;
case "2":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
}
/** 添加用户界面 */
public void tianJiaYonHuJieMian() {
System.out.println("======添加用户界面======");
System.out.print("名称:");
String s1 = sc.next();
System.out.print("性别:");
String s2 = sc.next();
System.out.print("送餐地址:");
String s3 = sc.next();
String s4;
String s5;
while (true) {
System.out.print("手机号:");
s4 = sc.next();
System.out.print("密码:");
s5 = sc.next();
if (s4.matches("^1[0-9]{10}") && s5.matches("^[1-9a-zA-Z]\\w{5,9}")) {
break;
} else {
System.out.println("手机号或密码错误");
}
}
if (client.insert(new Client(cid, s1, s2, s5, s3, s4))) {
// 用户添加成功,cid加一,供下一位用户创建时使用
cid++;
System.out.println("=======添加成功=======");
} else {
System.out.println("=======添加失败=======");
}
System.out.println("=======[1]继续添加====");
System.out.println("=======[2]返回上一层====");
System.out.println("=======[0]退出系统=======");
String s = sc.next();
switch (s) {
case "1":
// 继续添加
tianJiaYonHuJieMian();
break;
case "2":
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
}
/** 查看客户列表界面 */
public void chaKanKeHuLieBiaoJieMian() {
System.out.println("======所有客户信息======");
int a = 1;
// 查看所有客户信息(分页显示)
chaKanKeHuLieBiao(a);
}
/** 查看客户列表 */
public void chaKanKeHuLieBiao(int a) {
if (client.fenYeXianShi(a).size() == 0) {
System.out.println("暂无客户信息");
System.out.println("=======[1]继续查看=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 继续查看
chaKanKeHuLieBiaoJieMian();
break;
case "2":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
} else if (client.fenYeXianShi(a).size() == 5) {
for (Client d : client.fenYeXianShi(a)) {
System.out.println(d);
}
System.out.println("=======[1]上一页=====");
System.out.println("=======[2]下一页=====");
System.out.println("=======[3]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 上一页
a--;
chaKanKeHuLieBiao(a);
break;
case "2":
// 下一页
a++;
chaKanKeHuLieBiao(a);
break;
case "3":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
} else {
for (Client d : client.fenYeXianShi(a)) {
System.out.println(d);
}
System.out.println("=======[1]上一页=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 上一页
a--;
chaKanKeHuLieBiao(a);
break;
case "2":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
}
}
/** 删除指定id的客户 */
public void shanChuZhiDingIdDeKeHu() {
System.out.println("==========删除指定id的客户=========");
System.out.print("客户ID:");
int a = sc.nextInt();
if (client.delete(a)) {
System.out.println("=======删除成功======");
} else {
System.out.println("======删除失败,无对应客户=====");
}
System.out.println("=======[1]继续删除=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s2 = sc.next();
switch (s2) {
case "1":
// 继续删除
shanChuZhiDingIdDeKeHu();
break;
case "2":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
}
/** 显示订单列表界面 */
public void xianShiDingDanLieBiaoJieMian() {
System.out.println("======所有订单信息======");
int a = 1;
// 查看所有订单信息(分页显示)
xianShiDingDanLieBiao(a);
}
/** 查看订单列表 */
public void xianShiDingDanLieBiao(int a) {
if (om.fenYeXianShi(a).size() == 0) {
System.out.println("暂无订单信息");
System.out.println("=======[1]继续查看=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 继续查看
xianShiDingDanLieBiaoJieMian();
break;
case "2":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
} else if (om.fenYeXianShi(a).size() == 5) {
for (OrderForm d : om.fenYeXianShi(a)) {
System.out.println(d);
}
System.out.println("=======[1]上一页=====");
System.out.println("=======[2]下一页=====");
System.out.println("=======[3]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 上一页
a--;
xianShiDingDanLieBiao(a);
break;
case "2":
// 下一页
a++;
xianShiDingDanLieBiao(a);
break;
case "3":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
} else {
for (OrderForm d : om.fenYeXianShi(a)) {
System.out.println(d);
}
System.out.println("=======[1]上一页=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 上一页
a--;
xianShiDingDanLieBiao(a);
break;
case "2":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
}
}
/** 根据订单id修改订单状态 */
public void genKJuDinDanIdXiuGaiDinDanZhuangTai() {
System.out.println("==========根据订单id修改订单状态=========");
System.out.print("订单ID:");
int a = sc.nextInt();
System.out.print("订单状态(0:未支付 1:已支付 2:配送中 3:已完成):");
int d = sc.nextInt();
if (om.xiuGaiDinDanZhuangTai(a, d)) {
System.out.println("=======修改成功======");
} else {
System.out.println("======修改失败,无对应订单=====");
}
System.out.println("=======[1]继续修改=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s2 = sc.next();
switch (s2) {
case "1":
// 继续修改
genKJuDinDanIdXiuGaiDinDanZhuangTai();
break;
case "2":
// 返回管理员功能界面
guanLiYuanGonNengJieMian();
break;
default:
// 退出系统
return;
}
}
/** 显示所有菜品界面 */
public void xianShiSuoYoucaiPinJieMian() {
System.out.println("======所有菜品信息======");
int a = 1;
// 查看所有菜品信息(分页显示)
xianShiSuoYoucaiPin(a);
}
/** 查看所有菜品信息 */
public void xianShiSuoYoucaiPin(int a) {
if (dm.fenYeXianShi(a).size() == 0) {
System.out.println("暂无菜品信息");
System.out.println("=======[1]继续查看=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 继续查看
xianShiSuoYoucaiPinJieMian();
break;
case "2":
// 返回用户功能界面
yonHuGonNengJieMian();
break;
default:
// 退出系统
return;
}
} else if (dm.fenYeXianShi(a).size() == 5) {
for (Dishes d : dm.fenYeXianShi(a)) {
System.out.println(d);
}
System.out.println("=======[1]上一页=====");
System.out.println("=======[2]下一页=====");
System.out.println("=======[3]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 上一页
a--;
xianShiSuoYoucaiPin(a);
break;
case "2":
// 下一页
a++;
xianShiSuoYoucaiPin(a);
break;
case "3":
// 返回用户功能界面
yonHuGonNengJieMian();
break;
default:
// 退出系统
return;
}
} else {
for (Dishes d : dm.fenYeXianShi(a)) {
System.out.println(d);
}
System.out.println("=======[1]上一页=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s3 = sc.next();
switch (s3) {
case "1":
// 上一页
a--;
xianShiSuoYoucaiPin(a);
break;
case "2":
// 返回用户功能界面
yonHuGonNengJieMian();
break;
default:
// 退出系统
return;
}
}
}
/** 根据菜品类别显示所有菜品 */
public void genJuCaiPinLeiBieXianShiSuoYouCaiPin() {
System.out.println("========查看指定类别菜品信息=======");
System.out.print("菜品类别:");
String s1 = sc.next();
if (dm.anLeiBie(s1).size() == 0) {
System.out.println("=======无该类别菜品======");
} else {
for (Dishes d : dm.anLeiBie(s1)) {
System.out.println(d);
}
}
System.out.println("=======[1]继续查看=====");
System.out.println("=======[2]返回上一层=====");
System.out.println("=======[0]退出系统======");
String s2 = sc.next();
switch (s2) {
case "1":
// 继续查看
genJuCaiPinLeiBieXianShiSuoYouCaiPin();
break;
case "2":
// 返回用户功能界面
yonHuGonNengJieMian();
break;
default:
// 退出系统
return;
}
}
/** 点餐界面 */
public void dianCanJieMian() {
// 存储用户所点菜品的id和购买数
Map<Integer, Integer> map = new LinkedHashMap<Integer, Integer>();
// 存储用户所点菜品的总价格
int sum = 0;
System.out.println("============点餐界面===========");
s: while (true) {
System.out.println("菜品id及购买数:");
// 菜品id
int a = sc.nextInt();
// 购买数量
int b = sc.nextInt();
if (dm.findById(a) != null) {
if (dm.findById(a).getDzonShuLiang() < b) {
b = dm.findById(a).getDzonShuLiang();
}
map.put(a, b);
sum += (dm.findById(a).getDshouJia() * b);
System.out.println("======[1]继续点餐=====");
if (sum != 0) {
System.out.println("======[2]结算========");
}
System.out.println("======[3]返回上一界面========");
System.out.println("======[0]退出系统========");
String s1 = sc.next();
switch (s1) {
case "1":
continue s;
case "2":
break;
case "3":
yonHuGonNengJieMian();
break;
default:
return;
}
if (om.insert(new OrderForm(oid, map, ClientManagement.getId(), sum, 0))) {
oid++;
dm.findById(a).setDyueXiaoShouLiang(dm.findById(a).getDyueXiaoShouLiang() + b);
dm.findById(a).setDzonShuLiang(dm.findById(a).getDzonShuLiang() - b);
System.out.println("=======点餐成功,一共" + sum + "元,请付款=======");
// 付款
fuKuan(sum);
System.out.println("======[1]返回上一界面========");
System.out.println("======[0]退出系统========");
String s2 = sc.next();
switch (s2) {
case "1":
yonHuGonNengJieMian();
break;
default:
return;
}
}
} else {
System.out.println("======[1]继续点餐=====");
System.out.println("======[2]返回上一界面========");
System.out.println("======[0]退出系统========");
String s1 = sc.next();
switch (s1) {
case "1":
continue s;
case "2":
yonHuGonNengJieMian();
break;
default:
return;
}
}
}
}
/** 付款 */
public void fuKuan(int sum) {
System.out.print("付款:");
sum -= sc.nextInt();
if (sum == 0) {
System.out.println("=======付款成功,请稍等,美食稍后就好=====");
} else if (sum < 0) {
System.out.println("==付款成功,找您" + (-sum) + "元===");
} else {
System.out.println("===还差" + sum + "元,请继续付款===");
fuKuan(sum);
}
}
/** 用户查看订单 */
public void chaKanDingDan() {
System.out.println("=====您的订单如下=====");
System.out.println(om.yonHuDingDan());
System.out.println("======[1]继续查看========");
System.out.println("======[2]返回上一界面========");
System.out.println("======[0]退出系统========");
String s1 = sc.next();
switch (s1) {
case "1":
chaKanDingDan();
case "2":
yonHuGonNengJieMian();
break;
default:
return;
}
}
/** 用户修改密码 */
public void xiuGaiMiMa() {
System.out.println("=========修改密码(密码限制:只能是6-10位的数字或字母,不能0开头)========");
System.out.print("新密码:");
String s1 = sc.next();
if (client.xiuGaiMiMa(s1)) {
System.out.println("=====修改成功,请牢记密码=====");
} else {
System.out.println("=====修改失败,请注意密码格式===");
}
System.out.println("======[1]继续修改========");
System.out.println("======[2]返回上一界面========");
System.out.println("======[0]退出系统========");
String s2 = sc.next();
switch (s2) {
case "1":
xiuGaiMiMa();
break;
case "2":
yonHuGonNengJieMian();
break;
default:
return;
}
}
/** 个人信息显示 */
public void geRenXinXiXianShi() {
System.out.println("=====以下是您的个人信息=====");
System.out.println(client.xianShiDangQianYonHu());
System.out.println("======[1]继续显示========");
System.out.println("======[2]返回上一界面========");
System.out.println("======[0]退出系统========");
String s2 = sc.next();
switch (s2) {
case "1":
geRenXinXiXianShi();
break;
case "2":
yonHuGonNengJieMian();
break;
default:
return;
}
}
}
测试:
public class Test {
public static void main(String[] args) {
Main m = new Main();
m.shouYeJieMian();
}
}