覆盖技能点
程序基本概念
变量
数据类型
流程控制
顺序
选择
循环
跳转语句
数组
系统概述
“只要动动手指,就能送餐上门”,网上定餐深受现代人
青睐,现开发一个网上订餐系统,功能如下
●我要订餐
●查看餐袋
●签收订单
●删除订单
●我要点赞
●退出系统
分析:
有六个分支,所以主系统要用switch,每一个case里写一部分内容
阶段划分
第一阶段:分析数据主体(重难点)
第二阶段:分析并完成整体框架(重难点)
第三阶段:分析并完成退出功能
第四阶段:分析并完成订餐功能
第五阶段:分析并完成查看餐袋功能
第六阶段:分析并完成签收订单功能
第七阶段:分析并完成删除功能(重难点)
第八阶段:分析总完成我要点赞功能
案例
1、数据的准备工作
1.1首先要准备菜品相关的数据信息(准备三个数组)
此时这个数组用常量类型是因为菜品名是固定的,不会被轻易修改的,我们只有点击的权限,没有修改的权限
第二个数组是点赞数,题目中在吃完菜品后,可能会点赞,菜品有四种,点赞数就有四个
第三个数组是菜品价格,此时四个价格都是整数,类型是int
此时详细分析西冷牛排的数据,它的单价是66,点赞数是7
此时这三个数组里的数据都是事先准备好的数据
1.2再准备一个订单相关的数据信息
一个完整的订单由这七项组成,想要生成这个订单所需要的项目
然后配置一些历史数据
接下来的操作就是数组操作,想要增添一个订单,就是找到数据后,添到每个数组该放的位置上去,想要删减掉一个订单,就要对七个数组进行操作,签收就是将原有订单的状态0改为1,这是对数组的修改操作
2、主体的架构(扫描器)
接下来的设置要是可以持续性进行的
此时意味着我创造了一个死循环
在这个循环里设置一个菜单
此时它会接收到一个扫描器为它敲进来的选择
接收到之后会运行一个switch,里面一共至少有六个选择和一个default
然后在里面分别明文的告诉他人选择的内容,提供一个提示语,给每个模块一个二标题
这个switch是被放在一个死循环里,意味着只要default执行完了都会再次回到主菜单里去做二次循环
此时运行它,是可以进去的,并且在做出选择后会回到主菜单中去,然后就可以开始编辑功能了
退出功能
可以做一个再次询问的环节
核心代码:System.exit( status: 0); //中断程序
中断程序可以直接影响到整个程序,一个循环是拦不住的
如果用户选择的是Y\y,那么就退出系统
如果选择n就又会重新开始循环,但选择y就会结束
订餐功能
首先一问一答的形式获取关于订单内的所有数据,并保存在指定的数组目标索引内(本质)
1、找空
首先默认下标为-1
然后遍历上面任何一个数组,因为上面任意一个数组长度都是0
此时遍历的是订单当中的菜名这个数组,如果我们发现了订单当中的菜名的某一个下标的值是空,也就是这个位置还未被利用,那么index就赋这个值,同时就结束代码
2、根据空位予以相应的结论
如果index还是小于0,说明当前订单已满,无法继续订餐,else就是还有位置
3、关于订餐的核心代码
首先输入姓名,并且要保存名字的数据,利用之前的数组names来保存订单名,中括号下标是index,此时订单是可以进去了,而且位置就是之前找的空位置
然后要遍历之前的菜单数组,因为是我们来选择菜品而不是我们来敲
里面也要遍历,要告诉他人我们的选择
结构是 每一道菜的下标(i+1是为了美观)+ 菜名 + 点赞数
循环之后再询问一次
既然选择了菜品,就需要一个变量去接收菜品的序号,但此时实际上遍历的时候,序号是从1开始的,所以如果这个变量nextInt里敲得1,实际上选择的是第0下标,所以要做一个-1的操作
而chooseDish是我们选择的具体的下标
然后我们将菜单当中的你选择的下标的值,再保存在你订单菜名的这个数组的index下标里;此时就是把这道菜的名字保存在你当前订单的菜里面了
然后选择份数的操作也是一样的
时间和地址就可以不用那么复杂,直接敲进去就可以直接保存
订单状态此时默认就是0,就不用继续操作再写一次状态了
金额是算出来的,不用自己写
此时要用我们选择的菜品的下标去碰金额的数组,这就是把这个菜的单价金额给拿出来了,然后乘以份数
最后给出结果
查看功能
订单之后要去验证是否成功(制作表格)
然后进行一个循环
此时i小于订单当中任何一个数组的长度都行,因为它们的长度都是一样的
但循环中还是要过滤掉那些已经为空的,此时设置如果当前的这个i它不等于空时,接下来的操作
签收订单
要先走一遍查看订单的页面,然后让你去选择你要签收的订单,当你一旦有人为选择,意味着把下标拿到了
查询订单列表,选择需要签收的订平编号 == >下标 == >通过下材修改对应状态的值由0变1
第一步和之前的操作是一样的,但是在不等于空,且状态等于零时,意味着我们拿到的都是那些状态为配送中的订单,也只能签收到配送中的订单
此时也要-1,理由和前面操作一致;这样就拿到了下标
这样签收就完成了
然后再查看就会从配送中变成已完成
删除操作
删除操作是要删除那些已配送成功的,所以核心思想是要获取那些需要删除的订单的下标,就例如你选择了订单中的第2个下标,第3下标要补位补在第2,第4个补在第3个
首先是要查询所有的已完成的订单,获取需要删除的订单编号 == >下标 == >通过补位的措施完成数据的替换工作
这次要替换7个
第一步和之前也一样,但状态会变成1,需要的也是已完成的订单
此时这个蓝色部分接收到的就是要删除的订单的下标
删除的核心代码
这种删除的前提条件是后面的数据是一个未满的状态,至少要一个空位
最后输出结果就行
对于删除的补充
如果数组是全满状态,再运用之前的操作,会出现删除后最后一位应该是0,但结果却和上一项相同,没有变成0
是因为在进入到这个if之前,循环就停了
所以此时要在循环体里做
然后在循环外做,因为在循环里不考虑它有没有出现0的情况
此时结果就合理了