摘要
本项目构建了一个基于SpringBoot、Vue和MyBatis的校园外卖点餐系统,旨在提升高校师生点餐与配送效率,优化校园餐饮服务体验。随着校园生活节奏加快,传统点餐方式已难以满足高效便捷的需求,系统的开发具有重要的现实意义。平台融合了前后端分离的架构设计,操作流畅,界面简洁,提升了用户交互体验。系统划分为四类用户角色,分别为管理员、普通用户、商家用户与骑手用户,各角色依据权限实现差异化功能管理。管理员可对用户、配送、签收、公告、优惠活动、资讯及商城内容进行全面管理;普通用户可浏览资讯、参与活动、下单购物、查看配送签收状态并进行评价反馈;商家用户聚焦于商品与订单管理及配送流程;骑手用户则专注于订单配送与签收确认。系统功能结构清晰,覆盖校园外卖流程全链条,有效提升点餐配送效率,推动智慧校园建设。
关键词:校园外卖点餐系统;SpringBoot;Vue
This project constructs a campus food delivery ordering system based on SpringBoot, Vue, and MyBatis, aiming to improve the ordering and delivery efficiency for university staff and students, and optimize the campus dining service experience. As the pace of campus life accelerates, traditional ordering methods are no longer sufficient to meet the demand for efficiency and convenience. The development of this system is of significant practical importance. The platform integrates a front-end and back-end separation architecture, ensuring smooth operations and a simple interface, which enhances user interaction. The system is divided into four user roles: administrator, regular user, merchant user, and delivery rider user, with each role having differentiated functional management based on permissions. Administrators can comprehensively manage users, delivery, receipt, announcements, promotions, news, and the mall content; regular users can browse news, participate in activities, place orders, check delivery and receipt status, and provide feedback; merchant users focus on product and order management, as well as the delivery process; delivery rider users concentrate on order delivery and receipt confirmation. The system's functional structure is clear, covering the entire campus food delivery process, effectively improving ordering and delivery efficiency, and promoting the development of smart campuses.
Key words: Campus food delivery ordering system; SpringBoot;Vue
目录
随着移动互联网的迅猛发展,线上购物和外卖行业的兴起为传统商业模式带来了巨大变革。尤其在高校校园内,学生活动频繁,生活节奏加快,传统的校园餐饮模式逐渐不能满足师生对便捷、高效、个性化的需求。外卖服务作为一种新型的商业模式,已经在校园生活中获得广泛应用。高校学生因繁忙的学习和生活,经常选择外卖平台进行订餐。然而,当前许多校园外卖系统存在操作繁琐、功能不完善以及用户体验差等问题,无法有效满足师生的多样化需求。因此,构建一个集成化、高效便捷、具有良好用户体验的校园外卖点餐系统,已成为提升校园餐饮服务质量和效率的重要课题。
在现代信息技术飞速发展的背景下,结合SpringBoot、Vue、MyBatis等先进技术框架开发校园外卖系统具有重要的实践意义。通过创新的系统设计与功能集成,不仅能提高校园外卖服务的运作效率,减少师生等待时间,还能提升校园餐饮的管理水平,为商家和用户带来更好的体验。该系统的研发不仅为高校外卖服务提供了一个智能化管理平台,也为外卖行业在校园领域的数字化转型提供了可借鉴的模式。通过精细化的用户角色划分与多样化的功能设计,系统能够更好地满足不同用户群体的需求,为校园生活带来更多便捷。最终,推动智慧校园建设,提升高校管理的现代化水平,同时也促进了餐饮行业的创新与发展。
随着移动互联网和智能手机的普及,国内的外卖行业发展迅速,尤其在高校领域,外卖服务逐渐成为学生们日常生活中不可或缺的一部分。近年来,许多高校纷纷引入外卖平台,通过线上点餐、配送等方式解决学生餐饮需求,带来了便捷的用餐选择。然而,当前国内大多数校园外卖系统仍存在一定的瓶颈问题,如界面不友好、系统稳定性差、订单处理效率低等。部分高校采用的外卖平台与社会化的外卖平台并无明显区别,缺乏校园特色和个性化功能,难以满足特定的校园需求。尽管一些学校尝试自主开发校园外卖系统,但多存在开发周期长、维护难度大、功能单一等问题。近年来,随着云计算、大数据和物联网技术的成熟,国内一些学者和企业已经开始探索基于这些技术的智能校园餐饮解决方案,利用智能化管理提高餐饮服务的效率。例如,通过大数据分析学生消费习惯、优化配送路线、提升菜品推荐系统的智能化水平等方式,改善校园外卖系统的用户体验和运营效率。总体来看,国内在校园外卖系统的研究与开发上虽然取得了一定进展,但相较于成熟的外卖平台,仍存在技术创新和个性化服务不足的问题。
国外的校园外卖系统起步较早,尤其是在欧美国家,许多高校早已引入了高效便捷的外卖服务平台。国外一些先进的高校外卖系统通过智能化、大数据和人工智能等技术的深度融合,提供个性化的餐饮服务。以美国和欧洲的一些知名大学为例,许多校园外卖平台已经实现了高度智能化,包括餐饮推荐、精准配送、订单管理等功能。部分高校甚至利用人工智能技术优化配送路线,降低配送成本,缩短配送时间,提升用户满意度。同时,外卖系统不仅仅局限于食物点餐,还可以涵盖校园周边服务,形成综合性的生活服务平台。在技术层面,国外研究者和企业在云平台架构、分布式系统和微服务等方面积累了丰富经验,推动了校园外卖系统的智能化和高效化。与国内相比,国外的校园外卖系统更加注重用户的个性化需求和大数据分析的应用,能够通过精准的用户画像和消费趋势预测,为用户提供更加精准的推荐和定制化服务。然而,尽管国外外卖系统发展较为成熟,但在校园特色的细化和服务个性化方面,依然存在需要进一步提升的空间。
本研究主要聚焦于基于SpringBoot、Vue和MyBatis技术框架构建的校园外卖点餐系统,旨在为高校师生提供便捷高效的餐饮服务。首先,系统设计了多用户角色管理功能,包括管理员、普通用户、商家用户和骑手用户,每个角色拥有不同的操作权限,确保系统的安全性与灵活性。管理员负责用户管理、配送信息管理、签收信息管理、优惠活动管理、系统设置等模块,确保系统的稳定运行与信息更新;普通用户则能够浏览外卖资讯、参与优惠活动、下单、查看个人订单以及配送进度,提供完整的消费体验;商家用户主要负责餐饮菜品管理、订单处理、配送信息管理等,确保商家能够高效管理订单和配送任务;骑手用户则集中在配送任务的接单和签收管理上,优化配送过程,确保订单按时送达。此外,系统还具备商城管理、优惠活动、公告通知、资讯发布等功能模块,使得整个系统功能更为全面,能够满足不同用户群体的需求。在系统的技术实现上,SpringBoot框架用于后端开发,确保系统稳定、高效的运行;Vue框架则用于前端界面的构建,提升用户体验;MyBatis作为持久层框架,优化数据存储与查询操作。通过本研究,旨在提高校园外卖服务的运作效率,降低管理成本,同时提升用户体验,推动智慧校园建设,为校园餐饮行业的数字化转型提供借鉴和参考。
Java语言是一种广泛使用的高级编程语言,具有平台无关性、面向对象特性和丰富的标准库。Java通过Java虚拟机(JVM)实现跨平台运行,开发者可以编写一次代码,在任何支持JVM的环境中执行[1]。Java的面向对象特性使得代码复用和模块化变得更加容易,促进了软件的维护和扩展。Java支持多线程编程,允许开发者在同一程序中同时执行多个任务,提升了应用程序的性能。
Java语言的语法结构简洁且易于理解,吸引了大量开发者。Java的标准库包含数据结构、输入输出处理、网络编程等众多功能模块。这使得开发者在构建应用程序时能够高效利用已有工具,减少重复劳动。Java广泛应用于企业级应用、移动应用、Web开发和大数据处理等领域[2]。
-
- Mybatis 技术
MyBatis 是一个流行的开源持久层框架,能够简化 Java 应用程序与数据库之间的交互。与传统的 JDBC 操作相比,MyBatis 允许开发者通过映射 XML 文件或注解的方式自定义 SQL 语句,使得开发者能够对数据库操作进行更精确的控制。MyBatis 采用 SQL 映射技术,可以支持一对一、一对多、多对多等复杂数据映射关系,同时还支持动态 SQL 和条件判断,从而能够灵活地应对多变的业务需求。此外,MyBatis 的配置文件简洁,易于维护,减少了开发中的重复工作,提升了开发效率。
MyBatis 在性能优化方面也具有显著优势,尤其是它提供的缓存机制,可以有效减少数据库访问次数,提高系统的整体响应速度。许多开发者在构建需要高度定制化查询的应用程序时,都会选择 MyBatis 作为数据持久化的解决方案。尤其在需要处理复杂查询和多表联合的场景中,MyBatis 的灵活性和高效性使其成为企业级应用系统的理想选择[3]。
SpringBoot框架是基于Spring框架的开源项目,简化Java应用程序的开发过程。SpringBoot通过约定优于配置的理念,减少了传统Spring应用的繁琐配置,开发者可以快速搭建和部署应用程序。框架提供了一系列默认配置,支持自动化配置,简化了应用启动的复杂性[4]。SpringBoot内置了嵌入式Web服务器,使得开发者能够独立运行Java应用,无需外部容器。
SpringBoot支持微服务架构,开发者可以轻松创建和管理多个微服务。框架集成了丰富的功能模块,包括安全、数据访问和消息中间件等,支持RESTful API和JSON数据格式的处理[5]。SpringBoot还提供了强大的监控和管理功能,允许开发者实时监控应用的健康状态和性能指标。借助SpringBoot,开发者能够高效构建和维护现代企业级应用,满足复杂业务需求。
Vue是一种渐进式JavaScript框架,专注于构建用户界面。Vue采用组件化的开发模式,允许开发者将应用程序拆分为独立的、可重用的组件,从而提高了开发效率和代码的可维护性[6]。框架的核心库专注于视图层,支持数据绑定和DOM操作,提供了简洁的API。Vue的虚拟DOM机制提升了应用的性能,减少了实际DOM操作的次数。
Vue支持双向数据绑定,能够自动更新视图与模型之间的变化。开发者可以通过Vue的指令系统,简化数据展示和事件处理。Vue还支持路由管理和状态管理,使得开发复杂单页面应用变得更加容易[7]。借助Vue的生态系统,开发者能够使用多种工具和库来扩展功能,满足不同的业务需求。Vue在前端开发中逐渐成为主流选择,受到广泛关注和应用。
MySQL是一种开源关系型数据库管理系统,广泛应用于Web应用和企业级数据存储。MySQL支持结构化查询语言,允许开发者通过标准语句进行数据的创建、读取、更新和删除操作[8]。数据库通过表格形式组织数据,支持数据完整性和约束条件的定义。MySQL的存储引擎机制使得用户可以根据具体需求选择不同的存储引擎,以优化性能和功能。
MySQL具有高性能和可扩展性,支持大规模数据存储和高并发访问。系统提供了丰富的用户权限管理和数据加密安全特性。MySQL能够与多种编程语言和框架兼容,广泛应用于内容管理系统、电子商务平台和数据分析等各种场景。
在校园外卖点餐系统的设计中,用户需求主要体现在便捷性、效率和个性化服务三个方面。首先,普通用户(学生及教职工)期望能够通过简单直观的操作完成外卖点餐,系统应具备快速浏览菜单、查看餐品详情、下单支付等功能,且具备智能推荐机制,能够根据用户的历史订单和偏好进行个性化推荐。此外,用户对订单的配送状态、签收信息的追踪有较高需求,希望能够实时了解配送进度,确保食物按时送达。商家用户则关注订单的管理和配送过程的优化,他们需要一个便捷的后台系统来管理菜品、订单、用户评论等,便于调整菜品信息和促销活动。骑手用户则需要一个简单明了的界面,用于接单、查看配送路线和订单签收信息。对于管理员而言,需要一个高效的管理平台,能够处理各类用户管理、配送信息、优惠活动、系统设置等,保证系统的稳定运行和信息的及时更新。总之,用户需求集中在系统的易用性、实时性、个性化和高效管理上,这些需求构成了系统功能开发的基础。
在功能需求方面,系统需要满足不同用户角色的需求,包括管理员、普通用户、商家用户和骑手用户。对于管理员,系统需要提供用户管理功能,能够对不同类型的用户(普通用户、商家、骑手)进行管理和权限分配;配送信息管理,包括查看订单配送进度和分配配送任务;签收信息管理,确保配送订单的签收和反馈;优惠活动管理,允许管理员发布和管理系统的促销活动;以及商城管理,包括管理外卖资讯、公告、轮播图等内容。普通用户需要能够浏览餐饮菜品、查看外卖资讯、参与优惠活动、下单支付、查看订单和配送状态,且能够提供菜品的评价与反馈。商家用户需要能够管理菜品、更新库存、处理订单、设置促销活动等,并及时更新配送信息。骑手用户则需要接单、查看配送路线、确认订单签收等功能。总的来说,系统需要具备完整的点餐、支付、配送、评价和管理功能,以确保整个外卖流程的高效与顺畅。系统功能结构图如图3-1所示。

