700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java数组及循环专题练习(使用数组和循环结构实现一个简易的功能完善的订餐系统)

java数组及循环专题练习(使用数组和循环结构实现一个简易的功能完善的订餐系统)

时间:2021-09-29 11:04:20

相关推荐

java数组及循环专题练习(使用数组和循环结构实现一个简易的功能完善的订餐系统)

【需求说明】

1.使用数组和循环结构实现一个订餐系统,需要具备以下功能:

菜单切换功能:实现系统子菜单和系统主菜单之间的切换。查看餐袋功能:查看已经已点餐品信息,包括已完成的订单。我要订餐功能:显示餐品信息,接收客户选择的餐品,包括份数,送餐时间,送餐地址等信息。签收订单功能:客户可以签收订单。删除订单功能:删除已经签收的订单。我要点赞功能:显示菜品信息,接受客户点赞。

2.系统响应迅速,交互良好,有基本的容错提示。

3.系统最多接收4条订单。

4.每条订单不满50元加收5元送餐费。

5.客户选择的菜品序号不存在或者超出菜品种类数有相应的提示。

6.客户可签收的订单必须存在而且是未签收状态。

7.客户可删除的订单必须是存在的且已签收完成的。

【界面设计】

1.主菜单

2.我要订餐功能

3.查看餐袋功能

4.签收订单功能:

5.删除订单功能

6.我要点赞功能:

再次进入我要点餐功能看见点赞数已经加一。

6.退出系统:

【编码】

