【需求说明】

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

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

  1. java实现简易聊天窗口先运行服务器还是客户端_一个简易聊天功能的服务器端和客户端源码...

    学习完J2SE可以写一个简易的聊天软件来让刚学的知识融会贯通,代码注释的很详细哦! 开发版本历程: V0.1:客户端实现一个界面 V0.2:客户端界面有输入框和显示框的界面 V0.3:客户端关闭按钮可 ...

  2. shell while 结束循环_Linux技巧:使用bash read命令实现一个简易shell(完整版)

    在 Linux 上面,可以使用 bash 的 read 内置命令来读取用户输入. 当在 while 循环中不断调用 read 命令,并打印一些提示字符,如 $.#.> 等,就可以不断接收用户输入 ...

  3. 基于Java语言的网上订餐系统(附:源码 课件)

    今天UP主要给大家分享的是java毕业设计项目-网上订餐系统! 本套java项目视频主要针对于应届毕业生,毕业设计而制作,视频围绕毕业设计讲解网上订餐系统的制作全部流程.项目包括网站源码.项目原型.项 ...

  4. 【Java实战项目】两小时教你做出网上订餐系统

    今天主要给大家分享的是java毕业设计项目-网上订餐系统! 本套java项目视频主要针对于应届毕业生,毕业设计而制作,视频围绕毕业设计讲解网上订餐系统的制作全部流程.项目包括网站源码.项目原型.项目文 ...

  5. 吃货联盟订餐系统 (数组 循环 ) java

    通过一段时间的java学习 ,用这段时间所学的跟着老师完成这个小型的订餐系统. 系统简介 现今已进入网络时代,网上购物.看新闻.交友等人们的日常生活已离不开网络."只要点点手指,就能送餐上门 ...

  6. Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)

    shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...

  7. Java 基础语法(键盘录入数据,水仙花数,各类循环,random,数组,内存分配,方法,面向对象、封装、this、构造方法、标准类、API)

    DAY1 基础语法 1 键盘录入数据,使用变量接收 导包.创建对象.接收数据 import java.util.Scanner; Scanner sc = new Scanner(System.in) ...

  8. 使用while循环语句与自增运算符循环遍历数组 (Java经典编程案例)

    大多情况下,遍历数组都是使用for循环语句实现.其实使用while循环语句与自增运算符循环 也能遍历数组,代码如下: /*** 使用while循环语句与自增运算符循环遍历数组*/ public cla ...

  9. Java IDEA Debug进制二维数组

    1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序. 1.2 Debug介绍与操作流程 如何加断点 选择 ...

  10. 增强for循环对于“二维”数组进行循环的案例

    对于"二维"数组进行foreach循环的话可以如下: String name[][] = { { "张三", "李四", "王五& ...

最新文章

  1. Sql Server XML
  2. 轨道角度分布图_高分五号:大气气溶胶多角度偏振探测仪
  3. python open文件安全隐患_python的其他安全隐患
  4. mac安装dubbo-admin
  5. poj 2886 Who Gets the Most Candies?(线段树)
  6. .NET Core 取消令牌:CancellationToken
  7. zookeeper学习入门
  8. 使用BUCK进行iOS项目打包
  9. Unity网络:在局域网P2P网络中利用UDP广播实现保活/心跳
  10. Linux内核热补丁方案对比
  11. 我到底该如何待你-“百度”
  12. 深入理解计算机操作系统(六)
  13. 友元(友元函数、友元类和友元成员函数) C++
  14. 什么是大数据挖掘技术
  15. 认证考试 | 2021新考纲,麟学堂手把手教你报名CISSP考试
  16. 记录一下工作中常用的ramda处理数据方法
  17. 来!程序猿教你们玩微信代码~
  18. 云计算会不会被边缘计算取而代之
  19. 迪文屏CRC16校验
  20. iOS 给文字上面加贯穿横线

热门文章

  1. 17.凤凰架构:构建可靠的大型分布式系统 --- 技术演示工程实践
  2. 1.24小时365天不间断服务 --- 服务器及基础设施搭建入门
  3. 21.卷1(套接字联网API)---多播
  4. 15. POSIX 线程
  5. day 11 Python课上练习解释与基础知识练习题试题一
  6. java编程思想学习笔记——第2章 一切都是对象
  7. PHP—通过HTML网页请求,PHP页面显示源码不能解析
  8. 你知道军装照H5浏览了多少次吗? 10亿
  9. hdu1312---------------DFS模板(调用STL)
  10. Linux 进程管理 (ZZ)