苍穹外卖总结

server/2024/11/25 21:36:39/

1 软件开发流程

需求分析->设计->编码->单元测试->集成测试->上线运维

1.1 需求分析

交付结果:完成需求规格说明书、产品原型

需求规格说明书:系统定义、应用环境、功能规格、性能需求

产品原型:一般通过网页的形式展示当前页面的布局、样式、交互行为、数据展示。

1.2 设计

交付结果:UI设计、数据库设计、接口设计

UI设计:用户界面的设计,主要设计项目的页面效果,小到一个按钮,大到一个页面布局,还有人机交互逻辑。

数据库设计:当前项目设计哪些数据库,每一个数据库里面包含哪些表,表结构之间的关系是如何的,表中的字段有哪些。

接口设计:通过分析原型图,来设计接口。

首先,粗粒度地分析每个页面有多少个接口,

然后,细粒度地分析每个接口的传入参数,返回值参数,还有接口路径及请求方式。

1.3 编码和单元测试

交付结果:编写项目代码、并完成单元测试。

项目代码编写:对项目的模块功能分析,进行编码实现。

单元测试:对编码完成的功能进行单元测试。

1.4 集成测试

由测试人员对部署在测试环境的项目进行功能测试,并出具测试报告

1.5 上线运维

上线之前,运维人员准备服务器上的软件环境安装、配置,配置完毕后,再将开发完成的项目部署到服务器上。

2 苍穹外卖系统

2.1 需求分析

该项目是针对餐饮企业定制一款软件产品,包括系统管理后台和小程序端应用两部分。其中,系统管理后台主要给企业员工内部使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护,对餐厅的各类数据进行设计,同时还有语音播报功能。小程序端主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单、支付、催单等。

2.2 设计

2.2.1 总体设计

本项目包含后台管理端和前台用户端,管理端主要功能包含员工管理、分类管理、菜品管理、套餐管理、订单管理、工作台、数据统计、来单提醒。用户端主要功能包含微信登录、商品浏览、购物车、用户下单、微信支付、历史订单、地址管理、用户催单。

2.2.2 功能设计

管理端功能:

员工管理:员工的登录/退出,员工的信息管理(员工信息的新增、修改、删除、查找)、员工账号的管理(启用/禁用)。

分类管理:主要对餐厅经营的菜品分类 或 套餐分类 进行管理维护,包含查询、新增、修改、删除等功能。

菜品管理:主要维护各个分类下的菜品信息,包含查询、新增、修改、删除、启售、停售等功能。

套餐管理:主要维护当前餐厅中的套餐信息,包含查询、新增、修改、删除、启售、停售。

订单管理:主要维护移动端下的订单信息,包含查询、取消、派送、完成,以及订单报表下载等功能。

数据统计:主要完成对餐厅的各类数据统计,如营业额、用户数量、订单等等。

工作台:当前正在执行的订单。

来单提醒:当有订单出现,有来单消息提醒。

用户端:

登录退出:用户可以使用微信登系统,以及退出系统

点餐模块:用户可以查找菜品、添加菜品到购物车、删除购物车、清空购物车等功能。

订单支付:用户选完菜品后,可以对购物车菜品进行结算支付,支付成功,等待商家接单。

历史订单:用户可以查看、删除自己历史订单信息,包括订单提交时间,支付时间,派送时间、完成派送时间。

地址管理:用户可以管理自己的下单地址。

用户催单:用户可以在商家接单后开始催单,催单后,商家会接收催单消息。

2.2.3 详细设计

包含各个功能的详细流程,算法设计等等。

2.2.4 技术选型

 本项目分为用户层、网关层、应用层、数据层、工具层,针对不同层选择合适的技术。

用户层:对于管理端的前端页面,使用H5、Vue.js、ElementUI、apache echarts等技术。对于用户端的前端使用微信小程序。

网关层:该层使用Nginx服务器,用于部署静态资源,可以提供较高的性能,反向代理和负载均衡。

应用层:该层主要用户后端的任务开发,主要使用

SpringBoot: 快速构建Spring项目,采用“约定优于配置"的思想,简化Spring项目的配置开发。

SpringMVC: 处理前端和后端之间的请求响应。

Spring Task: Spring提供的定时任务框架。

HttpClient: 主要实现了对Http请求的发送。

Spring Cache: Spring提供的数据缓存框架。

JWT: 用于对用户进行身份验证和授权。

阿里云OSS: 对象存储服务,在项目中主要存储文件,图片等资源。

Swagger: 接口开发工具,自动生成接口文档,对接口进行测试。

POI: 封装了对Excel表格的常用操作。

WebSocket: 一种通信协议,使客户端和服务器之间的数据交换更加简单,用户项目的来单、催单功能实现。

数据层:该层用于后端与数据库之间的交互。

MySQL: 关系型数据库,本项目的核心数据库

Redis: 基于k-v的内存数据库,访问速度快,经常使用它做缓存

