一.直接使用数组
public class OrderingMgr{
/**
* 吃货联盟订餐系统
*
* @author CJ
* @param
*/
public static void main(String[] args) {
//在main()方法中定义6个数组分别存储6类订单信息
String[] names=new String[5];//保存订餐人姓名
String[] dishMegs=new String[5];// 保存所选菜品名
int[] dishNums = new int[5];// 保存所选菜品份数
int[] times=new int[5];// 保存送餐时间
String[] addresse=new String[5];// 保存送餐地址
int[] states=new int[5];// 保存订单状态:0表示已预订,1表示已完成
double[] sumPrices=new double[5];// 保存订单的总金额
//创建3个数组,用来存储3种菜品的名称、单价和点赞数等信息。
//供选择的菜品信息
String[] dishNames = {"红烧带鱼","鱼香肉丝","时令鲜蔬"}; //菜品名称
double[] prices = {40.0,20.0,10.0}; //菜品单价
int[] praiseNums = new int[3]; //点赞数
//初始化订单信息
names[0]="小方";
dishMegs[0]="鱼香肉丝 3份";
times[0] = 12;
addresse[0] = "207";
sumPrices[0] = 60.0;
states[0] = 0;
names[1]="小李";
dishMegs[1]="红烧带鱼 3份";
times[1] = 12;
addresse[1] = "207";
sumPrices[1] =120.0 ;
states[1] = 0;
// 实现菜单切换
int num = 1;// 用户输入0返回主菜单否则退出系统
boolean isExit = false;// 标记用户是否退出系统,true为退出
Scanner sc=new Scanner(System.in);
System.out.println("欢迎使用“吃货联盟订餐系统”");
// 循环控制用户输入选择并执行
do {
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("************************");
System.out.print("请选择:");
num=sc.nextInt();
switch (num){
case 1://我要订餐
System.out.println("***我要订餐***");
boolean isAdd = false;// 记录是否可以点餐
for (int i=0;i<names.length;i++){
if (names[i]==null){
System.out.println("序号" + "\t" + "菜名" + "\t\t" + "单价" + "\t" + "点赞数");
for (int j=0;j<dishNames.length;j++){
System.out.println((j + 1) + "\t" + dishNames[j] + "\t\t" + prices[j] + "元" + "\t" + praiseNums[j]);
}
System.out.print("请输入订餐人姓名:");
String name=sc.next();
System.out.print("请选择您要点的菜品编号:");
int chooseDish = sc.nextInt();
String dishMeg = dishNames[chooseDish - 1];
System.out.print("请选择您需要的份数:");
int number = sc.nextInt();
System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
int time = sc.nextInt();
while (time < 10 || time > 20) {
System.out.print("您的输入有误,请输入10-20间的整数");
time = sc.nextInt();
}
System.out.print("请输入送餐地址:");
String address = sc.next();
// 默认可以预定,不用写订单状态
System.out.println("订餐成功!");
System.out.println("您定的是:" + dishNames[chooseDish - 1] + number + "份");
System.out.println("送餐时间:" + time + "点");
double sumPrice = prices[chooseDish - 1] * number;// 计算餐费
double sendMoney = (sumPrice >= 50) ? 0 : 5;// 计算送餐费
System.out.println("餐费:" + sumPrice + "元," + "送餐费" + sendMoney + "元," + "总计:"
+ (sumPrice + sendMoney) + "元。");
names[i]=name;
dishMegs[i]=dishMeg;
times[i] = time;
addresse[i] = address;
sumPrices[i] = sumPrice ;
break;
}
if (i>= names.length){
isAdd=true;
}
if (isAdd) {
System.out.println("对不起,您的餐袋已满!");
}
}
break;
case 2:
System.out.println("***查看餐袋***");
System.out.println("序号\t订餐人\t餐品名称\t餐品数量\t送餐时间\t送餐地址\t总金额\t订单状态");
for (int i = 0; i < names.length; i++) {
if (names[i] != null) {
String state = (states[i] == 0) ? "已预订" : "已完成";
System.out.println((i + 1) + "\t" + names[i] + "\t" + dishMegs[i] + "\t" + dishMegs[i] + "份"
+ "\t" + times[i] + "\t" + addresse[i] + "\t" + sumPrices[i] + "元" + "\t" + state);
}
}
break;
case 3:// 签收订单
System.out.println("***签收订单***");
boolean isSignFind = false;
System.out.print("请选择要签收的订单序号:");
int sign = sc.nextInt();
for (int i = 0; i < names.length; i++) {
if (names[i] != null && states[i] == 0 && sign == i + 1) {
states[i] = 1;
System.out.println("订单签收成功!");
isSignFind = true;// 标记已找到的订单
} else if (names[i] != null && states[i] == 1 && sign == i + 1) {
System.out.println("您选择的订单已完成签收,不能再次签收!");
isSignFind = true;// 标记已找到的订单
}
}
if (!isSignFind) {
System.out.println("您选择的订单不存在!");
}
break;
case 4:// 删除订单
System.out.println("***删除订单***");
boolean isDelFind = false;
System.out.print("请输入要删除的订单序号:");
int delID = sc.nextInt();
for (int i = 0; i < names.length; i++) {
// 根据状态值判断能不能删除,只有已完成的才能删除
if (names[i] != null && states[i] == 1 && delID == i + 1) {
isDelFind = true;
for (int j = delID - 1; j < names.length - 1; j++) {
names[j] = names[j + 1];
dishMegs[j] = dishMegs[j + 1];
dishMegs[j] = dishMegs[j + 1];
times[j] = times[j + 1];
addresse[j] = addresse[j + 1];
states[j] = states[j + 1];
sumPrices[j] = sumPrices[j + 1];
}
// 将最后一位清空
names[names.length - 1] = null;
dishMegs[names.length - 1] = null;
dishNums[names.length - 1] = 0;
times[names.length - 1] = 0;
addresse[names.length - 1] = null;
states[names.length - 1] = 0;
sumPrices[names.length - 1] = 0;
System.out.println("删除订单成功!");
break;
} else if (names[i] != null && states[i] == 0 && delID == i + 1) {
isDelFind = true;
System.out.println("您选择的订单未签收,不能删除!");
break;
}
} // 未找到的订单不能删除
if (!isDelFind) {
System.out.println("您要删除的订单不存在!");
}
break;
case 5:// 我要点赞
System.out.println("***我要点赞***");
// 显示菜品信息
System.out.println("序号\t菜名\t单价");
for (int i = 0; i < dishNames.length; i++) {
String priaiseNum = (praiseNums[i] > 0) ? praiseNums[i] + "赞" : "";
System.out.println((i + 1) + "\t" + dishNames[i] + "\t" + prices[i] + "元" + priaiseNum);
}
System.out.print("请选择您要点赞的菜品序号:");
int number = sc.nextInt();
if (number> names.length||number<0){
System.out.println("输入错误");
break;
}else {
praiseNums[number - 1]++;
System.out.println("点赞成功");
}
break;
case 6:// 退出系统
isExit = true;
break;
}
// 返回主界面
if (!isExit) {
System.out.print("输入0返回:");
num = sc.nextInt();
} else {
break;
}
}while (num==0);
System.out.println("谢谢惠顾,欢迎您再次使用!");
sc.close();
}
}
二.对象+数组
1.创建菜单类
public class Menu {
private String dishNames; //菜品名称
private double prices ; //菜品单价
private int praiseNums; //点赞数
public Menu(String dishNames, double prices, int praiseNums) {
this.dishNames = dishNames;
this.prices = prices;
this.praiseNums = praiseNums;
}
public Menu() {
}
public String getDishNames() {
return dishNames;
}
public void setDishNames(String dishNames) {
this.dishNames = dishNames;
}
public double getPrices() {
return prices;
}
public void setPrices(double prices) {
this.prices = prices;
}
public int getPraiseNums() {
return praiseNums;
}
public void setPraiseNums(int praiseNums) {
this.praiseNums = praiseNums;
}
}
2.创建订餐类
public class Order {
private String names;//保存订餐人姓名
private String dishMegs;// 保存所选菜品名
private int dishNums;// 保存所选菜品份数
private int times;// 保存送餐时间
private String addresse;// 保存送餐地址
private int states;// 保存订单状态:0表示已预订,1表示已完成
private double sumPrices;// 保存订单的总金额
public Order() {
}
public Order(String names, String dishMegs, int dishNums, int times, String addresse, int states, double sumPrices) {
this.names = names;
this.dishMegs = dishMegs;
this.dishNums = dishNums;
this.times = times;
this.addresse = addresse;
this.states = states;
this.sumPrices = sumPrices;
}
public String getNames() {
return names;
}
public void setNames(String names) {
this.names = names;
}
public String getDishMegs() {
return dishMegs;
}
public void setDishMegs(String dishMegs) {
this.dishMegs = dishMegs;
}
public int getDishNums() {
return dishNums;
}
public void setDishNums(int dishNums) {
this.dishNums = dishNums;
}
public int getTimes() {
return times;
}
public void setTimes(int times) {
this.times = times;
}
public String getAddresse() {
return addresse;
}
public void setAddresse(String addresse) {
this.addresse = addresse;
}
public int getStates() {
return states;
}
public void setStates(int states) {
this.states = states;
}
public double getSumPrices() {
return sumPrices;
}
public void setSumPrices(double sumPrices) {
this.sumPrices = sumPrices;
}
}
3.方法类
public class Method {
public Method() {
}
Scanner sc = new Scanner(System.in);
//初始化信息
public void csh(Order[] order, Menu[] menu) {
// Order[] order = new Order[10];
order[0] = new Order("小方", "鱼香肉丝", 3, 10, "207", 0, 60);
order[1] = new Order("小方", "鱼香肉丝", 3, 10, "207", 0, 60);
// Menu[] menu = new Menu[3];
menu[0] = new Menu("红烧带鱼", 40, 0);
menu[1] = new Menu("鱼香肉丝", 20, 0);
menu[2] = new Menu("时令鲜蔬", 10, 0);
}
//功能菜单
public void gncd() {
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("************************");
System.out.print("请选择:");
}
//循环控制
public void loopKZ(Order[] order, Menu[] menu) {
int num = 1;// 用户输入0返回主菜单否则退出系统
boolean isExit = false;// 标记用户是否退出系统,true为退出
Scanner sc = new Scanner(System.in);
System.out.println("欢迎使用“吃货联盟订餐系统”");
// 循环控制用户输入选择并执行
do {
gncd();
num = sc.nextInt();
switch (num) {
case 1://我要订餐
CustomerOrders(order, menu);
break;
case 2://查看餐袋
show(order);
break;
case 3:// 签收订单
signIn(order);
break;
case 4:// 删除订单
delete(order);
break;
case 5:// 我要点赞
wellReceived(menu);
break;
case 6:
isExit = true;
break;
}
num = loop(isExit, num);
} while (num == 0);
}
//判断是否循环
public int loop(boolean isExit, int num) {
int x = num;
if (!isExit) {
System.out.print("输入0返回:");
x = sc.nextInt();
}
return x;
}
//显示菜品信息
public void showMenu(Menu[] menu) {
System.out.println("序号" + "\t" + "菜名" + "\t\t\t" + "单价" + "\t\t" + "点赞数");
for (int j = 0; j < menu.length; j++) {
System.out.println((j + 1) + "\t" + menu[j].getDishNames() + "\t\t" + menu[j].getPrices() + "元" + "\t" + menu[j].getPraiseNums());
}
}
//订餐功能
public void CustomerOrders(Order[] order, Menu[] menu) {
System.out.println("***我要订餐***");
boolean isAdd = false;
for (int i = 0; i < order.length; i++) {
if (order[i] == null) {
isAdd=true;
showMenu(menu);
System.out.print("请输入订餐人姓名:");
String name = sc.next();
System.out.print("请选择您要点的菜品编号:");
int chooseDish = sc.nextInt();
// if (chooseDish+1>3){
// break;
// }
String dishMeg = menu[chooseDish - 1].getDishNames();
System.out.print("请选择您需要的份数:");
int number = sc.nextInt();
System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
int time = sc.nextInt();
while (time < 10 || time > 20) {
System.out.print("您的输入有误,请输入10-20间的整数");
time = sc.nextInt();
}
System.out.print("请输入送餐地址:");
String address = sc.next();
// 默认可以预定,不用写订单状态
System.out.println("订餐成功!");
System.out.println("您定的是:" + menu[chooseDish - 1].getDishNames() + number + "份");
System.out.println("送餐时间:" + time + "点");
double sumPrice = menu[chooseDish - 1].getPrices() * number;// 计算餐费
double sendMoney = (sumPrice >= 50) ? 0 : 5;// 计算送餐费
System.out.println("餐费:" + sumPrice + "元," + "送餐费" + sendMoney + "元," + "总计:"
+ (sumPrice + sendMoney) + "元。");
//将客户输入信息录入订单中
order[i] = new Order();
order[i].setNames(name);
order[i].setDishMegs(dishMeg);
order[i].setTimes(time);
order[i].setAddresse(address);
order[i].setSumPrices(sumPrice);
break;
}
if (!isAdd) {
System.out.println("您的餐带已满");
}
}
}
//查看餐袋
public void show(Order[] order) {
System.out.println("***查看餐袋***");
System.out.println("序号\t订餐人\t餐品名称\t餐品数量\t送餐时间\t送餐地址\t总金额\t订单状态");
for (int i = 0; i < order.length; i++) {
if (order[i] != null) {
String state = (order[i].getStates() == 0) ? "已预订" : "已完成";
System.out.println((i + 1) + "\t" + order[i].getNames() + "\t\t" + order[i].getDishMegs() + "\t" + order[i].getDishMegs() + "份"
+ "\t" + order[i].getTimes() + "\t" + order[i].getAddresse() + "\t\t" + order[i].getSumPrices() + "元" + "\t" + state);
}
}
}
// 签收订单
public void signIn(Order[] order) {
System.out.println("***签收订单***");
System.out.print("请选择要签收的订单序号:");
int sign = sc.nextInt();
if (order[sign - 1] == null && sign < order.length ) {
System.out.println("未找到订单信息");
} else if (order[sign - 1].getStates() == 0 && sign < order.length && sign > 0) {
order[sign - 1].setStates(1);
System.out.println("订单签收成功!");
} else if (order[sign - 1].getStates() == 1 && sign < order.length && sign > 0) {
System.out.println("您选择的订单已完成签收,不能再次签收!");
}
}
// 删除订单
public void delete(Order[] order) {
System.out.println("***删除订单***");
System.out.print("请输入要删除的订单序号:");
int delID = sc.nextInt();
if (order[delID - 1] == null && delID < order.length && delID > 0) {
System.out.println("未找到订单信息");
} else if (order[delID - 1] != null && delID < order.length && delID > 0 && order[delID - 1].getStates() == 1) {
int js = 0;
for (int i = order.length - 1; i >= delID; i--) {
if (order[i] != null) {
if (js == 0) {
js = i;
}
for (int j = delID; j <= js; j++) {
order[i - 1] = order[i];
}
break;
}
// System.out.println(js);
}
order[js] = null;
show(order);
System.out.println("删除订单成功!");
} else if (order[delID - 1] != null && delID < order.length && delID > 0 && order[delID - 1].getStates() == 0) {
System.out.println("您选择的订单未签收,不能删除!");
}
}
//菜品点赞
public void wellReceived(Menu[] menus) {
System.out.println("***我要点赞***");
showMenu(menus);
System.out.print("请选择您要点赞的菜品序号:");
int number = sc.nextInt();
if (number > menus.length || number < 0) {
System.out.println("输入错误");
} else {
menus[number - 1].setPraiseNums(menus[number - 1].getPraiseNums() + 1);
System.out.println("点赞成功");
}
}
public void end() {
System.out.println("谢谢惠顾,欢迎您再次使用!");
sc.close();
}
}
4.测试类
public class OrderingMgr {
public static void main(String[] args) {
Order[] order = new Order[10];
Menu[] menu = new Menu[3];
//功能对象
Method method = new Method();
method.csh(order,menu);
// 实现菜单切换
method.loopKZ(order,menu);
//结束控制
method.end();
}
}