package Task; import java.util.Scanner; public class DingCan01 { public static void main(String[] args){ //数据主体,一组订单信息 String[] names=new String[4];//订餐人 String[] dishMegs=new String[4];//所订餐信息 int[] times=new int[4];//送餐时间 String[] addresses=new String[4];//送餐地址 int[] states=new int[4];//订单状态 0:已预定 1:已完成 double[] sumPrices=new double[4];//总金额 //初始化2条订单信息 names[0]="张三"; dishMegs[0]="鱼香肉丝 1份"; times[0]=12; addresses[0]="观日路48号"; states[0]=0; sumPrices[0]=24.0; names[1]="李四"; dishMegs[1]="红烧带鱼 2份"; times[1]=18; addresses[1]="长乐路06号"; states[1]=1; sumPrices[1]=76.0; //数据主体,一组餐品信息 String[] dishNames={"红烧带鱼","鱼香肉丝","时令蔬菜"}; double[] prices={38.0,18.0,10.0};//餐品单价 int[] praiseNums=new int[3];//点赞数 Scanner input=new Scanner(System.in); int num=-1; 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("请选择:"); int choose=input.nextInt();//记录用户选择的编号 boolean isAdd=false;//true:记录找到一个为空的位置,可以插入 false:没有找到 //根据用户输入的功能编号,执行相应的功能 while(choose>6||choose<1){ System.out.print("输入错误,请输入有效编号:"); choose = input.nextInt(); } boolean isExit = false; // 标志用户是否退出系统: true:退出系统 switch(choose){ case 1: //1、我要订餐 System.out.println("********我要订餐********"); //1.查找要插入的位置,记录下来 for(int i=0;i<names.length;i++){ if(names[i]==null){ isAdd=true;//记录已找到一个为空的位置 //执行插入 //a.显示所有可供选择的餐品信息 System.out.println("序号\t餐品名\t单价\t\t点赞数"); for(int j=0;j<dishNames.length;j++){ String price=prices[j]+"元"; String praise=praiseNums[j]+"赞"; System.out.println((j+1)+"\t"+dishNames[j]+"\t"+price+"\t"+praise); } //输入所选餐品编号以及分数 System.out.print("请选择所订餐品序号:"); int chooseDish=input.nextInt(); while(chooseDish>dishNames.length||chooseDish<1) { System.out.print("对不起,您输入的序号没有信息,请输重新输入:"); chooseDish = input.nextInt(); } System.out.print("请选择所定份数"); int number=input.nextInt(); String dishMeg=dishNames[chooseDish-1]+" "+number+"份"; //b.输入订餐人姓名 System.out.print("请输入订餐人姓名:"); String name=input.next(); //c.输入送餐时间 System.out.print("请输入送餐时间(10~20整点送餐):"); int time=input.nextInt(); //如果输错了,重复输入 while(time<10||time>20){ System.out.print("对不起,您输入有误,请输入人10~20之间的整数:" ); time=input.nextInt(); } //d.输入送餐地址 System.out.print("请输入送餐地址"); String address=input.next(); //e.计算餐费 double sumPrice=prices[chooseDish-1]*number; //d.送餐费,当餐费达到50元时,免6元送餐费 double deliCharge=sumPrice>=50?0.0:6.0; //显示订单信息 System.out.println("订餐成功"); System.out.println("您定的是:"+dishMeg); System.out.println("订餐人:"+name); System.out.println("送餐时间:"+time+"点"); System.out.println("送餐地址:"+address); System.out.println("餐费:"+sumPrice+",送餐费:"+deliCharge+"元"); System.out.println("总金额“:"+(sumPrice+deliCharge)+"元"); //保存数据 names[i]=name; dishMegs[i]=dishMeg; times[i]=time; addresses[i]=address; sumPrices[i]=sumPrice+deliCharge; break; } } //如果没有找到为空的位置,则提示信息 if(!isAdd){ System.out.println("对不起你的订单已满!"); } break; case 2: //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 time =times[i]+"点"; String sumPrice=sumPrices[i]+"元"; String state=states[i]==0?"已预定":"已完成"; System.out.println((i+1)+"\t"+names[i]+"\t\t"+dishMegs[i]+"\t"+time+"\t\t"+addresses[i]+"\t"+sumPrice+"\t"+state); } } break; case 3: //3、删除订单 //1.输入要删除的订单序号(从一开始) System.out.print("********删除订单********"); System.out.println("请输入要删除的订单序号"); int delId=input.nextInt(); int delIndex=-1;//删除订单的下标 boolean isDelFind = false;//记录是否找到此条订单 true:找到 false:没找到 //2.循环查找这条订单 for(int i=0;i<names.length;i++) { //3.找到此订单,已签收:执行删除操作(先记录要删除的订单号) //4.找到此订单,且未签收:提示信息 if(names[i]!=null && states[i]==1 && delId==i+1){ delIndex = i; isDelFind = true; break; }else if(names[i]!=null && states[i]==0 && delId==i+1){ System.out.println("您选择的订单未签收,不能删除!"); isDelFind = true; break; } } //5.未找到此订单,提示信息 if(!isDelFind){ System.out.println("对不起,此条订单不存在"); } //执行删除操作 if(delIndex!=-1){ //删除操作(循环移位) //从要删除的元素后面一个开始,到数组最后一个元素依次向前移动一位 for(int i = delIndex+1;i<names.length-1;i++){ names[i-1]=dishMegs[i]; times[i-1]=times[i]; addresses[i-1]=addresses[i]; states[i-1]=states[i]; } //清空最后一位 names[names.length-1]=null; dishMegs[names.length-1]=null; times[names.length-1]=0; addresses[addresses.length-1]=null; states[states.length-1]=0; System.out.println("订单删除成功"); } break; case 4: //4、签收订单 System.out.print("********请输入要签收的订单序号:"); int signOrderId=input.nextInt(); boolean isFind=false; for(int i=0;i<names.length;i++){ if(names[i]!=null && states[i]==1 && signOrderId==i+1) { System.out.println("对不起,您选择的订单已经完成签收,不能再次签收!"); isFind=true; break; }else if(names[i]!=null && states[i]==0 && signOrderId==i+1){ states[i]=1; System.out.println("订单签收成功!"); isFind=true; break; } } if(!isFind){ System.out.println("对不起,此订单不存在!"); } break; case 5: //5、我要点赞 System.out.println("*******我要点赞*******"); //1.显示供点赞的餐品列表 System.out.println("序号\t餐品名\t单价\t\t点赞数"); for(int j=0;j<dishNames.length;j++){ String price=prices[j]+"元"; String praise=praiseNums[j]+"赞"; System.out.println((j+1)+"\t"+dishNames[j]+"\t"+price+"\t"+praise); } //2.输入要点赞的餐品序号 System.out.print("请输入要点赞的餐品序号"); int dishId=input.nextInt(); //3.该序号的餐品点赞数加1 praiseNums[dishId-1]++; //4.显示 System.out.println("点赞成功"); System.out.println(dishNames[dishId-1]+" "+praiseNums[dishId-1]+"赞"); break; case 6: //6、退出系统 isExit=true; break; } if (!isExit) { System.out.print("输入0返回:"); num = input.nextInt(); while (num != 0) { System.out.print("输入错误,输入0返回:"); num = input.nextInt(); } }else{ break; } }while(num==0); System.out.println("谢谢使用,欢迎下次光临"); } }