1.业务分析
业务:用程序完成的这些事儿,就是业务。业务有些时候比技术还重要。技术是靠业务驱动的。
①订餐业务
a.检查是否还可以订餐
b.展示当前的菜单列表
c.引导客户选择菜品编号以及份数
d.引导客户收货信息的录入(订餐人姓名、送餐时间、送餐地址)
e.订餐成功后,存储订餐信息
f.提示客户餐费及其他订餐信息
②查看订单业务
a.将订餐的信息以列表形式展示出来
订餐人姓名、餐品信息、送餐时间、送餐地址、总金额、订单状态
③签收订单业务
a.将订餐的信息以列表形式展示出来
b.引导客户选择要签收的订单
c.对签收订单进行检测,订单不允许重复签收!
d.对需要签收的订单进行状态更改
④删除订单业务
a.将订餐的信息以列表形式展示出来
b.引导客户选择要删除的订单
c.对删除订单进行检测,未签收订单不允许删除!
d.删除订单,并将后续订单信息进行位移
⑤点赞业务
a.展示菜单列表
b.引导客户选择要点赞的菜品编号
c.对指定菜品的点赞数进行累加
⑥主菜单展示
a.提供欢迎提示,展示功能列表
b.引导客户选择要使用的功能
c.功能使用完,给用户再次选择功能的机会
2.技术分析
①如何存储?
使用数组来进行数据存储。
需要存储订单信息、菜品信息。
数组在存储时,只能存储一组具有相同数据类型的定长数据。
缺陷:相同数据类型、只能存储定长数据
解决方法:使用数组,但是采用多个数组来存储一条订单、一条菜品信息。多个数组的相同下标数据代表一条完整信息。存储上限暂定为4。
②如何展示菜品列表和订单列表?
遍历相应的一个数组,然后根据遍历出来的下标,挨个从相关数组中取出相关的信息。
例如:
展示菜品列表
for (int i = 0; i < 菜名数组.length; i++) {
菜名数组[i]
单价数组[i]
点赞数组[i]
}
③如何引导输入?
输出语句
Scanner 输入语句
④如何让主菜单能够持续使用,以及让主菜单切换功能。
等值判断:switch选择结构
确定结束时机较为麻烦:死循环 do-while
⑤签收业务如何实现签收?
在签收时,修改对应数组中的签收状态即可。(数组元素重新赋值)
签收状态建议存储整数值。 例如:0表示已预订 1表示已签收
⑥点赞业务,如何累加点赞数?
在点赞时,对原有的点赞数进行 + 1即可
⑦删除业务,如何删除数组数据?
数组删除数据,就是将数据重置为原来的默认值。
如果删除的数据是靠前的数据,还需要考虑数组数据移位问题。