毕业设计实战:基于Spring Boot+MySQL的超市进销存系统设计与实现,从需求到测试全流程避坑指南!

60 阅读15分钟

毕业设计实战:基于Spring Boot+MySQL的超市进销存系统设计与实现,从需求到测试全流程避坑指南!

谁懂啊!当初做“超市进销存系统”毕设时,光“商品信息表”和“仓库信息表”的外键关联就卡了3天——一开始没给商品信息表设“仓库号”外键,查某个仓库的所有商品时,数据全跟其他仓库的商品混在一起,导师看了直接让我“重新梳理数据库实体关系”😫 后来踩遍无数坑才摸出高效落地流程,今天把需求分析、技术选型、功能实现到测试的核心细节说透,宝子们不用熬夜改代码,轻松搞定毕设!

一、先搞懂“超市进销存系统”要啥!需求分析别瞎蒙

刚开始我跳过需求分析就写代码,花两周加了个“智能库存预警算法”,结果导师一句“核心是商品管理、采购销售、库存盘点,不是复杂算法”直接打回重改!后来才明白,需求分析得先抓准“谁用系统、要干啥”,这步做对,少走90%弯路。

1. 核心用户&功能拆解(踩坑后总结版)

系统只有两类核心用户:管理员、员工(别加“仓库管理员子角色”!我当初加了后权限混乱,仓库管理员能删除商品信息,砍掉才顺畅),功能明确区分,避免越权:

  • 管理员端(必做功能):
    • 基础管理:员工管理(新增员工账号、分配部门岗位、查看员工详情)、部门岗位管理(设置部门架构、配置岗位权限)
    • 供应链管理:客户信息维护(新增客户、记录联系方式)、供应商管理(维护供应商信息、记录供货资质)、承运商管理(管理物流信息、设置配送范围)
    • 仓库管理:仓库信息配置(设置仓库类型、维护仓库位置)、商品类别管理(分类管理如“食品/日用品/家电”、编辑分类名称)
    • 业务管理:采购信息审核(审批采购申请、跟踪采购进度)、销售订单审核(审核销售订单、处理订单状态)、出入库记录查看(监控库存流向、生成出入库报表)
  • 员工端(核心需求):
    • 商品操作:查看商品信息(按类别筛选、按仓库查询)、商品信息维护(新增商品、更新价格库存)、采购申请(选择供应商、填写采购数量)
    • 库存管理:入库操作(录入入库信息、更新库存数量)、出库操作(填写出库单、选择承运商)、库存盘点(查看实时库存、生成盘点报表)
    • 销售管理:创建销售订单(选择客户、添加商品)、跟踪订单状态(待发货/已发货/已完成)、查看订单详情(订单总额、商品明细)
    • 个人管理:修改个人信息(密码、联系方式、头像)、查看操作记录(历史采购、销售、出入库记录)

2. 需求分析避坑指南(血泪教训!)

  • 别空想!找2个同学模拟管理员和员工提意见:比如员工说“想知道采购审批进度”,我才加了“审核状态实时显示”(待审核标黄色、已通过标绿色、已驳回标红色),比瞎加“智能预警”实用
  • 一定要画用例图!用DrawIO画“管理员-审核采购”“员工-商品入库”“员工-创建销售订单”,跟导师汇报时比光说“我要做XX功能”直观10倍(当初没画,导师听25分钟没get到逻辑)
  • 写“需求规格说明书”!把约束条件写清楚(如“商品数量不能为负数”“采购数量必须大于0”“销售价格不能低于成本价”),编码时对着做,不跑偏

3. 可行性分析别敷衍!3点写清楚就能过

导师超爱问“系统可行吗”,别只说“我觉得可行”,从3个角度写,显专业:

  • 技术可行性:Spring Boot、Java、MySQL都是课堂学过的,图书馆有《Spring Boot实战》《MySQL数据库设计与优化》,遇到问题能查资料(别用Spring Boot 3.x!我当初试了,跟MySQL 8.0联调时库存查询接口卡3天,换回2.7稳定版才顺)
  • 经济可行性:工具全免费!MyEclipse(学生版)、MySQL、Tomcat官网直接下,答辩时说“开发成本0,还能帮超市提升管理效率,实现进销存数据线上化运营”,导师会觉得你懂成本控制
  • 操作可行性:界面参考主流ERP系统,常用功能放显眼位置(如“商品管理”在员工首页顶部),找同学测试,10分钟学会商品入库、创建销售订单,导师直接认可

