🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。
作者完整代码目录供你选择:
⬇️文章末尾可以获取联系方式,需要源码或者演示视频可以联系⬇️
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目展示
高校校园外卖小程序
摘要:随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。通过分析微信小程序的外卖送餐管理的不足,创建了一个计算机管理微信小程序的外卖送餐的方案。文章介绍了微信小程序的外卖送餐的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。本微信小程序的外卖送餐有管理员、用户、商户、外卖员共四个角色。本站后台采用Java的Springboot框架进行后台管理开发,可以在浏览器上登录进行后台数据方面的管理,MySQL作为本地数据库,微信小程序用到了微信开发者工具,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得微信小程序的外卖送餐管理工作系统化、规范化。
关键词:外卖送餐;Springboot;MYSQL;开发者工具
第一章 绪论
1.1 研究背景
如今互联网高速发展,网络遍布全球,国内移动信息领域独树一帜[1],通过微信发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传播的主要途径,社会上各种各样的信息都想尽办法通过互联网进行传播[2],互联网对社会产生的影响越来越大。
因此,开发合适的微信小程序的外卖送餐,可以方便管理人员对微信小程序的外卖送餐的管理,提高信息管理工作效率及查询效率,用户可以在手机上通过微信小程序来订餐,更加的方便,有利于更好的为人们服务。
1.2 研究意义
随着互联网技术的快速发展,网络时代的到来,网络信息也将会改变当今社会。各行各业在日常企业经营管理等方面也在慢慢的向规范化和网络化趋势汇合。微信小程序的外卖送餐的信息化程度体现在将互联网与信息技术应用于经营与管理,以现代化工具代替传统手工作业。无疑,使用网络信息化管理使信息管理更先进、更高效、更科学,信息交流更迅速。
对于之前微信小程序的外卖送餐的管理,大部分都是使用传统的人工方式去管理,这样导致了管理效率低下、出错频率高[3]。而且,时间一长的话,积累下来的数据信息不容易保存,对于查询、更新还有维护会带来不少问题。对于数据交接也存在很大的隐患。如果采用电子化的存储方式就会带来很大的改善,而且给用户的查询带来了很大便利,因此设计一个微信小程序的外卖送餐刻不容缓。
能够提高信息的管理水平,提升用户体验:通过优化外卖送餐系统的功能和界面设计,为用户提供更加便捷、高效、个性化的服务,提升用户的满意度和忠诚度。
助力商家发展:帮助商家降低运营成本,提高订单处理效率,优化配送流程,增加销售额和利润。
推动行业创新:探索新的技术和商业模式,为外卖行业的发展提供新的思路和方向,促进整个行业的创新和发展。
1.3 研究内容
用户需求分析:通过问卷调查、用户访谈等方式,深入了解用户对外卖送餐系统的功能需求、使用习惯和满意度,为系统设计提供依据。
系统功能设计:根据用户需求,设计外卖送餐系统的功能模块,包括商家管理、用户管理、订单管理、配送管理、评价管理等。
技术选型与实现:选择合适的技术框架和开发工具,实现外卖送餐系统的功能,确保系统的稳定性、安全性和可扩展性。
系统测试与优化:对开发完成的系统进行功能测试、性能测试和安全测试,发现并解决系统中存在的问题,不断优化系统的性能和用户体验。
第二章 相关技术
2.1 微信小程序
小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。尤其拥抱微信生态圈,让微信小程序更加的如虎添翼,发展迅猛。
2.2 MYSQL数据库
Mysql是一个轻量级和最为经典的关系型数据库,随着这些年大数据和非关系数据库的发展,在大量数据达到百万级数据量的情况下,使用非关系型数据库是可取的,因为它的读写速度是非常惊人的,但是在本系统中,我还是选择了更为稳定和经典的关系型数据库mysql,原因是首先本系统不需要这么大的数据量,其次数据库中的读写速度也在1s之中,本人通过优化数据库索引,在索引机制中innodb索引是经常被我使用到的,采用平时上课学到的btree索引思想来优化查询速度,在条件限制上我可以采用where的限制来对不同类型数据进行隔离和功能实现,通过筛选出不同的数据来达到不同的功能,这样下来依然是可以与非关系型数据库进行媲美的,而且关系型数据库的优点能够连表查询,分组查询等也是非关系型数据库是不能比及的。Mysql数据库是轻量级并且开源的数据库,他的社区版本是我这次使用的数据库版本,尤其是在对代码开放这个点上,是很多中小企业选择的目标,也是这次项目开发符合我经济可行性的标准。Mysql目前版本已经从2013年代mysql5.6版本到2023年的mysql8.1.0版本了,相比之下对本人感受最深的是mysql升级到mysql5.7版本,相比于mysql5.6它升级了支持json数据类型,这个类型支持了Springboot后端数据的json格式传输,更为方便前后端分离项目的开发,本次系统开发本人采用mysql8.0.12版本,它在日渐更新的技术方案中更为稳定,并且表现出更多的活力。数据库在物理层,表现层和逻辑层中有着不同的表现,在物理层中我更关心它的存贮大小,在逻辑层我更关注它的书写逻辑,一个好的书写逻辑可以让数据库管理更为方便快捷,下图2.1展示的就是MySQL的架构图。

