尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SpringBoot+微信小程序+AI大模型外卖点餐系统毕业设计实战指南

SpringBoot+微信小程序+AI大模型外卖点餐系统毕业设计实战指南 这次的毕业设计项目不是让你去啃一个只带概念介绍的 PPT而是一整套能直接跑起来、能演示、能拿去答辩的完整外卖点餐系统。技术栈就是标题里写的 SpringBoot 微信小程序 AI大模型附带源码、LW论文、PPT 和讲解资源。如果你正在纠结计算机毕业设计选什么方向或者想把 SpringBoot 后端和小程序前端从头到尾连一遍这个项目值得认真看。先把这个项目最核心的信息给你它是一个前后端分离的外卖点餐系统用户端在微信小程序里完成浏览菜品、加购物车、下单、支付模拟这些操作后端由 SpringBoot 提供 RESTful 接口数据库用 MySQLAI 的部分主要用于菜品智能推荐、个性化推荐理由、智能客服问答这一类场景。相比传统外卖系统它多了一个“推荐系统 大模型能力”的差异化卖点这也是它适合作为毕业设计的原因既有常规业务功能又有算法和应用创新点答辩时能讲的东西很多。整篇文章我会按“能不能用 - 怎么用 - 怎么验证 - 踩坑排查”的思路展开。先给你项目能力速览和环境门槛再讲安装部署和启动方式然后做功能测试和接口演示最后整理常见问题和最佳实践。如果你只有一台普通 Windows 电脑没有独立 GPU也不用担心这个项目的 AI 能力走的是服务端 API 调用本地不依赖大模型推理硬件这比本地部署大模型的门槛低很多。1. 核心能力速览能力项说明项目类型计算机毕业设计 / 课程设计完整项目后端技术SpringBoot、MyBatis / MyBatis-Plus、MySQL、Maven前端技术微信小程序原生开发WXML / WXSS / JavaScriptAI 能力菜品智能推荐、个性化推荐理由、智能客服问答交付内容源码、LW 论文、演示 PPT、讲解视频启动方式后端 Maven 启动 微信开发者工具导入小程序推荐硬件普通开发电脑即可无 GPU 强需求网络要求需要能访问微信服务端和 AI 服务 API数据库MySQL 5.7 / 8.0是否支持 API支持后端提供 RESTful 接口供小程序调用是否支持批量任务支持定时关单、批量导入菜品等扩展任务适合场景毕业设计答辩、全栈项目学习、小程序开发练习从能力表可以看出来这个项目最大的优势不是算法多复杂而是技术栈组合完整、演示效果好、答辩材料齐全。它不是那种只写了几个登录页的“空壳毕设”而是从用户端到管理端、从业务功能到 AI 推荐都有完整链路。2. 适用场景与使用边界2.1 适合谁用第一类是计算机相关专业的本科生题目如果落在“外卖点餐 推荐系统 微信小程序”这个方向这个项目的功能划分和模块设计可以直接作为参考论文的第二章系统分析、第三章系统设计也比较好写。第二类是正在学 SpringBoot 的开发者想通过一个完整项目理解 Controller、Service、Mapper 分层以及如何给小程序提供接口这个项目能让前后端数据流动起来。第三类是打算在简历上放一个带 AI 亮点的项目的人推荐系统和大模型 API 接入是两个很好的加分点。2.2 不适合什么场景它不是生产级外卖系统。高并发、分布式、消息队列、秒杀这些能力不是毕设项目的重点实际商用时还需要大量加固。另外如果 AI 功能只是简单调用第三方接口而没有自己的推荐逻辑答辩时很容易被评委追问“推荐系统到底做了什么”这一点要提前想清楚。2.3 使用边界与合规提醒小程序如果做线上发布需要注册微信小程序账号并配置合法域名本地开发时可以在开发者工具里勾选“不校验合法域名”来调试。微信登录需要 AppID 和 AppSecret这两个值要保管好不能泄露到前端代码里。AI 服务接口要关注调用配额和费用批量测试时注意控制请求频率。系统会保存用户手机号、收货地址、订单记录等敏感数据开发测试阶段建议使用脱敏的虚拟数据如果用于商用或公开演示必须确认符合个人信息保护相关要求。菜品的图片、描述、商家素材如果来自网络要注意版权尽量使用自己拍摄或可商用的素材。3. 系统整体架构与技术栈3.1 整体架构设计从架构上看这个项目采用前后端分离模式典型的调用链路是微信小程序客户端通过wx.request发起 HTTP 请求请求到 SpringBoot 后端的 Controller 层Controller 调用 Service 层处理业务逻辑Service 层通过 Mapper 访问 MySQL 数据库AI 推荐部分由 Service 层调用推荐算法模块或第三方大模型 API把推荐结果返回给小程序端渲染。这样的分层结构在论文里很好描述也很贴合实际项目规范。你在写系统设计章节时可以直接画一张三层架构图表现层微信小程序、业务逻辑层SpringBoot、数据层MySQL再把 AI 服务作为独立的第三方能力接入。3.2 后端模块划分一个完整的外卖点餐推荐系统后端至少需要这些模块用户模块微信登录、用户信息维护、收货地址管理。商家模块商家信息、营业状态、店铺分类。菜品模块菜品分类、菜品信息、菜品上下架、图片管理。购物车模块加入购物车、修改数量、清空购物车。订单模块提交订单、订单列表、订单状态流转、取消订单、定时关单。推荐模块基于用户行为的菜品推荐、推荐理由生成。管理端模块订单管理、菜品管理、数据统计。每个模块都可以拆成 Controller、Service、Mapper 三层这也是毕业设计论文最需要体现的地方。不要把小程序的页面和接口写成一团接口路径最好按资源命名例如/api/user、/api/order、/api/cart、/api/category、/api/dish、/api/recommend。3.3 小程序端页面规划小程序端页面一般包括首页推荐菜品、轮播图、分类页、购物车页、订单列表页、订单详情页、个人中心页、地址管理页。这几个页面能把点餐主流程串起来演示的时候从首页进入、浏览推荐、加入购物车、下单、查看订单整个流程是闭环的。AI 推荐功能可以放在首页和菜品详情页。首页根据用户历史行为推荐菜品菜品详情页展示“为你推荐的理由”或者同类型菜品这样 AI 能力既不会太抢业务功能又能明显被评委看到。4. 环境准备与前置条件4.1 开发环境清单这个项目是典型的 Java 后端 小程序前端项目环境准备按下面这套来做基本不会错软件版本建议用途JDKJDK 8 或 JDK 17编译运行 SpringBootMaven3.6.3 以上依赖管理、项目打包MySQL5.7 或 8.0业务数据存储微信开发者工具最新稳定版运行小程序前端IDEIDEA 或 Eclipse后端代码开发调试Navicat / DBeaver任意数据库可视化管理AI 服务账号按项目实际配置大模型 API 调用4.2 版本匹配问题SpringBoot 版本和 JDK 的匹配是常见坑。如果项目用 SpringBoot 2.7.xJDK 8 和 JDK 17 都支持如果项目用 SpringBoot 3.x则必须使用 JDK 17 或更高版本。如果出现“Class file has wrong version”或者无法启动的问题先检查这两项是否匹配。4.3 数据库准备项目一般会附带sql初始化脚本你需要手动创建一个数据库并导入脚本。常见操作是CREATE DATABASE IF NOT EXISTS takeout_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;导入脚本后确认表结构是否完整一般会有 user、merchant、category、dish、cart、orders、order_detail、address、recommend_log 这类表。如果项目的脚本是.sql文件直接在 Navicat 或命令行执行即可。mysql -u root -p takeout_db init.sql4.4 微信小程序准备在微信公众平台注册一个小程序账号拿到 AppID。开发阶段不需要企业认证个人主体也可以。如果没有 AppID微信开发者工具里也可以使用测试号但微信登录的完整链路用正式 AppID 更顺畅。5. 安装部署与启动方式5.1 后端启动流程第一步用 IDEA 导入后端源码等待 Maven 下载依赖。这一步网络不稳定的话可能要多等一会儿建议配置 Maven 国内镜像。第二步修改application.yml里的数据库连接和微信配置。下面是一个通用模板实际字段名需要按项目代码调整server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/takeout_db?useUnicodetruecharacterEncodingutf8mb4serverTimezoneAsia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver servlet: multipart: max-file-size: 10MB max-request-size: 10MB mybatis-plus: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl wx: appid: your_wx_appid secret: your_wx_secret ai: api-key: your_ai_api_key api-url: https://your-ai-service.example.com/v1/chat/completions第三步启动项目。在 IDEA 里直接运行主类或者用 Maven 命令mvn spring-boot:run生产或交付演示时可以打成 jar 包运行mvn clean package -DskipTests java -jar target/takeout-server-0.0.1-SNAPSHOT.jar5.2 小程序前端启动流程用微信开发者工具导入前端项目目录填入自己的 AppID。打开小程序前先把app.js或config.js里的后端请求地址改成你的本机地址。这里有个关键细节如果后端跑在本地你要保证后端地址是http://127.0.0.1:8080同时小程序的开发工具需要勾选“不校验合法域名、web-view业务域名、TLS 版本以及 HTTPS 证书”否则开发阶段会因为域名没备案而请求失败。// config.js 示例 module.exports { baseUrl: http://127.0.0.1:8080 }然后编译小程序首页能加载出菜品数据说明前后端已经连通。5.3 管理员端这个项目可能还会带一个 Web 管理后台用于商家或管理员管理订单和菜品。如果有启动方式通常是另一套 SpringBoot 前端页面或者 Vue 项目。如果你拿到的是纯后端 API 小程序的模式管理功能一般也由同一个小程序或单独的页面承载具体要看交付源码里的模块划分。5.4 一键启动脚本为了方便演示可以在项目根目录写一个启动脚本。Windows 下可以这样写echo off echo 启动外卖点餐推荐系统后端... java -jar target/takeout-server-0.0.1-SNAPSHOT.jar pause后端启动之后再打开微信开发者工具编译小程序整个演示环境就绪。6. 功能测试与效果验证6.1 用户登录测试测试目的验证微信登录流程是否打通后端是否能正确解析用户身份。操作步骤在小程序端点击“微信登录”允许授权后查看个人中心页面是否显示用户头像和昵称。预期结果后端日志出现登录请求数据库中新增或更新用户记录前端拿到登录态。判断标准登录成功后退出小程序重新进入用户状态不会丢失。失败排查优先检查 AppID、AppSecret 是否匹配以及code2Session接口的返回结果还要确认小程序请求的合法域名配置或开发工具的不校验域名开关。6.2 菜品分类与列表测试测试目的验证分类查询和菜品列表接口。操作步骤进入首页切换顶部或侧边栏的分类标签观察菜品列表是否同步变化。预期结果每个分类下展示对应菜品菜品图片、价格、销量字段正常显示。判断标准数据库中的菜品数据能完整映射到小程序页面没有白屏或字段取不到的问题。常见问题菜品图片加载不出来通常是图片路径是绝对地址但没有开启静态资源映射或者后端接口返回了本地磁盘路径小程序无法直接访问外网地址。6.3 购物车流程测试测试目的验证加购、改数量、删除、结算的小程序交互和后端接口。操作步骤在菜品列表点击“加入购物车”。进入购物车页修改数量。点击“去结算”。预期结果购物车数量角标实时更新后端 cart 表能同步增删改查结算页能正确计算总价。判断标准结算金额与菜品单价乘以数量一致无浮点数精度问题。6.4 订单流程测试测试目的验证外卖点餐的核心闭环。操作步骤在购物车点击去结算。选择收货地址。提交订单。在订单列表查看状态。预期结果订单生成后状态为“待支付”或“待接单”订单详情中能看到菜品明细和总价。判断标准数据库 orders 表和 order_detail 表都写入数据订单列表能逆向查询。6.5 AI 推荐功能测试这是整个项目的亮点也是答辩时最值得演示的功能。测试目的验证推荐系统是否基于用户行为产生个性化结果。操作步骤用同一个账号提前收藏或下单某几类菜品。回到首页观察推荐模块是否出现同类或相关菜品。查看推荐理由是否和用户偏好有关。预期结果不同用户登录首页看到的推荐菜品不完全一样推荐理由能结合菜品标签或用户偏好生成。判断标准推荐结果有差异化不是固定列表如果点击推荐结果进入详情后能阅读“推荐理由”那 AI 卖点就非常直观。常见失败原因用户历史行为不足时进入冷启动状态此时可以设计默认热门菜品作为兜底推荐。如果大模型接口超时推荐理由会显示不出来需要设置超时降级。6.6 智能客服问答测试如果项目包含测试目的验证大模型在对话场景的接入效果。操作步骤在个人中心或首页进入客服窗口发送“有哪些川菜推荐”“我的订单多久能送达”这类问题。预期结果机器人能结合菜品数据或外卖常识给出合理回复。判断标准回答内容相关且不包含乱码接口响应时间在可接受范围内。7. 接口 API 与批量任务7.1 后端 RESTful API 设计毕业设计项目不需要把接口设计得特别复杂但接口命名要规范。下面是一个通用示例接口路径请求方式功能说明/api/user/loginPOST微信登录/api/category/listGET获取菜品分类/api/dish/listGET获取菜品列表/api/dish/detailGET获取菜品详情/api/cart/addPOST加入购物车/api/cart/listGET获取购物车列表/api/cart/updatePOST修改购物车数量/api/order/submitPOST提交订单/api/order/listGET获取订单列表/api/recommend/listGET获取推荐菜品/api/recommend/reasonGET获取推荐理由这些接口在小程序端通过wx.request调用。一个典型调用写法是wx.request({ url: ${app.globalData.baseUrl}/api/recommend/list, method: GET, data: { userId: app.globalData.userInfo.id }, success(res) { if (res.data.code 200) { const list res.data.data; // 渲染推荐列表 } else { wx.showToast({ title: res.data.msg || 请求失败, icon: none }); } } });7.2 AI 推荐接口调用示例推荐模块在后端通常是一个独立 Service。你可以先写一个基于标签或行为的推荐算法再用大模型 API 生成推荐理由。大模型调用的通用思路如下// 伪代码示例实际实现需按项目封装 String prompt 当前用户偏好川菜和辣味菜品请用两句话推荐3道菜结合以下菜品列表 dishList; HttpResponse response httpClient.post(aiApiUrl) .header(Authorization, Bearer aiApiKey) .body({\model\:\gpt-3.5-turbo\,\messages\:[{\role\:\user\,\content\:\ prompt \}]}) .execute();如果第三方 SDK 已经封装好了直接用 SDK 更省事。核心点是推荐结果要从数据库的真实菜品数据中筛选不能让大模型随意编造不存在的菜品。7.3 批量任务与定时任务外卖点餐系统适合加两个批量任务定时关单超过一定时间未支付的订单自动取消。批量导入菜品通过 Excel 或 JSON 文件批量导入菜品数据演示时更高效。SpringBoot 里用Scheduled注解就能实现最基本的定时任务Scheduled(cron 0 */5 * * * ?) public void closeTimeoutOrders() { // 查询超时未支付订单更新为“已取消” }批量导入可以用EasyExcel或 POI这部分可以写进论文的创新点里也能作为系统管理端的加分功能。7.4 批量任务的失败重试建议毕设阶段不用上消息队列但可以做简单的失败重试。导入菜品时如果某一行数据格式有问题记录错误原因并继续导入下一行最后返回失败列表。这样的实现不仅简单答辩时也比较有说服力。8. 资源占用与性能观察8.1 后端内存与 CPUSpringBoot 项目启动后JVM 默认内存占用不是固定值需要看机器配置和 JVM 启动参数。一般开发环境下SpringBoot 服务占用的堆内存可能从几百 MB 到 1GB 不等。如果电脑配置不高启动时可以限制内存java -Xms256m -Xmx512m -jar target/takeout-server-0.0.1-SNAPSHOT.jar8.2 数据库连接与慢查询MySQL 是小程序请求的瓶颈点之一。演示时如果出现页面加载慢优先看后端日志中有没有慢 SQL检查是否有必要的索引。订单表和订单明细表的数据量上来之后按用户 ID 和订单状态查询要加索引。一个简单的方式是在启动项目前用 Navicat 给常用查询字段加普通索引。8.3 AI 接口延迟观察大模型 API 的延迟通常在几百毫秒到几秒不等这会影响推荐理由的加载速度。建议在调用 AI 接口前设置超时时间比如 5 秒如果超过超时时间直接返回算法生成的默认推荐理由避免整个页面被 AI 请求拖慢。8.4 小程序端请求优化小程序端不要每次进入页面都拉全量数据。分类页可以缓存分类列表推荐模块可以加下拉刷新。调试时打开微信开发者工具的 Network 面板看哪些接口响应时间异常逐一定位。8.5 端口与进程管理后端默认端口如果是 8080启动前先确认端口没被占用。Windows 下可以用这个命令查看netstat -ano | findstr 8080如果提示端口被占用可以在application.yml里换端口也可以直接结束占用进程。9. 常见问题与排查方法问题现象可能原因排查方式解决方案SpringBoot 项目启动报错JDK 版本和 SpringBoot 版本不匹配查看启动日志中的版本报错SpringBoot 3.x 改用 JDK 17或降低到 2.7.x小程序请求后端接口失败开发工具未勾选不校验域名查看 Network 面板报错勾选不校验合法域名微信登录获取用户失败AppID/AppSecret 不匹配查看后端 code2Session 日志核对小程序账号配置数据库连接失败账号密码或 URL 配置错误查看后端日志的 SQLException修改application.yml数据库配置菜品图片加载不出来图片路径是本地磁盘路径检查图片 URL 拼接逻辑配置静态资源映射或使用可访问的图床AI 接口超时网络延迟或 API 配额不足查看 AI 服务返回状态码加超时降级设置合理 prompt中文乱码数据库编码或响应编码问题检查页面显示和 MySQL 表编码统一使用 utf8mb4打包后找不到页面模板或静态资源打包插件未包含资源文件检查 jar 包内是否有 resources在 pom.xml 中配置资源目录购物车数量不更新后端接口返回旧数据查看接口返回 JSON刷新本地购物车缓存订单状态不流转后端定时任务未启用检查Scheduled是否生效在启动类加EnableScheduling10. 最佳实践与使用建议10.1 先跑通主流程再扩展 AI拿到项目源码后千万不要一开始就钻到推荐算法和大模型配置里。第一步先把“登录 - 浏览菜品 - 加购物车 - 下单”这条主流程跑通确保前后端连上、数据库正常、订单能生成。主流程没问题再研究推荐模块否则很可能是环境问题和技术问题混在一起越查越乱。10.2 论文写到什么程度LW论文的核心章节要围绕系统分析、系统设计、系统实现和系统测试来写。重点项目建议放在用户需求和功能分析把普通用户、商家、管理员三类角色说清楚。系统架构图和功能结构图体现三层架构。数据库设计包含核心表结构说明和 E-R 图。推荐模块设计说明你用什么方法计算相似度以及大模型如何生成推荐理由。系统测试至少包含功能测试用例和结果表。10.3 答辩演示的黄金路径演示时不要东点一下西点一下最好走一条完整路径打开小程序登录。进入首页展示推荐菜品点开推荐理由。按分类浏览菜品。加入购物车。提交订单。切换到一个新账号展示推荐结果差异。进入管理端处理订单或查看统计。这条路径下来业务功能和 AI 亮点都能覆盖到。10.4 数据与隐私控制用虚拟数据填充数据库不要用真实用户手机号。如果需要演示 AI 推荐效果可以设计几组不同偏好的测试账号比如一个账号专门收藏川菜另一个只浏览甜品这样推荐差异化明显。涉及用户收货地址等隐私数据演示前做好脱敏。10.5 记得备份和整理交付物源码、LW、PPT、讲解视频要放在清晰目录里。部署前导出一份干净的数据库脚本避免演示时手工造数据。PPT 里放上系统架构图、技术栈列表、核心功能截图、测试结果截图这些内容答辩评委最关心。11. 总结与下一步这个项目的价值在于它把 SpringBoot、微信小程序和 AI 推荐串成了一条完整的工程链路。你不是在做一个孤立的登录注册 Demo而是通过外卖点餐业务把后端开发、小程序端开发、数据库设计、推荐算法和大模型 API 应用全部走了一遍这是毕业设计里非常完整的选题方向。拿到项目后第一件事不是改功能而是把环境配好把主流程跑通。最容易踩的坑有两个一个是 SpringBoot 版本和 JDK 版本不匹配另一个是小程序请求后端时没有关闭合法域名校验。先避开这两个问题后面做功能测试和 AI 调试会更顺。如果你想在基础版本上继续扩展下一步可以考虑这几个方向把推荐算法从“基于标签匹配”升级成“协同过滤 内容推荐”的组合策略给 AI 客服加上菜品知识库回答更精准管理端加一个数据看板展示销量排行和用户分布。做完任意一个扩展点答辩时的创新表现都会更突出。建议先把项目跑起来再围绕推荐模块做深度验证。这篇就写到这里希望能帮你少走弯路。
返回列表