SSM+Vue抗疫物资管理系统毕设全攻略:从数据库到答辩
2026届的学弟学妹们如果你正在为“ssmvue抗疫物资管理系统”这个题目发愁大概率不是因为不会写代码而是不知道这套题到底要做到什么程度、论文里该写什么、答辩时老师会从哪里切入。这套题听着很典型但真正做下来你会发现它不只是把SSM和Vue拼在一起更是一个围绕“物资入库—库存管理—出库调拨—捐赠领用”全流程的管理闭环。把它做完整程序有程序的价值论文有论文的素材才是一份拿得出手的毕设作品。这篇文章我不讲虚的直接把这套系统的真实开发思路、数据库设计、后端接口要点、前端Vue落地方式以及论文该怎么组织和程序互相“喂内容”的完整链路拆给你看。不管你手里是现成的模板、老师给的开题报告还是打算从零手写按这个思路走能少踩很多坑。1. 选这个组合的逻辑SSMVue为什么至今还是毕设常青树很多同学拿到题目第一反应是2026年了为什么还要用SSMSpring Boot不香吗这个想法我太理解了但你先别急着换技术栈学校出这套题是有说法的。1.1 学校为什么还在出SSM题目高校的Java课程体系里Spring、SpringMVC、MyBatis依然是Web开发的主线课程。老师用SSM出题核心诉求是考察“三层架构到底懂不懂”Controller负责请求接收和返回、Service负责业务逻辑、Mapper负责数据库操作。这个分层模型是所有Java后端框架的祖宗你把这个搞透了再去看Spring Boot就是省去了大量配置文件的版本十分钟就能上手。反过来一上来就用Spring Boot全家桶很多东西被自动配置掩盖了答辩时老师问一句“Spring Boot的自动配置原理是什么”你答不上来反而扣分。另外管理信息系统MIS是毕设题库里最大的一类业务逻辑就是数据的增删改查加权限。这种系统用SSM写工程结构一目了然论文里的“系统设计”“系统实现”章节也特别好组织。你写“SpringMVC负责请求分发”论文里有明确对应的代码你写“MyBatis负责SQL映射”论文里也有明确的Mapper文件截图。整个论文逻辑链条是闭合的老师挑不出毛病。 Vue在这套题里承担的是前端页面渲染和数据交互部分。SSM做后端APIVue做前端界面中间用JSON串起来这就是标准的前后端分离形态。这种模式在真实企业项目里也是主流所以这套题其实很贴近工业界。1.2 SSM和Spring Boot在毕设场景下的实际对比我直接给一张对比表你写开题报告或文献综述时也能用对比维度SSMSpringSpringMVCMyBatisSpring Boot配置复杂度需要手动维护web.xml、Spring配置文件、MyBatis配置自动配置工程简洁学习深度必须理解分层和Bean管理知识更底层很多细节被封装上手快答辩友好度可以讲清楚每个请求的完整流转路径容易陷入“框架帮我做了”的笼统回答资料丰富度毕设市场上模板和博客资源非常多资源更多但雷同度也高题目匹配度学校题库指定时必须按SSM来学校无指定时可选但需额外说明选型原因我个人的建议是如果导师没有强制要求Spring Boot就踏踏实实把SSM的工程结构做扎实。你完全可以在论文的“技术选型”章节里写一段对比分析说明“为什么选择SSM”这本身就是加分项因为老师会看到你思考过技术选型而不是只会用框架。1.3 抗疫物资管理系统到底考察什么这类系统的业务本质是“资源的高效调度”有物资来源采购、捐赠、上级调拨有库存存放有物资去往出库、调拨、领用申请。围绕这个业务流程你需要做用户管理、物资管理、出入库管理、调拨管理、捐赠管理、审批流、统计报表、日志管理等模块。它和“XX学校图书管理系统”“XX超市进销存系统”在架构上是同一类但胜在业务场景完整、社会意义强做起来容易画出亮点比如物资过期预警、库存上下限提醒、各类统计图表都是可以在展示阶段加分的东西。2. 先把功能边界画清楚系统里到底该有哪些模块我见过太多同学拿到题目就打开IDE开始写代码写到一半发现功能对不上需求又回头改表结构耽误大量时间。正确做法是先花半天时间把角色和功能模块列清楚。2.1 三类角色和各自的操作面基于抗疫物资管理场景系统至少要设计三类角色系统管理员维护用户、分配角色权限、管理系统参数如仓库信息、物资分类字典、查看操作日志。这个角色关注的是系统的“底座”。物资管理员库管员录入物资档案、处理入库采购入库、捐赠登记、处理出库领用出库、调拨出库、定期盘点、查看库存预警。这个角色是系统的核心使用者。普通用户申请方发起物资领用申请、查看申请审批结果、查看公告或库存余量根据权限开放。这个角色让系统形成闭环不然只有管理员一个人在录入数据展示起来很单薄。有的系统还会加一个“审批人”角色专门处理申请单和物资管理员分开。如果你的毕设想突出“流程审批”这个点建议把“申请方—审批人—库管员”三者的流程做完整论文的流程图会很好看。2.2 核心功能模块一览模块核心功能点对应数据表思路登录与权限登录、退出、验证码、角色权限校验用户表、角色表、菜单表、用户角色关联表物资档案物资分类、物资名称、规格型号、单位、图片物资分类表、物资信息表入库管理采购入库、捐赠登记、入库单审核、入库明细入库单表、入库单明细表出库管理领用申请、审批、出库单生成、出库明细申请单表、出库单表、出库单明细表调拨管理调拨申请、调出、在途、调入确认调拨单表、调拨明细表库存管理实时库存、库存预警、有效期预警、盘点库存表、库位表统计报表出入库趋势、物资分类占比、库存排行、月度统计基于出入库明细聚合可用ECharts展示系统管理用户管理、角色分配、字典管理、操作日志日志表、字典表这套模块做下来无论从功能数量还是业务深度上看都已经达到甚至超过本科毕设的一般要求。你宁可把单个模块做深比如入库单里包含“来源类型采购/捐赠/调拨”也别多而浅地堆功能。2.3 业务流程闭环从申请到送达系统的“灵魂”在于一条完整的业务链申请方发起领用申请填写物资、数量、用途、期望领用时间。审批人查看库存是否充足选择通过或驳回。审批通过后系统自动或库管员手动生成出库单。库管员确认出库库存扣减单据状态更新为“已完成”。申请人可查看申请进度和出库信息整个流程留痕。入库端则是库管员登记采购/捐赠信息入库单提交后经审核库存增加。调拨端则是A仓库调往B仓库调出方扣减、调入方增加中间有一个“在途”状态。这段“业务闭环”理解透了论文的可行性分析、业务流程图画起来会非常顺。后面答辩被问“整个系统是怎么运转的”你就按这条链路讲三分钟就能把老师讲明白。3. 数据库设计决定你写代码和画ER图的效率数据库设计是SSM项目的地基也是论文里“系统设计”章节的重头戏。我不夸张地说表结构设计对了后端CRUD就是填表格表结构设计错了后面每写一个查询都在弥补当初的坑。3.1 核心数据表清单根据上面的功能模块我整理了一套完整的表清单这也是论文里ER图的基础用户相关sys_user用户、sys_role角色、sys_menu菜单、sys_user_role用户角色关联基础资料material_category物资分类、material_info物资档案库存相关warehouse仓库、material_stock物资库存可按仓库物资维度出入库单据inbound_order入库单、inbound_item入库明细、outbound_order出库单、outbound_item出库明细申请与调拨apply_order领用申请、allocate_order调拨单、allocate_item调拨明细辅助表operation_log操作日志、dict_type和dict_item数据字典这套表一共15张左右数量适中既不显得碎片化也能把业务讲清楚。很多同学为了省事把入库和出库合并成一张流水表这个方案在真实项目里不适合在毕设里更不适合因为论文的“数据表设计”章节没法展开。3.2 几张关键表的字段设计我给你列几张最核心的表直接抄作业就行material_info物资档案表字段名类型说明idbigint主键自增material_novarchar(50)物资编号唯一material_namevarchar(100)物资名称category_idbigint分类ID关联material_categoryspecvarchar(100)规格型号如“500ml/瓶”unitvarchar(20)单位如“瓶”“箱”“只”shelf_lifeint保质期天用于过期预警stock_maxint库存上限用于超储预警stock_minint库存下限用于低库存预警statustinyint状态0停用 1启用delete_flagtinyint逻辑删除标记material_stock库存表字段名类型说明idbigint主键自增warehouse_idbigint仓库IDmaterial_idbigint物资ID关联物资表quantityint当前库存数量lock_quantityint锁定数量可选用于订单占用batch_novarchar(50)批次号expire_datedate有效期至versionint乐观锁版本号做扣减时用这里有两个细节值得注意一是库存表不是只记一个总数最好按“仓库物资批次”维度记录这样能做批次追溯二是我加了version字段方便后端用乐观锁控制并发扣减这是个技术亮点答辩时老师很爱考详见下一章。inbound_order入库单字段名类型说明idbigint主键自增order_novarchar(50)入库单号规则如RK日期序列inbound_typetinyint来源类型1采购 2捐赠 3调拨入库 4其他suppliervarchar(100)供应商/捐赠方名称total_amountdecimal(12,2)入库总金额statustinyint状态0草稿 1待审核 2已审核 3已入库 4驳回create_bybigint创建人audit_bybigint审核人create_timedatetime创建时间audit_timedatetime审核时间remarkvarchar(255)备注所有流程单据字段的同构性很强都包含单号、状态、创建人、审核人、时间戳。这个“状态机”设计做得好后续所有单据的逻辑就统一了。3.3 设计中容易踩的三个坑库存数量用整数还是小数口罩、隔离服这些按“件”“只”计的用int没问题但如果是消毒液按“吨”计可能涉及小数。建议所有数量字段用int或decimal但统一约定千万别混用否则合计函数会出大问题。金额用float/double这是大忌Java后端用float算金额会出现精度丢失数据库务必用decimal。删除一律逻辑删除毕设系统虽然数据量小但论文里写“系统对敏感数据采用逻辑删除保留审计轨迹”这句话本身就体现工程素养。3.4 论文ER图怎么画才规范论文里的ER图不用把每个字段画出来画到“表名核心字段”级别就够了。我在写论文时用的是标准ER图符号实体用矩形、属性用椭圆、关系用菱形。如果你嫌麻烦可以用工具自动生成再简化。关键是在论文里写清表与表之间的关联关系比如material_stock和material_info是“多对一”inbound_order和inbound_item是“一对多”sys_user和sys_role是“多对多”。把这三类关系说清楚数据库设计章节就合格了。4. 后端SSM的关键工程实践接口、鉴权、事务和分页后端代码的骨架大同小异但真正拉开差距的是几个“工程级别”的细节。这章我挑最核心的讲每一条都直接影响你答辩能不能扛住追问。4.1 工程结构怎么分Maven工程我会分成四个包com.xxx.antiepidemic ├── controller // 接收请求返回Result ├── service // 业务逻辑接口实现类 ├── mapper // MyBatis接口对应XML文件 └── entity // 实体类对应数据表另外加一个common包放统一返回结果类、全局异常处理器、JWT工具类、拦截器。这种分层方式对应论文里的“系统总体架构”最合适画架构图时从上往下依次是控制层、业务层、持久层。4.2 统一返回结果和全局异常前后端分离必须有统一的JSON返回格式。我建议直接做这样一个类public class Result { private Integer code; // 200成功401未登录403无权限500错误 private String msg; private Object data; // 构造方法、getter/setter省略 }所有Controller的方法都返回Result前端axios拦截器统一判断code。这算是我屡试不爽的做法前端处理逻辑会非常清爽而且论文里写“系统设计了统一返回结构便于前端统一处理异常”也是一句加分的技术描述。再配合一个RestControllerAdvice全局异常处理器把业务异常统一转成Result返回代码里就不用到处写try-catch了。4.3 登录鉴权用Token还是SessionSSM传统教程里喜欢用Session但既然前端是Vue我更建议用JWT Token方案理由有三一是前后端分离场景下Token天然无状态Vue请求时在Header里带上Authorization即可二是Token天然适配移动端扩展论文里能写“该方案支持跨端访问”三是答辩时老师问“无状态认证和有状态会话有什么区别”你有一个很自然的展示点。具体做法用户登录成功后端生成JWT有效期设为24小时。前端把Token存到localStorage或vuex里axios请求拦截器统一加Header。后端写一个拦截器拦截除了登录接口之外的所有请求校验Token有效性。更细一点的可以在拦截器里从Token中解析出用户ID和角色ID放入ThreadLocalService层直接用。Token方案容易踩的坑是密钥硬编码和过期时间太长。毕设没那么多要求但你写代码时把密钥和过期时间放到配置文件中这就是工程习惯答辩被问“如何保证安全性”时可以回答密钥外部配置、过期时间控制、密码MD5加盐存储。4.4 库存扣减的事务与并发控制出库操作的经典流程是校验库存充足——生成出库单——扣减库存——更新单据状态。如果不加控制两个人同时领同一批物资就可能出现超卖。这个点是毕设答辩中的“送命题”很多同学没想过一问就卡住。我推荐用两种手段组合Transactional事务出库涉及的多个写操作放到一个事务里任何一步失败则全部回滚。乐观锁版本号扣减库存的SQL写成UPDATE material_stock SET quantity quantity - #{outQuantity}, version version 1 WHERE id #{stockId} AND quantity #{outQuantity} AND version #{version};如果返回影响行数为0说明库存不足或版本不对抛业务异常事务回滚。这个方案虽然在高并发场景下不如Redis分布式锁复杂但作为毕设完全够用而且讲起来就是亮点——老师听到你能说出“乐观锁解决超卖”基本就知道你理解了核心业务。4.5 MyBatis的动态SQL和分页SSM里MyBatis的XML很常用。筛选条件不固定时用动态SQL比如物资列表的按名称、分类、状态筛选select idselectMaterialList resultTypecom.xxx.entity.MaterialInfo SELECT * FROM material_info WHERE delete_flag 0 if testkeyword ! null and keyword ! AND material_name LIKE CONCAT(%, #{keyword}, %) /if if testcategoryId ! null AND category_id #{categoryId} /if ORDER BY create_time DESC /select分页直接引入PageHelper插件一行代码搞定分页PageHelper.startPage(pageNum, pageSize); ListMaterialInfo list materialInfoMapper.selectMaterialList(query); PageInfoMaterialInfo pageInfo new PageInfo(list);这样返回给前端的就是带total、pages等分页信息的对象前端表格组件直接渲染。做Vue前端时那个分页组件的数据项就能和这里的字段一一对应。5. Vue前端怎么从零落地环境、路由、请求封装和页面组件SSM后端做得再漂亮最终要给老师演示的还是界面。Vue这部分我按“从零到能展示”的顺序讲并尽量避开网上教程里讲得含糊的地方。5.1 环境准备和版本选型如果你不确定Vue2还是Vue3我直接给结论毕设优先选Vue2 Element UI其次是Vue3 Element Plus。原因很实际毕设参考资料、已有SSM模板、CSDN博客、前端组建库Vue2的资源在存量上更丰富踩坑时容易搜到解决方案而且Vue2和Element UI的搭配非常稳定两年内不会有什么版本兼容暴雷。当然老师如果明确要求Vue3那也不必慌后面的内容同样适用。环境上要装三样Node.js建议16.x或18.x LTS版本、npm或cnpm、vue-cli4。很多同学卡在“npm install太慢”上解决方案就一条切换淘宝镜像源。npm config set registry https://registry.npmmirror.com顺便说一句Vue Devtools插件建议装一个开发调试组件状态和Vuex数据会舒服很多。这个工具虽说不是必须但实际排查问题时能省一半时间。5.2 项目结构和路由设计用vue-cli创建项目vue create anti-epidemic-web选择Router、Vuex、Axios相关的预设进去后目录结构大致是src ├── api // 封装各模块的接口调用 ├── assets ├── components // 通用组件 ├── router // 路由配置 ├── store // 全局状态管理 ├── views // 页面组件 ├── utils // axios实例、工具函数 ├── App.vue └── main.js路由我推荐在router/index.js里做两件事静态路由登录页、404页、主页框架布局组件。动态路由登录成功后根据用户角色请求后端返回菜单数据用router.addRoutes动态挂载。这个设计对应论文里的“动态菜单权限控制”它体现的是前端也参与了权限管理而不是所有页面都摆在侧边栏。Vue开发中有个很常见的坑刷新后动态路由丢失。解决思路是把菜单数据同时存一份到localStorage或Store刷新后重新根据菜单生成路由。这块其实很多模板都处理过你直接参考即可。5.3 Axios请求封装和后端对接在utils/request.js里生成一个axios实例统一设置baseURL和超时时间再加请求拦截器、响应拦截器import axios from axios import { Message } from element-ui import router from /router const service axios.create({ baseURL: /api, timeout: 10000 }) // 请求拦截器附加token service.interceptors.request.use(config { const token localStorage.getItem(token) if (token) { config.headers[Authorization] Bearer token } return config }) // 响应拦截器统一处理业务码 service.interceptors.response.use( response { const res response.data if (res.code 401) { localStorage.clear() router.push(/login) return Promise.reject(new Error(未登录)) } if (res.code ! 200) { Message.error(res.msg) return Promise.reject(new Error(res.msg)) } return res }, error { Message.error(网络异常) return Promise.reject(error) } )开发环境跨域是另一大坑。Vue的devServer代理只需要在vue.config.js里写module.exports { devServer: { proxy: { /api: { target: http://localhost:8080, // 后端SSM端口 changeOrigin: true, pathRewrite: { ^/api: } } } } }这样前端调用/api/user/login实际上代理到后端http://localhost:8080/user/login规避了跨域问题。生产部署时用Nginx把/api反向代理到后端服务即可这块在论文的系统部署章节可以写一段。5.4 页面生命周期和常见坑开发中我最常被问到的就是“数据什么时候加载”。记住一个最朴素的规则列表数据在mounted里加载部分需要等页面初始化完成后再拿数据的场景用created或beforeMount都行但mounted最保险。因为mounted意味着DOM渲染完成Element UI的表格初始化、ECharts画图等依赖容器的操作这时候执行不会出现容器宽度为0的问题。很多新手容易碰到的一个情况在mounted里请求数据但模板已经渲染了表格导致有一瞬间表格是空的然后数据到了才填上。这个很正常加个loading状态过渡一下就行data() { return { loading: false, tableData: [] } }, mounted() { this.loadList() }, methods: { async loadList() { this.loading true try { const res await getMaterialList(this.queryParams) this.tableData res.data.list } finally { this.loading false } } }表格上加v-loadingloading体验马上就对了。5.5 组件复用新增/编辑共用弹窗物资管理、入库管理这类模块基本都是“一个列表页一个新增/编辑弹窗”。建议把弹窗里的表单封装成子组件父组件通过props传入isEdit标识和表单初始值子组件通过$emit通知父组件保存。这样能显著减少代码量论文里也可以写“系统前端采用组件化设计表单组件支持新增/编辑复用提高开发效率”。这种组件化思想如果你在论文的“前端实现”章节里好好展开绝对是加分项。很多同学的论文前端部分只会贴界面截图而你贴的是“组件拆分结构图组件通信机制”境界完全不一样。6. 论文怎么和程序互相“喂内容”最强的写作方案毕设论文和程序的关系我一直认为就是“程序是论文的证据链论文是程序的说明书”。最怕的是程序做完才想起写论文然后对着系统编一堆没有依据的设计方案。反过来先定论文提纲再开发程序和论文互相照应效率至少高一倍。6.1 论文大纲直接映射到开发过程我建议采用以下结构这也是大多数MIS类论文的规范格式。每一章对应你在项目里做了什么我标在括号里绪论选题背景、国内外研究现状、论文结构安排——对应你调研同类型系统怎么做的过程。相关技术介绍SSM、Vue、Axios、Element UI、MySQL——对应环境搭建和选型分析。系统需求分析可行性分析、功能需求、非功能需求、用例图——对应前面第2章的功能模块拆解。系统总体设计总体架构、功能模块图、业务流程、数据库设计——对应第3章的数据库设计核心产出是ER图和表结构说明。系统详细设计与实现每个模块的页面展示关键代码实现说明——对应第4、5章的实际开发成果。系统测试功能测试用例表、测试结果、部分性能测试——对应你最后反复验证系统健壮性的过程。总结与展望做得好的地方、不足、未来改进方向。这里有个经验第3章数据库设计一定先把表和关系确定死再动手写代码。第5章详细设计是文字主力每张表截图配上“本页面实现XX功能核心逻辑为XX”写起来非常快而且不容易卡壳。6.2 论文里的代码和截图怎么放首先别大段贴源码。一篇合格的毕设论文核心代码片段控制在10-20行用表格或列表的形式描述上下文逻辑。比如讲“出库扣减库存”的实现时贴那条乐观锁SQL然后解释语句含义效果远好于贴100行Service代码。其次截图要有“做事”的感觉不要只截页面完整图更要在截图上标注关键区域和数据流转。比如物资列表页截图上一张搜索条件的图下一张搜索结果的图配文“系统支持按物资名称模糊查询和按分类精确查询”。老师看到的是“这学生真的会调通功能”而不是“这页面是模板里现成的”。数据库表结构说明用表格展示不要贴建表SQL。所有表的关键字段列成表格字段名、类型、说明、约束一表搞定导师看起来最舒服。6.3 测试章节别只写“功能正常”很多人的测试章节全是“点击按钮页面跳转正确测试通过”这种描述等于没写。规范的测试用例表至少要有这四列用例编号测试项测试步骤预期结果实测结果TC-01用户登录输入正确用户名和密码点击登录登录成功跳转到首页通过TC-02库存不足出库某物资库存为5申请出库10提示库存不足出库失败通过TC-03捐赠入库录入捐赠方和物资明细提交入库入库单生成库存增加通过TC-04未登录访问列表清除token后直接访问物资列表请求返回401跳转至登录页通过TC-02和TC-04这种测试用例尤其有价值因为它们对应的是业务流程和权限逻辑不是单纯的界面跳转。答辩时老师拿这三张测试表一看就知道系统经过真实的边界条件验证。6.4 论文写作节奏建议我见过最快且有效的顺序是程序做完80%→边做边截图→按大纲填充论文→把剩余20%的边角模块补齐。核心模块登录、订单、库存、报表的截图和代码要优先写进论文因为答辩里这些地方最受关注。次核心模块验证码、日志、字典截图放进去即可文字描述可以简略些。7. 开发排期和答辩现场的高频问题应对这一章是实战经验总结特别适合那种“三个月前觉得时间很多三个月后只剩两周”的同学。我把开发节奏和高频答辩问题一起讲你拿给你自己和身边同学直接参考。7.1 一个稳妥的开发排期表按8周算时间任务交付物第1周需求分析、确定角色和功能清单系统功能列表、用例图第2周数据库设计、ER图画定建表SQL、ER图第3周后端框架搭建、登录和权限模块可运行的登录流程第4-5周后端核心模块开发物资、出入库、调拨后端API全部可用第6周前端基础框架、布局、Axios封装、登录页对接前端可登录进主页第7周前端全页面联调处理跨域、分页、权限系统基本可演示第8周写论文、做测试、准备答辩PPT论文初稿演示环境如果你时间只剩三周也不要慌压缩顺序是数据库设计压缩到3天后端只做登录、物资、出入库、库存、报表五个核心模块前端复用现成Element UI组件论文重点写需求和设计。至少程序能通论文能过查重答辩能讲清楚。7.2 答辩被问概率最高的四个技术问题为什么用SSM而不用Spring Boot答题思路SSM的三层架构能清晰展示请求流转过程有利于掌握Web开发核心原理项目业务以管理数据为主SSM的灵活SQL和缓存机制完全能满足需求Spring Boot的自动配置虽然方便但不利于论文体现“配置管理”和“框架整合过程”。说完再补一句“选择Spring Boot也可以但基于学校课程体系和课题要求SSM更有助于讲清底层逻辑”非常稳。库存扣减时怎么防止超卖答题思路先说事务再说乐观锁最后提一句“如果以后上线到高并发场景可以引入Redis分布式锁或消息队列架构”。这个问题只要把第4.4节的内容答出来基本就是满分。权限是怎么控制的答题思路登录发Token→拦截器校验Token→从Token中解析角色→结合菜单表生成前端菜单和后端接口权限。再补充一句“对于敏感接口后端会做二次权限校验前端菜单控制只是提升体验不是安全边界”这句话很加分。数据库为什么这么设计答题思路按业务分类说流程单据和基础档案分开、库存记录到批次级、逻辑删除保留审计轨迹、加version做并发控制。关键句是“这个设计可以支持物资有效期追溯和出入库审计”。7.3 演示现场最容易翻车的点我见过太多同学演示时卡在“后台连不上数据库”“页面加载空白”“录入数据报错”。最恶心的不是系统有问题而是准备不足。演示前务必做到先把后端启动确定Tomcat端口没有占用数据库服务已启动然后把数据库连接配置里的密码再对一遍。前端npm run serve启动后用无痕浏览器访问避免旧状态干扰。准备至少10条演示数据5类物资、3个仓库、5条出入库记录、2条调拨记录让图表和列表不是空的。如果现场没网提前把前端依赖构建成dist包用Nginx本地起服务这个方案在论文部署章节也能直接写进去。务必注意的一点是演示时不要只点不讲解按“登录→首页统计→物资档案→入库→出库→调拨→审批→报表”的路径完整走一遍每一步告诉老师“我点了什么预期会发生什么后台做了什么”。这样演示质量会高很多老师会认为这个系统确实是你亲手做出来的。7.4 做两个超出题目预期的小亮点如果核心功能都做完了还有时间我最推荐两个增强功能一是库存临期预警在物资管理页标记即将到期的物资让系统表现得更“智能”二是基于ECharts的出入库趋势图把数据变化做成季度环比走势有明显的业务价值。这两个功能都不难但答辩展示时比多写一个CRUD界面更能抓人眼球。往届学生里凡是主动加这些细节的老师最后评语里基本都会写一句“系统设计完整具有一定实用价值”。最后再分享一个小技巧也是在批改中大论文时屡试不爽的加分做法在开发过程中随手用表格记录每个模块的完成状态、遇到的问题和解决过程。写论文的时候这些记录直接变身“系统测试”章节的素材答辩的时候遇到“你遇到过什么坑”这种开放题你也有具体的故事可讲而不是干巴巴地说“没遇到什么问题”。这套题真正难的不是技术本身而是你有没有把“需求—设计—开发—测试—论文”这条链路走完整。走完整了你就超过大多数同学了。