某企业为了方便员工用餐,为餐厅开发了一个订餐系统(COS:Cafeteria Ordering System),企业员工可通过企业内联网使用该系统。
本系统只是一个订餐平台,并不负责餐厅系统的实现,只是在终端用户跟各餐厅间的一个中介,帮人买餐、帮人卖餐。
-
员工(company open id):
- 查看菜单
- ~~查看今日特价。~~在菜单中显示
-
顾客(user): register with open id //注册到系统的员工。
- login
- order //可以订餐(如果未登录,需先登录)
- 注册工资支付 // 调一下工资系统的api,认证一下OAuth什么的
- 预约规律的订餐
- ~~在特殊情况下可以覆盖预订。~~撤销订单
-
餐厅员工(staff-basic): 是特殊顾客。
- 进行备餐
生成付费请求系统自动请求提醒送餐- ~~对于注册工资支付的顾客,生成付费请求,并发送给工资系统。~~系统自动
-
送餐员(staff-delivery):
- 打印送餐说明
- ~~记录送餐信息(如送餐时间)~~记录啥?
- ~~记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。~~这是餐厅系统的事情啊哥哥
-
staff 可选权限(permission):
- 餐厅员工基本权限(basic): 菜品库管理,菜单管理
- 管理员权限(admin): 管理菜单,指定送餐员派送
- 送餐员权限(delivery)
- 略
-
菜品库(meal)
- 可以录入菜品
- 可以修改售价
- 注:货币单位只考虑CNY
-
菜单(menu)
- 从菜品库取可售菜品进入菜单
- 菜品库中的售价经过修改成为菜单上的价格
- 特价菜:菜单价格 低于 菜品库中价格的即为特价菜
-
购物车(cart)
- 顾客点菜,加入购物车
-
订单(order)
- 从购物车,checkout,生成订单 [阶段1,待提交]
- 注:订单生成后,发生锁餐,直到订单过期或进入送餐
- 生成订单同时,显示 可选送餐时间(若干时段,餐厅员工事先预设)
- 顾客指定送餐时间、地点、支付方式
- 顾客提交订单 [阶段2,待付款]
- 进入付款流程 [阶段3,待餐厅处理]
- 付款完成,系统接受订单,发送 Email 给顾客,同时发送订餐信息给餐厅员工
- 餐厅会派出一个送餐员进行送餐(系统默认选派一个空闲的送餐员) [阶段4,待送餐],向顾客显示送餐员的联系方式等
- 送餐员送达餐 [阶段5,订单结束]
-
付款(payment)
- 货到付款(即送餐员收款)
- 工资支付(请求工资系统)
- 网银及支付宝(调用第三方api,跳转,回调)
- 注:订餐系统并不关心具体的balance,假设工资系统及第三方支付账户已经跟餐厅协调好。
- 注:简单起见,先不考虑跟多个餐厅合作的情况。
可以用redis啥的,但是做大作业就直接放mysql了
- User InBox
- 顾客请求查看菜单;
- 系统显示菜单和今日特价;
- 顾客选菜;
- 系统显示订单和价格;
- 顾客确认订单;
- 系统显示可送餐时间;
- 顾客指定送餐时间、地点和支付方式;
- 系统确认接受订单,然后发送 Email 给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工。
- 设计说明书。内容包括:问题的描述;用UML 表示的分析与设计模型(如用例图、活 动图、序列图、类图、状态图等);类、方法、全局变量或静态变量的命名规则;仿真 流程;需要特别说明的类、方法和对象。
- 源程序清单。程序中应该包括足够的注释(参考常见编程规范)。
- 运行情况总结报告。通过有代表性的运行实例(应给出当时的界面实录),叙述开发结 果的运行情况,分析其特点和存在的问题。