图2.1 MySQL数据库架构图
2.3 SpringBoot框架
Springboot框架是Pivotal经过3年时间研发的一种新型适用于微服务的项目框架,该框架是轻量级支持多服务应用的系统框架结构,用户仅需配置项目的yml文件即可完成框架配置,其中采用aop切面编程思想将所需要的技术和响应代码IOC注入到项目启动中,再项目启动时可以优先扫描到系统中的依赖注解,对有注解的地方进行优先扫描和读取操作使得项目能够更好的配置和加载所需要的资源,Springboot框架比较以往的Spring框架家族来说更我简洁[5]。Springboot目前已经发展到4.0阶段但是最新的框架不一定代表着稳定和持久,项目框架的整体使用需要根据项目整体的组件配置,选择一个更为稳定和普遍实用的项目框架才是一个开发项目的首要选择,Springboot4.x版本比Springboot2.x版本主要升级了开箱即用和约定优于配置的思想,但是这个升级在整体的项目开发中没有更多的便利性,所以在框架选择中我们选择更为稳定的版本,并使用它来开发我的项目,下图2.2展示的就是java技术原理图。

图2.2 Java技术原理图
第三章 系统分析
3.1 可行性分析
通过对本微信小程序的外卖送餐实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。
3.1.1 技术可行性
本微信小程序的外卖送餐后端采用Springboot框架进行开发,是一种成熟的框架,开发有很多教程的,微信开发也有很多教程,并且网络上很多免费的教程。
因此,微信小程序的外卖送餐在开发技术上具有很高可行性,且开发人员掌握了一定的开发技术,所以此系统的开发技术具有可行性。
3.1.2 经济可行性
本微信小程序的外卖送餐采用的软件都是开源的,这样能够削减很多的精力和资源,降低开发成本。同时对计算机的配置要求也极低,即使是淘汰下来的计算机也能够满足需要,因此,本系统在经济上是完全具有可行性的,所以在经济上是十分可行的[6]。
3.1.3 操作可行性
本微信小程序的外卖送餐的界面简单易操作,用户只要平时有在用过电脑,都能进行访问和操作。本系统具有易操作、易管理、交互性好的特点,在操作上是非常简单的,因此在操作上具有很高的可行性。
综上所述,此系统开发目标已明确,在技术、经济和操作方面都具有很高的可行性,并且投入少、功能完善、管理方便,因此系统的开发是完全可行的。
3.2 需求分析
3.2.1 系统安全性
此微信小程序的外卖送餐要严格控制管理权限,具体要求如下:
(1) 要想对微信小程序的外卖送餐进行管理,首先要依靠用户名和密码在系统中登陆,无权限的用户不可以通过任何方式登录系统和对系统的任何信息和数据进行查看,这样可以保证系统的安全可靠性和准确性。
(2) 在具体实现中对不同的权限进行设定,不同权限的用户在系统中登陆后,不可以越级操作。
3.2.2 数据完整性
(1) 所有记录信息要保持全面,信息记录内容不可以是空。
(2) 各种数据间相互联系要保持正确。
(3) 相同数据在不同记录中要保持一致。
3.3 系统界面分析
目前,界面设计已经成为对软件质量进行评价的一条关键指标,一个好的用户界面可以使用户使用系统的信心和兴趣增加,从而使工作效率提高。微信小程序页面尽量简洁,让页面清爽,访问速度能提升上去,访问服务端接口的时候相应更快更迅捷。
1. 输出设计
输出是由电脑对输入的基本信息进行解决,生成高质量的有效信息,并使之具有一定的格式,提供给管理者使用,这是输出设计的主要责任和目标。
系统开发的过程与实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计。这是由于输出表格与使用者直接相联系,设计的目的应当是确保使用者可以很方便的使用输出表格,并且可以将各部门的有用信息及时的反映出来。输出设计的准绳是既要整体琢磨不同管理层的所有需要,又要简洁[7],不要提供给用户不需要的信息。
2. 输入设计
输入数据的收集和录入是比较麻烦的,需要非常多的人力和一定设备,而且经常出错。一旦输入系统的数据不正确,那么处理后的输出就会扩大这些错误,因此输入的数据的准确性对整个系统的性能起着决定性意义。
输入设计有以下几点原则:
(1) 输入量应尽量保持在能够满足处理要求的最低限度。输入量越少,错误率就会越少,数据的准备时间也越少。
(2) 应尽可能的使输入的准备以及输入的过程进行时比较方便,这样使错误的发生率降低。
(3) 应尽量早检查输入数据,以便使错误更正比较及时。
(4) 输入数据尽早地记录成其处理所需的形式,以防止数据由一种介质转移到另一种介质时需要转录而可能发生的错误[8]。
第四章 系统设计
4.1 系统架构设计
本系统后台采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4.1所示:

