C++项目】基于CS架构的外卖平台框架设计
项目简介
本次项目计划实现一个CS架构的外卖平台模拟软件,下面是需求列表
注:一切以功能实现为主,安全性可能有所缺失
前端界面
- 用户登录界面
- 用户注册界面
- 消费者界面
- 菜品列表界面
- 订单状态界面
- 选中菜品的详细信息
- 购物车子窗口
- 充值&用户升级子窗口
- 历史记录子窗口(选做)
- 商家界面
- 已有菜品界面
- 菜品注册子窗口
- 菜品信息编辑子窗口
- 订单处理子窗口
- 营收统计子窗口(extra)
- 管理员界面
- 账户管理(可选)
- 菜品管理(可选)
- 销售额日志界面
前端业务逻辑
- 用户登录界面逻辑
- 账户认证
- 根据账户类型创建不同的当前账户
- 向服务器请求验证账户信息(远端)
- 用户注册界面逻辑
- 向服务器请求用户名注册
- 向服务器请求电话号码注册
- 消费者界面逻辑
- 管理购物车中的菜品
- 向当前用户对象获取优惠级别
- 向服务器请求菜品列表
- 向服务器请求关键字搜索(选做)
- 向服务器请求菜品详情
- 动态生成菜品价格展示
- 动态生成订单对象
- 向服务器请求充值
- 向服务器请求升级用户等级
- 向服务器请求提交订单
- 从服务器接收订单状态更新
- 商家界面逻辑
- 向服务器请求商家菜品列表
- 向服务器请求注册商品
- 向服务器更新菜品详细信息
- 向服务器请求营收信息
- 从服务器接收历史订单
- 从服务器接收新增订单
- 向服务器请求处理订单
- 管理员界面
- TODO
后端业务逻辑
响应账户登录,查询数据库
响应注册结果,查改数据库
响应菜品列表,查询数据库
响应菜品详情,查询数据库
响应充值结果,修改数据库
响应订单新增请求,增加数据库
响应订单处理请求,删改数据库
定时处理过期订单,增删数据库
响应商家菜品列表,查改数据库
响应商家注册商品,查改数据库
响应菜品详情更新,查改数据库
响应营收信息查询,查询数据库
管理员TODO
具体设计
数据库卡片设计
目前我们主要设计了三大需要存储的数据类型,即
account
账户表,用于统一管理商家和消费者的账户dishes
菜品表,用于管理所有的菜品history
历史记录表,用于存储所有的订单记录Orders
订单临时表,存储所有在线订单
![order]
抽象分层
按照需求的分层,我们将整体项目抽象分层为4层
,并规定了层与层之间的通信形式
其中上面两层属于客户端,下面两层属于服务端
- 客户端内部使用信号槽机制通信
- 客户端与服务端使用HTTP协议通信,将序列化后的对象封装入HTTP报文的
body
中
用例图
类图
客户端类图设计
服务端类图设计
服务端的功能分割比较少,目前就两大类
HTTPServer
负责网络IOBankClient
负责数据库交互
接口约定
由于采用前后端开发的方式,所以网络IO所用的接口要提前约定好
路径 | 接口名关键字 | 功能描述 |
---|---|---|
/account/login/username |
login ,username |
用户名登录 |
/account/login/phone |
login ,phone |
用户电话登录 |
/account/register/code |
code |
获取验证码 |
/account/register |
register |
用户注册 |
/account/consumer/update |
update |
用户升级 |
/consumer/dish/list |
dish , list |
消费者看到的菜品列表 |
/consumer/dish/dishInfo |
disg , dishInfo |
消费者看到的菜品详情 |
/consumer/order/generate |
orderGenerate |
消费者请求提交订单 |
/consumer/order/list |
orderPay |
消费之请求订单列表 |
/consumer/order/pay |
orderPay |
消费者请求支付订单 |
/consumer/order/cancel |
orderCancel |
消费者主动取消订单 |
/consumer/order/push |
orderPush |
服务器向消费者推送订单更新信息 |
/consumer/account/update |
accountUpdate |
消费者用户等级升级 |
/merchant/dish/list |
dish ,list |
商家看到的菜品列表 |
/merchant/dish/register |
merchant ,registerDish |
商家注册菜品 |
/merchant/dish/info |
merchant ,dishInfo |
商家获取菜品详情 |
/merchant/dish/update |
merchant ,dishUpdate |
商家更新菜品信息 |
/merchant/dish/del |
merchant ,dishUpdate |
商家删除 |
/merchant/order/list |
merchant ,orderPush |
服务端向商家客户端推送订单 |
/merchant/order/detail/dishlist |
merchant ,orderPush |
客户端请求订单菜品列表 |
/merchant/order/push |
merchant ,orderPush |
服务端向商家客户端推送订单 |
/merchant/order/proccess |
merchant ,orderProccess |
商家处理订单 |
/merchant/statistics |
merchant ,statistics |
商家请求营收数据 |
/admin/historyLogs |
admin ,historyLogs |
管理员请求销售日志 |
状态码约定
状态码 | 含义 |
---|---|
200(默认) | 成功 |
404 | 找不到资源 |
500 | 反序列化失败 |
项目立项
首先我们在github
上创建了一个项目仓库,取名为项目名BeautyGoose
,对应的中文名为美鹅
然后我们分别创建两个子文件夹server
和client
用于分别开发服务端和客户端
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 supdriver的博客!
评论