图3-1系统功能结构图
系统采用当前主流的SpringBoot和Vue.js开发框架,具备良好的技术基础。这些技术已被广泛应用于多种商业项目,具备成熟的文档和社区支持,便于开发获取必要的资源与解决方案。个人拥有丰富的相关技术经验,能够有效应对潜在技术挑战。所需的软硬件资源易于获取,且具备良好的兼容性,降低了技术实现的难度。
系统具备直观友好的用户界面,支持简便的导航和功能访问,极大地提升了用户的使用体验。系统提供了自定义的工作流程和角色权限管理,使不同层级的用户能够快速上手,完成各自的任务。。
系统所使用的软件为开源技术,降低了使用费用,同时硬件成本较低,使得整体初始投入相对合理,具备较高性价比。因此,系统在经济上是完全可行的。
- 系统设计
- 系统设计流程
- 用户登录流程
- 系统设计流程
用户输入用户名和密码后,系统先检查输入是否为空,再验证用户名是否存在,若存在则通过用户名获取密码并校验。若密码正确则登录成功,否则提示密码错误。若用户名不存在或无法登录,提示用户操作无效。如图4-1所示。

图4-1登录流程图
管理员可以添加信息,用户添加可以自己权限内的信息,输入信息后,要想利用这个软件来进行系统的安全管理,首先需要登录到该软件中。添加信息流程如图4-2所示。

图4-2添加信息流程图
用户首先选择需要修改的记录,输入修改后的数据,系统判断输入数据是否合法。若数据不合法,提示重新输入;若数据合法,则将修改后的数据写入数据库,完成操作后流程结束。修改信息流程图如图4-3所示。

图4-3修改信息流程图
用户选择需要删除的记录后,系统判断是否确认删除。若未确认,返回选择环节;若确认删除,则更新数据库,删除对应记录,完成操作后流程结束。删除信息流程图如图4-4所示。

图4-4删除信息流程图
数据库概念模型是数据库设计的一个阶段,它描述了数据库中数据的逻辑结构和之间的关系,而不关注具体的实现细节[9]。概念模型通常用于数据库设计的初期阶段,以帮助开发人员和用户理解数据库中存储的数据以及数据之间的关系。
数据库概念模型通常采用高层次的概念来描述数据,常见的概念模型包括实体-关系模型(Entity-Relationship Model,ERM)、面向对象模型(Object-Oriented Model)等。在概念模型中,数据被抽象为实体(Entity)和实体之间的关系(Relationship),并且定义了实体的属性(Attribute),通常以E-R图来表达。
普通用户实体属性图如图4-5所示。

图4-5普通用户实体图
配送信息管理实体属性图如图4-6所示。

图4-6配送信息管理实体图
商城管理实体属性图如图4-7所示。

图4-7商城管理实体图
签收信息管理实体属性图如图4-8所示。