MyBatis: 后端的持久层orm框架,简化与数据库的交互

pagehelper: 分页插件

Spring data redis : 简化java代码操作Redis的API

工具层:项目开发过程中使用的一些项目管理和高效开发的工具

Git: 远程版本控制工具,在团队中协作开发人员进行项目版本控制

Maven: 项目构建管理工具

Junit: 单元测试工具

Postman: 接口测试工具

2.3 开发环境搭建

本项目主要包含前端和后端,前端为管理端(Web端)和用户端(微信小程序端),后端为Java开发。

2.3.1 前端环境搭建

前端工程主要在nginx上搭建

2.3.2 后端环境搭建

1.项目分析

sky-take-out: 父工程

sky-common: 子模块,存放公共类,工具类、常量类、异常类等等。

sky-pojo: 子模块,存放实体类、VO、DTO等(VO:用于在前端展示的数据实体,DTO数据传输对象:用于各层之间传递数据,POJO:普通的Java对象,只有属性和对应的gettter和setter,Entity: 实体,通常和数据库中的表对应)。

sky-server: 子模块,后端服务,存放配置文件、Controller、Service、Mapper、启动类等。

2.Git版本控制

  1. 创建Git本地仓库
  2. 创建Git远程仓库
  3. 将本地文件推送到Git远程仓库
    1. 提交文件至本地仓库
    2. 添加Git远程仓库地址
    3. 推送

3.数据库环境搭建

序号表名中文名
1employee员工表
2category分类表
3dish菜品表
4dish_flavor菜品口味表
5setmeal套餐表
6setmeal_dish套餐菜品关系表
7user用户表
8address_book地址表
9shopping_cart购物车表
10orders订单表
11order_detail订单明细表

 2.3.2 前后端联调

前端请求地址:http://localhost/api/employee/login

后端接口地址:http://localhost:8080/admin/employee/login

前端请求的地址通过Nginx的反向代理,得到一个新的请求地址,新的请求地址到后端,请求数据。

3 前后端分离开发流程


http://www.ppmy.cn/server/38315.html

相关文章

vue如何进行如何进行移动端的响应式布局

在Vue中进行移动端的响应式布局,通常涉及使用CSS媒体查询、灵活的盒模型布局、以及可能的第三方库或框架,如Vue UI库。下面是一个简单的Vue组件示例,展示了如何构建移动端的响应式布局: 首先,确保你有一个Vue项目。如…

pyqt 按钮常用格式Qss设置

pyqt 按钮常用格式Qss设置 QSS介绍按钮常用的QSS设置效果代码 QSS介绍 Qt Style Sheets (QSS) 是 Qt 框架中用于定制应用程序界面样式的一种语言。它类似于网页开发中的 CSS(Cascading Style Sheets),但专门为 Qt 应用程序设计。使用 QSS&am…

SSM整合-前后端分离-项目环境搭建 (上)

整合SSM 项目基础环境搭建项目介绍创建项目项目全局配置web.xmlSpringMVC配置配置Spring和MyBatis, 并完成整合创建表, 使用逆向工程生成Bean, XxxMapper和XxxMapper.xml注意事项和细节说明 实现功能01-搭建Vue前端工程需求分析/图解代码实现搭建Vue前端工程vue3项目目录结构梳…

DAY 3

1. #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {this->resize(540,415);this->setFixedSize(540,415);//窗口标题this->setWindowTitle("盗版QQ");//窗口图标this->setWindowIcon(QIcon("E:\\qq\\pictrue\\pi…

YoloV8改进策略:BackBone改进DCNv4

摘要 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.993,mAP50-95由0.737涨到0.77,涨点明显! DCNv4是可变形卷积的第四版,速度和v3相比有了大幅度的提升,但是环境搭建有一定的难度,对新手不太友好。如果在使用过程遇到编译的问题,请严格按照我写的环境配置。 Y…

相机内存卡格式化怎么恢复?恢复数据的3个方法

相机内存卡格式化后,许多用户都曾面临过照片丢失的困境。这些照片可能具有极高的纪念价值,也可能包含着重要的信息。因此如何有效地恢复这些照片变得至关重要。本文将详细介绍三种实用的恢复方法,帮助您找回那些珍贵的影像。 下面分享几个实…

spring高级篇(八)

本篇对Spring MVC 的执行流程做一个简单总结 MVC执行流程总结 当浏览器发送一个请求,例如http://localhost:8080/hello,请求到达服务器后,一般会进行如下操作: 1、首先会经过DispatcherServlet,默认映射路径为 /&…

LeetCode 第396场周赛个人题解

目录 100284. 有效单词 原题链接 思路分析 AC代码 100275. K 周期字符串需要的最少操作次数 原题链接 思路分析 AC代码 100283. 同位字符串连接的最小长度 原题链接 思路分析 AC代码 100288. 使数组中所有元素相等的最小开销 原题链接 思路分析 AC代码 100284. …