基于java的外卖点餐系统部分模块设计(无界面版)

大家好,本次带来的是基于java的外卖点餐系统部分模块设计(无界面版),也算是对这一个月所学的检测吧,由于还没学习前端,所有只能在控制台进行界面模拟,可能存在一些小bug,望大家指正。


文章目录

  • 一、创建实体类
    • Administrator(管理员类)
    • Client(客户类)
    • Dishes(菜品类)
    • OrderForm(订单类)
  • 二、管理类
    • DAO(管理类接口)
    • AdminManagement(管理员管理类)
    • ClientManagement(客户管理类)
    • DishesManagement(菜品管理类)
    • OrderManagement(订单管理类)
  • 三、界面类


一、创建实体类

本项目一个有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();
	}

}

你可能感兴趣的:(java)