java点餐系统总结
public static void main(String[] args) {
/**
* 存储六类订单信息
*/
String[] names=new String[30];//保存订餐人姓名
String[] dishMegs=new String[30];//保存所选信息,包括菜品以及分数
int[] times=new int[30];//保存送餐时间
String[] addresses=new String[30];//保存送餐地址
int[] states=new int[30];//保存订单状态:0表示已经预定,1表示已经完成
double [] sumPrices=new double[30];//保存订单总金额
/**
* 存储三种菜品名称
*/
String[] disNames={"红烧带鱼","鱼香肉丝","小炒肉","时令蔬菜沙拉"};
double[] prices=new double[]{38.0,20.0,35.0,10.0};//菜品数
int[] praiseNums=new int[4];//点赞数
/**
* 初始化订单
*/
//第一条订单
names[0]="张晴";
dishMegs[0]="红烧带鱼2份";
times[0]=12;
addresses[0]="天成路207号";
sumPrices[0]=76.0;
states[0]=1;
//第二条订单
names[1]="张晴";
dishMegs[1]="鱼香肉丝2份";
times[1]=18;
addresses[1]="天成路207号";
sumPrices[1]=45.0;
states[1]=0;
/**
* 实现菜单切换
*/
System.out.println("欢迎使用'吃货联盟'订餐系统");
Scanner input=new Scanner(System.in);
int num=-1;//声明用户输入参数
boolean isExit=false;//标志用户是否退出系统,true为退出系统
do {
System.out.println("*******************************\n"
+"1.我要订餐\n"
+"2.查看餐带\n"
+"3.签收订单\n"
+"4.删除订单\n"
+"5.我要点赞\n"
+"6.退出系统\n"
+"*******************************\n");
System.out.println("请选择相应功能的功能编号:");
int choose=input.nextInt();
switch (choose) {
case 1:
//我要订餐
System.out.println("*****我要订餐*****");
boolean isAdd=false;
//循环订单中的名字信息,是否有空位
for(int j=0;j<names.length;j++){
if(names[j]==null){//找到一个空位
isAdd=true;
System.out.println("请输入订餐人姓名:");
String name=input.next();
System.out.println("序号\t"+"菜名\t"+"单价\t"+"点赞数");
//循环输出菜品信息
for(int i=0;i<disNames.length;i++){
String price=prices[i]+"元";
String priaiseNum=(praiseNums[i])>0 ? praiseNums[i]+"赞" : "0";
System.out.println((i+1)+"\t"+disNames[i]+"\t"+price+"\t"+priaiseNum);
}
//用户点菜
System.out.println("请选择您要的菜品编号:");
int chooseDish=input.nextInt();
System.out.println("请输入您的份数:");
int number=input.nextInt();
String dishMeg=disNames[chooseDish-1]+" "+number+"份";
double sumPrice=prices[chooseDish-1]*number;
//餐费满50,免5元配送费
double deliCharge=(sumPrice>=50)?0:5;
System.out.println("请输入送餐时间(送餐时间是10点值20点之间的整点时间):");
int time=input.nextInt();
while(time<10||time>20){
System.out.println("您输入的时间有误,请输入10-20之间的整数!");
time=input.nextInt();
}
System.out.println("请输入送餐地址:");
String address=input.next();
//无需添加状态,默认是0,即已经预定状态
System.out.println("订餐成功!\n"
+"您订的是:"+dishMeg+"\n"
+"送餐时间是:"+time+"点"+"\n"
+"送餐地址是:"+address+"\n"
+"餐费:"+sumPrice+"元,送餐费:"+deliCharge+"元,总计:"+(sumPrice+deliCharge)+"元。");
//添加数据到订单数组中
names[j]=name;
dishMegs[j]=dishMeg;
times[j]=time;
addresses[j]=address;
sumPrices[j]=sumPrice+deliCharge;
break;
}
}
if(!isAdd){
System.out.println("对不起,您的订单数已满");
}
break;
case 2:
//查看餐带
System.out.println("*****查看餐带*****");
System.out.println("序号\t订餐人\t餐品信息\t\t送餐日期\t送餐地址\t\t总金额\t订单状态");
for(int i=0;i<names.length;i++){
if(names[i]!=null){
//重新定义需要判断或加上字符串的变量
String state=(states[i]==0)?"已预订":"已完成";//三元运算符判断订单状态
String date=times[i]+"日";//送餐日期后加上日
String sumPrice=sumPrices[i]+"元";//金额后加上元
System.out.println((i+1)+"\t"+names[i]+"\t"+dishMegs[i]+"\t"+date+"\t"+addresses[i]+"\t"+sumPrice+"\t"+state);
}
}
break;
case 3:
//签收订单
System.out.println("*****签收订单*****");
boolean isSignFind=true;
System.out.println("请选择要签收的订单序号:");
int signOrderId=input.nextInt();
for(int i=0;i<names.length;i++){
if(names[i]!=null&&states[i]==0&signOrderId==i+1){
states[i]=1;
System.out.println("您好,您的订单签收完成");
isSignFind=false;//赋反值,标记为订单已经签收,防止再次进入订单不存在
}else if(names[i]!=null&&states[i]==1&&signOrderId==i+1){
System.out.println("您选择的订单已经完成,不能再次签收");
isSignFind=false;//赋反值,标记为订单已经签收,防止再次进入订单不存在
}
}
if(isSignFind){
System.out.println("您选择的订单不存在");
}
break;
case 4:
//删除订单
System.out.println("*****删除订单*****");
System.out.println("请输入要删除的订单序号");
int deId=input.nextInt();
boolean isDelFind=false;
for(int i=0;i<names.length;i++){
//状态值为1时,序号值为输入的数字-1:可以删除
//状态值为0时,序号值为输入的数字-1:不可以删除
if(names[i]!=null&&states[i]==1&&deId==i+1){
isDelFind=true;//标记已找到此订单
//执行删除操作,删除的位置后的元素依次前移
for(int j=deId-1;j<names.length-1;j++){
names[j]=names[j+1];
dishMegs[j]=names[j+1];
times[j]=times[j+1];
addresses[j]=addresses[j+1];
states[j]=states[j+1];
sumPrices[j]=sumPrices[j+1];
}
//清空最后一位
int endIndex=names.length-1;
names[endIndex]=null;
dishMegs[endIndex]=null;
times[endIndex]=0;
addresses[endIndex]=null;
states[endIndex]=0;
sumPrices[endIndex]=0;
System.out.println("删除订单成功!");
break;
}else if(names[i]!=null&&states[i]==0&&deId==i+1){
System.out.println("您选择的订单未签收,不能删除");
isDelFind=true;
break;
}
}
if(!isDelFind){
System.out.println("您所选择的删除订单不存在");
}
break;
case 5:
//我要点赞
System.out.println("*****我要点赞*****");
System.out.println("序号\t"+"菜名\t"+"单价\t"+"点赞数");
//循环输出菜品信息
for(int i=0;i<disNames.length;i++){
String price=prices[i]+"元";
String priaiseNum=(praiseNums[i])>0 ? praiseNums[i]+"赞" : "0";
System.out.println((i+1)+"\t"+disNames[i]+"\t"+price+"\t"+priaiseNum);
}
System.out.println("请选择您要点赞的菜品数:");
int priaiseNum=input.nextInt();
praiseNums[priaiseNum-1]++;
System.out.println("点赞成功!");
break;
case 6:
//退出系统
isExit=true;
break;
default:
//退出系统
isExit=true;
break;
}
if(!isExit){
System.out.println("输入0可返回:");
num=input.nextInt();
}else{
break;
}
} while (num==0);
System.out.println("谢谢您的光临");
}