基于springboot + vue的网上订餐系统的设计与实现(附源码)

news2024/12/23 18:38:36

一、项目背景

随着互联网技术的飞速发展和智能手机的普及,人们的生活方式发生了翻天覆地的变化,其中之一便是网上订餐系统的兴起。这种系统通过在线平台连接消费者和餐饮服务提供商,使得用户可以随时随地浏览菜单、下单并支付,极大地提高了订餐的便捷性。同时,网上订餐系统也为餐饮业带来了新的商业模式和市场机遇,推动了整个行业的数字化转型。然而,随着市场竞争的加剧,如何提高用户体验、优化订单处理流程、降低运营成本等问题成为网上订餐系统研究的重要课题。因此,深入研究网上订餐系统的设计、实现和优化,对于满足消费者需求、提升餐饮服务质量、推动行业创新具有重要的现实意义。

二、需求分析

2.1 系统功能需求

1.用户管理功能

用户注册:允许新用户输入必要信息进行注册,创建个人账号。

用户登录:用户通过输入用户名和密码登录系统,进入个人中心。

个人中心:用户可以查看和修改个人信息,包括联系方式、地址等。

2.菜品信息展示功能

菜品分类展示:将菜品按照不同类别进行分类展示,方便用户查找。

菜品详细信息:展示菜品的图片、名称、价格、描述等详细信息。

3.订餐功能

下单订餐:用户选择菜品、数量后提交订单,填写送餐地址等信息。

订单管理:用户可以查看订单状态、历史订单,以及进行订单的取消、修改等操作。

4.管理员管理功能

会员管理:管理员可以查看会员信息,对会员进行等级调整、积分管理等操作。菜品分类管理:添加、删除、修改菜品分类。

菜品信息管理:对菜品的信息进行编辑、上架、下架等操作。

订单信息管理:查看订单详情,处理订单状态,如确认接单、配送中、已完成等。

订单配送管理:分配配送任务,跟踪配送进度。

管理员管理:添加、删除、修改管理员账号信息。

系统管理:进行系统参数设置、数据备份与恢复等操作。

2.2 系统非功能性需求

1. 性能需求

响应时间:系统对于用户的操作响应时间应在 2 秒以内,确保用户体验流畅。  吞吐量:系统应能够同时处理至少 100 个并发用户请求,满足高峰时段的使用需求。

2.可靠性需求

可用性:系统应保证 99.5%以上的可用性,减少因系统故障导致的服务中断时间。 容错性:当出现网络故障、数据库连接错误等异常情况时,系统应能够及时给出提示,并尽量保持部分功能可用,等待故障恢复后自动恢复正常运行。

3.安全性需求

用户认证与授权:采用强密码策略,对用户登录进行加密传输,确保用户账号安全。根据用户角色分配不同的权限,防止越权操作。

数据加密:对用户的个人信息、订单信息等敏感数据进行加密存储,防止数据泄露。

4.易用性需求

界面设计:系统界面应简洁美观,布局合理,易于操作。采用直观的图标和清晰的文字说明,方便用户快速理解和使用。

操作流程:简化订餐流程,减少用户操作步骤,提供便捷的下单、支付等功能。 5. 可维护性需求

代码结构:系统代码应具有良好的结构和注释,便于开发人员进行维护和扩展。 日志管理:记录系统的运行日志,方便管理员进行故障排查和性能优化。

数据管理:提供方便的数据导入、导出和备份功能,便于管理员进行数据管理和维护。

2.3 关键业务流程

业务流程图

                                                                        用例图

三、系统设计

3.1 系统架构设计

随着互联网和浏览器的发展,B/S的开发架构逐渐取代了C/S架构,B/S的开发架构是一种浏览器和服务器的模式,它将应用程序的大部分功能都放在服务器端,客户机端只需要安装浏览器(Browser),通过Web Server对服务器端安装的数据库进行数据读取和存储[3]。其B/S架构图如下图3.1.1所示:

图3.1.1

基于Spring Boot的网上订餐系统的特点就是利用Browser/ServerB/S)结构,为用户提供了一个网络订餐的平台,让用户只要上网就可以实现订餐的操作。

本系统的网络应用原理示意图如图3.1.2所示:

