校园订餐微信小程序毕业设计全流程开发指南

发布时间:2026/8/29 4:57:43
校园订餐微信小程序毕业设计全流程开发指南 简介微信小程序作为轻量级应用开发的主流形态已成为计算机专业毕业设计的高频选题方向。校园订餐系统凭借需求清晰、技术栈通用、演示直观等优势成为学生快速上手完整项目开发的理想载体。从学生端小程序到商家端管理后台从Spring Boot后端接口到MySQL数据库设计再到订单状态机与并发扣库存的防超卖方案整个开发链路覆盖了前后端交互、登录鉴权、支付模拟、订阅消息等关键工程实践。本文以校园订餐系统为例系统梳理了从环境搭建、源码调试到论文撰写与答辩准备的全过程重点解析了微信开发者工具白屏、合法域名配置、request请求失败等高频踩坑问题帮助开发者理解项目逻辑提升工程落地能力为毕业设计或课程设计提供可复用的参考路径。 每年到这个季节都会有一批计算机专业的学生盯着微信小程序毕业设计选题发愁。说实话如果我只能给一个建议那就是选校园订餐系统这类需求边界清晰、技术栈通用、演示效果直观的题目它几乎是毕业设计里的“安全牌”。这篇文章就是围绕一套典型的校园订餐系统开发项目展开从选题拆解、小程序端页面、后端接口、数据库设计到拿到源码后如何跑通、如何写论文和准备答辩把整条链路掰开揉碎讲清楚。无论你是正在准备毕业设计、课程设计还是纯粹想拿小程序练手做完整项目都有参考价值。我要特别提醒一点这类项目最大的问题从来不是“代码写不出来”而是“代码拿到了但跑不起来”。源码、演示视频、说明文档三件套只是起点真正决定你能不能顺利毕业的是你对项目逻辑的理解程度和踩坑之后的处理能力。下面我就按实际开发顺序把整套东西拆给你看。1. 为什么校园订餐系统是毕业设计的“安全牌”选题1.1 需求明确到可以“照着课本写”先聊选题。毕业设计最怕什么最怕题目本身模棱两可。比如“基于深度学习的某某系统”光一个数据集就能让你在实验室泡两个月最后还不一定出效果。反观校园订餐系统需求就是“学生在线选餐、下单、支付、取餐”评审老师一听就懂根本不需要额外解释业务背景。而且这类系统的业务流程非常成熟。外卖平台已经教育了所有用户你不需要在论文里大篇幅论证“为什么需要这个系统”只需要说清楚“如何在校园场景下用微信小程序实现类似能力”就够了。需求分析阶段天然轻松很多因为你身边全是目标用户随手一问就知道同学们想要什么功能。从功能验收的角度看校园订餐系统的核心功能几乎都可以标准化验证登录能不能通、菜品能不能展示、加购物车后数量对不对、下单后订单状态有没有正确流转、商家端能不能改状态。每一个功能都有明确的“对”与“错”演示的时候不会出现那种“数据效果靠运气”的尴尬局面。1.2 功能全景学生端、商家端、管理后台的边界划分一个完整的校园订餐系统按照角色可以拆成三个端但毕业设计通常不会做得很重合理的划分方式是这样的学生端微信小程序微信登录、浏览菜品、按分类筛选、搜索、加购物车、提交订单、订单支付或模拟支付、查看订单状态、取消订单、发表评价、维护收货地址。商家端可以是小程序后台网页也可以做进同一个小程序菜品管理上架、下架、改价、改库存、订单管理接单、备餐、出餐、基础经营数据查看。有些毕设会把商家端做成一个独立的Web管理页面这个思路也很常见工作量更好量化。管理后台Web端用户管理、商家管理、订单统计、菜品分类管理、系统基础配置。我要强调一下我见过很多同学一上来就想做满三端结果每一端都只做了半吊子。毕业设计的评价标准里“完整度”远重要于“功能数量”。如果你只有一个人我强烈建议把主要精力放在学生端小程序和商家端网页上管理后台用最简化的表格页面凑齐基础功能即可。三端划分还有一个隐藏作用论文里可以自然地把“系统设计”章节分成客户端、服务端、管理端三个层次来写结构非常工整评审老师看着也舒服。1.3 技术选型除了Spring Boot还有其他选择技术栈上没有标准答案但确实有“稳妥答案”。就校园订餐这种CRUD为主的系统最常用的组合是前端微信小程序原生语法WXML WXSS JS或者用uni-app开发一套代码同时编译到小程序和H5。后端Spring Boot MyBatis Plus MySQL这是目前就业市场上的主流组合资料最多遇到问题随便一搜就有答案。Redis一般用来做缓存和并发扣库存的辅助做了是亮点不做也不影响主流程。管理后台Vue Element UI这个组合既简单又好看做过后端的同学上手很快。如果你对Java不熟Python的Django或Flask、Node.js的Express/NestJS也完全能做。但我要说句实在话从毕设答辩的角度Java技术栈的容错率更高因为评审老师里大概率有一位Java出身你用Java他能从技术角度给你提建议用特别小众的框架反而容易被追问到答不上来。这里特别提醒uni-app的坑如果你选择uni-app开发不要只在微信开发者工具里测一定要在真机上预览一次。热词里写着“uniapp做微信小程序在手机上预览没问题但是在微信开发者上是白片”这个我第5节会专门展开聊算是高频问题。2. 小程序端核心页面拆解从首页到结算的完整链路2.1 首页设计搜索、轮播、分类、菜品列表的层级关系学生打开小程序后第一个看到的页面就是首页它承担的是“让用户最快找到想吃的菜”这个任务。一个标准的校园订餐首页从上到下一般是搜索框、轮播图、分类导航、推荐菜品列表。搜索框建议用input绑定confirm-typesearch这样键盘右下角会出现“搜索”按钮。搜索逻辑不一定要做成实时模糊搜索可以做成点击搜索后跳转到菜品列表页并携带关键词参数这样后端实现简单也不会有频繁请求的压力。轮播图直接用swiper组件indicator-dots显示指示点autoplay加自动轮播。需要注意一个细节swiper的高度默认是150px如果你上传的图片是长图很可能会被裁切建议在设计稿阶段就把轮播图尺寸统一成750x300rpx左右的比例或者通过modeaspectFill配合固定容器高度来控制。分类导航和菜品列表的联动有两种常见做法一种是左侧分类栏右侧对应菜品的“双列联动”布局另一种是顶部横向滚动分类标签下面跟一个长列表。毕业设计做第二种更省事只需要一个scroll-view横向滚动配合点击切换分类即可。第一种虽然看起来更专业但需要监听滚动位置、计算左侧高亮索引写起来比较费时间如果你的项目时间紧张不建议在首页交互上过度投入。2.2 菜品详情与规格选择radio还是checkbox别用混点进某个菜品后会进入详情页一般包含菜品大图、名称、价格、月售、描述以及规格选择区。这里就是热词里“微信小程序单选框”真正发挥价值的地方。如果菜品只有一种规格比如“黄焖鸡米饭 16元”那直接展示价格和“加入购物车”按钮就行不需要弹窗。如果菜品有多个规格比如“大份18元 / 小份15元”建议用radio-group渲染一组单选按钮。如果菜品有多个可叠加的属性比如“加卤蛋2元 / 加香肠3元”用checkbox-group比较合适。我见过很多毕设项目把规格选择做成一组按钮但选中的样式不清晰用户根本不知道当前选了什么。这里有个简单实用的做法不用原生的radio样式而是用view模拟按钮给每个选项绑定一个selected状态选中时改变背景色和边框色同时在页面底部实时显示当前所选规格的价格和总价。规格选择背后的数据模型值得注意。每个规格应该是一个独立的商品记录SKU而不是在菜品下挂一个specs字符串字段否则下单时后端很难算价格、扣库存。表设计里我会再展开讲。2.3 购物车与结算页的状态同步购物车是点餐小程序里最容易做得乱的地方。很多同学会把购物车数据直接存在本地缓存里这样做的好处是响应快、不依赖后端但坏处也很明显用户换一台手机登录购物车就没了服务端也无法统计加购数据。我的建议是购物车以服务端为准本地缓存只做“展示层的加速”。具体逻辑是进入点餐页时请求一次购物车列表之后每次加购、减购都调用后端接口拿到最新数据后更新本地缓存。这样既保证了数据一致又不会给服务端造成太大压力。结算页需要把“购物车勾选的商品”“合计金额”“配送信息”三个区域拼在一起。这里有一个容易忽略的细节结算金额应该由后端重新计算前端展示的金额只能作为参考绝对不能直接信任。因为用户可以篡改请求参数如果你传送的是金额字段就存在被改成0元的风险。正确的做法是前端传商品ID和数量后端从数据库查出实时价格再计算总额。2.4 订单列表与订单状态流转订单列表页一般用tabs切换“全部 / 待支付 / 备餐中 / 待取餐 / 已完成”每一类对应一个订单状态。状态流转的关键是页面展示的状态必须来自后端返回的status字段而不是本地写死的判断。一个常见的问题是支付完成后订单状态没有刷新。原因是页面用了onLoad里的接口请求但小程序页面从订单创建页跳回订单列表页时onLoad不会重新触发只会触发onShow。所以订单列表的请求一定要写在onShow里这样才能保证每次回到页面都能拉到最新数据。订单卡片上通常要有“取消订单”和“再来一单”两个操作按钮。取消订单要注意时间限制比如待支付状态下可以直接取消已支付状态下则要考虑是否允许取消。毕业设计里建议简化规则待支付可取消已支付状态只能等商家出餐不允许用户单方面取消这样后端逻辑简单也不必处理退款流程。2.5 几个容易被忽视的小程序组件细节顶部导航栏不要写死高度。不同机型的胶囊位置不一样建议用wx.getMenuButtonBoundingClientRect()动态获取胶囊按钮位置结合wx.getSystemInfoSync()计算导航栏高度再决定自定义导航栏内容的top值。热词里“微信小程序顶部导航栏高度”就是这个问题的来源。video层级问题如果你在菜品详情里放了视频video在小程序的层级最高会盖在弹窗和遮罩上面。热词里提到“微信小程序的video在部分三星手机上的层级最高”解决方案是使用cover-view包裹需要覆盖在视频上的元素或者不主动使用原生video改用同声传译这类插件提供的替代方案。防截屏如果订单页有支付二维码或个人敏感信息可以考虑使用wx.setVisualEffectOnCapture({ visualEffect: hidden })隐藏截屏内容这在一些隐私保护要求高的场景下很实用。3. 后端接口与数据库设计订单状态机与并发问题3.1 数据表设计八张核心表就够了校园订餐系统的数据库设计不需要花哨核心表就八张用户表、商家表、菜品分类表、菜品表、购物车表、订单表、订单明细表、地址表。如果做了评价功能再加一张评价表。拿菜品表举例核心字段是id、name、category_id、price、image、description、stock、status、create_time。注意price要用decimal(10,2)不要用float不然会出现0.10.2不等于0.3的经典问题。stock用int并且加一个UNSIGNED约束从数据库层面杜绝负数库存。订单表和订单明细表是一对多的关系。订单表存订单的总体信息比如order_no订单号、user_id、shop_id、total_amount、status、create_time、pay_time。订单明细表每行就是一个菜品买了几份核心字段是order_id、dish_id、dish_name、price、quantity。明细表里冗余一份dish_name和price是必要的因为菜品价格后续可能调整但历史订单里应该保留下单那一刻的快照。3.2 订单状态机把你的状态迁移图写清楚订单状态是毕业设计里最能体现“工程素养”的部分。我推荐用一张状态表把这些写清楚论文里直接放这张表就能拿不少分状态含义可进入的下一状态触发条件PENDING_PAYMENT待支付PAID、CANCELLED用户支付或取消PAID已支付/备餐中READY、CANCELLED商家接单、出餐或用户申请取消READY待取餐COMPLETED用户确认取餐COMPLETED已完成无订单闭环CANCELLED已取消无用户或系统取消一个关键设计原则状态迁移必须由后端控制前端只是展示。不要在客户端判断“当前状态是已支付所以我可以点按钮改成已完成”而是调用后端接口由后端校验当前状态是否允许迁移。如果数据库里的状态和业务规则不匹配接口直接返回错误。3.3 并发点餐场景下怎么防止“超卖”这是答辩时高频被问到的点“如果100个人同时抢同一个菜品你怎么保证不超卖”这个问题即使你不做高并发优化也至少要能讲出正确的实现方案。方案一数据库乐观锁。在菜品表加一个version字段更新库存的SQL写成UPDATE dish SET stock stock - 1, version version 1 WHERE id #{dishId} AND version #{oldVersion}如果更新的影响行数为0说明期间有人改过这条记录就重试或提示库存不足。这个方案简单适合毕设场景。方案二Redis分布式锁。在扣库存前先SET一个带过期时间的锁拿到锁的请求才能执行扣减逻辑执行完再释放。这个方案可以让答辩时的技术含量上一个台阶但代码复杂度和出错风险也更高如果你没把握调试明白不建议硬上。方案三下单时预扣库存支付时确认扣减。这个方案能缓解“有人下单不支付占着库存”的问题但同时引入了“超时释放库存”这个新逻辑毕业设计不推荐做。我的建议是论文里把三种方案都写上分析各自的优缺点代码实现用方案一。评审老师听完会觉得你理解到位而不是只会套框架。3.4 接口设计规范后端接口建议统一采用RESTful风格并且用一个统一的返回类包装比如{ code: 0, message: success, data: {...} }。前端统一在请求封装里处理code不等于0时弹message。核心接口建议如下POST /api/user/login微信登录GET /api/dish/list?categoryId按分类获取菜品GET /api/dish/detail?id菜品详情POST /api/cart/add加入购物车GET /api/cart/list获取购物车POST /api/order/create创建订单POST /api/order/pay支付或模拟支付GET /api/order/list?status按状态查订单POST /api/order/cancel取消订单POST /api/order/status/update商家更新订单状态接口设计有一个容易被忽略的点所有涉及用户数据的接口都必须从Session或Token里拿用户身份而不是信任前端传来的userId。这是最基本的越权防护也是答辩时加分的安全意识体现。4. 微信生态能力接入登录、支付、订阅消息的合规姿势4.1 wx.login登录流程的完整示意小程序登录是每个项目都要过的第一关。标准流程是前端调用wx.login()拿到临时code把这个code发给后端后端拿code去微信服务器交换openid和session_key然后再由后端生成自己的登录凭证比如token返回给前端。之前有不少项目把openid直接当前端登录凭证用这在安全性上是有问题的。openid是用户在小程序里的唯一标识一旦被恶意获取别人可以冒充这个用户下单。正确做法是后端生成一个随机的token存储在Redis或数据库里设置有效期前端后续请求都带这个token后端通过token反查用户身份。这段逻辑在论文里属于“系统设计—登录模块设计”答辩时你要能画出流程图并且能说清楚code为什么不能在前端直接换成openid因为appSecret是后端保密的不能暴露在小程序代码里。4.2 微信支付前提条件与“替代方案”微信支付是一个绕不开的话题但我要提醒你一个现实问题小程序支付接口只对企业主体开放个人主体和未认证的小程序申请不了微信支付商户号。很多毕业设计项目用的是个人主体小程序所以完整接入真实微信支付是有门槛的。遇到这种情况一般有几种“过渡方案”模拟支付下单后点击“去支付”时前端弹出一个模拟支付确认框直接调用后端/api/order/pay接口将订单状态改成已支付。演示效果好也没有合规风险。余额支付给用户账户增加一个“余额”字段下单时扣减余额。这个方案有真实业务逻辑可以在论文里写成一个“虚拟钱包”模块有分析价值。校园卡/积分兑换用校园卡卡号绑定、扣减卡内余额但这个需要模拟校园卡中心接口工作量偏大不推荐。无论选哪种论文里都要写一段“为什么没有使用真实微信支付”说明原因、合规限制和替代方案的合理性。诚实比硬装强这一点项目方和评审老师都清楚个人开发者很难跨过支付资质门槛。4.3 订阅消息点击取餐提醒的合规思路订阅消息是替代传统短信通知的官方能力。比如用户下单后向用户申请“接受订单状态通知”等商家出餐后通过后端调用微信的订阅消息接口给用户发送一条“您的订单已备好请前往取餐”的模板消息。前端使用wx.requestSubscribeMessage传模板ID用户点击允许后后端才获得一次下发机会。注意小程序订阅消息是一次性订阅每次发送都要用户重新授权。设计时要在合理时机申请比如用户刚下单时弹窗请求订阅而不是在首页就弹。毕业设计里把这个功能做出来算是一个比较亮眼的细节。4.4 request合法域名与开发调试小程序的前后端联调是第一个大坑。开发者工具里默认会校验request的合法域名如果你用的是本地后端接口http://localhost:8080请求会被拦截。开发阶段可以在“详情 → 本地设置”里勾选“不校验合法域名”这样就能在工具里访问局域网接口。但真机预览时手机访问不到电脑上的localhost。这时候可以把后端接口地址改成电脑在局域网里的IP比如http://192.168.1.101:8080手机和电脑连同一个Wi-Fi就能访问。如果要上线就必须有一台配置了HTTPS证书的服务器并且在微信公众平台后台配置服务器域名这个流程最快也要一两天提前留好时间。5. 从源码到跑通Demo环境配置与常见踩坑全记录5.1 拿到项目后的第一步先别急着运行很多人一拿到源码就双击打开项目指望立刻跑起来结果报错一堆就开始慌。我拿到一个新项目无论是不是毕设项目都会先做三件事第一看README第二看目录结构第三看数据库脚本。README里通常会写明技术栈、环境要求、部署步骤这是最高效的入门入口。如果没有README就从目录结构入手前端项目一般有pages、utils、api这些目录后端项目一般有controller、service、mapper、entity。数据库脚本一般叫sql或db目录下的.sql文件拿到手先看一眼表结构再对照代码里的实体类确认字段是否一致。这一步做完你就会在脑子里形成一张“项目地图”哪里是入口、哪里是数据访问层、哪里是业务逻辑层。即使完全没有环境你也能在答辩论上把架构讲清楚。5.2 后端跑起来的几个关键配置后端项目跑不起来的90%是下面这三个原因数据库连接配置不对。打开application.yml或application.properties检查数据库地址、用户名、密码。本地用MySQL的话一般要手动创建数据库然后执行项目里的.sql脚本。如果你用的MySQL版本是8.x而项目用的是老版的com.mysql.jdbc.Driver需要换成com.mysql.cj.jdbc.Driver连接串里加serverTimezoneAsia/Shanghai否则启动就会报时区错误。端口被占用。默认后端端口一般是8080容易被本地其他服务抢占。如果启动时报Port 8080 was already in use要么把占用端口的进程关掉要么修改server.port配置同时把小程序端所有接口请求的URL一并改掉。依赖下载失败。Maven或Gradle第一次下载依赖非常慢而且国内访问中央仓库经常失败。建议在settings.xml里配置阿里云镜像下载速度能快十倍不止。用Python的话注意pip源同理。5.3 小程序端遇到的典型问题小程序端最容易让新手崩溃的问题几乎都在这一步。第一个高频问题是“request fail”。原因要么是域名没有配好要么是开发工具没有勾选“不校验合法域名”要么是后端根本没启动。排查顺序是先在浏览器里直接访问后端接口确认后端通畅再在开发者工具的Network面板里看请求有没有发出去最后看Console报的错。第二个高频问题是“不在以下合法域名列表中”。这是开发阶段没勾选“不校验合法域名”导致的或者你用了IP地址但没有加进域名白名单。上线前必须配置合法域名且要求HTTPS。第三个高频问题是“页面白屏”。这就是热词里“uniapp做微信小程序在手机上预览没问题但是在微信开发者上是白片”的经典场景。通常原因有三个一是项目路径里有中文或特殊字符二是微信开发者工具的基础库版本过低uni-app编译出来的代码用到了新语法三是本地代码缓存问题。解决方法是清缓存重新编译或者换一个高版本的基础库再不行就重新导入项目。第四个高频问题是页面跳转时参数丢失。很多同学用wx.navigateTo传对象参数结果发现目标页面拿到的全是[object Object]。记住小程序页面跳转只能传字符串对象需要先用JSON.stringify转成字符串再传目标页解析时再JSON.parse回来。5.4 调试技巧与一些“加分项”优化小程序官方开发者工具的调试器已经很强了Network面板能看到每个请求的耗时和返回数据Storage面板能查看本地缓存AppData面板能实时查看和修改页面数据。熟练使用这些工具调试效率能提升一个档次。除了基本功我建议你再做这几个优化它们对答辩体验有直接帮助分包加载如果项目页面超过十个建议把非核心页面比如评价详情、优惠券页放进分包只在需要时加载。热词里“微信小程序分包异步化在其他分包中的插件”就涉及分包之间的异步加载这块做对了项目会在架构层面显得更专业。骨架屏列表页和详情页加一个简单的骨架屏用户等待数据时不会看到一片空白。代码不多体验提升明显。定位与地图校园订餐如果需要配送可以在下单页调用wx.chooseLocation选择收货位置配合腾讯位置服务或天地图展示校园地图。热词里“微信小程序可以使用天地图画地图组件吗”答案是可以用但需要自己去申请天地图的服务端token和创建Web服务跟腾讯地图一样都有免费额度选哪个看你自己习惯。6. 把项目从“能用”升级为“能做毕业论文”6.1 论文结构如何组织一个校园订餐系统的毕业论文最简单的结构就是经典的“六章式”摘要、绪论、需求分析、系统设计、系统实现、系统测试。摘要别写太长300字以内说清楚“做了什么、用了什么技术、达到了什么效果”。绪论里“国内外研究现状”是很多同学最头疼的其实不用把外卖行业发展史写成一篇长文只需要聚焦“校园订餐”这个小场景引用两三篇期刊或学位论文观点就行重点是你自己系统的切入点。需求分析章节用用例图加文字描述把学生、商家、管理员三类角色的操作场景写清楚。系统设计章节是论文的核心一定要包含总体架构图、功能模块图、数据库ER图、核心表结构说明、接口设计。系统实现章节不需要贴整段代码而是选几个核心功能比如登录、下单、支付配合截图和关键代码片段说明。系统测试章节写测试用例表加测试结果证明系统通过验收。6.2 演示视频与演示环境的准备演示视频是所有毕业设计的必选项而它的核心要求只有两个字流畅。我录了这么多年项目视频总结下来几个关键点录制前先把所有演示数据准备好不要在现场边弄数据边录录制时按“用户操作路径”来先登录再浏览菜品加入购物车下单支付查看订单状态商家端接单、出餐用户确认完成一个闭环录完录屏时把鼠标指针和点击效果打开方便评审老师看清操作轨迹。环境准备上真机永远是一个更稳妥的选择——小程序在电脑上可能会因为屏幕尺寸问题展示得很别扭而手机上就是正常使用状态。如果答辩现场网不好记得提前把后端服务部署到本地数据库也放到本地避免因为查不到数据而卡壳。6.3 答辩常见问题答辩的时候老师喜欢问的问题就那么几个提前准备好就不慌“这个系统的架构是什么”——讲清楚前端小程序、后端服务、数据库三层关系。“你是怎么实现登录的”——把wx.login的完整流程讲一遍重点说为什么不能在前端直接换openid。“订单状态是怎么管理的”——把状态机那张表讲一遍。“如果多人同时点一个菜你怎么处理超卖”——讲乐观锁方案再提一句Redis方案的适用场景。“数据库为什么这么设计”——讲订单表和订单明细表拆开的原因一个订单对应多个菜品拆开后便于统计每个菜品的销量也避免字段冗余。“你在这个项目里遇到的最大困难是什么”——不要说你没遇到困难选一个真实的坑讲比如uniapp真机预览白屏你如何定位到基础库版本问题并解决这个故事比任何漂亮话都有信服力。6.4 后续扩展方向如果时间充裕能加上一两个扩展功能项目的档次会明显提升。比较推荐的几个方向消息推送用订阅消息实现“出餐通知”前面已经讲过。简单推荐根据用户历史订单按销量或分类偏好推荐菜品甚至不用做协同过滤按“同类菜品销量TOP N”就能交差。数据可视化管理后台加一个订单统计面板展示最近7天的订单量趋势、热销菜品TOP10用ECharts画图既能体现工作量又直接关联论文的“系统测试”章节。我不建议为了扩展而扩展比如做聊天室、做社交分享这些跟订餐的主线没有强关联写完很累还容易被追问。最后分享一点个人体会。每年都有同学走到答辩前一周才慌慌张张地开始看项目代码然后发现环境配不通、接口调不通、演示时候页面白屏。这套项目从拿到手到完全跑通静下心来做半天足够但从“跑通”到“讲清楚为什么这么设计”可能要花一周。毕业设计评的不是“谁代码写得花哨”而是“谁真正理解了这套系统”。如果你手头已经拿到了源码我建议你从今天开始就动手按日志记录排错过程每解决一个问题就记录一步到答辩时你手里那份日志就是最真实的项目说明。本文还有配套的精品资源点击获取