package day03;import java.util.Scanner;public class Task01 {public static void main(String[] args) {Scanner input =new Scanner(System.in);//创建订单相关数组String[] names = new String[4];String[] dishMegs=new String[4];String[] times=new String[4];String[] addresses = new String[4];int[] states= new int[4];double[] sumPrices = new double[4];//初始化菜品信息String[] dishNames= {"红烧带鱼","鱼香肉丝","时令鲜蔬"};double[] prices= {38.0,20.0,10.0};int[] praiseName = new int[3];//初始化订单names[0]="张晴";dishMegs[0]="红烧带鱼2份";times[0]="11:00";addresses[0]="天成路207号";sumPrices[0]=76.0;states[0]=1;names[1]="张晴";dishMegs[1]="鱼香肉丝2份";times[1]="12:00";addresses[1]="天成路207号";sumPrices[1]=45.0;states[1]=0;//循环标志boolean istrue=true;//返回标志int backNum;System.out.println("欢迎使用吃货联盟订餐系统");do {System.out.println("***************************");System.out.println("1.我要订餐\n2.查看餐袋\n3.签收订单\n4.删除订单\n5.我要点赞\n6.退出系统");int key = input.nextInt();//功能选择switch(key) {case 1:System.out.println("***我要订餐***");//存储订餐人System.out.println("请输入订餐人姓名:");String clientName=input.next();for(int a=0;a<names.length;a++) {if(names[a]==null) {names[a]=clientName;break;}}//显示菜单System.out.println("序号"+"\t菜名\t"+"\t单价"+"\t点赞数");for(int j=0;j<dishNames.length;j++) {System.out.println((j+1)+"\t"+dishNames[j]+"\t"+prices[j]+"\t"+praiseName[j]);}System.out.print("请选择您要点的菜品编号:");int dishCode=input.nextInt();//实际数组下标int disNum=dishCode-1;//将菜品名和菜品份数合并成一条餐品信息存储System.out.print("请选择您需要的份数:");int orderNum=input.nextInt();for(int a=0;a<names.length;a++) {if(dishMegs[a]==null) {dishMegs[a]=dishNames[dishCode-1]+orderNum+"份";break;}}//存储订餐时间System.out.println("请输入送餐时间:");String sendTime=input.next();for(int b=0;b<times.length;b++) {if(times[b]==null) {times[b]=sendTime;break;}}//存储订餐地址System.out.print("请输入送餐地址:");String sendAddress=input.next();for(int c=0;c<times.length;c++) {if(addresses[c]==null) {addresses[c]=sendAddress;break;}}//显示订餐信息System.out.println("订餐成功!");System.out.println("您订的是:"+dishNames[disNum]+orderNum+"份");System.out.println("送餐时间:"+sendTime);//送餐费double sendFee=0;//净餐费总额double dishFee=prices[disNum]*orderNum;//计算送餐费sendFee=(dishFee<50?5:0);System.out.println("餐费:"+dishFee+"元,送餐费:"+sendFee+"元,共计:"+(dishFee+sendFee)+"元");//存储总金额for(int e=0;e<sumPrices.length;e++) {if(sumPrices[e]==0) {sumPrices[e]=dishFee+sendFee;break;}}//存储订单状态for(int f=0;f<states.length;f++) {if(states[f]==0) {states[f]=0;break;}}//返回主菜单控制逻辑System.out.print("输入0返回:");backNum=input.nextInt();while(backNum!=0) {System.out.print("您输入的指令有误,请重新输入0返回主菜单:");backNum=input.nextInt();}break;case 2:System.out.println("***查看餐袋***");System.out.println("序号\t"+"订餐人\t"+"\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?"已预订":"已完成";System.out.println((i+1)+"\t"+names[i]+"\t\t"+dishMegs[i]+"\t\t"+times[i]+"\t\t"+addresses[i]+"\t\t"+sumPrices[i]+"\t\t"+state);}}System.out.print("输入0返回:");backNum=input.nextInt();while(backNum!=0) {System.out.print("您输入的指令有误,请重新输入0返回主菜单:");backNum=input.nextInt();}break;case 3:System.out.println("***签收订单***");System.out.println("请选择要签收的订单序号:");int orderNo = input.nextInt();//实际数组下标int realOrderNo=orderNo-1;if(orderNo>names.length||realOrderNo<0) {System.out.println("签收失败,订单不存在!");}else if(names[realOrderNo]==null){System.out.println("签收失败!未找到订单序号!");}else if(states[realOrderNo]==0) {states[realOrderNo]=1;System.out.println("订单签收成功!");}else {System.out.println("签收失败,订单已签收,无需重复签收!");}System.out.print("输入0返回:");backNum=input.nextInt();while(backNum!=0) {System.out.print("您输入的指令有误,请重新输入0返回主菜单:");backNum=input.nextInt();}break;case 4:System.out.println("***删除订单***");System.out.println("请选择要删除的订单序号:");int delNo = input.nextInt();//实际数组下标int realdelNo=delNo-1;if(delNo>names.length||realdelNo<0) {System.out.println("删除失败,订单不存在!");}else if(names[realdelNo]==null){System.out.println("删除失败!未找到订单序号!");}else if(states[realdelNo]==0) {System.out.println("您选择的订单未签收,不能删除!");}else {for(int h=realdelNo;h<names.length;h++) {if(names[h]==null) break;if(names[h+1]==null) {names[h]=null;dishMegs[h]=null;times[h]=null;addresses[h]=null;sumPrices[h]=0;states[h]=0;break;}names[h]=names[h+1];dishMegs[h]=dishMegs[h+1];times[h]=times[h+1];addresses[h]=addresses[h+1];sumPrices[h]=sumPrices[h+1];states[h]=states[h+1];}System.out.println("删除订单成功!");}System.out.print("输入0返回:");backNum=input.nextInt();while(backNum!=0) {System.out.print("您输入的指令有误,请重新输入0返回主菜单:");backNum=input.nextInt();}break;case 5:System.out.println("***我要点赞***");//显示菜单System.out.println("序号"+"\t菜名\t"+"\t单价"+"\t点赞数");for(int j=0;j<dishNames.length;j++) {System.out.println((j+1)+"\t"+dishNames[j]+"\t"+prices[j]+"\t"+praiseName[j]);}System.out.print("请选择您要点赞的菜品序号:");int praiseNum=input.nextInt();int realpraiseNum=praiseNum-1;if(praiseNum>dishNames.length||realpraiseNum<0) {System.out.println("点赞失败,菜品不存在!");}else if(dishNames[realpraiseNum]==null){System.out.println("点赞失败!未找到菜品序号!");}else {praiseName[realpraiseNum]+=1;System.out.println("点赞成功!");}System.out.print("输入0返回:");backNum=input.nextInt();while(backNum!=0) {System.out.print("您输入的指令有误,请重新输入0返回主菜单:");backNum=input.nextInt();}break;case 6:System.out.println("已退出!!!");istrue=false;break;default:System.out.println("您输入的指令不存在");}}while(istrue);}}

【测试】

1.经测试,实际程序完全满足需求的所有功能,并且具有良好的性能和交互体验,对于误输的指令有友好的提示。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。