设计思路:
1.使用while语句使选择功能重复使用。
2.使用switch语句实现输入数字执行特定功能,在退出系统功能那改变bool值实现退出。
3.将点餐的内容录入系统,使用的是在点餐时对餐袋那部分数组进行赋值。
4.删除内容是将要删除后面的数组内容往前移,最后一组数组内容置空或置0。
5.签收订单,找到订单并将states[i]为1
import java.util.Scanner;
public class CheHuoLianMeng {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//菜单
String[] dishName = {"红烧带鱼", "鱼香肉丝", "时令蔬菜"};
double[] dishPrices = {38.0, 26.0, 10.0};
int[] dianZan ={0,0,0};
//餐袋
String[] names = new String[4];//订餐人姓名
String[] dishMsg = new String[4];//餐品信息(菜品名称+订单分数)
String[] times = new String[4];//配送时间
String[] addresses = new String[4];//配送地址
double[] sumPrices = new double[4];//总金额
int[] states = new int[4];//0:已经预定, 1:已经完成
System.out.println("欢迎使用“吃货联盟订餐系统");
boolean bool = true;
while(bool){
System.out.println("***********************************");
System.out.println("1.我要订餐\n"
+ "2.查看餐袋\n"
+ "3.签收订单\n"
+ "4.删除订单\n"
+ "5.我要点赞\n"
+ "6.退出系统");
System.out.println("***********************************");
System.out.print("请选择:");
int choose = scanner.nextInt();
switch(choose){
case 1:
System.out.println("************我要订餐************");
System.out.print("请输入订餐人姓名:");
String orderName = scanner.next();
System.out.println("序号\t菜名\t\t单价\t\t点赞数");
for (int i = 0; i < dishName.length; i++) {
System.out.println((i+1)+"\t"+dishName[i]+"\t"+dishPrices[i]+"\t"+dianZan[i]);
}
System.out.print("请选择你要点的菜品编号:");
int orderNum = scanner.nextInt();
while (orderNum < 1 || orderNum > dishName.length) {
System.out.println("本店没有这个菜品请重新输入:");
orderNum = scanner.nextInt();
}
System.out.print("请选择你需要的菜品份数:");
int fen = scanner.nextInt();
System.out.print("请输入送餐地址:");
String orderAddress = scanner.next();
System.out.print("请选择送餐时间(送餐时间是10至20点间整点送餐):");
int orderTime = scanner.nextInt();
while (orderTime < 10 || orderTime > 20) {
System.out.println("该时间段不在本店营业时间,请重新输入:(送餐时间是10至20点间整点送餐)");
orderTime = scanner.nextInt();
}
System.out.println("订餐成功!");
System.out.print("你订的是:");
System.out.print(dishName[orderNum-1]+fen+"份,");
System.out.print("送餐时间:");
System.out.print(orderAddress + "点,");
double orderSum = fen*dishPrices[orderNum-1];
double peiSong = orderSum>50?0:5;
System.out.println(",餐费:"+orderSum+"元,送餐费:"+peiSong+"元,总计:"+(orderSum+peiSong)+"元");
for (int i = 0; i < names.length; i++) {
if(names[i] == null){
names[i] = orderName;
dishMsg[i] = dishName[orderNum-1]+fen+"份";
times[i] = orderTime+"点";
addresses[i] = orderAddress;
sumPrices[i] = orderSum+peiSong;
break;
}
}
break;
case 2:
System.out.println("************查看餐袋************");
System.out.println("序号\t\t订餐人\t订餐菜品\t\t配送时间\t\t配送地址\t\t订单金额\t\t订餐状态");
for (int i = 0; i < names.length; i++) {
if(names[i] != null){
System.out.println((i+1)+"\t\t"+names[i]+"\t\t"+dishMsg[i]+"\t\t"+times[i]+"\t\t"
+addresses[i]+"\t\t"+sumPrices[i]+"元\t\t"+(states[i] == 0 ?"已预定":"已完成"));
}
}
break;
case 3:
System.out.println("************签收订单************");
for (int i = 0; i < names.length; i++) {
if(names[i] != null){
System.out.println((i+1)+"\t\t"+names[i]+"\t\t"+dishMsg[i]+"\t\t"+times[i]+"\t\t"
+addresses[i]+"\t\t"+sumPrices[i]+"元\t\t"+(states[i] == 0 ?"已预定":"已完成"));
}
}
System.out.print("请输入订单编号:");
int orderNumber = scanner.nextInt();
if(states[orderNumber-1] == 1){
System.out.println("订单已签收,不能再次签收!");
}
states[orderNumber-1] = 1;
System.out.println("订单签收成功!");
break;
case 4:
System.out.println("************删除订单************");
for (int i = 0; i < names.length; i++) {
if(names[i] != null){
System.out.println((i+1)+"\t\t"+names[i]+"\t\t"+dishMsg[i]+"\t\t"+times[i]+"\t\t"
+addresses[i]+"\t\t"+sumPrices[i]+"元\t\t"+(states[i] == 0 ?"已预定":"已完成"));
}
}
System.out.println("请输入订单编号:");
int deleteNumber = scanner.nextInt();
for (int i = deleteNumber-1; i < names.length-1; i++) {
names[i] = names[i+1];
dishMsg[i] = dishMsg[i+1];
times[i] = times[i+1];
addresses[i] = addresses[i+1];
sumPrices[i] = sumPrices[i+1];
states[i] = states[i+1];
}
names[names.length-1] = null;
dishMsg[names.length-1] = null;
times[names.length-1] = null;
addresses[names.length-1] = null;
sumPrices[names.length-1] = 0;
states[names.length-1] = 0;
System.out.println("你选择的订单删除成功!");
break;
case 5:
System.out.println("************我要点赞************");
System.out.println("序号\t菜名\t\t单价\t\t点赞数");
for (int i = 0; i < dishName.length; i++) {
System.out.println((i+1)+"\t"+dishName[i]+"\t"+dishPrices[i]+"\t"+dianZan[i]);
}
System.out.println("请输入你要点赞的菜品序号:");
int dianzanNumber = scanner.nextInt();
while(dianzanNumber<1 || dianzanNumber> names.length){
System.out.println("菜品不存在!请重新输入点赞的菜品序号:");
dianzanNumber = scanner.nextInt();
}
dianZan[dianzanNumber-1]++;//点赞
break;
case 6:
System.out.println("************退出系统************");
bool = false;
}
}
}
}
运行结果: