第六章 吃货联盟订餐系统案例

覆盖技能点

        程序基本概念

                变量
                数据类型

        流程控制

                顺序
                选择
                循环
                跳转语句

        数组

系统概述

“只要动动手指,就能送餐上门”,网上定餐深受现代人
青睐,现开发一个网上订餐系统,功能如下
●我要订餐
●查看餐袋
●签收订单
●删除订单
●我要点赞
●退出系统

分析:

        有六个分支,所以主系统要用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的情况

此时结果就合理了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值