开发工具Vs code(vim),开发环境Linux(CentOS7),使用语言C/C++,数据库MySQL,
相关库Jsoncpp,cpp-httpib,MySQL第三方库

项目相关概念

网站

网站本质上是一个HTTP服务器+若干个网页

软件工程流程

1>背景调研
2>需求分析(复杂且重要)
3>概要设计
4>详细设计
5>编码
6>测试
7>发布

MySQL第三方库c版本

Json

cpp-httplib

MVC框架模式

  • M:model——>和数据相关的操作,就是写的服务器,前面的ddb.hpp
  • V:view——>和界面相关
  • C:controller——>HTTP核心操作

Vue

  • Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。
    Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。

HTML(标签化语言)

常见标签:
1.div(一个容器,块级元素,独占一行) ___2.span(一个容器,内联级元素,不独占一行)
3.h1-h6一级标题->六级标题____________4.p (段落,和div差不多)
5.img (图片.src属性指定图片的url)_______6.a(超链接href属性,指定跳转到哪个新页面)
#任何一个标签都有一个class这样的属性,描述标签的颜色,大小指定哪个css文件

操作步骤

创建库表 ,在db.hpp里封装MySQL的API,在order_server.cc(http服务器)对请求解析调用封装的方法并返回响应。
model层数据库部分↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓.

创建数据库与表

  • 1.创建db.sql文件,实现如何进行mysql语句的批量执行。
  • 2.对*.sql文件进行编写
  • 3.mysql -uroot < db.sql ,一键生成表。

客户端和服务器之间的接口设计

  • 使用代码操作数据库,实现一个MySQL的客户端,完成对数据库的增删改查。
  • 选择Restful风格的接口(API)设计。
  • 使用Json格式组织数据

API设计:
设计接口就是根据自定制的内容有什么我们将其确定下来,是选择url还是header,body我们事先将其约定好,然后根据需求提取出要支持的接口:1.新增菜品2.查看所有菜品3.查看指定菜品4.修改菜品5.删除菜品6.新增订单7.查看订单8.修改订单状态
Restful风格特点:
1.使用HTTP方法表示操作语义(增删改查,POST 表示插入,GET 查找,PUT 修改,DELETE 删除);
2.使用url path表示要操作的资源(/dish 操作菜,/order 操作订单)(所以POST_dish就表示插入菜)
3.使用body表示操作中的一些具体数据,通常使用json(是一种特定的数据组织格式,可以用一个字符串来表示一个结构化的数据,来源于编程语言js)格式来组织数据。

  • 对服务器端进行API配置

db.hpp具体内容:
封装创建MYSQL句柄并建立连接>>>>>MYSQL类提供了很多方法,使用起来也很方便,还需要设置编码方式
设计两个操作数据库的核心类>>>>>DishTable类(封装了对菜品信息的管理方法),OrderTable类(封装了对订单信息的管理方法)
释放句柄

controller层HTTP服务器核心操作部分↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓.

  • 服务器核心流程:
    1.读取请求并解析(反序列化)
    2.根据请求进行响应(与业务相关)
    3.把响应写回到客户端(序列化)

开始编写order_server.cc(http服务器)

具体内容

  • 创建并初始化MYSQL操作句柄>>>>包含了db.hpp,直接调用
  • 定义dish_table与order_table并与MYSQL句柄建立连接
  • 创建Server对象>>>>>>>Server类提供了很多方法,可以处理客服端请求
  • 具体说一下Post(插入菜品)方法:
    1.定义Json格式的请求与相应,声明Json格式的两个方法
    2.获取数据并转换为Json格式>>>>>>>>>若转换失败返回错误响应
    3.校验Json中的信息>>>>>>>>>若格式错误失败返回错误响应
    4.调用数据库操作进行插入>>>>>>>>>>使用db.hpp的dish_table::Insert方法
    5.构造正确的响应
  • 每一个请求都要进行如上过程,根据响应的不同会稍有差异
  • 进行监听>>>>>>>>server.listen(“0.0.0.0”,9094);//listen函数一旦执行便是死循环,程序不往下走了

构造HTTP请求,使用Postman进行HTTP服务器测试

客户端,前端网页部分↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓.

三大部分:

  • HTML 描述网页的基本结构,可以说是一个网页的骨
  • CSS 描述页面的样式,可以说是一个网页的皮
  • JavaScript 描述网页和用户的交互动作

下载HTML模板进行修改,选出需要的部分,将HTML文件拷至服务器所在文件夹,输入url可以看到页面效果。

使用Vue界面开发库,编辑HTML,使页面动态获取数据。

完善网页与需要继续学习JavaScript。

