基於java的外賣點餐系統部分模組設計(無介面版)
大家好,本次帶來的是基於java的外賣點餐系統部分模組設計(無介面版),也算是對這一個月所學的檢測吧,由於還沒學習前端,所有隻能在控制檯進行介面模擬,可能存在一些小bug,望大家指正。
文章目錄
一、建立實體類
本專案一個有4個實體類:Administrator(管理員類)、Client(客戶類)、Dishes(菜品類)、OrderForm(訂單類)。
Administrator(管理員類)
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;
}
}
Client(客戶類)
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;
}
}
Dishes(菜品類)
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;
}
}
OrderForm(訂單類)
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(訂單管理類)
DAO(管理類介面)
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);
}
AdminManagement(管理員管理類)
* 管理員管理類
* 採用單例模式(餓漢式)
* @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;
}
}
ClientManagement(客戶管理類)
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);
}
}
DishesManagement(菜品管理類)
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;
}
}
OrderManagement(訂單管理類)
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();
}
}
相關文章
- 基於SSM的線上外賣訂餐系統畢業設計論文【範文】SSM
- 掌握Java9模組化系統-基礎部分Java
- JAVA oa 系統模組設計方案Java
- JAVA 考試系統模組設計方案Java
- java OA 辦公系統 模組設計方案Java
- JAVA oa 辦公系統模組 設計方案Java
- 掃碼點餐!線上點餐(外賣與自取)小程式!
- 美團外賣霸王餐API介面+餓了麼外賣霸王餐API介面,免費開放對接API
- 掌握Java9模組化系統-進階部分Java
- 餐廳點餐系統GUI——Java大作業GUIJava
- OA系統模組設計方案
- 外賣霸王餐系統推薦,哪家的系統比較穩定呢?
- 系統模組劃分設計的思考
- 美團外賣基於GPU的向量檢索系統實踐GPU
- java 版工程管理系統專案各模組及其功能點清單Java
- 基於FPGA的1024QAM基帶通訊系統,包含testbench,高斯通道模組,誤位元速率統計模組,可以設定不同SNRFPGA
- 基於FPGA的16QAM基帶通訊系統,包含testbench,高斯通道模組,誤位元速率統計模組,可以設定不同SNRFPGA
- ModStartCMS 基於 Laravel 模組化組織的後臺系統框架Laravel框架
- 基於FPGA的BPSK調製解調系統,包含testbench,高斯通道模組,誤位元速率統計模組,可以設定不同SNRFPGA
- Java 9 的模組(Module)系統Java
- 手擼一個外賣點餐系統後臺,可以寫上簡歷的實戰專案!
- 基於java的網路招聘系統的設計與實現Java
- 基於java的文章釋出系統的設計與實現Java
- java 網路考試 線上教育系統 模組設計方案Java
- 基於FPGA的QPSK調製+軟解調系統,包含testbench,高斯通道模組,誤位元速率統計模組,可以設定不同SNRFPGA
- OA 系統原始碼模組設計方案原始碼
- 基於FPGA的MSK調製解調系統verilog開發,包含testbench,同步模組,高斯通道模擬模組,誤位元速率統計模組FPGA
- 基於Java+SpringBoot+Mysql線上簡單拍賣競價拍賣競拍系統功能設計與實現十一JavaSpring BootMySql
- 基於Java+SpringBoot+Mysql線上簡單拍賣競價拍賣競拍系統功能設計與實現三JavaSpring BootMySql
- 基於FPGA的2ASK調製解調系統,包含testbench,高斯通道模組,誤位元速率統計模組,可以設定不同SNRFPGA
- 基於FPGA的2FSK調製解調系統,包含testbench,高斯通道模組,誤位元速率統計模組,可以設定不同SNRFPGA
- Java畢業設計_基於MySQL網盤管理系統的設計與實現JavaMySql
- java PC 和 手機 線上考試系統 模組設計方案Java
- 常用介面分類與模組設計的方法
- thinkphp實現超級外賣訂餐系統原始碼演示下載PHP原始碼
- 基於FPGA的16QAM調製+軟解調系統,包含testbench,高斯通道模組,誤位元速率統計模組,可以設定不同SNRFPGA
- OA 辦公管理系統模組 設計方案
- 基於Java的網站內容管理系統(SpringBoot版)Java網站Spring Boot