毕业设计实战:基于SpringBoot+Vue的手工艺品销售系统,从零到一全流程避坑指南!
家人们谁懂啊!当初做手工艺品销售系统毕设时,光“手工艺品订单表”和“购物车表”的数据关联就折腾了整整3天——一开始没给订单表设置“购物车ID”外键,用户下单后购物车商品不清空,导致重复下单,导师看了直接让我“重做订单逻辑”😫 后来踩遍坑才总结出高效落地流程,今天把需求分析、技术选型、功能实现到测试的核心细节说透,学弟学妹们不用熬夜,轻松搞定毕设!
一、先搞懂“手工艺品销售系统要啥”!需求分析别瞎蒙
刚开始我跳过需求分析就写代码,花一周加了“智能推荐算法”,结果导师一句“核心是商品管理、订单处理、购物车结算,不是复杂算法”直接打回重改!后来才明白,手工艺品系统要先抓准“谁用系统、要干啥”,这步做对,少走85%弯路。
1. 核心用户&功能拆解(踩坑后总结版)
系统主要有三类核心用户:管理员、商家、用户(别加“客服角色”!我当初加了后权限混乱,客服能修改商品价格,删掉才顺畅),功能明确区分:
- 管理员端(必做功能):
- 用户管理:维护商家信息(审核营业执照、设置信用等级)、管理用户账号(重置密码、查看订单)
- 商品管理:审核手工艺品上架、管理手工艺品分类(新增“陶瓷/刺绣/木艺”等类型)、下架违规商品
- 订单管理:查看所有订单(按状态/时间筛选)、处理退款申请、导出销售统计报表
- 内容管理:发布公告信息、管理论坛帖子(删除违规内容)、管理轮播图
- 求购管理:查看用户发布的手工艺品求购信息、标记已处理求购
- 商家端(核心需求):
- 商品管理:发布手工艺品(上传图片、设置价格库存)、管理商品上架下架、回复商品评价
- 订单处理:查看本店订单(待发货/已发货)、处理发货(填写快递信息)、处理退款
- 数据查看:查看销售统计、查看商品点击量、查看用户求购信息(寻找商机)
- 用户端(核心需求):
- 购物功能:浏览手工艺品(按分类/价格筛选)、查看商品详情、加入购物车、立即购买
- 订单管理:查看我的订单(待支付/待发货/待收货)、确认收货、申请退款、评价商品
- 社区互动:在论坛发帖评论、发布手工艺品求购信息(求购特定手工艺品)
- 个人中心:管理收货地址(新增/设默认)、查看购物车、修改个人信息(头像、联系方式)
2. 需求分析避坑指南(血泪教训!)
- 别空想!找3个同学模拟管理员、商家和用户提意见:比如商家说“想快速看到未发货订单”,我才加了“订单状态筛选”,比瞎加“智能推荐”实用多了
- 一定要画用例图!用DrawIO画“商家-发布商品”“用户-加入购物车”“用户-下单支付”,跟导师汇报时比光说“我要做电商系统”直观8倍(当初没画,导师听15分钟没理解交易流程)
- 写“需求规格说明书”!把约束条件写清楚(如“商品价格≥0”“库存≥0”“购买数量≥1”),编码时对着做,不跑偏
3. 可行性分析别敷衍!3点写清楚就能过
导师超爱问“手工艺品系统可行吗”,别只说“我觉得可行”,从3个角度写,显专业:
- 技术可行性:SpringBoot、Vue、MySQL都是课堂学过的,图书馆有《SpringBoot电商实战》《Vue.js项目开发》,遇到问题能查资料(别用SpringBoot 3.x!我当初试了,跟Vue联调时商品图片上传接口卡2天,换回2.7才顺利)
- 经济可行性:工具全免费!IDEA社区版、MySQL、Navicat官网直接下,答辩时说“开发成本0,还能帮手工艺人开拓线上销售渠道”,导师会觉得你懂互联网+
- 操作可行性:界面参考主流电商平台,常用功能放显眼位置(如“购物车”在用户首页右上角),找同学测试,5分钟学会浏览商品、下单购买,导师直接认可
二、技术选型别跟风!这套组合稳到爆
刚开始我跟风用SpringBoot 3.x+Vue3+Redis,结果“购物车缓存”卡1天——Redis配置错,重启后购物车数据全丢😫 后来换成Java 8+SpringBoot 2.7+MySQL 8.0+Vue2+Tomcat 9,新手友好,调试效率翻倍!
1. 技术栈核心选择(附避坑提醒)
别盲目选“最新技术”,稳定比炫酷重要!核心工具选择理由和坑点直接抄:
| 技术工具 | 为啥选它 | 避坑提醒! |
|---|---|---|
| Java 8 | 语法简洁,SpringBoot 2.7兼容性最佳,学习资料多 | 别用Java 11+!部分依赖支持差,易出“类加载失败” |
| SpringBoot 2.7 | 简化配置,自带Tomcat,支持自动装配,开发效率比SSM高35% | 别用3.x版本!与Vue2、MySQL 8.0兼容性差 |
| MySQL 8.0 | 支持事务/外键,存商品、订单、用户数据足够用,utf8mb4编码解决生僻字乱码 | 安装设“utf8mb4”编码!我当初用默认编码,手工艺品名称含特殊符号乱码,查2小时才好 |
| Vue2 | 上手简单,组件丰富,适合做商品展示页面 | 别用Vue3!组合式API对新手不友好,购物车数据绑定易出错 |
| Tomcat 9 | 轻量级服务器,适合中小型电商系统,与SpringBoot适配性好 | 别用10+版本!部分Java类包路径变化,启动报错“类找不到” |
| IDEA | 智能提示强,调试方便,社区版完全免费 | 装“Vue.js”插件,不然Vue项目创建卡顿 |
2. 开发环境搭建(step by step 实操)
很多同学卡“环境配置”,跟着步骤来,一次成功:
- 装JDK 1.8:记安装路径(如D:\Java\jdk1.8),配置“JAVA_HOME”环境变量,cmd输“java -version”显“1.8.x”即成
- 装IDEA 2022:勾选“Spring Boot”“Vue.js”插件,自动安装
- 装MySQL 8.0:用Navicat建数据库“handicraft_sales”,编码设“utf8mb4”,排序“utf8mb4_general_ci”
- 建SpringBoot项目:IDEA用Spring Initializr,勾选“Web”“MyBatis”“MySQL”依赖,自动生成结构
- 配前端环境:用Vue CLI创建Vue2项目,引入Element-UI实现电商风格布局,编写商品列表、购物车页面
- 联调测试:在application.properties配置数据库连接(url=jdbc:mysql://localhost:3306/handicraft_sales?useSSL=false&serverTimezone=UTC),写“查询商品列表”接口,前端调用能显示数据即完成
三、数据库设计:别让表关联坑了你
这是电商系统“核心骨架”,我当初没关联“订单表”和“收货地址表”,用户下单后地址信息丢失,调试到深夜😫 后来按“实体-属性-关系”设计,终于理清。
1. 核心实体&属性(附ER图技巧)
先确定“实体”(用户、商家、手工艺品、订单、购物车、收货地址、评价、论坛、求购),再想“属性”,别漏关键字段!必做11张表,直接画ER图:
- 用户表(user):id(主键)、username(账号)、password(密码)、yonghu_name(姓名)、yonghu_phone(手机号)、yonghu_photo(头像)、new_money(余额)
- 商家表(merchant):id(主键)、username(账号)、password(密码)、shangjia_name(商家名)、shangjia_phone(联系方式)、shangjia_xingji_types(信用等级)、shangjia_photo(营业执照)
- 手工艺品表(goods):id(主键)、shangjia_id(关联商家)、goods_name(商品名)、goods_photo(商品图片)、goods_types(商品类型)、goods_kucun_number(库存)、goods_new_money(现价)、shangxia_types(上架状态)
- 订单表(order):id(主键)、goods_order_uuid_number(订单号)、goods_id(关联商品)、yonghu_id(关联用户)、address_id(关联地址)、buy_number(购买数量)、goods_order_true_price(实付价格)、goods_order_types(订单状态)
画ER图用Visio/亿图,记3规则:
- 矩形=实体(如“用户”“手工艺品”)
- 椭圆=属性(如用户“姓名”“余额”,商品“价格”“库存”)
- 菱形=关系(如“用户-订单”一对多,一个用户可下多单;“商家-商品”一对多,一个商家可发布多商品) 避坑提醒:别把“商品图片、用户头像、营业执照”存数据库!我当初存二进制导致数据库崩溃,改成存路径(如/static/goods/img1.jpg、/static/user/avatar1.jpg)才对。
2. 表关联测试!别等编码才发现错
建表后一定要测:在“用户表”插数据(id=1,账号=“user001”,姓名=“张三”),“商家表”插数据(id=1,商家名=“手工陶瓷坊”),“商品表”插数据(id=1,商家id=1,商品名=“青花瓷杯”,价格=150,库存=50),“订单表”插关联数据(用户id=1,商品id=1,购买数量=2,实付价格=300),用JOIN查“用户订单详情”:
SELECT u.yonghu_name, g.goods_name, o.buy_number, o.goods_order_true_price, o.goods_order_types
FROM `order` o
JOIN user u ON o.yonghu_id = u.id
JOIN goods g ON o.goods_id = g.id
WHERE u.id = 1;
能查出“用户名+商品名+购买数量+实付价格+订单状态”说明关联对;若报错“Cannot add or update a child row”,大概率外键错,赶紧检查表结构。
四、功能实现:核心模块操作+页面设计
不用做所有功能!先搞定3个核心模块,答辩足够出彩,附操作逻辑和页面要点:
1. 商家端:商品管理模块(必做!)
核心是“手工艺品上架管理”,重点“商品信息完整度”和“库存合法性校验”,别漏这两步!
- 操作逻辑:
- 上架商品前校验“商品名称非空”“价格≥0”“库存≥0”“商品类型必选”“图片非空”,缺一项提示“完善商品信息”
- 设置“上架状态”,下架商品自动在用户端不显示
- 修改库存时,若新库存<已售数量,提示“库存不能小于已售数量”
- 页面设计(Vue2+Element-UI电商风格):
- 筛选区:商品名称(模糊查)、商品类型(下拉选)、状态(下拉选:上架/下架)、查询/新增按钮
- 商品列表:显示商品图片(缩略图)、商品名称、类型、现价、库存、状态,操作列“编辑/删除/上下架”
- 新增弹窗:商品名称(输入框)、商品类型(下拉选)、原价/现价(数字框)、库存(数字框)、商品图片上传(支持JPG/PNG)、商品简介(富文本编辑器)
2. 用户端:购物下单模块(核心需求!)
用户核心操作是“购买手工艺品”,流程别复杂:浏览商品→加入购物车→选择商品→确认地址→支付下单,我当初漏了“库存实时校验”,导致商品已售罄还能下单,补半天逻辑才好。
- 操作逻辑:
- 下单前校验“购物车商品非空”“收货地址已选择”“用户余额≥订单总价”“商品库存≥购买数量”,不满足提示对应错误
- 提交成功后,扣减商品库存、扣减用户余额、生成唯一订单号(格式:年月日+6位随机数)、清空购物车对应商品
- 下单后,跳转到订单详情页,显示订单号、商品信息、物流信息
- 页面设计:
- 购物车区:显示已选商品(图片、名称、单价)、购买数量(可增减,≥1且≤库存)、小计金额,勾选框“全选/取消”
- 地址选择区:下拉选择已保存地址,“新增地址”按钮(弹窗填写收货人、电话、详细地址),默认地址标“默认”
- 订单结算区:显示商品总价、实付金额(同总价)、支付方式(默认余额支付),“提交订单”按钮(橙色,库存不足或余额不足时禁用)
3. 商家端:订单处理模块(答辩亮点!)
体现“电商交易闭环”,导师超爱问!核心“查看订单-处理发货-处理退款”,别漏“快递信息填写”。
- 操作逻辑:
- 按订单状态筛选(待发货/已发货/待退款),待发货订单显示“发货”按钮
- 处理发货时,填写快递公司和快递单号,提交后更新订单状态为“已发货”,用户端收到发货通知
- 处理退款时,审核退款原因,同意后退回用户余额、恢复商品库存
- 页面设计:
- 筛选区:订单号(模糊查)、商品名称(模糊查)、用户姓名(模糊查)、状态(下拉选)、时间范围(日期选择器)、查询按钮
- 订单列表:显示订单号、用户姓名、商品名称、购买数量、实付金额、状态、下单时间,操作列“查看详情/发货/处理退款”
- 发货弹窗:显示订单详情,快递公司(下拉选:顺丰/中通/圆通等)、快递单号(输入框),确认按钮
五、测试别敷衍!这3步让答辩不翻车
很多同学觉得“功能能跑就行”,答辩时评委一测就出问题!我当初没测“用户超库存下单”,导致能买100件但库存只有10件,导师说“不符合电商逻辑”,当场扣分😫 测试要针对性做:
1. 功能测试(必测3模块)
重点测核心功能,整理测试用例表,直接填结果:
| 测试场景 | 操作步骤 | 预期结果 |
|---|---|---|
| 用户超库存下单 | 用户选商品→购买数量填100→商品库存仅10→提交订单 | 提示“商品库存不足,当前库存:10,请调整购买数量!” |
| 用户余额不足下单 | 用户选商品→总价格500元→用户余额200元→提交订单 | 提示“余额不足,当前余额:200元,请充值后再下单!” |
| 商家处理发货 | 商家选待发货订单→点击“发货”→填快递公司和单号→提交 | 提示“发货成功!”,订单状态更新为“已发货”,用户端收到通知 |
| 用户重复下单同一商品 | 用户A下单商品1→未支付→用户B也下单商品1→库存足够→B下单成功 | B下单成功,但A支付时提示“库存不足”需设计锁机制 |
2. 兼容性测试(容易忽略)
别只在自己电脑测!答辩评委可能用不同设备和浏览器:
- 浏览器:Chrome、Firefox、Edge(重点测Edge,Windows自带)
- 设备:电脑(1920×1080、1366×768分辨率)、手机(测试响应式布局,商品图片自适应)
- 要求:购物车页面商品图片显示正常,下单页面表单对齐整齐,支付流程清晰
3. 测试报告要写好!答辩加分
整理“测试报告”,含“目的、范围、用例、结果、问题总结”:
- 问题总结:“Edge下商品图片变形,加CSS object-fit修复;用户可超库存下单,加库存实时校验修复;订单号生成重复,改用‘时间戳+用户ID+随机数’规则修复”
- 测试结论:“核心功能无严重bug,兼容性问题已修复,满足手工艺品销售系统交易需求”
六、答辩准备:3个加分小技巧
- 演示流程顺畅:提前录演示视频(怕现场网络卡顿),按“商家发布商品→用户浏览商品→加入购物车→下单支付→商家发货→用户确认收货”完整交易流程展示,重点展示状态流转
- 讲“解决的电商痛点”:比如“一开始购物车和订单数据不同步,通过事务处理解决;图片上传服务器崩溃,改用OSS对象存储解决;库存超卖问题,加Redis分布式锁解决”,比光说“用了SpringBoot”有亮点
- 准备常见问题:导师可能问“系统怎么防止超卖?”,答“下单前校验库存,支付时再次校验;关键商品采用Redis乐观锁;设置商品购买限购数量”
最后:毕设通关小私心
以上就是基于SpringBoot+Vue的手工艺品销售系统从0到1的避坑干货!毕设不难,别瞎做复杂功能(如智能推荐、直播带货),把商品管理、购物车、订单处理做扎实,答辩就能过。
需要核心源码(带详细注释,导入即用)、数据库脚本(含测试手工艺品数据)、ER图源文件的同学,评论区扣“手工艺品系统”,我私发你;卡在某个模块(如购物车逻辑、订单状态机),也可以留言,看到必回!
点赞收藏,下次找流程不迷路~祝同学们毕设顺利,答辩一次过!让手工艺品走向全国!😘