3.1.2系统的网络应用原理示意图

3.2 系统功能模块设计

3.2.1系统整体功能

系统的设计和划分是系统的核心研究问题,以确定整体结构和功能模块。该系统的结构化设计的思想,是自顶向下的方式将系统分成若干个子系统,以及反过来的子系统分成模块,其被划分成子模块,层划分各计算机可执行模块可迄今用作一个单独的程序。

基于Spring Boot的网上订餐系统主要管理员模块以及用户模块两大部分,系统结构图如图3.2.1所示。

图3.2.1 系统模块图

3.2.2注册流程

未有账号的用户可进行注册操作,用户注册流程图如图3.2.2所示。

图3.2.2 注册信息流程图

3.2.3登录流程

登录模块主要满足了管理员和用户的权限登录,用户登录流程图如图3.2.3所示。

图3.2.3  登录流程图

3.3 数据库设计

3.3.1 概念结构设计

根据需求分析,可得本系统的实体属性图如下:

会员实体属性图如图3.3.1所示:

图3.3.1 会员实体属性图

订单信息实体属性图如图3.3.2所示:

图3.3.2 订单信息实体属性图

订单配送实体属性图如图3.3.3所示:

图3.3.3 订单配送实体属性图

菜品信息实体属性图如图3.3.4所示:

图3.3.4 菜品信息实体属性图

菜品分类实体属性图如图3.3.5所示:

图3.3.5 菜品分类实体属性图

用户实体属性图如图3.3.6所示:

图3.3.6 用户实体属性图

TOKEN实体属性图如图3.3.7所示:

图3.3.7 TOKEN实体属性图

根据需求分析,可得出本系统的总E-R图如图3.3.8所示

图3.3.8 系统总E-R图

3.3.2 逻辑结构设计

通过分析系统的具体情况和需求,使用MySQL作为数据存储工具,根据具体的功能模块,现在数据库建立了以下八张表

表3.3.1 huiyuan(会员表)

字段名

说明

数据类型

是否为主键

是否为空

id

唯一标识符

bigint

addtime

创建时间

timestamp

huiyuanzhanghao

会员账号

varchar

否,唯一

mima

会员密码

varchar

huiyuanxingming

会员姓名

varchar

touxiang

会员头像链接

varchar

xingbie

会员性别

varchar

nianling

会员年龄

varchar

shoujihaoma

会员手机号码

varchar

dizhi

会员地址

varchar

huiyuandengji

会员等级

varchar

huiyuanzhekou

会员折扣

varchar

表3.3.2 caipinfenlei(菜品分类表)

字段名

说明

数据类型

是否为主键

是否为空

id

唯一标识符

bigint

addtime

创建时间

timestamp

caipinfenlei

菜品分类名称

varchar

表3.3.3 caipinxinxi(菜品信息表)

字段名

说明

数据类型

是否为主键

是否为空

id

唯一标识符

bigint

addtime

创建时间

timestamp

caipinmingcheng

菜品名称

varchar

tupian

菜品图片链接

varchar

caipinfenlei

菜品所属分类

varchar

tuijianzhishu

菜品推荐指数

varchar

jiage

菜品价格

varchar(200)

kouwei

菜品口味描述

varchar(200)

shicai

菜品食材描述

varchar(200)

caipinxiangqing

菜品详细介绍

longtext

clicktime

菜品最近被点击时间

datetime

clicknum

菜品被点击次数

int

是,默认值为 0

表3.3.4 dingdanxinxi(订单信息表)

字段名

说明

数据类型

是否为主键

是否为空

id

唯一标识符

bigint

addtime

订单创建时间

timestamp

dingdanbianhao

订单编号

varchar

否,唯一

caipinmingcheng

订单中菜品名称

varchar

caipinfenlei

订单中菜品所属分类

varchar

jiage

订单中菜品价格

varchar

shuliang

订单中菜品数量

varchar

zongjine

订单总金额

float

xiadanshijian

订单下单时间

datetime

beizhu

订单备注信息

varchar

huiyuanzhanghao

下订单的会员账号

varchar

huiyuanxingming

下订单的会员姓名

varchar

shoujihaoma

下订单会员的手机号码

