package cn.bdqn.demo03;
import java.util.Scanner;
public class 吃货联盟01 {
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]; //总金额
//初始化两条订单信息
names[0] ="赵臣豪";
dishMegs[0]="澳洲龙虾";
times[0]=11;
addresses[0]="公投创智";
states[0]=1; //已完成
sumPrices[0]=45000.0;
names[1] ="梁晓龙";
dishMegs[1]="烤全羊";
times[1]=11;
addresses[1]="公投创智";
states[1]=0;
sumPrices[1]=1888.0;
String[] dishnames={"澳洲龙虾","烤全羊","地锅鸡"};
double[] prices={45.0,1888.0,70.0};
int[] praiseNums=new int[3];
/*循环用do-while循环
* 循环操作:
* 显示主菜单
* 提示用户输入功能编号,并执行相应功能
* 提示输入0返回
* 循环条件:
* 输入0
*/
Scanner sc=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.println("请选择");
int choose=sc.nextInt();
boolean isAdd=false; //true记录找到一个空的位置,可译插入;false表示没有找到
switch(choose){
case 1: //1我要订餐
System.out.println("1.我要订餐");
//1查找要插入的位置
for (int i = 0; i < names.length; i++) {
//如果找到空的位置,记录下来
if(names[i]==null){
isAdd= true;
//执行插入操作
//a.显示所有可提供的餐品信息
System.out.println("序号\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);
}
//a输入所选餐品编号和份数
System.out.println("请选择所订的餐品序号:");
int chooseDish=sc.nextInt();
System.out.println("请选择所订份数");
int number=sc.nextInt();
String dishMeg= dishnames[chooseDish-1]+" "+number+"份 ";
//b输入订餐人姓名
System.out.println("请输入订餐人姓名");
String name=sc.next();
//c输入送餐时间
System.out.println("请输入送餐时间 10-23点整点送餐");
int time=sc.nextInt();
//如果输入错了,请重新输入
if(time<10||time>23){
System.out.println("对不起,您输入有误。请输入10-23点送餐时间");
time=sc.nextInt();
}
//d:输入送餐地址
System.out.println("请输入送餐地址");
String address=sc.next();
//e:计算餐费
double sumPrice=prices[chooseDish-1]*number;
//送餐费:但达到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状态");
//遍历数组
for (int j = 0; j < names.length; j++) {
if(names[j]!=null){
String time=times[j]+"点";
String sumPrice=sumPrices[j]+"元";
String state=states[j]==0?"已预定":"已完成";
System.out.println((j+1)+"\t"+names[j]+"\t"+dishMegs[j]+"\t\t"+time+"\t"+addresses[j]+"\t"+sumPrice+"\t"+state);
}
}
break;
case 3: //3签收订单
System.out.println("------签收订单------");
//用户输入一个签收的订单序号
System.out.print("请输入要签收的订单序号");
int sigOrderId=sc.nextInt();
boolean isFind=false; //记录是否找到了这条订单 true:已找到 false:没有找到 查找这条订单(循环遍历)
for (int j = 0; j < names.length; j++) {
//找到,状态是已完成(已经签收完毕),提示不能再次签收
//找到,状态是已预定(没有完成签收),可以签收
if(names[j]!=null && states[j]==1 && sigOrderId==j+1){
System.out.println("对不起,您选择的订单已经完成签收,不能再次签收");
isFind=true;
break;
}else if(names[j]!=null && states[j]==0 && sigOrderId==j+1){
states[j]=1;
System.out.println("订单签收成功");
isFind=true;
break;
}
}
//条件判断:如果没有找到这条顶单,才去提示没有找到
//3没找到,提示信息没有找到
if(!isFind){
System.out.println("对不起,此订单不存在");
}
break;
case 4: //4删除订单
//1输入要删除的订单序号(从1开始)
System.out.println("------删除订单------");
System.out.println("请输入你要删除的订单序号:");
int delId=sc.nextInt();
int delIndex=-1; //删除订单的下标
boolean isDelFind=false;
//2.循环查找这条订单
for (int i = 0; i < names.length; i++) {
//找到此订单,已签收,执行删除操作(先记录要删除的订单序号)
//找到此订单,且未签收:提示信息
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;
}
}
// 未找到此订单,提示信息
if(!isDelFind){
System.out.println("对不起,此条订单不存在");
}
//执行删除操作
if(delIndex!=-1){
//删除操作(循环移位)
//从要删除的元素后面一个开始,到数组最后一个元素一次向前移动一位
for (int i = delIndex+1; i <= names.length-1; i++) {
names[i-1]=names[i];
dishMegs[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[names.length-1]=null;
states[names.length-1]=0;
System.out.println("删除订单成功");
}
break;
case 5: //5我要点餐
//1.我要点赞
System.out.println("------我要点赞------");
//2.显示供点赞的餐品列表
System.out.println("序号\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);
}
//3.输入要点赞的餐品序号
System.out.println("请输入要点赞的餐品序号");
int dishId=sc.nextInt();
//4.该序号的餐品点赞数加1
praiseNums[dishId-1]++;
//5.显示
System.out.println("点赞成功");
System.out.println(dishnames[dishId-1]+" " +praiseNums[dishId-1]+"赞");
break;
case 6: //退出系统
break;
default:
break;
}
if(choose>=6){
System.out.println("谢谢使用,欢迎下次光临");
}
System.out.println("输入0返回:");
num=sc.nextInt();
}while(num==0);
}
}