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("谢谢使用,欢迎下次光临");
}
}