二、技术选型别跟风!这套组合稳到爆

刚开始我跟风用Spring Boot 3.x+Vue 3+Redis,结果“商品库存缓存”卡2天——Redis配置错,重启后库存数据全丢失😫 后来换成Java 8+Spring Boot 2.7+MySQL 8.0+B/S架构+MyEclipse+Bootstrap,新手友好,调试效率翻两倍!

1. 技术栈核心选择(附避坑提醒)

别盲目选“最新技术”,稳定比炫酷重要!核心工具选择理由和坑点直接抄:

技术工具为啥选它避坑提醒!
Java 8语法简洁,Spring Boot 2.7兼容性最佳,学习资料多别用Java 11+!部分Spring依赖支持差,易出“类加载失败”
Spring Boot 2.7简化Spring配置,自带Tomcat,适合快速开发采购、销售、库存功能别用自定义启动器!新手直接用官方starter(spring-boot-starter-web、spring-boot-starter-jdbc),避免配置错误导致入库接口失败
MySQL 8.0支持事务/外键,存商品、订单、库存数据足够用,utf8mb4编码解决商品名称特殊字符乱码安装设“utf8mb4”编码!我当初用默认编码,商品名称含emoji表情乱码,查2小时才好
B/S架构客户端无需安装软件,浏览器直接访问,适合超市多终端操作别用C/S架构!需要每个收银台安装客户端,部署维护成本高
MyEclipse集成开发环境完善,适合Java EE项目开发,可视化操作友好配置JRE为sun的JDK,不要用默认JRE
Bootstrap快速实现响应式布局,不用手写大量CSS,适配电脑/平板/手机端操作别用5.x版本!部分表单组件兼容性差,我当初用5.x导致商品表单显示错乱,换回3.x才正常

2. 开发环境搭建(step by step 实操)

很多宝子卡“环境配置”,跟着步骤来,一次成功:

  1. 装JDK 1.8:记安装路径(如D:\Java\jdk1.8.0_301),配置“JAVA_HOME”环境变量,cmd输“java -version”显“1.8.x”即成
  2. 装MyEclipse 2020:配置JRE为sun的jdk,设置文件编码格式为“UTF-8”,去掉JSP验证提高编译速度
  3. 装MySQL 8.0:用Navicat建数据库“supermarket_inventory_system”,编码设“utf8mb4”,排序“utf8mb4_general_ci”
  4. 建Spring Boot项目:Spring Tool Suite插件创建Spring Starter Project,引入Web、MyBatis、MySQL依赖,配置application.properties(数据库连接、端口号)
  5. 配前端页面:用JSP+Bootstrap写商品列表、采购表单、销售订单页面,实现响应式布局(电脑端表格显示,平板端卡片显示)
  6. 联调测试:在application.properties配置数据库连接(spring.datasource.url=jdbc:mysql://localhost:3306/supermarket_inventory_system?useSSL=false&serverTimezone=UTC),写“查询商品列表”接口,前端调用能显示商品名称、价格、库存即完成

三、数据库设计:别让表关联坑了你

这是毕设“核心骨架”,我当初没关联“商品信息表”和“仓库信息表”,查“某个仓库的所有商品”要写3层嵌套SQL,调试到凌晨1点😫 后来按“实体-属性-关系”设计,终于理清。

1. 核心实体&属性(附ER图技巧)

先确定“实体”(员工、部门、岗位、客户、供应商、承运商、仓库、商品类别、商品信息、采购、入库、出库、销售订单),再想“属性”,别漏关键字段!必做16张核心表,直接画ER图:

  • 员工表(employee):id(主键)、yuangongzhanghao(员工账号)、mima(密码,MD5加密)、yuangongxingming(员工姓名)、xingbie(性别)、yuangongdianhua(员工电话)、touxiang(头像路径)、bumen(部门)、gangwei(岗位)
  • 部门表(department):id(主键)、bumen(部门名称)、bumenjianjie(部门简介)
  • 岗位表(position):id(主键)、gangwei(岗位名称)、gangweirenshu(岗位人数)、gangweijianjie(岗位简介)
  • 仓库信息表(warehouse):id(主键)、cangkuhao(仓库号)、cangkumingcheng(仓库名称)、cangkuweizhi(仓库位置)、cangkuleixing(仓库类型)、cangkuxiangqing(仓库详情)
  • 商品信息表(product):id(主键)、shangpinbianhao(商品编号)、shangpinmingcheng(商品名称)、shangpinleibie(商品类别)、shangpintupian(商品图片路径)、guige(规格)、pinpai(品牌)、jiage(价格)、shuliang(数量)、chandi(产地)、cangkuhao(仓库号)、cangkumingcheng(仓库名称)、xiangqing(详情)
  • 销售订单表(sales_order):id(主键)、dingdanbianhao(订单编号)、kehuxingming(客户姓名)、shangpinmingcheng(商品名称)、jiage(价格)、dingdanshuliang(订单数量)、dingdanzongjia(订单总价)、dingdanshijian(订单时间)、dingdanxiangqing(订单详情)、yuangongzhanghao(员工账号)、yuangongxingming(员工姓名)、sfsh(审核状态)

画ER图用Visio/亿图,记3规则:

  1. 矩形=实体(如“商品信息”“销售订单”)
  2. 椭圆=属性(如商品信息“商品编号”“库存数量”,销售订单“订单编号”“订单总价”)
  3. 菱形=关系(如“员工-销售订单”一对多,一个员工可创建多个订单;“商品信息-销售订单”多对多,一个订单可包含多个商品) 避坑提醒:别把“商品图片/员工头像”存数据库!我当初存二进制导致数据库崩溃,改成存路径(如/static/product/item1.jpg、/static/avatar/emp1.jpg)才对。

2. 表关联测试!别等编码才发现错

建表后一定要测:在“仓库信息表”插数据(id=1,cangkuhao=“CK001”,cangkumingcheng=“食品仓库”),“商品信息表”插关联数据(cangkuhao=“CK001”,shangpinmingcheng=“巧克力”,shuliang=100),用JOIN查“某个仓库的所有商品”:

SELECT p.shangpinbianhao, p.shangpinmingcheng, p.shangpinleibie, p.jiage, p.shuliang, w.cangkuweizhi
FROM product p
JOIN warehouse w ON p.cangkuhao = w.cangkuhao
WHERE w.cangkuhao = 'CK001';

能查出“商品编号+名称+类别+价格+库存+仓库位置”说明关联对;若报错“Cannot add or update a child row”,大概率外键错,赶紧检查表结构(比如cangkuhao字段类型是否和仓库表一致)。

四、功能实现:核心模块操作+页面设计

不用做所有功能!先搞定3个核心模块,答辩足够出彩,附操作逻辑和页面要点:

1. 员工端:商品入库模块(必做!)

核心是“准确更新库存”,重点“数量校验”和“仓库选择”,别漏这两步!

  • 操作逻辑
    1. 员工入库前,选择商品时实时显示当前库存,输入入库数量后自动计算最新库存(我当初没加“实时计算”,入库后库存数据错误,导师让我补了自动计算逻辑)
    2. 提交入库前校验“入库数量必须大于0”“选择仓库必须有库存权限”
    3. 入库成功后,自动更新商品库存数量,生成入库记录,状态设为“待审核”
  • 页面设计(JSP+Bootstrap)
    • 商品选择区:商品搜索框、商品列表(显示编号、名称、当前库存)、数量输入框(带正数验证)
    • 仓库选择区:仓库单选组(按员工权限过滤)、入库时间选择器
    • 提交区域:入库备注输入框、“提交入库”按钮(点击后显示确认弹窗)

2. 员工端:销售订单创建模块(答辩亮点!)

体现“超市核心业务”,导师超爱问!核心“商品选择+自动计算”,别漏“库存校验”。

  • 操作逻辑
    1. 创建订单时,选择客户后自动带出客户信息,添加商品时实时显示库存和单价
    2. 输入商品数量时,自动计算小计(单价×数量)和订单总额,库存不足时自动提示
    3. 提交订单前校验“至少选择一件商品”“订单总额必须大于0”“库存足够”
  • 页面设计
    • 客户信息区:客户搜索选择框(支持模糊搜索)、客户信息展示卡片
    • 商品添加区:商品搜索添加、已选商品表格(商品、单价、数量、小计、操作列)
    • 订单汇总区:订单总额显示、优惠金额输入框(可选)、实付金额自动计算
    • 提交区域:订单详情备注、“创建订单”按钮

3. 管理员端:采购审核模块(核心需求!)

管理员核心需求“采购流程管控”,流程别复杂:查看采购申请→核对供应商→审批通过/驳回,我当初漏了“审批结果通知员工”,导致员工不知道采购进展,补半天消息推送逻辑才好。

  • 操作逻辑
    1. 管理员查看待审核采购列表,按申请时间倒序显示(最新申请优先处理)
    2. 点击审核时,可查看采购详情(商品信息、供应商、采购数量)、员工申请理由
    3. 审批完成后,必须填写“审核回复”(通过理由或驳回原因),系统自动通知申请员工
  • 页面设计
    • 采购列表页:按审核状态筛选(待审核/已通过/已驳回),显示采购编号、商品名称、申请时间、操作列“审核详情”
    • 审核详情页:左侧采购信息详情,右侧供应商资质信息,底部审批意见输入框、“通过/驳回”单选按钮、“提交审核”按钮
    • 审核记录页:显示历史审核记录,支持按时间、审核结果、员工账号筛选 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

五、测试别敷衍!这3步让答辩不翻车

很多宝子觉得“功能能跑就行”,答辩时评委一测就出问题!我当初没测“商品出库超过库存”,导致库存出现负数,导师说“不符合库存管理逻辑”,当场扣分😫 测试要针对性做:

1. 功能测试(必测3模块)

重点测核心功能,整理测试用例表,直接填结果:

测试场景操作步骤预期结果
商品出库数量超过库存员工选库存50个的商品→出库数量输入60→点击提交提示“库存不足,当前库存50个”,出库失败
销售订单添加0数量商品员工创建订单→添加商品→数量输入0→点击提交订单提示“商品数量必须大于0”,订单创建失败
管理员审核采购不填意见管理员选举购申请→不填审核回复→点击“通过”提示“审核回复不能为空”,审核失败

2. 兼容性测试(容易忽略)

别只在自己电脑测!答辩评委可能用不同设备和浏览器:

  • 浏览器:Chrome、Firefox、Edge、IE11(重点测IE,Bootstrap兼容性差,需引入html5shiv.js修复)
  • 设备:电脑(1920×1080、1366×768分辨率)、平板(iPad、安卓平板,测触摸操作)、手机(iPhone、安卓,测移动端适配)
  • 要求:表格数据展示清晰,按钮点击区域足够大,商品图片加载≤2秒

3. 测试报告要写好!答辩加分

整理“测试报告”,含“目的、范围、用例、结果、问题总结”:

  • 问题总结:“IE下商品表单样式错乱,加兼容性CSS修复;出库能超过库存,加库存校验修复;审核无意见验证,加必填校验修复”
  • 测试结论:“核心功能无严重bug,兼容性问题已修复,满足商品管理、采购销售、库存盘点需求,系统运行稳定,支持多用户并发操作”

六、答辩准备:3个加分小技巧

  1. 演示流程顺畅:提前录视频(怕现场崩),按“员工采购申请→管理员审核采购→员工商品入库→创建销售订单→商品出库发货”流程来,每个操作停顿2秒,让评委看清
  2. 讲“解决的问题”:比如“一开始商品图片存数据库崩了,改成存路径解决;出库能超库存,加实时库存校验解决;IE下表格显示问题,加兼容代码解决”,比光说“用了Spring Boot+MySQL”有亮点
  3. 准备常见问题:导师可能问“系统怎么保证数据一致性?”,答“采用数据库事务保证操作原子性;关键操作记录日志;库存更新使用悲观锁;定期数据备份;操作权限分级控制”

最后:毕设通关小私心

以上就是基于Spring Boot+MySQL的“超市进销存系统”从0到1的避坑干货!毕设不难,别瞎做复杂功能(如智能补货、销量预测),把商品管理、采购销售、库存盘点做扎实,答辩就能过。

需要核心源码(带注释,直接能跑)、数据库脚本(含测试数据)、ER图模板的宝子,评论区扣“超市进销存系统”,我私发你;卡在某个模块(如库存管理、订单创建),也可以留言,看到必回!

点赞收藏,下次找流程不迷路~祝宝子们毕设顺利,轻松毕业!😘