图4.1系统工作原理图
4.2 功能模块结构设计
设计的系统结构主要是为所有管理员、用户、商家、后勤人员、外卖员等提供的一些信息进行服务的。管理员功能有用户、商户、外卖员、后勤人员、菜品类型、菜品信息、菜品预定、外卖订单、接单信息、配送信息、取消订单、评价信息、公告信息、轮播图管理、个人资料等。商户功能包括菜品信息、菜品预定、外卖订单、接单信息、配送信息、取消订单、评价信息、个人资料等。后勤人员功能有用户、商户、外卖员、公告信息、个人资料等。用户功能有首页、菜品信息、公告信息、我的等。外卖员功能有外卖订单、接单信息、配送信息等功能。设计的系统功能结构图如下图4.2所示:

图4.2系统功能结构图
4.2.1登录流程
为了保证系统的安全性,要使用本系统对系统内信息进行管理,必须先登陆到系统中。其登录流程图如图4.3所示。

图4.3登录界面流程图
4.3 系统数据库设计
4.3.1数据库实体
概念设计的目标是设计出反映某个组织部门信息需求的数据库系统概念模式,数据库系统的概念模式独立于数据库系统的逻辑结构、独立于数据库管理系统(DBMS)、独立于计算机系统。
概念模式的设计方法是在需求分析的基础上,用概念数据模型(例如E-R模型)表示数据及数据之间的相互联系,设计出反映用户信息需求和处理需求的数据库系统概念模式。概念设计的目标是准确描述应用领域的信息模式,支持用户的各种应用,这样既容易转换为数据库系统逻辑模式,又容易为用户理解。数据库系统概念模式是面向现实世界的数据模型,不能直接用于数据库系统的实现。在此阶段,用户可以参与和评价数据库系统的设计,从而有利于保证数据库系统的设计与用户的需求相吻合[9]。在概念模式的设计中,E-R模型法是最常见的设计方法。本系统的E-R图数据表如下图所示:
(1) 菜品信息的实体属性图,菜品信息的实体属性图如下图4.4所示:

