项目实践(一)点餐系统概述
-
项目名称:
点餐系统
-
项目背景:
-
项目描述:
使用户可以通过浏览器访问服务器获取菜品信息并进行点餐;以及可以使管理员通过浏览访问服务器实现订单以及菜品管理
-
技术调研:
线程,socket,http ,json序列化,mysql,STL
-
框架设计:
MVC
M-model-数据管理 V-view-界面管理 C-controller-业务逻辑管理
数据管理模块:
-
数据存储:mysql 数据库表的设计
-
数据库管理模块设计 菜品数据类(添加,删除,修改,获取(所有,单个)) 订单数据类(添加,删除,修改订单状态,查看(所有,指定)),封装数据库操作,提供调用接口
业务逻辑模块:
- 搭建服务器:HTTP服务器(套接字,HTTP,TCP)采用httplib库进行搭建
- 通信接口设计:什么样的请求对应什么样的业务处理和响应
静态页面请求:html静态页面
动态数据请求:菜品数据,订单数据
通信接口采用restful风格:
基于http协议:使用xml或json格式定义正文序列化方式
json序列化:
-
json::value类:json数据与外界数据进行中转的一个对象类,重载大量操作符,包含大量类型转换函数 json::Reader类:实现反序列化,将json格式字符串转化为多个数据对象,存储在json::value类中 json::Writer类:实现序列化,将json::value中对象转换为json格式字符串
定义操作类型:POST添加 DELETE删除 PUT修改 GET获取
界面识图模块:html+css+js
html:页面布局
css:样式语言 度标签容器进行样式修饰
js:JavaScript脚本语言 动态渲染
项目总结:
项目名称:点餐系统
项目描述:完成功能:用户通过浏览器与后台服务器进行交互,实现用户对菜品信息查看与下单功能,以及管理员对菜品和订单管理功能
项目实现:采用一个不太严谨的MVC框架,总体分为三个模块,数据模块,业务处理,前端页面
数据模块:基于mysql数据库实现数据存储管理,并且封装数据库访问类向外提供业务分离的数据信息
业务处理:基于http协议采用RESTFUL风格使用httplib库搭建http服务器与前端进行交互进行菜品以及订单的数据业务处理功能
前端页面:基于简单的html与css和vue.js以及ajax实现前端界面的静态页面展示以及动态数据获取渲染功能
难点:
1,mysql查询与保存结果的线程安全问题
查阅mysql开发手册,mysql所提供的接口都是线程安全的,但这两个接口之间还是存在线程安全,需要加锁保护
2,http服务器搭建
http自行搭建,过于粗糙,干不够完善,httplib库提供接口,完善安全,流程也符合整个项目要求