毕业设计实战:基于Java+Spring Boot+MySQL的福泰轴承进销存系统设计与实现全流程指南
在开发“基于Java+Spring Boot+MySQL的福泰轴承进销存系统”毕业设计时,曾因“商品表与供应商表未通过供应商ID关联”踩过关键坑——初期仅在两张表单独设计编号字段,未设置外键约束,导致管理员查询某轴承商品对应的供应商联系方式时,需手动匹配商品编号与供应商编号,耗费1.4天重构表结构、补全关联SQL才解决问题📝。基于此次实战经验,本文将系统拆解从需求分析、技术选型、功能实现到测试验收的全流程要点,附避坑技巧与实操细节,为同类毕设提供可落地的实施指南。
一、需求分析:锚定轴承进销存核心诉求,避免功能冗余返工
部分同学在毕设初期易陷入“功能堆砌”误区,比如笔者曾耗时2天开发“轴承销售数据可视化大屏模块”,最终因偏离“商品管理、出入库管控、销售退货、供应商维护”核心需求被导师要求删减。明确“用户角色-核心功能”对应关系,是降低返工率的关键前提。
1. 核心用户与功能拆解(优化后角色权限体系)
系统核心用户分为管理员、仓库人员、销售人员三类,前期曾因混淆“仓库人员”与“销售人员”的“商品库存修改权限”,导致销售人员误操作调整轴承库存,明确角色边界后系统数据规范性显著提升,具体功能分工如下:
管理员端(核心必做功能)
- 全维度权限与基础管理:
- 多角色管理:维护管理员、仓库人员、销售人员账号(新增、密码重置、逻辑删除),按角色分配权限(如仓库人员仅可操作出入库,销售人员仅可操作销售单),支持按姓名/手机号筛选查询;
- 字典管理:配置系统固定选项(如轴承类型、公告类型、客户来源、付款状态),确保数据录入规范性(如轴承类型仅可选“深沟球轴承”“圆柱滚子轴承”“圆锥滚子轴承”);
- 公告管理:发布轴承采购通知、库存预警等公告(上传图片、选择类型、编写详情),维护公告内容(修改、删除过期公告),按发布时间倒序展示,支持用户端实时查看;
- 核心业务管控:
- 商品管理(轴承为主):录入轴承信息(上传商品照片、生成唯一编号、关联供应商、填写进价/售价/库存/到期时间),维护商品状态(修改参数、下架滞销品、预警临期轴承),支持按名称/类型/供应商筛选;
- 供应商管理:维护轴承供应商信息(录入名称、联系人、手机号、信用等级、地址),标记优质/黑名单供应商,支持按信用等级、地区筛选,关联查看该供应商提供的所有轴承商品;
- 客户管理:录入客户信息(姓名、手机号、身份证号、住址、来源),关联专属销售人员,支持按客户来源(如“线上咨询”“线下展会”)筛选,记录客户采购偏好(如常用轴承型号);
- 业务流程监督:
- 出入库审核:查看仓库人员提交的轴承出入库记录,校验数量与实际库存是否匹配,驳回异常申请(如出库数量大于现有库存);
- 销售与退货监控:查看销售人员提交的销售单,跟踪款项结清状态;处理商品退货申请(校验退货理由、数量,确认后同步更新库存),支持按时间范围导出销售/退货报表。
仓库人员端(核心操作功能)
- 商品出入库全流程处理:
- 入库操作:新增轴承入库单(选择商品、填写数量、关联供应商、标记款项结清状态),上传入库凭证照片,提交后自动更新商品库存;
- 出库操作:根据销售需求创建出库单(选择商品、填写出库数量、关联销售人员),校验库存充足性,提交后同步扣减库存,支持打印出库单;
- 库存盘点:查看所有轴承实时库存,标记破损/过期商品,提交库存调整申请(需管理员审核),生成盘点报告(含盘盈盘亏记录)。
销售人员端(核心业务功能)
- 销售与客户维护:
- 销售单管理:创建轴承销售单(选择客户、商品、填写数量、计算金额),标记款项结清状态(“已结清”“待付款”),支持关联销售合同附件,提交后自动生成销售编号;
- 退货处理:接收客户退货申请,核实退货商品型号、数量、完好度,创建退货单(关联原销售单、填写退货理由、计算退还金额),提交后等待管理员审核;
- 客户跟踪:查看专属客户列表,记录客户采购记录,推送轴承新品、促销信息,支持按客户采购金额排序(重点维护高价值客户)。
2. 需求分析避坑要点(实战经验总结)
- 拒绝空想调研:邀请3-4名同学模拟“销售人员创建销售单-仓库人员出库-客户退货-管理员审核”“管理员维护供应商-仓库人员关联采购入库”场景,收集真实诉求。例如,基于仓库人员“快速核对轴承型号与库存”需求,增设“商品入库时型号自动匹配库存预警”功能,实用性远高于冗余的“销售数据可视化大屏”;
- 绘制可视化用例图:用DrawIO绘制核心用例图(如“仓库人员-商品入库”“销售人员-销售单创建”“管理员-供应商维护”),汇报时直观呈现逻辑,避免纯文字描述偏差;
- 明确约束条件:提前规定“商品/供应商/客户照片仅限JPG/PNG(≤5MB)”“商品编号自动生成(格式:ZC+日期+序号,如ZC20240601001)”“销售单金额≥0(防止负数录入)”“轴承到期时间格式为‘YYYY-MM-DD’”“库存低于5件时自动触发预警”,为编码提供明确依据。
3. 可行性分析:从五维度论证,提升毕设专业性
可行性分析是开题关键,需避免泛泛而谈“可行”,从以下维度具体展开:
- 时间可行性:预留2个月开发周期,拆分“需求分析(7天)→ 环境搭建(5天)→ 数据库设计(7天)→ 功能开发(28天)→ 测试验收(13天)”,每日投入3.5小时,结合导师指导可按时完成;
- 经济可行性:开发工具均为免费/开源(IDEA社区版、MySQL 5.7、Tomcat 8.5),硬件用个人笔记本,开发成本为零;系统上线后可替代福泰轴承传统手工管理模式(如纸质出入库单、Excel记录库存),减少记录误差(原手工记录误差率12%,系统上线后降至1.5%)、提升管理效率;
- 操作可行性:界面参考轴承行业进销存平台交互逻辑,高频功能(商品查询、出入库操作、销售单创建)置于首页,经测试,仓库人员3分钟内可完成轴承入库操作,销售人员2分钟内可创建销售单;
- 技术可行性:Java、Spring Boot、MySQL、Vue均为高校核心课程内容,资料丰富(如《Spring Boot实战》《MySQL从入门到精通》),技术门槛可控;需注意避免Tomcat 10版本,前期联调时出现Servlet API兼容问题,切换至Tomcat 8.5后解决;
- 法律可行性:技术与工具均为开源授权,无版权纠纷;客户、供应商数据遵循《个人信息保护法》,不收集无关信息(如供应商非业务联系人信息),论文与源码无抄袭,符合法律要求。
二、技术选型:优先稳定适配,拒绝盲目追新
前期曾跟风选用Java 11+Vue 3+Redis技术栈,因Redis缓存配置不当导致轴承库存数据重启后丢失,调试耗时1.2天。后续调整为“Java 8+MySQL 5.7+IDEA社区版+Spring Boot 2.5.x+Vue 2.x+Tomcat 8.5”组合,兼顾稳定性与开发效率,适合新手上手。
1. 核心技术栈选型说明(含避坑提醒)
| 技术工具 | 选型理由 | 避坑提醒 |
|---|---|---|
| Java 8 | 语法简洁,支持面向对象编程,与Spring Boot、Tomcat 8.5兼容性最佳,满足多角色权限、轴承进销存流程开发 | 避免Java 11+版本,部分旧依赖(如commons-fileupload)支持不完善,易出现轴承照片上传IO异常 |
| MySQL 5.7 | 支持事务与外键,满足多表关联(商品-供应商、销售单-客户、出入库-商品),utf8mb4编码解决轴承型号、供应商名称生僻字乱码 | 安装时手动设编码为utf8mb4,默认编码会导致客户地址含特殊符号乱码;开启事务确保商品入库与库存更新原子性 |
| IDEA 社区版 | 轻量级开发工具,支持Spring Boot、MySQL插件,断点调试便捷,代码提示优于Eclipse,适合Java新手 | 安装“Maven Helper”插件管理依赖,避免手动导Jar包版本冲突,前期因缺失mysql-connector导致数据库连接失败 |
| Spring Boot 2.5.x | 简化Spring配置,内置Tomcat,快速集成数据库操作、数据校验组件,降低开发复杂度(如自动处理跨域) | 避免Spring Boot 3.x版本,与Java 8兼容性差,易出现配置解析错误;配置文件明确数据库URL(加useSSL=false防SSL报错) |
| Vue 2.x | 轻量级前端框架,支持组件化开发,快速实现动态页面(商品列表、出入库表单、销售单管理),数据绑定简化前后端交互 | 避免Vue 3.x版本,部分UI组件(ElementUI)兼容不足,易出现表单校验错误;配置axios拦截器处理请求超时问题 |
| Tomcat 8.5 | 适配Java 8与Spring Boot,部署简单,支持热部署(修改代码无需重启服务器) | 避免Tomcat 10版本,与Spring Boot 2.5.x存在Servlet API兼容问题,易出现页面无法访问;端口设为8082(默认8080易冲突) |
2. 开发环境搭建步骤(实操指南)
- 安装JDK 1.8:配置“JAVA_HOME”“Path”环境变量,cmd执行“java -version”显示“1.8.x”即为成功;
- 安装IDEA与插件:安装IDEA社区版,在“Settings→Plugins”装“Spring Tools 4”“Vue.js”“Maven Helper”插件,配置JDK为1.8,编码设为UTF-8;
- 安装MySQL 5.7:用Navicat创建数据库“fute_bearing_system”,编码utf8mb4,执行脚本创建表(商品表、供应商表、出入库表等);
- 配置Tomcat 8.5:解压后在IDEA中配置服务器,测试访问http://localhost:8082,出现默认页面即成功;
- 创建Spring Boot项目:通过IDEA创建Maven项目,pom.xml引入Spring Boot Web、MySQL Driver、MyBatis等依赖,配置application.properties(数据库连接、端口、静态资源路径);
- 前端开发与联调:用Vue+ElementUI开发登录、商品管理、出入库操作页面,打包后放入Spring Boot的static目录,编写“查询轴承商品列表”接口,前端调用成功即环境搭建完成。
三、数据库设计:精简核心关联,避免数据混乱
数据库是轴承进销存系统的核心,前期因未关联“商品表”与“供应商表”“出入库表”,导致无法追溯商品来源与库存变动记录,后续用“实体-属性-关系”分析法梳理,效率显著提升。
1. 核心表结构设计(精简版,共11张核心表)
- 管理员表(admin):id(主键)、username(账号,唯一)、password(MD5加密)、role(角色)、addtime(新增时间);
- 仓库人员表(cangkurenyuan):id(主键)、cangkurenyuan_name(姓名)、cangkurenyuan_phone(手机号,唯一)、cangkurenyuan_id_number(身份证号,唯一)、cangkurenyuan_photo(头像路径)、cangkurenyuan_zhuzhi(现住址)、cangkurenyuan_email(邮箱)、create_time(创建时间);
- 销售人员表(xiaoshourenyuan):id(主键)、xiaoshourenyuan_name(姓名)、xiaoshourenyuan_phone(手机号,唯一)、xiaoshourenyuan_id_number(身份证号,唯一)、xiaoshourenyuan_photo(头像路径)、xiaoshourenyuan_zhuzhi(现住址)、xiaoshourenyuan_email(邮箱)、create_time(创建时间);
- 供应商表(gongyingshang):id(主键)、gongyingshang_uuid_number(供应商编号,唯一)、gongyingshang_name(名称)、lianxiren_name(联系人)、lianxiren_phone(联系人手机号)、lianxiren_address(地址)、gongyingshang_types(类型)、gongyingshang_xinyongdengji_types(信用等级)、gongyingshang_content(详情)、create_time(创建时间);
- 商品表(shangpin):id(主键)、gongyingshang_id(供应商ID,外键)、shangpin_uuid_number(商品编号,唯一)、shangpin_name(轴承名称)、shangpin_photo(照片路径)、shangpin_danwei(单位,如“套”“个”)、shangpin_types(轴承类型)、shangpin_kucun_number(库存数量)、shangpin_new_money(进价)、shangpin_old_money(售价)、daoqi_time(到期时间)、shangpin_content(介绍)、insert_time(录入时间)、create_time(创建时间);
- 商品出入库表(shangpincuruku):id(主键)、shangpin_id(商品ID,外键)、cangkurenyuan_id(仓库人员ID,外键)、shangpincuruku_uuid_number(出入库编号)、shangpincuruku_name(标题)、shangpincuruku_types(类型:0=入库,1=出库)、caozuo_number(操作数量)、jieqing_types(钱款结清:0=是,1=否)、shangpincuruku_content(备注)、insert_time(录入时间)、create_time(创建时间);
- 客户表(kehu):id(主键)、xiaoshourenyuan_id(销售人员ID,外键)、kehu_uuid_number(客户编号)、kehu_name(姓名)、kehu_phone(手机号)、kehu_id_number(身份证号)、kehu_photo(照片路径)、kehu_zhuzhi(住址)、laiyuan_types(客户来源)、kehu_email(邮箱)、insert_time(录入时间)、create_time(创建时间);
- 商品销售表(shangpinxiaoshou):id(主键)、shangpin_id(商品ID,外键)、kehu_id(客户ID,外键)、xiaoshourenyuan_id(销售人员ID,外键)、shangpinxiaoshou_uuid_number(销售编号)、shangpinxiaoshou_name(标题)、caozuo_number(销售数量)、huafei_money(销售金额)、xiaoshou_time(销售时间)、jieqing_types(钱款结清)、shangpinxiaoshou_content(备注)、insert_time(录入时间)、create_time(创建时间);
- 商品退货表(xiaoshoutuihuo):id(主键)、shangpinxiaoshou_id(销售单ID,外键)、xiaoshoutuihuo_uuid_number(退货编号)、caozuo_number(退货数量)、xiaoshoutuihuo_yuanyou_content(退货缘由)、tuihuan_jine(退还金额)、tuihuo_time(退货时间)、xiaoshoutuihuo_content(备注)、insert_time(录入时间)、create_time(创建时间);
- 公告表(gonggao):id(主键)、gonggao_name(公告名称)、gonggao_types(类型)、gonggao_photo(照片路径)、insert_time(发布时间)、gonggao_content(详情)、create_time(创建时间);
- 字典表(dic):id(主键)、dic_code(字段)、dic_name(字段名)、code_index(编码)、index_name(编码名字)、super_id(父字段id)、beizhu(备注)、create_time(创建时间)。
2. 核心表关联测试(提前验证,避免返工)
建表后立即测试关联逻辑,步骤如下:
- 插入测试数据:供应商表(id=1,gongyingshang_name=“XX轴承厂”,lianxiren_phone=“13900139000”)、商品表(id=1,gongyingshang_id=1,shangpin_name=“深沟球轴承6205”,shangpin_kucun_number=100)、出入库表(id=1,shangpin_id=1,cangkurenyuan_id=1,shangpincuruku_types=0,caozuo_number=50);
- 编写JOIN查询SQL,验证“某商品的供应商与入库记录关联”:
SELECT s.shangpin_uuid_number, s.shangpin_name, s.shangpin_kucun_number, s.shangpin_old_money,
g.gongyingshang_name, g.lianxiren_name, g.lianxiren_phone,
c.shangpincuruku_uuid_number, c.shangpincuruku_types, c.caozuo_number, c.insert_time
FROM shangpin s
JOIN gongyingshang g ON s.gongyingshang_id = g.id
JOIN shangpincuruku c ON s.id = c.shangpin_id
WHERE s.id = 1;
若能查询出“商品编号、名称、库存、售价、供应商信息(名称、联系人、手机号)、入库记录(编号、类型、数量、时间)”,说明关联正确;若出现外键错误,检查字段类型是否匹配(如gongyingshang_id与供应商表id是否同为Integer)。
关键避坑提醒:切勿将轴承照片、入库凭证等二进制数据存入数据库!前期尝试导致数据库体积骤增(60张轴承照片使数据库增大320MB),后续改为存储文件路径(如/static/shangpin/photo1.jpg),大幅提升查询速度。
四、功能实现:聚焦核心模块,提升答辩竞争力
无需开发所有功能,优先完成3个核心模块即可满足答辩要求,突出开发重点:
1. 仓库人员端:商品出入库管理模块(必做核心模块)
- 核心逻辑:
- 轴承入库操作:仓库人员进入出入库管理页,选择“入库”类型,下拉加载轴承商品列表(仅显示已关联供应商的商品),填写入库数量(需大于0),标记款项结清状态,上传入库凭证照片,提交后自动生成入库编号(格式:RK+日期+序号,如RK20240601001),同步增加商品库存;
- 轴承出库操作:选择“出库”类型,选择商品后系统自动校验库存(若出库数量大于现有库存,提示“库存不足,当前库存:XX”),关联销售人员(默认显示当前登录人关联的销售人员),填写备注,提交后生成出库编号(格式:CK+日期+序号),同步扣减库存;
- 出入库记录查询:支持按商品名称、出入库类型、时间范围筛选,列表显示编号、商品名称、操作类型、数量、操作人员、时间,点击“详情”可查看完整凭证与备注。
- 页面设计(Vue+ElementUI):
- 操作区:出入库类型切换按钮(入库/出库)、商品下拉选择框、数量输入框(带数值校验)、款项结清单选框、凭证上传区(支持预览)、“提交”按钮;
- 记录列表区:表格展示核心字段,操作列含“详情”“打印凭证”,入库记录标绿、出库记录标蓝,库存不足时出库按钮置灰;
- 详情弹窗区:左侧显示凭证照片,右侧展示完整出入库信息(含供应商/销售人员关联数据),支持复制编号。
2. 销售人员端:商品销售与退货模块(答辩亮点模块)
- 核心逻辑:
- 销售单创建:销售人员进入销售管理页,点击“新增销售单”,选择客户(下拉加载专属客户列表),添加轴承商品(支持多商品批量选择,自动计算总金额),选择款项结清状态,填写销售时间,提交后生成销售编号(格式:XS+日期+序号),同步扣减库存;
- 退货申请处理:客户申请退货后,销售人员核实商品完好度,进入退货管理页,选择原销售单(自动加载对应商品信息),填写退货数量(≤原销售数量)、退货缘由,计算退还金额(按原售价),提交后生成退货编号(格式:TH+日期+序号),等待管理员审核;
- 销售数据统计:按时间范围(日/周/月)统计销售金额、销量Top3轴承型号,支持导出Excel报表,直观展示业绩情况。
- 页面设计:
- 销售单创建区:客户下拉框、商品批量选择组件(带搜索功能)、金额自动计算区、款项状态选择框、“提交”按钮;
- 退货处理区:原销售单搜索框(支持按编号/客户名称查询)、退货数量输入框(带最大值限制)、缘由文本域、“提交审核”按钮;
- 数据统计区:时间筛选器、销量/金额趋势图、Top3商品列表,支持切换图表类型(柱状图/折线图)。
3. 管理员端:商品与供应商关联管理模块(核心需求模块)
- 核心逻辑:
- 商品维护:管理员进入商品管理页,新增轴承商品时需关联供应商(下拉加载所有供应商,显示名称与信用等级),填写进价、售价、库存等信息,上传商品照片(校验格式与大小),提交后自动生成商品编号;修改商品时,若商品已存在销售记录,禁止修改供应商(避免数据关联混乱);
- 供应商管理:新增供应商时录入名称、联系人、手机号等信息,标记信用等级(“优质”“普通”“黑名单”),黑名单供应商不可被商品关联;点击“查看商品”可跳转至该供应商提供的所有轴承商品列表,支持批量禁用;
- 库存预警:系统自动扫描库存低于5件的轴承商品,在首页显示预警列表,点击“补货”可快速创建入库单(自动填充商品与供应商信息)。
- 页面设计:
- 商品管理区:筛选区(名称/类型/供应商搜索)、表格展示商品核心信息(含供应商名称)、操作列含“修改”“查看供应商”“预警补货”;
- 供应商管理区:筛选区(名称/信用等级搜索)、表格展示供应商信息(信用等级用不同颜色标注)、操作列含“修改”“查看商品”“标记黑名单”;
- 库存预警区:首页固定模块,显示预警商品名称、当前库存、供应商,操作列含“快速补货”,点击后跳转至入库页面并自动填充数据。
五、测试验收:全面排查问题,保障答辩顺利
笔者前期未测试“销售单退货后库存同步”场景,导致出现“退货审核通过后库存未增加”的bug,被导师指出“未做事务关联”并扣分😥。需针对性完成以下测试:
1. 核心功能测试用例
| 测试场景 | 操作步骤 | 预期结果 |
|---|---|---|
| 销售单退货审核通过 | 管理员进入退货管理→选择“待审核退货单”→点击“审核通过”→确认操作 | 系统提示“审核通过”,退货记录状态更新为“已完成”,对应商品库存同步增加(如原库存100,退货10,库存变为110) |
| 仓库人员出库数量超库存 | 仓库人员进入出库操作→选择“库存50的轴承”→填写出库数量60→提交 | 系统提示“库存不足,当前库存:50,无法完成出库”,提交失败 |
| 管理员修改已销售商品的供应商 | 管理员进入商品管理→选择“已存在3条销售记录的商品”→点击“修改”→尝试更换供应商 | 系统提示“该商品已存在销售记录,禁止修改供应商”,供应商下拉框置灰 |
2. 兼容性与性能测试
- 兼容性:测试Chrome、Firefox、Edge浏览器,修复IE11下表单样式错乱、照片预览失败问题;测试手机端浏览器,确保销售人员外出时可通过手机快速创建销售单(按钮大小适配手指点击);
- 性能:用Jmeter模拟20个用户同时创建销售单,系统响应时间≤2秒,无数据丢失;查询100条轴承商品记录(关联供应商信息),耗时≤1秒,加载流畅无卡顿。
3. 测试报告撰写
包含“测试目的、范围、用例、结果”,明确已修复问题(退货库存同步、出库库存校验、商品供应商修改限制),结论说明“核心功能无严重bug,可满足福泰轴承进销存管理需求”,附测试截图(如库存不足提示、退货审核后库存变化效果)。
六、答辩准备:掌握3个技巧,提升通过率
- 演示流程梳理:按“管理员新增供应商与商品-仓库人员入库-销售人员创建销售单-客户退货-管理员审核退货”演示,每个步骤停顿2秒,重点展示“商品-供应商关联逻辑”“退货与库存同步效果”,让评委清晰看到功能流转;
- 突出问题解决能力:重点讲“商品表与供应商表关联修复”“退货库存同步事务处理”“数据库图片路径存储优化”,结合开发踩坑与解决方案(如“初期用二进制存轴承照片导致数据库卡顿,改为路径存储后查询速度提升35%”),比单纯讲技术栈更有说服力;
- 提前预判问题:针对“如何保障轴承库存数据准确”,回答“出入库库存校验、退货同步更新、库存预警机制、操作日志追溯”;针对“如何管理供应商风险”,回答“信用等级标记、黑名单禁用、商品关联限制”。
结语
本文基于Java+Spring Boot+MySQL的福泰轴承进销存系统实战经验,核心是“聚焦轴承进销存核心业务(商品、出入库、销售退货、供应商)、优先稳定技术、提前排查表关联与数据校验问题”。毕设无需追求复杂功能(如AI轴承质量检测、供应链智能预测),把商品管理、出入库管控、销售退货等核心功能做扎实,即可顺利通过答辩。
若需要核心源码(带注释)、数据库脚本(含测试数据)、ER图模板,可在评论区留言“Java+Spring Boot福泰轴承进销存系统”获取;若在模块开发中遇问题(如商品-供应商关联逻辑、退货库存同步),也可留言咨询,笔者将及时回复。
收藏本文,便于开发查阅~ 祝各位同学毕设顺利,轻松毕业!🎉