图4.4 菜品信息实体属性图
菜品信息包含了点击次数,上架时间,单价,所属店铺,菜品名称,菜品编号,菜品类型等字段,系统中可以对菜品信息进行编辑和整理,菜品信息数据库表可以见下表4.1所示:
表4.1菜品信息
|
字段名称 |
类型 |
长度 |
字段说明 |
|
id |
bigint |
|
主键 |
|
addtime |
timestamp |
|
创建时间 |
|
caipinbianhao |
varchar |
200 |
菜品编号 |
|
caipinmingcheng |
varchar |
200 |
菜品名称 |
|
shanghuming |
varchar |
200 |
所属店铺 |
|
caipinleixing |
varchar |
200 |
菜品类型 |
|
kouwei |
varchar |
200 |
口味 |
|
tupian |
longtext |
|
图片 |
|
danjia |
double |
|
单价 |
|
shuliang |
int |
|
数量 |
|
shangjiashijian |
date |
|
上架时间 |
|
caipinjieshao |
longtext |
|
菜品介绍 |
|
shanghubianhao |
varchar |
200 |
商户编号 |
|
clicktime |
datetime |
|
最近点击时间 |
|
clicknum |
int |
|
点击次数 |
|
storeupnum |
int |
|
收藏数 |
(2) 用户的实体信息包含性别,年龄,姓名账号,手机和头像等字段,在系统中管理员可以管理用户信息,用户的数据库表见下表4.2所示。
在用户实体图中拥有数据库表中所示的这些信息,用户信息实体属性图如图4.5所示。

图4.5 用户信息实体属性图
表4.2用户
|
字段名称 |
类型 |
长度 |
字段说明 |
|
id |
bigint |
|
主键 |
|
addtime |
timestamp |
|
创建时间 |
|
zhanghao |
varchar |
200 |
账号 |
|
mima |
varchar |
200 |
密码 |
|
xingming |
varchar |
200 |
姓名 |
|
nianling |
int |
|
年龄 |
|
xingbie |
varchar |
200 |
性别 |
|
shouji |
varchar |
200 |
手机 |
|
touxiang |
longtext |
|
头像 |
(3) 商户信息实体属性图如图4.6所示:

图4.6商户信息实体属性图
表4.6商户
|
字段名称 |
类型 |
长度 |
字段说明 |
|
id |
bigint |
|
主键 |
|
addtime |
timestamp |
|
创建时间 |
|
shanghubianhao |
varchar |
200 |
商户编号 |
|
mima |
varchar |
200 |
密码 |
|
shanghuming |
varchar |
200 |
商户名 |
|
fuzeren |
varchar |
200 |
负责人 |
|
nianling |
int |
|
年龄 |
|
xingbie |
varchar |
200 |
性别 |
|
shanghudianhua |
varchar |
200 |
商户电话 |
|
shanghudizhi |
varchar |
200 |
商户地址 |
|
touxiang |
longtext |
|
头像 |
(4) ER信息实体属性图如图4.7所示:

图4.7 ER信息实体属性图
第五章 系统详细实现
5.1 管理员模块的实现
5.1.1 菜品信息管理
管理员可以管理菜品信息,可以对菜品信息添加修改删除。具体界面的展示如图5.1所示。

图5.1 菜品信息界面
5.1.2 外卖订单管理
管理员可以订单配送进行查询修改,删除操作。具体界面如图5.2所示。

图5.2 外卖订单管理界面
5.1.3 配送信息管理
系统管理员可以对配送信息进行删除,查询操作。界面如下图5.3所示:

