JAVA学习记录DAY 13
作者:互联网
今天记录一下综合运用数组、变量、流程控制中的选择结构和循环结构,完成一个吃货联盟的点餐系统(仅有展示效果)。点餐系统的首页是选项,所以大的框架是选择结构,每次选择完成有提示返回首页,所以嵌套在一个循环结构里,由于不知道循环次数以及无论如何都要展示第一次,因此用do...while...结构比较合适。然后每层再根据需要一一拆解就可以了
Scanner input=new Scanner(System.in);
int choose=-1;
String[] menu={"松鼠桂鱼","麻婆豆腐","上汤羊肉","番茄炒蛋"};
int[] like={1,1,1,1};
double[] price={88,18,68,28};
String[][] bills=new String[400][2];
do {//先完成首页框架搭建
System.out.println("welcome to FoodLeague System!");
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("请选择:");
choose=input.nextInt();
switch (choose){
case 1:
System.out.println("【1.我要点餐】");
System.out.print("请输入姓名:");
String name=input.next();,
System.out.println("序号\t\t菜名\t\t价格\t\t好评数");
for (int i = 0; i < menu.length; i++) {
System.out.println(i+1+"\t"+menu[i]+"\t\t"+price[i]+"\t"+like[i]);
}
System.out.print("请输入您想要的菜品序号:");
int num=input.nextInt();
while(num < 1 || num > menu.length) {
System.out.println("输入错误,请重新输入菜品序号:");
num=input.nextInt();
}
System.out.print("请输入您需要的份数:");
int pcs=input.nextInt();
int time=0;
do{
System.out.print("请输入您期望的配送时间(10-20点送餐):");
time=input.nextInt();
if(time<10||time>20){ System.out.println("超出配送时间范围,请重新输入:");}
}while (time<10||time>20);
System.out.print("请输入您的配送地址:");
String address=input.next();
double total=price[num-1]*pcs;
double sendprice=total<50?6:0;//计算是否免配送费
total+=sendprice;
System.out.println("订餐成功!您的订单是:"+menu[num-1]+pcs+"份。总价为"+total+"元,其中配送费为:"+sendprice+"元。将为您于"+time+"点"+"配送至:"+address+"。");
for (int i = 0; i < bills.length; i++) {
//遍历找到插入新订单的位置,这边暂时没有考虑订单溢出的情况
if(bills[i][0]==null){
bills[i][0]=name+"\t "+menu[num-1]+"\t "+pcs+"份\t "+time+"点\t\t"+address+"\t\t "+total+"元\t "+sendprice+"元";//合并成字符串存入订单,并填写订单状态
bills[i][1]="已预定";
break;
}
}
break;
case 2:System.out.println("【2.查看订单】");//查看只是遍历展示
System.out.println("序号\t"+"\t姓名\t"+"\t菜名\t"+"\t数量\t"+"\t送餐时间\t"+
"\t送餐地址\t"+"\t订单总金额\t"+"\t配送费\t"+"\t订单状态");
for (int i = 0; i < bills.length; i++) {
if(bills[i][0]==null){break;}else {//判断是否为空
System.out.println(" "+(i+1)+"\t"+bills[i][0]+"\t\t "+bills[i][1]);}
}
break;
case 3:System.out.println("【3.签收订单】");
System.out.println("序号\t"+"\t姓名\t"+"\t菜名\t"+"\t数量\t"+"\t送餐时间\t"+
"\t送餐地址\t"+"\t订单总金额\t"+"\t配送费\t"+"\t\t订单状态");
int flag=0;//插个旗
if(bills[0][0]==null){//判断当前是否有订单
System.out.println("当前未有订单,请返回首页!");break;}
for (int i = 0; i < bills.length; i++) {
if(bills[i][0]==null){break;}if(bills[i][1]=="已预定"){flag=1;
System.out.println(i+1+" \t"+bills[i][0]+"\t\t\t "+bills[i][1]);}
}
if(flag==0){//已完成的订单不可以重复签收,判断是否有可签收的订单
System.out.println("当前未有已完成订单,请返回首页!");break;}
int signfornum;
do {//有可签收订单时的可能性
System.out.print("请选择要签收的订单:");
signfornum = input.nextInt();
if (signfornum < 1 || signfornum > bills.length) {
System.out.println("输入错误,请输入0返回首页!");
} else if (bills[signfornum-1][0] == null) {
System.out.println("该订单不存在,请重新输入:");
}else if (bills[signfornum-1][1].equals("已完成")) {
System.out.println("该订单已签收,请勿重复签收");
break; } else {
bills[signfornum-1][1] = "已完成";
System.out.println("签收成功!");break;
}
}while (signfornum >=1 && signfornum <= bills.length);
break;
case 4:System.out.println("【4.删除订单】");
System.out.println("序号\t"+"\t姓名\t"+"\t菜名\t"+"\t数量\t"+"\t送餐时间\t"+
"\t送餐地址\t"+"\t订单总金额\t"+"\t配送费\t"+"\t\t订单状态");
if(bills[0][0]==null){//判断当前是否有订单
System.out.println("当前未有订单,请返回首页!");break;}
for (int i = 0; i < bills.length; i++) {
if(bills[i][0]==null){break;}//遍历到订单为空的时候跳出循环
else{
System.out.println(i+1+" \t"+bills[i][0]+"\t\t\t"+bills[i][1]);}
}
int delnum,doublecheck;
System.out.print("请选择要删除的订单号:");
delnum = input.nextInt();
if (delnum < 1 || delnum > bills.length) {
System.out.println("输入错误,请输入0返回首页!");
} else if (bills[delnum-1][0] == null) {
System.out.println("该订单不存在,请输入0返回首页!");
}else if (!bills[delnum-1][1].equals("已完成")) {
System.out.println("该订单未签收,不能删除!");
} else {//再次确认
System.out.print("即将删除订单" + delnum + ",请再次输入订单号确认删除——");
doublecheck = input.nextInt();
if (doublecheck != delnum) {
break;
} else {//删除后把下方订单依次移动到上面
for (int i = delnum - 1; i < bills.length; i++) {
bills[i][0] = bills[i + 1][0];
bills[i][1] = bills[i + 1][1];
if (bills[i][0] == null) {
System.out.println("删除成功!");
break;
}
}
}
}
break;
case 5: System.out.println("【5.我要点赞】");
System.out.println("序号 \t菜名\t\t价格\t\t好评数");
for (int i = 0; i < menu.length; i++) {
System.out.println((i+1)+" \t"+menu[i]+"\t\t"+price[i]+"\t"+like[i]);
}
System.out.print("请输入您想要点赞的菜品序号:");
int likenum=input.nextInt();
while(likenum < 1 || likenum > menu.length){
System.out.println("输入错误,请重新输入菜品序号:");
likenum=input.nextInt();}
if(likenum >= 1 && likenum < menu.length){like[likenum-1]++;
System.out.println("点赞成功!菜品"+menu[likenum-1]+"已有"+like[likenum-1]+"个好评!");}
break;
case 6:System.out.println("【6.退出系统】");
break;
default:System.out.println("输入错误,请重新选择!");
break;
}
if(choose<1||choose>5){continue;}
System.out.println("如需返回首页,请输入0:");
int back=input.nextInt();
if(back!=0){
System.out.println("输入错误,退出系统!");break;}
}while (choose!=6);
System.out.println("感谢您的使用,欢迎下次再来!");
标签:13,JAVA,int,System,println,input,bills,DAY,out 来源: https://blog.csdn.net/Alison_zhou/article/details/119451291