项目>点餐系统 总结概述相关推荐

  1. 微信小程序开发 | 综合项目-点餐系统

    综合项目-点餐系统 8.1 开发前准备 8.1.1 项目展示 8.1.2 项目分析 8.1.3 项目初始化 8.1.4 封装网络请求 8.2 [任务1]商家首页 8.2.1 任务分析 8.2.2 焦点 ...

  2. 项目----点餐系统

    1.项目背景: 我们学校门口有家湘菜馆因为好吃所以人特别多,我和老板的关系比较好为了帮老板减轻负担也为了让用户可以方便地使用手机进行在线点单.我和老板商量我帮他做一个自助点餐项目.一方面可以提升自己的 ...

  3. java小项目——点餐系统

    package bilibili_project.Meau; import java.util.ArrayList; import java.util.List; import java.util.S ...

  4. 小郡肝火锅点餐系统——项目文档

    小组成员:李靖 李凤莲 课程设计报告 学        号           201610411111 姓        名           李  靖 班        级           ...

  5. Java项目:在线点餐系统(java+Springboot+Maven+mybatis+Vue+mysql+Redis)

    源码获取:博客首页 "资源" 里下载! 项目描述: 这是一个基于SpringBoot+Vue框架开发的在线点餐系统.首先,这是一个前后端分离的项目.具有一个在线点餐系统该有的所有功 ...

  6. 微信小程序 #项目笔记# | 从0到1实现外卖点餐系统小程序

    目录 开发前准备 项目展示 项目分析 项目初始化 封装网络请求 任务1 商家首页 任务分析 焦点图切换 中间区域单击跳转到菜单列表 底部商品展示 任务2 菜单列表 任务分析 折扣信息区 设计菜单列表布 ...

  7. 个人项目(二)-- 自助点餐系统

    一.需求分析 现在很多餐馆里都使用自助点餐系统节省人力,但是页面大都略显花哨,忽视了系统应有的便捷性.因此,我有了设计一个页面简单,功能齐全的点餐系统的想法. 二.程序设计 自助点餐系统应该具有以下功 ...

  8. JAVA毕设项目喜枫日料店自助点餐系统(java+VUE+Mybatis+Maven+Mysql)

    JAVA毕设项目喜枫日料店自助点餐系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX( ...

  9. 【Web项目】点餐系统

    点餐系统 一.项目简介 二.功能简介 三.数据库表的设计 3.1 用户表 3.2 菜单表 3.3 订单表 3.4 订单详情表 四.具体功能实现 4.1 普通用户 4.1.1 注册 4.1.2 登陆 4 ...

最新文章

  1. delphi 属性编辑器
  2. 超微四子星服务器_224核心448线程服务器---Supermicro超微高密四子星 2029BT-HNTR 数量不多只有60台...
  3. css3新特性总结(视觉表现方面)
  4. Android之图片边显示模糊原因
  5. MySQL为什么要用数字做自增主键?
  6. 鸟哥的Linux私房菜第零章
  7. mac os 10.10下安装android studio问题:android studio was unable to find a valid jvm
  8. 相机内参_相机标定(一):机器人手眼标定
  9. python解数独--世界最难数独2.3秒完成_【数独】世界最难数独90+毫秒解决。一个不错的算法...
  10. FP-XH 松下PLC控制器资料下载
  11. 3dmax全局材质灯光细分插件_【3D脚本插件】如何利用插件快速修改全局灯光材质细分...
  12. c语言三个学生每人四门,C语言一道题目,求教教3.统计一个班的学生成绩。要求程序具有如下功能:(1) 每个学生的学号和四门功课的成绩从键盘读入。...
  13. python编程基础及应用(重庆大学):7-7 计算用户输入句子中的单词数量以及单词平均长度
  14. 【洛谷】P2298 Mzc和男家丁的游戏*
  15. 学习经验分享之四:YOLOv7学习心得
  16. springboot和kafka结合其中enable.auto.commit等于false失效
  17. 长乐未央——记高桥留美子的辉煌三十年
  18. 技能兴鲁试题--数据分析挖掘
  19. 可供参考的互联网电商订单中心设计
  20. 信用卡存危险盗刷暗门:利用第三方支付系统漏洞

热门文章

  1. 掉发不是病,秃起来真要命!作为程序猿的你,脱发了吗?
  2. 董明珠想圆手机梦,靠王自如可不够
  3. android7.0计时器代码,iCountTimer Pro(锻炼计时器)
  4. xcode9.4网盘资源
  5. 【实践】Ceph:创建Cephfs文件
  6. mysql不能持久存储数据的是_数据持久化存储
  7. 神武4 电脑版天魔里职业玩法攻略(原创)
  8. 一文读懂如何使用FPGA驱动PHY芯片
  9. 洛谷1967 火车运输 kruskal求最大生成树 倍增LCA维护最小值
  10. 安霸预发布14nm工艺的ISP芯片