图5.3 配送信息管理界面
5.2 前端请求后端
5.2.1 前端请求后端代码说明
在这个 Vue 组件中,我们在 mounted 生命周期钩子中发送一个 GET 请求到 /api/data。将从后端收到的数据保存在组件的 message 数据属性中,这种情况下可以被模板使用。
其中 Vue.js 应用程序和 Spring Boot 应用程序需要运行,并且 Vue.js 应用程序能够访问到 Spring Boot 应用程序的 /api/data 路由[10]。这样可以保证将它们部署到同一个服务器上,或者配置服务器从而能使Vue.js 应用程序可以正确地发出跨域请求(CORS)。
实际的代码应用程序较为复杂,包括更复杂的 HTTP 请求和响应,处理错误,以及使用更复杂的 Vue.js 和 Spring Boot 功能,下面是前后端请求代码展示图。

图5.4 前端请求后端代码图
5.2.2 后端请求后端代码说明
在后端中import引入用户需要的jar包其中需要get的mapper包和restcontroller包这两个包主要是引用数据信息内容,保证前后端数据完整请求过程[11]。@注解是为了保证Spring框架的引入技术,通过getmapping来引入数据信息,在“api/data”路径下接收前台传递来的数据内容,后端接收代码图如下图所示
图5.5 后端接收代码
第六章 系统测试
6.1 概念和意义
测试的定义:程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为:
目的:发现程序的错误;
任务:通过在计算机上执行程序,暴露程序中潜在的错误。
另一个预测是相关的术语叫纠错(Debugging)。它的目的与任务可以规定为:
目的:定位和纠正错误;
任务:消除软件故障,保证程序的可靠运行。测试与纠错的关系,可以用图6-1的数据流图来说明。图中表明,每一次测试都要准备好若干必要的测试数据,与被测试程序一道送入计算机执行。通常把一次程序执行需要的测试数据,称为一个“测试用例(Test Case)。每一个测试用例产生一个相应的“测试结果”[12]。如果它与“期望结果”不想符合,便说明程序中存在错误,需要用纠错来改正。