图4-8签收信息管理实体图
表 4-1-access_token(登陆访问时长)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | 是 | 是 | 临时访问牌ID | |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-address(收货地址)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | address_id | int | 是 | 是 | 收货地址 | |
| 2 | name | varchar | 32 | 否 | 否 | 姓名 |
| 3 | phone | varchar | 13 | 否 | 否 | 手机 |
| 4 | postcode | varchar | 8 | 否 | 否 | 邮编 |
| 5 | address | varchar | 255 | 是 | 否 | 地址 |
| 6 | user_id | mediumint | 是 | 否 | 用户ID | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | default | tinyint | 是 | 否 | 默认判断 |
表 4-3-article(文章)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | article_id | mediumint | 是 | 是 | 文章id | |
| 2 | title | varchar | 125 | 是 | 是 | 标题 |
| 3 | type | varchar | 64 | 是 | 否 | 文章分类 |
| 4 | hits | int | 是 | 否 | 点击数 | |
| 5 | praise_len | int | 是 | 否 | 点赞数 | |
| 6 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 7 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 8 | source | varchar | 255 | 否 | 否 | 来源 |
| 9 | url | varchar | 255 | 否 | 否 | 来源地址 |
| 10 | tag | varchar | 255 | 否 | 否 | 标签 |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img | varchar | 255 | 否 | 否 | 封面图 |
| 13 | description | text | 65535 | 否 | 否 | 文章描述 |
表 4-4-article_type(文章分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | smallint | 是 | 是 | 分类ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 分类名称 |
| 4 | father_id | smallint | 是 | 否 | 上级分类ID | |
| 5 | description | varchar | 255 | 否 | 否 | 描述 |
| 6 | icon | text | 65535 | 否 | 否 | 分类图标 |
| 7 | url | varchar | 255 | 否 | 否 | 外链地址 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-auth(用户权限管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | 是 | 是 | 授权ID | |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | 是 | 否 | 是否可增加 | |
| 12 | del | tinyint | 是 | 否 | 是否可删除 | |
| 13 | set | tinyint | 是 | 否 | 是否可修改 | |
| 14 | get | tinyint | 是 | 否 | 是否可查看 | |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-6-business_user(商家用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | business_user_id | int | 是 | 是 | 商家用户ID | |
| 2 | business_name | varchar | 64 | 是 | 否 | 商家姓名 |
| 3 | business_gender | varchar | 64 | 是 | 否 | 商家性别 |
| 4 | mobile_phone_number | varchar | 16 | 是 | 是 | 手机号码 |
| 5 | store_location | varchar | 64 | 否 | 否 | 店铺位置 |
| 6 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 7 | user_id | int | 是 | 否 | 用户ID | |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-7-cart(购物车)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | cart_id | int | 是 | 是 | 购物车ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | img | varchar | 255 | 是 | 否 | 图片 |
| 4 | user_id | int | 是 | 否 | 用户ID | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | state | int | 是 | 否 | 状态:使用中,已失效 | |
| 8 | price | double | 是 | 否 | 单价 | |
| 9 | price_ago | double | 是 | 否 | 原价 | |
| 10 | price_count | double | 是 | 否 | 总价 | |
| 11 | num | int | 是 | 否 | 数量 | |
| 12 | goods_id | mediumint | 是 | 是 | 商品id | |
| 13 | type | varchar | 64 | 是 | 否 | 商品分类 |
| 14 | description | varchar | 255 | 否 | 否 | 描述 |
表 4-8-catering_dishes(餐饮菜品)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | catering_dishes_id | int | 是 | 是 | 餐饮菜品ID | |
| 2 | business_user | int | 否 | 否 | 商家用户 | |
| 3 | business_name | varchar | 64 | 否 | 否 | 商家姓名 |
| 4 | store_location | varchar | 64 | 否 | 否 | 店铺位置 |
| 5 | dishes_introduction | text | 65535 | 否 | 否 | 菜品简介 |
| 6 | hits | int | 是 | 否 | 点击数 | |
| 7 | collect_len | int | 是 | 否 | 收藏数 | |
| 8 | cart_title | varchar | 125 | 否 | 否 | 标题 |
| 9 | cart_img | text | 65535 | 否 | 否 | 封面图 |
| 10 | cart_description | varchar | 255 | 否 | 否 | 描述 |
| 11 | cart_price_ago | double | 是 | 否 | 原价 | |
| 12 | cart_price | double | 是 | 否 | 卖价 | |
| 13 | cart_inventory | int | 是 | 否 | 商品库存 | |
| 14 | cart_type | varchar | 64 | 是 | 否 | 商品分类 |
| 15 | cart_content | longtext | 4294967295 | 否 | 否 | 正文 |
| 16 | cart_img_1 | text | 65535 | 否 | 否 | 主图1 |
| 17 | cart_img_2 | text | 65535 | 否 | 否 | 主图2 |
| 18 | cart_img_3 | text | 65535 | 否 | 否 | 主图3 |
| 19 | cart_img_4 | text | 65535 | 否 | 否 | 主图4 |
| 20 | cart_img_5 | text | 65535 | 否 | 否 | 主图5 |
| 21 | create_time | datetime | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-9-code_token(验证码)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | 是 | 是 | 验证码ID | |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-10-collect(收藏)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | collect_id | int | 是 | 是 | 收藏ID | |
| 2 | user_id | int | 是 | 是 | 收藏人ID | |
| 3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 5 | source_id | int | 是 | 否 | 来源ID | |
| 6 | title | varchar | 255 | 否 | 否 | 标题 |
| 7 | img | varchar | 255 | 否 | 否 | 封面 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-11-comment(评论)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | comment_id | int | 是 | 是 | 评论ID | |
| 2 | user_id | int | 是 | 是 | 评论人ID | |
| 3 | reply_to_id | int | 是 | 否 | 回复评论ID | |
| 4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
| 5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
| 6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 11 | source_id | int | 是 | 否 | 来源ID |
表 4-12-distribution_information(配送信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | distribution_information_id | int | 是 | 是 | 配送信息ID | |
| 2 | order_number | varchar | 64 | 否 | 否 | 订单编号 |
| 3 | order_time | datetime | 否 | 否 | 下单时间 | |
| 4 | commodity_information | varchar | 64 | 否 | 否 | 商品信息 |
| 5 | purchase_quantity | double | 否 | 否 | 购买数量 | |
| 6 | total_price_of_goods | double | 否 | 否 | 商品总价 | |
| 7 | consignee | varchar | 64 | 否 | 否 | 收货人 |
| 8 | receiving_address | varchar | 64 | 否 | 否 | 收货地址 |
| 9 | distribution_remarks | text | 65535 | 否 | 否 | 配送备注 |
| 10 | business_user | int | 否 | 否 | 商家用户 | |
| 11 | order_user | int | 否 | 否 | 下单用户 | |
| 12 | rider_user | int | 否 | 否 | 骑手用户 | |
| 13 | delivery_status | varchar | 64 | 否 | 否 | 配送状态 |
| 14 | sign_in_information_limit_times | int | 是 | 否 | 签收限制次数 | |
| 15 | create_time | datetime | 是 | 否 | 创建时间 | |
| 16 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-13-goods(商品信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | goods_id | mediumint | 是 | 是 | 产品ID | |
| 2 | title | varchar | 125 | 否 | 否 | 标题 |
| 3 | img | text | 65535 | 否 | 否 | 封面图:用于显示于产品列表页 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | price_ago | double | 是 | 否 | 原价 | |
| 6 | price | double | 是 | 否 | 卖价 | |
| 7 | sales | int | 是 | 否 | 销量 | |
| 8 | inventory | int | 是 | 否 | 商品库存 | |
| 9 | type | varchar | 64 | 是 | 否 | 商品分类 |
| 10 | hits | int | 是 | 否 | 点击量 | |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img_1 | text | 65535 | 否 | 否 | 主图1 |
| 13 | img_2 | text | 65535 | 否 | 否 | 主图2 |
| 14 | img_3 | text | 65535 | 否 | 否 | 主图3 |
| 15 | img_4 | text | 65535 | 否 | 否 | 主图4 |
| 16 | img_5 | text | 65535 | 否 | 否 | 主图5 |
| 17 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 18 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 19 | customize_field | text | 65535 | 否 | 否 | 自定义字段 |
| 20 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 21 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 22 | source_id | int | 是 | 否 | 来源ID | |
| 23 | user_id | int | 否 | 否 | 添加人 |
表 4-14-goods_type(商品类型)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | int | 是 | 是 | 商品分类ID | |
| 2 | father_id | smallint | 是 | 否 | 上级分类ID | |
| 3 | name | varchar | 255 | 否 | 否 | 商品名称 |
| 4 | desc | varchar | 255 | 否 | 否 | 描述 |
| 5 | icon | varchar | 255 | 否 | 否 | 图标 |
| 6 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 7 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-15-hits(用户点击)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 否 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID |
表 4-16-logistics_delivery(物流配送)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | logistics_delivery_id | int | 是 | 是 | 物流配送ID | |
| 2 | order_number | varchar | 64 | 否 | 否 | 订单号 |
| 3 | product_name | varchar | 64 | 否 | 否 | 商品名称 |
| 4 | purchase_quantity | varchar | 64 | 否 | 否 | 购买数量 |
| 5 | total_transaction_amount | double | 否 | 否 | 交易总额 | |
| 6 | the_date_of_issuance | date | 否 | 否 | 发货日期 | |
| 7 | delivery_number | varchar | 30 | 否 | 否 | 配送订单 |
| 8 | ordinary_users | int | 否 | 否 | 普通用户 | |
| 9 | shipping_address | varchar | 64 | 否 | 否 | 收货地址 |
| 10 | delivery_status | varchar | 64 | 否 | 否 | 配送状态 |
| 11 | signing_status | varchar | 64 | 否 | 否 | 签收状态 |
| 12 | recommend | int | 是 | 否 | 智能推荐 | |
| 13 | contact_name | varchar | 255 | 否 | 否 | 联系人名字 |
| 14 | merchant_id | int | 否 | 否 | 商家id | |
| 15 | create_time | datetime | 是 | 否 | 创建时间 | |
| 16 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-17-notice(公告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notice_id | mediumint | 是 | 是 | 公告ID | |
| 2 | title | varchar | 125 | 是 | 否 | 标题 |
| 3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 4 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-18-order(订单)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | order_id | int | 是 | 是 | 订单ID | |
| 2 | order_number | varchar | 64 | 否 | 否 | 订单号 |
| 3 | goods_id | mediumint | 是 | 是 | 商品ID | |
| 4 | title | varchar | 255 | 否 | 否 | 商品标题 |
| 5 | img | varchar | 255 | 否 | 否 | 商品图片 |
| 6 | price | double | 是 | 否 | 价格 | |
| 7 | price_ago | double | 是 | 否 | 原价 | |
| 8 | num | int | 是 | 否 | 数量 | |
| 9 | price_count | double | 是 | 否 | 总价 | |
| 10 | norms | varchar | 255 | 否 | 否 | 规格 |
| 11 | type | varchar | 64 | 是 | 否 | 商品分类 |
| 12 | contact_name | varchar | 32 | 否 | 否 | 联系人姓名 |
| 13 | contact_email | varchar | 125 | 否 | 否 | 联系人邮箱 |
| 14 | contact_phone | varchar | 11 | 否 | 否 | 联系人手机 |
| 15 | contact_address | varchar | 255 | 否 | 否 | 收件地址 |
| 16 | postal_code | varchar | 9 | 否 | 否 | 邮政编码 |
| 17 | user_id | int | 是 | 否 | 买家ID | |
| 18 | merchant_id | mediumint | 是 | 否 | 商家ID | |
| 19 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 20 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 21 | description | varchar | 255 | 否 | 否 | 描述 |
| 22 | state | varchar | 16 | 是 | 否 | 订单状态:待付款,待发货,待签收,已签收,待退款,已退款,已拒绝,已完成 |
| 23 | remark | text | 65535 | 否 | 否 | 订单备注 |
| 24 | delivery_state | varchar | 16 | 否 | 否 | 发货状态:未配送,已配送 |
| 25 | vip_discount | double | 否 | 否 | 折扣 |
表 4-19-ordinary_user(普通用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | ordinary_user_id | int | 是 | 是 | 普通用户ID | |
| 2 | user_name | varchar | 64 | 是 | 否 | 用户姓名 |
| 3 | user_gender | varchar | 64 | 否 | 否 | 用户性别 |
| 4 | contact_number | varchar | 16 | 是 | 是 | 联系号码 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-20-praise(点赞)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | praise_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 是 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | status | tinyint | 是 | 否 | 点赞状态:1为点赞,0已取消 |
表 4-21-preferential_activities(优惠活动)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | preferential_activities_id | int | 是 | 是 | 优惠活动ID | |
| 2 | activity_title | varchar | 64 | 是 | 否 | 活动标题 |
| 3 | business_user | int | 否 | 否 | 商家用户 | |
| 4 | activity_type | varchar | 64 | 是 | 否 | 活动类型 |
| 5 | activity_pictures | varchar | 255 | 否 | 否 | 活动图片 |
| 6 | deadline | date | 否 | 否 | 截止时间 | |
| 7 | activity_content | text | 65535 | 否 | 否 | 活动内容 |
| 8 | activity_details | longtext | 4294967295 | 否 | 否 | 活动详情 |
| 9 | event_notes | text | 65535 | 否 | 否 | 活动备注 |
| 10 | hits | int | 是 | 否 | 点击数 | |
| 11 | praise_len | int | 是 | 否 | 点赞数 | |
| 12 | collect_len | int | 是 | 否 | 收藏数 | |
| 13 | comment_len | int | 是 | 否 | 评论数 | |
| 14 | create_time | datetime | 是 | 否 | 创建时间 | |
| 15 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-22-rider_user(骑手用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | rider_user_id | int | 是 | 是 | 骑手用户ID | |
| 2 | riders_name | varchar | 64 | 是 | 否 | 骑手姓名 |
| 3 | riders_gender | varchar | 64 | 否 | 否 | 骑手性别 |
| 4 | mobile_phone_number | varchar | 16 | 是 | 是 | 手机号码 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-23-sign_in_information(签收信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | sign_in_information_id | int | 是 | 是 | 签收信息ID | |
| 2 | order_number | varchar | 64 | 否 | 否 | 订单编号 |
| 3 | order_time | datetime | 否 | 否 | 下单时间 | |
| 4 | business_user | int | 否 | 否 | 商家用户 | |
| 5 | sign_in_user | int | 否 | 否 | 签收用户 | |
| 6 | rider_user | int | 否 | 否 | 骑手用户 | |
| 7 | delivery_status | varchar | 64 | 否 | 否 | 配送状态 |
| 8 | sign_in_time | datetime | 否 | 否 | 签收时间 | |
| 9 | create_time | datetime | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 11 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 12 | source_id | int | 否 | 否 | 来源ID | |
| 13 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-24-slides(轮播图)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | slides_id | int | 是 | 是 | 轮播图ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | content | varchar | 255 | 否 | 否 | 内容 |
| 4 | url | varchar | 255 | 否 | 否 | 链接 |
| 5 | img | varchar | 255 | 否 | 否 | 轮播图 |
| 6 | hits | int | 是 | 否 | 点击量 | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-25-upload(文件上传)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | 是 | 是 | 上传ID | |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | 否 | 否 | 父级ID | |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-26-user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | 是 | 是 | 用户ID | |
| 2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-27-user_group(用户组)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | group_id | mediumint | 是 | 是 | 用户组ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | register | smallint | 否 | 否 | 注册位置 | |
| 9 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
普通用户进入通知公告页面,浏览学校最新发布的各类通知和公告信息。通过日期排序或关键字搜索,快速找到相关的公告内容。点击公告标题,查看详细信息和相关附件,了解最新的校园动态。其界面如图5-1所示。

图5-1通知公告界面。
普通用户进入外卖资讯页面,浏览校园周边餐饮的最新动态和优惠活动。通过分类筛选,快速找到感兴趣的餐饮资讯。点击资讯标题,查看详细信息,包括商家介绍、活动内容、优惠折扣等。其界面如图5-2所示。

图5-2外卖资讯界面。
普通用户进入餐饮菜品页面,浏览可供选择的各类菜品,包括图片、名称、价格、热度等信息。通过搜索栏输入菜品名称或类别,快速定位所需菜品。点击菜品,查看详细介绍、配料表和其他用户的评价。其界面如图5-3所示。

图5-3餐饮菜品界面。
骑手用户进入配送信息页面,浏览待配送的订单,包括订单编号、客户地址、配送时间等信息。通过筛选条件,快速找到需要配送的订单。点击订单详情,查看详细配送地址和特殊配送要求,确保及时准确配送。其界面如图5-4所示。

图5-4配送信息管理界面。
骑手用户进入签收信息页面,查看已完成配送的订单状态,包括签收时间、签收人信息等。通过搜索功能,快速查找指定订单的签收详情。点击订单,确认签收状态并提交签收反馈,确保订单状态更新。其界面如图5-5所示。

图5-5签收信息管理界面。
管理员登录后台进入系统用户页面,查看和管理各类用户信息,包括普通用户、商家用户、骑手用户等。可根据需要调整用户权限、删除异常账户或激活新用户,确保用户信息的正确性与安全性。其界面如图5-6所示。

图5-6系统用户界面。
管理员登录后台进入配送信息管理页面,查看并跟踪所有订单的配送状态。可手动调整配送任务、分配骑手,并查看配送进度,确保配送流程的顺畅与高效。其界面如图5-7所示。

图5-7配送信息管理界面。
管理员登录后台进入资源管理页面,查看并更新外卖资讯、公告、轮播图等资源内容。可以新增、编辑或删除资讯,确保系统内的资源信息及时更新并保持准确性。其界面如图5-8所示。

图5-8资源管理界面。
管理员登录后台进入商城管理页面,查看和管理餐饮菜品、订单和商家信息。可编辑菜品详情、更新库存、调整价格,确保商城内容的完整与准确,同时管理商家的促销活动。其界面如图5-9所示。

图5-9商城管理界面。
商家用户进入配送信息管理页面,浏览待处理的配送订单,包括客户地址、配送时间等信息。通过筛选条件,快速定位需要处理的配送任务。点击订单详情,查看配送进度,并根据情况调整配送安排或与骑手沟通。其界面如图5-10所示。

图5-10配送信息管理界面。
商家用户进入签收信息管理页面,查看已配送完成订单的签收状态。通过搜索栏或筛选条件,快速查找特定订单的签收信息。点击订单,查看签收时间、签收人信息,并确认订单是否顺利完成。其界面如图5-11所示。

图5-11配送信息管理界面。
商家用户进入优惠活动管理页面,浏览和创建优惠活动,包括折扣、满减等类型。通过活动筛选,快速查看正在进行或已结束的活动。点击活动详情,编辑或更新活动内容,确保活动信息准确并及时发布。其界面如图5-12所示。

图5-12优惠活动管理界面。
测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性[10]。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。
在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。
常见的测试用例包括功能测试用例、边界测试用例和异常测试用例。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。
在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。
系统用户测试用例表如表6-1所示。
表6-1 系统用户测试用例。
| 测试项 | 测试用例 | 预期结果 | 结论 |
| 系统用户 | 1. 管理员登录系统,进入用户管理页面,查看所有注册用户信息。 | 系统展示所有用户的详细信息,包括用户名、注册日期、角色等。 | 与预期结果一致。 |
| 系统用户 | 2. 管理员删除一个普通用户账户。 | 系统提示删除成功,已删除用户不再出现在用户列表中。 | 与预期结果一致。 |
| 系统用户 | 3. 管理员修改用户角色为商家用户。 | 系统提示修改成功,用户角色更改为商家用户。 | 与预期结果一致。 |
| 系统用户 | 4. 管理员查看某一用户的详细信息,包括订单和配送信息。 | 系统展示该用户的所有历史订单和配送信息。 | 与预期结果一致。 |
配送信息管理测试用例表如表6-2所示。
表6-2配送信息管理测试用例。
| 测试项 | 测试用例 | 预期结果 | 结论 |
| 配送信息管理 | 1. 管理员查看所有待配送的订单信息。 | 系统展示待配送订单的详细信息,包括客户地址和配送时间。 | 与预期结果一致。 |
| 配送信息管理 | 2. 管理员手动调整配送订单的配送时间。 | 系统提示调整成功,配送时间更新为新的时间。 | 与预期结果一致。 |
| 配送信息管理 | 3. 管理员标记某一订单为已配送,并分配骑手。 | 系统提示分配成功,配送状态更新为已配送,骑手信息显示正确。 | 与预期结果一致。 |
| 配送信息管理 | 4. 管理员查看配送进度并确认配送订单是否成功完成。 | 系统显示订单的配送进度,并确认该订单已经顺利配送完成。 | 与预期结果一致。 |
优惠活动管理测试用例表如表6-3所示。
表6-3 优惠活动管理测试用例。
| 测试项 | 测试用例 | 预期结果 | 结论 |
| 优惠活动管理 | 1. 商家创建新的优惠活动,包括活动类型、折扣信息等。 | 系统提示活动创建成功,优惠活动出现在活动列表中。 | 与预期结果一致。 |
| 优惠活动管理 | 2. 商家修改优惠活动的折扣信息。 | 系统提示修改成功,活动的折扣信息更新为新的内容。 | 与预期结果一致。 |
| 优惠活动管理 | 3. 商家删除已过期的优惠活动。 | 系统提示删除成功,已删除的活动不再显示在活动列表中。 | 与预期结果一致。 |
| 优惠活动管理 | 4. 管理员查看所有正在进行中的优惠活动。 | 系统展示所有有效的优惠活动,包括折扣、开始和结束时间等。 | 与预期结果一致。 |
资源管理测试用例表如表6-4所示。
表6-4资源管理测试用例。
| 测试项 | 测试用例 | 预期结果 | 结论 |
| 资源管理 | 1. 管理员上传新的外卖资讯内容,包括图片、标题和描述。 | 系统提示上传成功,新资讯出现在资讯列表中。 | 与预期结果一致。 |
| 资源管理 | 2. 管理员修改现有外卖资讯的描述内容。 | 系统提示修改成功,资讯内容更新为修改后的描述。 | 与预期结果一致。 |
| 资源管理 | 3. 管理员删除一条外卖资讯内容。 | 系统提示删除成功,已删除的资讯不再出现在列表中。 | 与预期结果一致。 |
| 资源管理 | 4. 管理员更新轮播图资源,上传新的轮播图。 | 系统提示上传成功,新轮播图出现在首页的轮播位置。 | 与预期结果一致。 |
商城管理测试用例表如表6-5所示。
表6-5 商城管理测试用例。
| 测试项 | 测试用例 | 预期结果 | 结论 |
| 商城管理 | 1. 商家添加新的餐饮菜品,包括名称、价格和描述。 | 系统提示菜品添加成功,新增菜品出现在菜单列表中。 | 与预期结果一致。 |
| 商城管理 | 2. 商家修改现有菜品的价格。 | 系统提示修改成功,菜品价格更新为新的价格。 | 与预期结果一致。 |
| 商城管理 | 3. 商家删除一款不再销售的菜品。 | 系统提示删除成功,已删除菜品不再出现在菜单中。 | 与预期结果一致。 |
| 商城管理 | 4. 管理员查看所有商家管理的菜品列表,并审核其合法性。 | 系统显示商家的菜品信息,并标记出需要审核的菜品。 | 与预期结果一致。 |
通过对校园外卖点餐系统的功能进行详细的测试,可以确认系统在各个模块中的表现均符合预期要求。在系统用户管理方面,管理员能够顺利查看、修改和删除不同类型的用户信息,确保了系统的安全性和用户权限的正确性。在配送信息管理和签收信息管理模块中,系统能够高效地跟踪订单状态,及时更新配送进度,并确保配送任务分配的准确性,保证了整个配送流程的高效运行。此外,商家和骑手用户的相关功能也得到了充分验证,能够满足用户的实际需求,确保外卖订单处理的顺利进行。
在优惠活动管理、资源管理和商城管理模块的测试中,系统表现出色,所有功能均能够按要求执行。商家能够方便地创建、修改和删除优惠活动,确保了促销信息的及时更新和准确性。管理员能够快速上传、修改和删除外卖资讯和轮播图资源,确保系统信息的及时性和多样性。而在商城管理方面,商家可以灵活地添加、修改和删除餐饮菜品,管理员可有效审核商家的菜品信息,保证了商品信息的完整性和规范性。综合来看,系统的各项功能已稳定运行,满足了用户的需求,提供了一个高效便捷的外卖点餐平台。
本论文通过设计与实现一个基于SpringBoot、Vue和MyBatis的校园外卖点餐系统,深入探讨了如何结合现代技术框架来提升校园餐饮服务的效率与用户体验。在系统的开发过程中,我们不仅成功构建了完整的点餐与配送流程,还考虑了各类用户角色的需求,设计了相应的功能模块。通过管理员、普通用户、商家用户与骑手用户等多种角色的功能管理,系统能够高效处理从点餐到配送再到签收的整个流程。这不仅提高了点餐效率,也大大优化了外卖服务的质量,为广大师生提供了更加便捷、个性化的用餐体验。开发过程中遇到的一些技术挑战,如前后端分离的实现、数据同步与交互等问题,也为我提供了宝贵的经验,使我更加深入理解了技术架构设计和系统优化的重要性。
回顾整个开发过程,我不仅学到了如何将不同技术框架结合使用,更深刻体会到实践中解决问题的重要性与乐趣。从初期的需求分析、功能设计到后期的系统实现与测试,每一个细节的打磨都让我收获颇丰。这项校园外卖点餐系统的实现,不仅让我对技术有了更深的理解,也让我体会到作为开发者带给用户便利和改善生活体验的巨大成就感。虽然在开发过程中有不少困难,但当系统顺利完成并能有效解决实际问题时,那份成就感和满足感是无法言喻的。总之,这次项目的完成让我更加坚定了继续深入学习与开发的决心,也为今后在智能校园建设领域的探索打下了坚实的基础。
- 尹应荆.JAVA编程语言在计算机软件开发中的应用[J].石河子科技,2023,(05):45-47.
- 高士娟.基于项目驱动的Java编程语言课程教学模式研究[J].才智,2024,(36):64-67.
- 李萍,刘浩楠.基于Spring Boot+Vue+Mybatis的排考系统设计[J].盐城工学院学报(自然科学版),2024,37(03):59-64+72.DOI:10.16018/j.cnki.cn32-1650/n.202403009.
- 王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
- 熊永平.基于SpringBoot框架应用开发技术的分析与研究[J].电脑知识与技术,2021,15(36):76-77.
- 赵媛.基于Vue的Web系统前端性能优化分析[J].电脑编程技巧与维护,2024,(09):44-46.
- 秦冬.浅析Vue框架在前端开发中的应用[J].信息与电脑(理论版),2024,36(13):61-63.
- 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
- 周晓玉,崔文超.基于Web技术的数据库应用系统设计[J].信息与电脑(理论版),2023,35(09):189-191.
- 李俊萌.计算机软件测试技术与开发应用策略分析[J].信息记录材料,2023,24(03):50-52.
- Liu S ,Peng H ,Gu D , et al.COVID-19 Implications on School Dietary Behavior in Chinese College Students: Based on the Longitudinal Assessment of Dietary Records from Intelligent Ordering System[J].Nutrients,2024,17(1):144-144.
- CD Bioparticles Announces Enhanced Online Ordering System for Improved Customer Experience[J].M2 Presswire,2024,
- 刘世伟.高校校园外卖现状及管理对策研究[J].现代食品,2024,30(15):72-75.DOI:10.16736/j.cnki.cn41-1434/ts.2024.15.018.
- ParetaK ,ParetaU .Evaluation of stream ordering systems in the context of topography and open‐source data[J].Earth Surface Processes and Landforms,2024,49(12):3806-3821.
- Alanazi A ,Alajlan A ,Alangri A , et al.Improving of test utilization through modification of the electronic ordering system for blood zinc level[J].Clinica Chimica Acta,2024,558(S1):118093-.
- 邓鹏,陈梓鑫,李波,等.校园食堂外卖研究现状和优化策略[J].现代商贸工业,2024,45(10):67-70.DOI:10.19311/j.cnki.1672-3198.2024.10.022.
- 刘洋.外卖点餐可以先看“后厨直播”![N].沈阳日报,2024-04-13(003). DOI:10.28770/n.cnki.nsyrb.2024.000958.
- Svendsen A J ,Beck M A ,Frederiksen S K A , et al.Development of an electronic food ordering system and a la carte menu: Enhancing patient involvement in nutritional care[J].Clinical Nutrition ESPEN,2024,6086-94.
- 陆晓岚.大学校园外卖现状及食品安全问题分析[J].中外食品工业,2024,(01):14-16.
- 吴彦文.外卖点餐软件品类导航服务及其运营系统的设计与实现[D].南京大学,2017.
在此,我衷心感谢所有在本项目开发过程中给予我支持和帮助的人。首先,感谢我的导师,在整个研究和开发过程中提供了宝贵的指导与建议。导师不仅帮助我理清思路,指导技术实现,还为我解决了许多实际问题,尤其是在系统架构设计和技术选择方面,给予了我极大的启发与帮助。导师严谨的学术态度和对技术细节的深入钻研,深深影响了我,也让我在这个项目中学到了许多课本之外的知识。
此外,感谢所有参与项目讨论的同学和朋友们,你们的建议和反馈为我的系统设计和功能实现提供了重要的参考。在遇到技术难题时,是你们的支持与鼓励让我坚定信心,不断攻克难关。最后,也要感谢我的家人,在项目开发的过程中给予了我无尽的关爱和鼓励。正是因为有了你们的理解与支持,我才能够全身心投入到这个项目中,克服了许多困难和挑战。所有的帮助与支持都让我更加坚信,团队合作和亲朋的支持是完成任何一项工作不可或缺的力量。
代码:
连接数据库的文件在Resources 文件夹下的application.yml文件,代码如下:
server:
port: 5000
servlet:
context-path: /api
spring:
mvc:
static-path-pattern: /upload/**
resources:
static-locations: file:此处填写地址/project93355/server/src/main/resources/static
datasource:
jdbc:mysql://127.0.0.1:3306/projectxxxxx?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
jackson:
property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
default-property-inclusion: ALWAYS
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
servlet:
项目启动文件Application.java,代码如下:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableJpaRepositories
@MapperScan("com.project.demo.dao")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
修改数据代码如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
删除一条数据代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
通过请求的参数获取列表数据,代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
获取某个组下面的数量,代码如下:
@RequestMapping(value = {"/count_group", "/count"})
public Map<String, Object> count(HttpServletRequest request) {
Integer value= service.selectSqlToInteger(service.groupCount(service.readQuery(request), service.readConfig(request)));
return success(value);
}
注册页登录代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
MD5加密,代码如下:
public String encryption(String plainText) {
String re_md5 = new String();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
re_md5 = buf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return re_md5;
}
登录页代码如下:
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
找回密码,接收用户输入的用户名、密码、验证码,并进行条件判断,代码如下:
/**
* 找回密码
* @param form
* @return
*/
@PostMapping("forget_password")
public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {
JSONObject ret = new JSONObject();
String username = form.getUsername();
String code = form.getCode();
String password = form.getPassword();
// 判断条件
if(code == null || code.length() == 0){
return error(30000, "验证码不能为空");
}
if(username == null || username.length() == 0){
return error(30000, "用户名不能为空");
}
if(password == null || password.length() == 0){
return error(30000, "密码不能为空");
}
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~
1877

被折叠的 条评论
为什么被折叠?