varchar(

dizhi

下订单会员的地址

varchar

huiyuanzhekou

会员在该订单中可享受的折扣

varchar

ispay

订单的支付状态

varchar

是,默认值为 “未支付”

表3.3.5 dingdanpeisong(订单配送表)

字段名

说明

数据类型

是否为主键

是否为空

id

唯一标识符

bigint

addtime

订单配送信息创建时间戳

timestamp

dingdanbianhao

订单编号

varchar(200)

caipinmingcheng

配送订单中的菜品名称

varchar(200)

caipinfenlei

配送订单中菜品所属分类

varchar(200)

jiage

配送订单中菜品的价格

varchar

shuliang

配送订单中菜品的数量

varchar

zongjine

配送订单的总金额

varchar

peisongshijian

订单的配送时间

datetime

huiyuanzhanghao

下订单的会员账号

varchar

huiyuanxingming

下订单的会员姓名

varchar

shoujihaoma

下订单会员的手机号码

varchar

dizhi

下订单会员的地址

varchar

huiyuanzhekou

会员折扣

varchar

表3.3.6 token(令牌表)

字段名

说明

数据类型

是否为主键

是否为空

id

唯一标识符

bigint

userid

与用户表(huiyuanusers)中的id关联,标识令牌所属的用户

bigint

username

用户名

varchar

tablename

用户所属的表名(如huiyuanusers

varchar

role

用户的角色

varchar

token

令牌的值

varchar

addtime

记录令牌创建的时间戳

timestamp

expiratedtime

记录令牌过期的时间戳

timestamp

表3.3.7 users(用户表,主要用于管理员)

字段名

说明

数据类型

是否为主键

是否为空

id

唯一标识符

bigint

username

用户名

varchar

password

用户的密码

varchar

role

用户的角色

varchar

是,默认值为 “管理员”

addtime

记录用户创建的时间

timestamp

表3.3.8 config(配置表)

字段名

说明

数据类型

是否为主键

是否为空

id

配置参数的唯一标识符

bigint

name

配置参数的名称

varchar(100)

value

配置参数的值

varchar(100)

3.3.3 物理结构设计

系统实现的物理结构如图3.3.1所示:

 系统实现的物理结构图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2230326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis安装及运维

源码安装 Redis安装前建议要进行残留数据检查,排除后期存在的各种隐患 官网:https://redis.io/,Linux版本只会提供源码,不提供二进制安装包,因此需要编译源码进行安装,本次使用CentOS8 VMware虚拟机进行安…

windows10 安装 达梦数据库DM8

一. 前期工作 下载 https://www.dameng.com/list_103.html 通过百度网盘分享的文件:达梦数据库 链接:https://pan.baidu.com/s/1mJcT3UiwojeWIhXpAwh-RA 提取码:jyzi 点我: 想要 解压 双击iso文件 二. 安装步骤 1 .双击setup.ext安装 …

机器人大模型GR2——在大规模视频数据集上预训练且机器人数据上微调,随后预测动作轨迹和视频(含GR1详解)

前言 上个月的24年10.9日,我在朋友圈看到字节发了个机器人大模型GR2,立马去看了下其论文(当然了,本质是个技术报告) 这次也是我头一次看paper,不看正文,而是直奔其References,​看有没有我预想中的文献&a…

PCB电源层布线信号

在印刷电路板(PCB)的设计过程中,电源层通常被视为电源分配网络(PDN)的核心。电源层和接地层通常是通过平面铜层来实现的,旨在确保系统稳定性。然而,随着电路板复杂性的增加,尤其是在多层电路板中,设计师可能面临在电源层上布置信号线路的需求。虽然这种做法可以节省空…

【大数据学习 | kafka】producer的参数与结构

1. producer的结构 producer:生产者 它由三个部分组成 interceptor:拦截器,能拦截到数据,处理完毕以后发送给下游,它和过滤器不同并不是丢弃数据,而是将数据处理完毕再次发送出去,这个默认是不…

Java基本语法和基础数据类型——针对实习面试

目录 Java基本语法和基础数据类型标识符和关键字有什么区别?Java关键字有哪些?Java基本数据类型有哪些?什么是自动装箱和拆箱?自动装箱(Autoboxing)自动拆箱(Unboxing) 自动装箱和拆…

自动化测试工具Ranorex Studio(十九)-其他编辑选项

失败继续运行和禁用 表中列出的每个Action条目,都可以设置为禁用或 “失败继续运行”。 设置action条目为“失败继续运行”时,如果遇到错误,模块不会停在那个位置,而是继续执行。 您可以通过右键菜单或属性窗口设置这两个选项。 设…

知识见闻 - Workday公司介绍

人力资源“一哥”Workday的前世今生 01 Duffield 既然要聊Workday,我们首先要认识一个人。David Duffield,又一位企业软件服务行业的绝对大神。 大卫杜菲尔德(David Duffield)出生于1941年。 40岁,很多职场人都已经认命…

VS2022配置调试Qt源代码

需要保证源代码和项目使用的版本匹配,符号需要注意是64位还是32位,并且用msvc。 1. 设置源代码路径 2. 设置调试PDB路径 这里最好把4个地方都加进去,防止某些不常用PDB被漏掉。 D:\Qt\5.15.2\msvc2019_64\bin D:\Qt\5.15.2\msvc2019_64\lib…

利用腾讯元器构建商业化AI智能体——【快递100 AI智能体实战教学】

写在开头 随着人工智能技术的不断进步,腾讯元器作为一项强大的工具,使得构建商业化的AI智能体变得更加便捷和高效。本文将带你深入了解如何利用腾讯元器搭建快递100 AI智能体的全过程,从前期规划到最终实现,为你提供一份详尽的实…

「C/C++」C++ 设计模式 之 单例模式(Singleton)

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

【前端基础】CSS基础

目标:掌握 CSS 属性基本写法,能够使用文字相关属性美化文章页。 01-CSS初体验 层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种 样式表 语言,用来描述 HTML 文档的呈现(美化内容&#…

【Oracle】空格单字符通配符查询匹配失败

问题 在进行模糊查询的时候,通过全局任意字符串匹配出含有两个字刘姓的人,但是通过刘_不能匹配出结果。 解决 检查后发现,姓名中包含空格 SELECT * FROM student WHERE TRIM(sname) LIKE 刘_;第一种解决方案就是查询的时候进行去空格处理&a…

查看多个通道32bit音频pcm数据

本文分析一个32位多通道pcm数据,一方面简单解释一下pcm数据格式,另外一方面看清楚实际数据的精度是多少。 说明:这是一个alsa采集到的10路32bit的pcm数据。 使用bc打开,16进制数据显示如下图: 图中左边是一个10通道32…

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割!

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割! 【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割! 文章目录 【语义分割|代码解析】CMTFNet-2: …

Webpack 配置module.css报错Uncaught TypeError: Cannot read properties of undefined

我的项目结构如下: 入口文件是index.jsx,组件Button.jsx使用了样式button.module.css .btn {background-color: #4CAF50;border: none;color: white; padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin:…

Redis(2):内存模型

一、Redis内存统计 工欲善其事必先利其器,在说明Redis内存之前首先说明如何统计Redis使用内存的情况。 在客户端通过redis-cli连接服务器后(后面如无特殊说明,客户端一律使用redis-cli),通过info命令可以查看内存使用情…

Docker打包自己项目推到Docker hub仓库(windows10)

一、启用Hyper-V和容器特性 1.应用和功能 2.点击程序和功能 3.启用或关闭Windows功能 4.开启Hyper-V 和 容器特性 记得重启生效!!! 二、安装WSL2:写文章-CSDN创作中心https://mp.csdn.net/mp_blog/creation/editor/143057041 三…

python如何安装扩展包

1、扩展包 Python安装额外的扩展包,一般使用anconda进行管理。 1、1安装命令 一般我们在anconda中通过pip install 包名 的方式进行安装,不过由于这些包在国外下载,因此需要配置合适的镜像促使其下载更快。 1、2 镜像源配置 1、2、1 一次…

【风冷换热器设计及计算

某空气调节工程需要将33.3kg/s的空气,由干球温度t123℃、相对湿度ψ160%,冷却到干球温度t212℃、相对湿度ψ290%,冷凝器出口为40℃的饱和液体,制冷剂采用R22,试设计一台直接蒸发式空气冷却器。 …