图6.1测试与纠错信息流程
6.2 特性
(1) 挑剔性
测试是为了证明程序有错,而不是证明程序无错。因此,对于被测程序就是要“纯毛求疵”,就是要“鸡蛋里挑骨头”。
(2) 复杂性
测试仪程序则比较容易,这其实是一个误区。设计测试用力是一项需要细致和高度技巧的高能工作,稍有不慎就会顾此失彼,发生不应用得数[13]。
(3) 不彻底性
实际测试都是不彻底的,当然不能够保证测试后的程序不存在遗漏的错误。
(4) 经济性
通场这种测试称为“选择测试(Selective Testing)”。为了降低测试成本,选择测试用力是应注意遵守“经济性”的原则。
6.3 重要性
软件测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难[14]。
6.4 测试方法
首先我们来说界面测试,界面测试是为了使程序在不同的的操作平台上能够运行界面,并且能够保持原来的风格。我把完整程序拷贝到Windows 7环境下,似的程序运行正常,运行界面上的字体图片等设置都能够保持得非常好。不出现字体变形等情况!
其次进行功能测试。该系统测试采用的是单元测试,集成测试,完善性测试等多种方式进行测试。
经过测试,所有功能都能得以实现,没有任何变形。至此,在功能的测试上也已经比较圆满的完成了。
由于经验不足,写代码时出现了一些考虑不周的系统缺陷,写代码的时候会出现与设想不一致,比如说代码不规范导致接口与接口之间出现问题,功能与客户的要求不符合,这样导致产品不能过关,无法交付。所以产品在上线前必须反复测试,经过反复测试,修改,再测试,再修改,产品才能够不断完善。在整个系统测试中,根据需求文档和设计文档,逐一对功能进行检测并写好测试用例,有效避免残片缺陷,因为产品出现缺陷不仅影响功能,而且可以导致数据的不准确,导致产品质量的降低[15],经过测试,才能使得产品的稳定性和成熟度得到极大的提升,产品质量也才有保证。
6.5 功能测试
功能测试主要包括五项内容:适用性、准确性、可操作性、依从性、安全性。
本系统功能测试如表6.1所示:
表6.1 系统功能测试
|
测试内容 |
测试结果 |
|
适用性 |
好 |
|
准确性 |
好 |
|
可操作性 |
好 |
|
依从性 |
好 |
|
安全性 |
好 |
6.6 可用性测试
可用性测试用于检测系统的可操作性、可理解性、可学习性等方面内容。具体测试方面如表6.2所示。
表6.2 系统可用性测试
|
测试项 |
测试人员的评价 |
|
窗口移动、大小改变、关闭等操作是否正常 |
是 |
|
操作模块是否友好 |
是 |
|
模块、提示内容等文字描述是否正确 |
是 |
|
模块布局是否协调、合理 |
是 |
|
模块的状态是否正确(对选中项能否发生对应切换) |
是 |
|
鼠标、键盘操作是否支持 |
是 |
|
所需数据项是否正确显示 |
是 |
|
操作流程是否合理 |
是 |
|
是否提供帮助信息 |
是 |
6.7 性能测试
性能测试主要通过模拟系统运行环境,测试系统性能是否符合客户需求。性能测试的重要技术指标就是:系统运行速度、网络响应时间和支持并发节点数。
(1) 系统运行速度:通过在不同计算机上试运行本系统,没有发现有任何迟滞、停顿现象。
(2) 网络响应时间:网络响应时间主要包括网络最小响应时间、平均响应时间、最大响应时间三个参数。经过测试,在网络运营良好状态下,NBA局域网内响应时间三参数为:1/2/6s,NBA外网响应时间三参数为3/7/12s,符合客户需求,属于用户心理可承受范围。
(3) 支持并发节点数:经过模拟环境测试,本系统在并发节点达46个时,网络运营速度会发生较大波动,延迟时间10秒左右,符合客户需求。
6.8 测试分析
本网站设计时借鉴了国内外优秀网站的优点,从界面到系统设计都保证了用户能够方便操作。系统的主要特点和优点归纳如下:
(1) 本系统用的移置性和针对性都比较高,因为针对性高可以提供更好的服务而移置性可以在多个系统上运行,更给客户带来了极大的方便。
(2) 该完整内容全面,管理方便可以及时的全面的处理各种错误,异常,这样避免了很多因用户的马虎操作而出现的失误,其操作方便,用户界面友好,能够上网的人都可以很好的进行操作。
6.9 测试结果分析
经过对上述测试结果分析,本系统符合用户需求。所有基本功能点实现,操作简单,操作流程简单合理,产品运行性能良好,是一款值得推广的微信小程序的外卖送餐。
结论
在这次毕业设计中遇到的最困难的方面就是在数据库方面的知识,在刚开始进行毕业设计的时候感觉十分困难,根本不知道该从何处下手,但不断的坚持,设计最终被完成。无论多么的困难,只要能够坚持下来,善于去找到好的材料来研究,在研究中充分利用资源,没有困难是不会被成功解决的。
在开发系统的过程中,本人运用到了微信小程序开发技术和平时学习中所了解的一些技术,通过实现这些技术,大大提高了整个系统的性能。在论文中这些技术都做了比较详细的介绍。本系统还存在很多缺点和不完善的地方,例如有些细节上做的还不够完善,有些功能模块还需要加强。在今后的日子里,能够对这些不足进行改善。
通过这次最终的毕业设计,平时所学到的知识不仅融合了,而且获得了许多计算机知识。在整个设计过程中明白了许多东西,也培养独立工作能力,树立信心,对自己能力的工作能力,我相信以后会学习和工作生活中有至关重要的作用。同时也大大提高了手的能力,使其难以充分体会探索的乐趣和成功的创作过程,设计过程中汲取的东西,是一笔宝贵的财富。
回顾过去做毕业设计的整个过程,充满了付出和收获,但是当你看到成果的时候的感觉,是一种难以用言语表达的喜悦之感这些在毕业设计过程中学习到的东西将会使我终身受益!
最后,感谢指导老师的关心和指导,在我毕业设计的整个过程中,他给与了我很多的帮助和讲解,在导师的帮助下我的毕业设计才能如此顺利的完成。
致谢语
经过几个多月的不断学习,我的毕业设计终于如期完成。此次毕业设计是对我们日常所学计算机理论知识的一次综合性评测,也是将理论应用到实践的一项考察。
首先我要感谢此次指导我的老师,是他的及时纠正我在设计当中出现的问题,使得我的设计高质量完成。指导老师在我本次微信小程序的外卖送餐的开发过程中,为程序、框架的设计、代码等方面以及论文设计提供了很多宝贵的意见,并且为我推荐了许多相关的资料,他的指导和建议使我受益匪浅,通过老师的耐心辅导和指点,我的论文顺利完成,在此,我表示深刻的感谢。
我也要感谢帮助过我的同学们,和我一起探讨论文的不足,给我的设计提出宝贵的建议,在这次设计中他们的帮助使得我的设计更加完善更加具体。
最后,我也要感谢学校为我们提供了一个良好的学校环境。祝愿学校的领导教师以及和我一起奋斗的同学们工作顺利,事业有成,也要祝愿学校的前景更加辉煌。
参考文献
[1] 潘泰萍.外卖送餐员群体劳动权益保障与工会作为[J].社会与公益,2024,(11):135-137.
[2] 唐明慧,陈建新.外卖送餐平台服务设计研究[J].设计,2024,37(20):41-45.DOI:10.20055/j.cnki.1003-0069.002152.
[3] 张晓.畅通外卖送餐最后一百米[N].经济日报,2024-08-23(011). DOI:10.28425/n.cnki.njjrb.2024.005977.
[4] 成都市外卖送餐员群体党建工作的探索与实践[J].中国市场监管研究,2023,(11):40-43+80.
[5] 王荣珍,杨嵩棱.饮食配送(外卖)行业发展的问题与地方立法回应[J].法治论坛,2023,(01):179-196.
[6] 郑佳宁.混合型服务平台的法律责任承担——以外卖送餐平台为蓝本[J].社会科学辑刊,2023,(03):36-45.
[7] 孙宇.维护外卖送餐员劳动保障权益[J].北京观察,2023,(01):68.
[8] 杨俊.在外卖配送站点的一天[J].群众,2022,(14):59-60.
[9] 陈雪皎.外卖平台劳动关系认定的法律问题研究[D].云南大学,2020.DOI:10.27456/d.cnki.gyndu.2020.002738.
[10] ResearchAndMarkets.com Offers Report: Success Case Study: Deliveroo – Making Take-Away Food Delivery Smart and Connected[J].Manufacturing Close – Up,2023,
[11] ResearchAndMarkets.com Adds New Report: Success Case Study: Deliveroo – Making Take-Away Food Delivery Smart and Connected[J].Food and Beverage Close – Up,2023,
[12] 李敏儿.餐饮企业外卖订餐系统的设计与实现[D].华南理工大学,2022.
[13] 蒋小涵.校园外卖网上订餐系统的设计与实现[J].信息系统工程,2024,(04):29.
[14] 杨玲蕴.基于情境法的外卖送餐应用系统设计与研究[D].上海交通大学,2023.
[15] 王英瀚.基于移动终端的开放型外卖订餐系统的设计[J].才智,2022,(31):73.
核心代码展示
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
项目推荐
【计算机毕业设计】各项技术选题汇总
【计算机毕业设计】基于Springboot的网上购物商城销售系统
【计算机毕业设计】开题报告模板2
【计算机毕业设计】任务书案例2
【网站项目】基于springboot的在线考试系统
【网站项目】基于springboot的4S店车辆管理系统
【软件设计】基于python的高校资产管理系统
【网站项目】python009基于推荐算法的电影推荐系统
【网站项目】基于Springcloud的分布式架构网上商城
⬇️文章末尾可以获取联系方式,需要源码,高清图片,演示视频可以联系(不开源)⬇️
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡



