毕业设计实战:基于Java+Spring Boot+MySQL的玩具租赁系统设计与实现全流程指南

24 阅读21分钟

毕业设计实战:基于Java+Spring Boot+MySQL的玩具租赁系统设计与实现全流程指南

在开发“基于Java+Spring Boot+MySQL的玩具租赁系统”毕业设计时,曾因“玩具订单表未通过玩具ID与玩具表建立外键关联”踩过关键坑——初期仅在两张表单独设计编号字段,未设置关联约束,导致管理员查询某订单对应的玩具库存、租赁价格时,需手动匹配玩具编号与订单记录,耗费1.5天重构表结构、补全关联SQL才解决问题📝。基于此次实战经验,本文将系统拆解从需求分析、技术选型、功能实现到测试验收的全流程要点,附避坑技巧与实操细节,为同类毕设提供可落地的实施指南。

一、需求分析:锚定玩具租赁核心诉求,避免功能冗余返工

部分同学在毕设初期易陷入“功能堆砌”误区,比如笔者曾耗时2天开发“玩具租赁数据可视化大屏模块”,最终因偏离“玩具管理、订单处理、用户操作、公告发布”核心需求被导师要求删减。明确“用户角色-核心功能”对应关系,是降低返工率的关键前提。

1. 核心用户与功能拆解(优化后角色权限体系)

系统核心用户分为管理员与普通用户两类,前期曾因混淆“用户”与“管理员”的“玩具上架权限”,导致用户可自行上传违规玩具信息,明确角色边界后系统数据规范性显著提升,具体功能分工如下:

管理员端(核心必做功能)
  • 全维度信息管理
    • 用户管理:维护用户账号(新增、密码重置、逻辑删除),支持按姓名/手机号/身份证号筛选,查看用户完整资料(头像、邮箱、余额),禁用违规账号(禁用后不可登录);
    • 管理员管理:新增子管理员账号(分配“玩具管理”“订单审核”等权限),修改管理员密码,删除失效账号,支持按用户名模糊查询;
    • 字典管理:配置系统固定选项(如玩具类型、公告类型、订单类型、支付类型),确保数据录入规范性(如玩具类型仅可选“益智类”“遥控类”“毛绒类”,订单类型仅可选“待支付”“已完成”“已取消”);
  • 核心业务管控
    • 玩具管理:录入玩具信息(上传玩具照片、生成唯一编号、填写名称/类型/库存/租赁价格、编写介绍),维护玩具状态(修改库存、标记上架/下架、更新租赁价格),支持按玩具名称、类型筛选,库存<5件时标橙预警;
    • 订单管理:查看用户租赁订单(关联用户、玩具、租赁时间、实付价格),处理订单异常(如用户取消订单后恢复玩具库存),支持按订单号、用户ID、订单状态筛选,导出订单数据生成月度报表;
    • 玩具评价管理:查看用户对玩具的评价(含评价内容、时间),回复用户疑问,删除恶意评价(含虚假差评、广告内容),支持按玩具ID、评价时间筛选;
    • 玩具收藏管理:查看用户收藏记录(关联用户、玩具、收藏时间),处理“收藏玩具已下架”的提醒推送,支持按用户ID、玩具类型筛选;
  • 信息发布与互动
    • 公告信息管理:发布玩具租赁公告(填写标题、上传图片、选择类型、编写详情、设置发布时间),维护公告内容(修改、删除过期公告),按发布时间倒序展示;
    • 论坛与留言管理:查看用户发帖(关联用户、标题、内容、时间),回复用户疑问,删除恶意帖子;查看用户留言(含留言标题、内容、时间),填写回复内容并同步通知用户,支持按帖子/留言标题筛选。
用户端(核心需求功能)
  • 玩具租赁服务使用
    • 玩具浏览与收藏:浏览已上架玩具(按类型、租赁价格筛选),查看玩具详情(照片、名称、库存、租赁价格、介绍),点击“收藏”添加至个人收藏列表,收藏玩具下架时接收系统提醒;
    • 订单创建与查询:选择玩具后填写租赁时间(小时),系统自动计算实付价格(租赁价格×时间),选择支付类型(如“余额支付”)提交订单,在“我的订单”页面查看订单状态(待支付/已完成/已取消)、租赁时间、实付价格;
    • 玩具评价提交:租赁完成后对玩具进行评价(填写评价内容),查看管理员回复,浏览其他用户对该玩具的评价;
  • 个人中心与互动
    • 个人资料管理:修改个人信息(更新头像、手机号、邮箱),查看账户余额,重置登录密码;
    • 信息互动:在论坛发布帖子(填写标题、内容),查看其他用户与管理员回复;向管理员提交留言(填写标题、内容),跟踪留言回复进度,无修改公共信息、审核内容的权限。

2. 需求分析避坑要点(实战经验总结)

  • 拒绝空想调研:邀请4-5名同学模拟“用户浏览玩具-创建租赁订单-管理员处理订单”“用户提交留言-管理员回复”场景,收集真实诉求。例如,基于用户“实时了解订单状态”需求,增设“订单状态跟踪”功能,实用性远高于冗余的“玩具租赁数据可视化大屏模块”;
  • 绘制可视化用例图:用DrawIO绘制核心用例图(如“管理员-玩具上架”“用户-租赁订单创建”“管理员-留言回复”),汇报时直观呈现逻辑,避免纯文字描述偏差;
  • 明确约束条件:提前规定“玩具照片/公告图片/用户头像仅限JPG/PNG(≤5MB)”“玩具编号自动生成(格式:WJ+日期+序号,如WJ20240601001)”“租赁时间≥1小时、≤72小时”“公告标题≥5字、内容≥20字”“评价内容≥10字”,为编码提供明确依据。

3. 可行性分析:从五维度论证,提升毕设专业性

可行性分析是开题关键,需避免泛泛而谈“可行”,从以下维度具体展开:

  • 时间可行性:预留2个月开发周期,拆分“需求分析(7天)→ 环境搭建(5天)→ 数据库设计(7天)→ 功能开发(28天)→ 测试验收(13天)”,每日投入3小时,结合导师指导可按时完成;
  • 经济可行性:开发工具均为免费/开源(Eclipse/IDEA社区版、MySQL 5.7、Tomcat 8.5),硬件用个人笔记本,开发成本为零;系统上线后可替代传统手工租赁模式(如纸质订单记录、Excel统计玩具库存),减少记录误差(原手工误差率16%,系统上线后降至3%)、提升租赁管理效率;
  • 操作可行性:界面参考主流电商平台交互逻辑,高频功能(玩具浏览、订单创建、个人中心)置于首页,经测试,用户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+Eclipse/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,默认编码会导致论坛帖子含特殊符号乱码;开启事务确保订单创建与库存扣减原子性
Eclipse/IDEA社区版Eclipse轻量易用,适合Java新手入门;IDEA支持Spring Boot、MySQL插件,断点调试便捷,代码提示更丰富,可按需选择安装“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兼容问题,易出现页面无法访问;端口设为8081(默认8080易冲突)

2. 开发环境搭建步骤(实操指南)

  1. 安装JDK 1.8:配置“JAVA_HOME”“Path”环境变量,cmd执行“java -version”显示“1.8.x”即为成功;
  2. 安装开发工具与插件:选择Eclipse或IDEA社区版,Eclipse需安装“Spring Tools 4”插件,IDEA需安装“Vue.js”“Maven Helper”插件,配置JDK为1.8,编码设为UTF-8;
  3. 安装MySQL 5.7:用Navicat创建数据库“toy_rental_system”,编码utf8mb4,执行脚本创建表(用户表、玩具表、订单表等);
  4. 配置Tomcat 8.5:解压后在开发工具中配置服务器,测试访问http://localhost:8081,出现默认页面即成功;
  5. 创建Spring Boot项目:通过开发工具创建Maven项目,pom.xml引入Spring Boot Web、MySQL Driver、MyBatis等依赖,配置application.properties(数据库连接、端口、静态资源路径);
  6. 前端开发与联调:用Vue+ElementUI开发登录、玩具列表、订单创建页面,打包后放入Spring Boot的static目录,编写“查询玩具列表”接口,前端调用成功即环境搭建完成。

三、数据库设计:精简核心关联,避免数据混乱

数据库是玩具租赁系统的核心,前期因未关联“玩具订单表”与“玩具表”,导致无法追溯订单对应的玩具信息,后续用“实体-属性-关系”分析法梳理,效率显著提升。

1. 核心表结构设计(精简版,共10张核心表)

  • 管理员表(admin):id(主键)、username(账号,唯一)、password(MD5加密)、role(角色)、addtime(新增时间);
  • 用户表(yonghu):id(主键)、yonghu_name(姓名)、yonghu_phone(手机号,唯一)、yonghu_id_number(身份证号,唯一)、yonghu_photo(头像路径)、yonghu_email(邮箱)、new_money(余额)、create_time(创建时间);
  • 玩具表(wanju):id(主键)、wanju_uuid_number(玩具编号,唯一)、wanju_name(玩具名称)、wanju_photo(玩具照片路径)、wanju_types(玩具类型)、wanju_kucun_number(库存数量)、wanju_new_money(租赁价格/h)、wanju_clicknum(玩具热度)、wanju_content(玩具介绍)、shangxia_types(是否上架)、wanju_delete(逻辑删除,0=正常,1=删除)、insert_time(录入时间)、create_time(创建时间);
  • 玩具订单表(wanju_order):id(主键)、wanju_order_uuid_number(订单号,唯一)、wanju_id(玩具ID,外键关联玩具表id)、yonghu_id(用户ID,外键关联用户表id)、buy_number(租赁数量)、wanju_order_number(租赁时间/h)、wanju_order_true_price(实付价格)、wanju_order_types(订单类型)、wanju_order_payment_types(支付类型)、insert_time(订单创建时间)、create_time(创建时间);
  • 玩具收藏表(wanju_collection):id(主键)、wanju_id(玩具ID,外键关联玩具表id)、yonghu_id(用户ID,外键关联用户表id)、wanju_collection_types(类型)、insert_time(收藏时间)、create_time(创建时间);
  • 玩具评价表(wanju_commentback):id(主键)、wanju_id(玩具ID,外键关联玩具表id)、yonghu_id(用户ID,外键关联用户表id)、wanju_commentback_text(评价内容)、insert_time(评价时间)、reply_text(回复内容)、update_time(回复时间)、create_time(创建时间);
  • 公告信息表(news):id(主键)、news_name(公告标题)、news_types(公告类型)、news_photo(公告图片路径)、insert_time(添加时间)、news_content(公告详情)、create_time(创建时间);
  • 论坛表(forum):id(主键)、forum_name(帖子标题)、yonghu_id(用户ID,外键关联用户表id)、users_id(管理员ID,外键关联管理员表id)、forum_content(发布内容)、super_ids(父id)、forum_state_types(帖子状态)、insert_time(发帖时间)、update_time(修改时间)、create_time(创建时间);
  • 留言板表(liuyanban):id(主键)、yonghu_id(用户ID,外键关联用户表id)、liuyan_name(留言标题)、liuyan_text(留言内容)、insert_time(留言时间)、reply_text(回复内容)、update_time(回复时间)、create_time(创建时间);
  • 字典表(dic):id(主键)、dic_code(字段)、dic_name(字段名)、code_index(编码)、index_name(编码名字)、super_id(父字段id)、beizhu(备注)、create_time(创建时间)。

2. 核心表关联测试(提前验证,避免返工)

建表后立即测试关联逻辑,步骤如下:

  1. 插入测试数据:玩具表(id=1,wanju_name=“遥控汽车”,wanju_kucun_number=20,wanju_new_money=5.00,shangxia_types=“上架”)、用户表(id=1,yonghu_name=“小明”,yonghu_phone=“13800138000”,new_money=100.00)、玩具订单表(id=1,wanju_id=1,yonghu_id=1,wanju_order_number=2,wanju_order_true_price=10.00,wanju_order_types=“已完成”);
  2. 编写JOIN查询SQL,验证“某订单的玩具信息与用户信息关联”:
SELECT o.wanju_order_uuid_number, o.wanju_order_number, o.wanju_order_true_price, o.wanju_order_types, o.insert_time,
       w.wanju_name, w.wanju_photo, w.wanju_kucun_number, w.wanju_new_money, w.wanju_content,
       y.yonghu_name, y.yonghu_phone, y.new_money
FROM wanju_order o
JOIN wanju w ON o.wanju_id = w.id
JOIN yonghu y ON o.yonghu_id = y.id
WHERE o.wanju_order_uuid_number = 'DD20240601001';

若能查询出“订单详情(订单号、租赁时间、实付价格、状态、时间)、玩具详情(名称、照片、库存、租赁价格、介绍)、用户信息(姓名、手机号、余额)”,说明关联正确;若出现外键错误,检查字段类型是否匹配(如wanju_id与玩具表id是否同为Integer)。

关键避坑提醒:切勿将玩具照片、用户头像等二进制数据存入数据库!前期尝试导致数据库体积骤增(60张玩具照片使数据库增大400MB),后续改为存储文件路径(如/static/wanju/photo1.jpg),大幅提升查询速度。

四、功能实现:聚焦核心模块,提升答辩竞争力

无需开发所有功能,优先完成3个核心模块即可满足答辩要求,突出开发重点:

1. 管理员端:玩具管理与订单处理模块(必做核心模块)

  • 核心逻辑
    1. 玩具信息维护:管理员进入玩具管理页,点击“新增玩具”,上传照片(校验格式JPG/PNG、大小≤5MB),填写名称、类型(下拉加载字典表)、库存(≥0)、租赁价格(≥0.1元/h)、介绍(≥20字),提交后自动生成玩具编号;修改玩具时,仅可调整库存、租赁价格、介绍,上架/下架状态需单独操作,库存<5件时标橙预警;
    2. 订单处理:查看用户订单列表(按订单创建时间倒序),待支付订单标黄提醒,点击“详情”查看订单关联的玩具、用户信息,处理“用户取消订单”请求(同步恢复对应玩具库存),支持按订单类型、用户ID筛选;
    3. 订单数据统计:按“订单类型”统计数量(待支付/已完成/已取消),按“玩具类型”统计租赁次数,生成柱状图,支持导出Excel报表(含订单号、用户姓名、玩具名称、实付价格)。
  • 页面设计(Vue+ElementUI)
    • 玩具管理区:筛选区(玩具名称、类型、上架状态)、表格展示玩具编号、名称、类型、库存、租赁价格、状态,操作列含“修改”“下架”“查看评价”;
    • 订单处理区:筛选区(订单号、用户ID、订单类型)、表格展示订单号、用户姓名、玩具名称、租赁时间、实付价格、状态,操作列含“详情”“处理取消”;
    • 数据统计区:顶部为统计卡片(本月订单总量、本月营收、热门玩具类型),中部为图表展示区,底部为“导出报表”按钮。

2. 用户端:玩具租赁与订单查询模块(答辩亮点模块)

  • 核心逻辑
    1. 玩具浏览与收藏:用户进入玩具列表页,按“类型”(益智类/遥控类)或“租赁价格”(0-5元/5-10元)筛选,卡片式展示玩具(含缩略图、名称、库存、租赁价格),库存充足标绿,点击“详情”查看完整信息,点击“收藏”添加至个人收藏列表;
    2. 订单创建:选择玩具后,填写租赁时间(1-72小时),系统自动计算实付价格(租赁价格×时间),若用户余额不足,提示“余额不足,请充值”;余额充足时,选择支付类型(余额支付),提交后生成订单(状态为“待支付”),30分钟未支付自动取消并释放库存;
    3. 订单查询:在“我的订单”页面,查看所有订单(按时间倒序),点击“详情”查看订单关联的玩具信息、支付状态,已完成订单支持“评价玩具”(填写评价内容≥10字)。
  • 页面设计
    • 玩具浏览区:顶部为筛选栏(类型下拉框、价格滑块),中部为卡片式玩具列表,底部为“加载更多”按钮;
    • 订单创建区:玩具信息展示区(含照片、名称、租赁价格)、租赁时间输入框(带数值校验)、实付价格计算展示区、支付类型选择框、“提交订单”按钮;
    • 订单查询区:表格展示订单号、玩具名称、租赁时间、实付价格、状态,操作列含“详情”“评价”(仅已完成订单显示)。

3. 管理员端:公告发布与用户留言回复模块(核心需求模块)

  • 核心逻辑
    1. 公告发布:管理员进入公告管理页,点击“新增公告”,上传图片(校验格式JPG/PNG、大小≤5MB),填写标题(≥5字)、类型(活动通知/系统通知)、详情(≥30字),选择发布时间,提交后按发布时间倒序展示;
    2. 留言回复:查看用户留言列表(按留言时间倒序),未回复留言标红,点击“回复”填写内容,提交后同步通知用户,支持按留言标题筛选;
    3. 公告与留言管理:删除过期公告(发布超过30天),删除恶意留言(含广告、辱骂内容),支持批量操作。
  • 页面设计
    • 公告发布区:表单式设计,标题、类型、详情为必填项,图片为选填项,底部为“预览”“提交”按钮;
    • 留言回复区:筛选区(留言标题、用户姓名)、表格展示留言标题、用户姓名、留言内容、时间,操作列含“回复”“删除”;
    • 公告列表区:表格展示公告标题、类型、发布时间、状态,操作列含“修改”“删除”。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

五、测试验收:全面排查问题,保障答辩顺利

笔者前期未测试“用户重复提交同一玩具订单”场景,导致出现“同一用户对同一玩具生成2条待支付订单”的bug,被导师指出“未做‘用户+玩具’待支付订单唯一性校验”并扣分😥。需针对性完成以下测试:

1. 核心功能测试用例

测试场景操作步骤预期结果
用户重复提交玩具订单用户选择“遥控汽车”→填写租赁时间2小时→提交订单→未支付状态下再次提交相同订单系统提示“您已有该玩具的待支付订单,无需重复提交”,订单创建失败
管理员修改玩具库存超上限管理员进入玩具管理→选择“库存20件的遥控汽车”→库存填写-5→提交系统提示“库存不能为负数,请重新输入”,修改失败
用户订单余额不足用户选择“租赁价格5元/h的玩具”→租赁时间2小时(实付10元)→用户余额8元→提交订单系统提示“余额不足(当前8元,需10元),请充值”,订单创建失败

2. 兼容性与性能测试

  • 兼容性:测试Chrome、Firefox、Edge浏览器,修复IE11下表单样式错乱、玩具照片预览失败问题;测试手机端浏览器,确保玩具列表、订单创建页面自适应(按钮大小适配手指点击);
  • 性能:用Jmeter模拟30个用户同时创建玩具订单,系统响应时间≤2秒,无数据丢失;查询100条玩具订单记录(关联玩具、用户数据),耗时≤1秒,加载流畅。

3. 测试报告撰写

包含“测试目的、范围、用例、结果”,明确已修复问题(重复订单校验、玩具库存负数限制、浏览器兼容),结论说明“核心功能无严重bug,可满足玩具租赁管理需求”,附测试截图(如重复订单提示、余额不足提示)。

六、答辩准备:掌握3个技巧,提升通过率

  1. 演示流程梳理:按“管理员新增玩具-用户浏览玩具-用户创建订单-管理员处理订单-用户评价玩具”演示,每个步骤停顿2秒,重点展示“玩具订单与玩具表关联逻辑”“订单取消后库存恢复流程”,让评委清晰看到功能流转;
  2. 突出问题解决能力:重点讲“玩具订单表与玩具表关联修复”“重复订单校验实现”“数据库图片路径存储优化”,结合开发踩坑与解决方案(如“初期用二进制存玩具照片导致数据库卡顿,改为路径存储后查询速度提升38%”),比单纯讲技术栈更有说服力;
  3. 提前预判问题:针对“如何保障玩具库存准确”,回答“订单创建库存扣减、取消订单库存恢复、事务确保原子性”;针对“如何避免用户恶意下单”,回答“待支付订单30分钟自动取消、重复订单校验、违规账号禁用”。

结语

本文基于Java+Spring Boot+MySQL的玩具租赁系统实战经验,核心是“聚焦玩具租赁核心业务(玩具管理、订单处理、用户操作)、优先稳定技术、提前排查表关联与数据校验问题”。毕设无需追求复杂功能(如AI玩具推荐、在线支付对接),把玩具管理、订单处理、评价互动等核心功能做扎实,即可顺利通过答辩。

若需要核心源码(带注释)、数据库脚本(含测试数据)、ER图模板,可在评论区留言“Java+Spring Boot玩具租赁系统”获取;若在模块开发中遇问题(如玩具订单关联逻辑、库存预警实现),也可留言咨询,笔者将及时回复。

收藏本文,便于开发查阅~ 祝各位同学毕设顺利,轻松毕业!🎉