点餐系统
1.点餐系统的背景
随着数据时代的到来。我们去外边吃饭会发现大多数餐馆已经是使用在网页点单,对于餐馆来说网页点单省去了服务员的费用,对于顾客来说也是比较方便的,所以我自己做了一个简单的网页版点餐系统。
2.项目模块
这个项目主要分为三个模块,数据管理模块,业务逻辑模块,界面视图模块;
2.1 数据管理模块
数据管理模块主要是针对两个方面,
顾客:点击查看菜品信息,勾选菜品,进行下单
老板:上传菜品,修改菜品,查看订单,修改订单
在这我使用的是mysql数据库对这些信息进行管理,数据库的设计:
代码设计:
2.2 业务逻辑模块
业务逻辑模块是实现浏览器与服务器之间的网络通信,服务器针对客户端的请求进行业务处理。那么都有哪些请求:
顾客:访问页面,查看菜品信息,进行下单
老板:访问页面,上传/查看/删除/修改菜品信息,查看/修改/删除订单
并且针对网络通信这么,我使用的是httplib搭建http服务器,搭建服务器成功以后,客户端与服务端进行通信,在通信过程中我的通信格式是利用json串组织的数据。
2.2.1 菜品管理
1.新增菜品
请求: POST /dish { "name": "红烧肉", "price": 1800 } 响应: HTTP/1.1 200 OK { "ok": true, "dish_id": 1, }
2.查看菜品
请求: GET /dish 响应: HTTP/1.1 200 OK [ { dish_id: 1, name: "红烧肉", price: 1800 } ]
3.删除菜品
请求: DELETE /dish/:dish_id 响应: HTTP/1.1 200 OK { "ok": true }
4.修改菜品
请求: PUT /dish/:dish_id { "name": "糖醋里脊", "price": 1900 } 响应: HTTP/1.1 200 OK { "ok": true }
2.2.2 订单信息管理
1.上传订单
请求: POST /order { "table_id": "1", "time": "2020-6-6 12:00",
"dish_ids": [1, 2] } 响应: HTTP/1.1 200 OK { "ok": true }
2.修改订单
请求: PUT /order/:order_id { "state": 0, } 响应: HTTP/1.1 200 OK { "ok": true }
3.查看订单
请求: GET /order 响应: HTTP/1.1 200 OK [ { "order_id": 1, "table_id": "1", "time": "2019-05-15 12:00", "dishes": [ { "dish_id": 1, "name": "红烧肉", "price": 1800 }, { "dish_id": 2, "name": "糖醋里脊", "price": 1900 } ], "state": 0, "consume": 3700, // 表示该订单的价格 }, { "order_id": 2, "table_id": "2", "time": "2019-05-16 12:00", "dishs": [ { "dish_id": 1, "name": "红烧肉", "price": 1800 }, ], "state": 1, "consume": 1800, // 表示该订单的价格 } ]
4.删除订单
请求: DELETE /order/:order_id 响应: HTTP/1.1 200 OK { "ok": true }
2.2.3 利用httplib搭建服务器
#include "httplib.h" int main() {using namespace httplib; Server server; server.Get("/", [](const Request& req, Response& resp) {(void)req; resp.set_content("<html>hello</html>", "text/html"); });server.set_base_dir("./wwwroot");server.listen("0.0.0.0", 9092); return 0; }
2.3 前端视图模块
针对就前端我们使用的css,js,html语言,html做出前端页面,css可以是页面变好看,js是页面动起来。对于页面的制作是我自己在网上找了一个模板,然后进行修改的。