毕业设计实战:基于Spring Boot+MySQL的农机电招平台设计与实现,从需求到测试全流程避坑指南!

25 阅读16分钟

毕业设计实战:基于Spring Boot+MySQL的农机电招平台设计与实现,从需求到测试全流程避坑指南!

谁懂啊!当初做“农机电招平台”毕设时,光“农机预约表”和“使用者表”的外键关联就卡了4天——一开始没给预约表设“用户名”外键,查某使用者的租赁记录时,数据全跟其他用户的订单混在一起,导师看了直接让我“重新梳理数据库实体关系”😫 后来踩遍无数坑才摸出高效落地流程,今天把需求分析、技术选型、功能实现到测试的核心细节说透,宝子们不用熬夜改代码,轻松搞定毕设!

一、先搞懂“农机电招平台”要啥!需求分析别瞎蒙

刚开始我跳过需求分析就写代码,花两周加了个“农机智能匹配算法”,结果导师一句“核心是农机管理、预约流程、用户管控,不是复杂算法”直接打回重改!后来才明白,需求分析得先抓准“谁用系统、要干啥”,这步做对,少走90%弯路。

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

系统只有三类核心用户:管理员、农机机主、使用者(别加“中介子角色”!我当初加了后权限混乱,中介能修改农机日租价,砍掉才顺畅),功能明确区分,避免越权:

  • 管理员端(必做功能):
    • 基础管理:维护账号(新增机主/使用者账号、重置密码、逻辑删除无效账号)、按账号/姓名筛选用户、查看完整信息(头像、联系方式、身份证)
    • 农机管控:农机类型管理(新增收割机/播种机分类、编辑类型名称)、农机审核(审核机主提交的农机信息、驳回违规内容)、农机列表维护(修改农机参数、下架故障农机)
    • 流程管理:预约审核(查看使用者预约单、确认/驳回预约)、数据统计(导出农机租赁报表、统计热门农机类型)、系统公告(发布租赁政策、设置首页轮播图)
  • 农机机主端(核心需求):
    • 农机操作:发布农机信息(填写品牌/型号/日租价、上传封面图片、补充详情)、管理农机列表(修改农机参数、下架闲置农机)
    • 预约处理:查看使用者预约请求、审核预约(通过/驳回并填写理由)、跟踪租赁进度(待确认/已租出/已归还)
    • 个人管理:修改个人信息(联系方式、身份证照片)、查看租赁记录(历史订单、租金收入)
  • 使用者端(核心需求):
    • 租赁操作:浏览农机(按类型/品牌/日租价筛选)、提交预约(选择租赁天数、填写工作地点、上传驾照)、查看预约状态(待审核/已通过/已驳回)
    • 信息查询:查看农机详情(参数、机主联系方式、租赁评价)、管理个人订单(已完成/取消的预约)、更新个人资质(补充驾照等级、修改身份证信息)

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

  • 别空想!找2个同学模拟机主和使用者提意见:比如使用者说“想快速确认预约结果”,我才加了“预约状态实时提醒”(待审核标蓝色、已通过标绿色、已驳回标红色),比瞎加“智能匹配”实用
  • 一定要画用例图!用DrawIO画“管理员-审核农机”“机主-处理预约”“使用者-提交租赁申请”,跟导师汇报时比光说“我要做XX功能”直观10倍(当初没画,导师听25分钟没get到逻辑)
  • 写“需求规格说明书”!把约束条件写清楚(如“日租价≥0”“租赁天数≥1”“驾照等级必选”),编码时对着做,不跑偏

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

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

  • 技术可行性:Spring Boot、Java、MySQL都是课堂学过的,图书馆有《Spring Boot实战》《MySQL数据库设计与优化》,遇到问题能查资料(别用Spring Boot 3.x!我当初试了,跟MySQL 8.0联调时农机上传接口卡3天,换回2.7稳定版才顺)
  • 经济可行性:工具全免费!IntelliJ IDEA(学生版)、MySQL、Navicat(学生版)、Tomcat官网直接下,答辩时说“开发成本0,还能帮农机租赁商节约线下沟通成本,实现租赁线上化管理”,导师会觉得你懂成本控制
  • 操作可行性:界面参考主流租赁平台,常用功能放显眼位置(如“我的预约”在使用者首页顶部),找同学测试,10分钟学会浏览农机、提交预约,导师直接认可

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

刚开始我跟风用Spring Boot 3.x+Vue 3+Redis,结果“农机缓存”卡3天——Redis配置错,重启后机主发布的农机信息全丢😫 后来换成Java 8+Spring Boot 2.7+MySQL 8.0+JSP+Tomcat 9+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”编码!我当初用默认编码,农机品牌含特殊符号乱码,查2小时才好
JSP与Java无缝衔接,适合做管理平台界面,支持动态数据渲染(如实时显示预约状态)别用HTML5替代!动态表单(如农机发布)需额外写JS,易出数据绑定错误
Tomcat 9轻量级服务器,适合中小型租赁平台,与Spring Boot 2.7适配性好别用10+版本!部分Servlet类包路径变化,启动报错“Servlet初始化失败”
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. 装IntelliJ IDEA 2022(学生版):勾选“Spring Tools”插件,配置JRE为JDK 1.8,设工作空间编码为“UTF-8”
  3. 装MySQL 8.0:用Navicat建数据库“nongji_dianzhao”,编码设“utf8mb4”,排序“utf8mb4_general_ci”
  4. 建Spring Boot项目:IDEA选“Spring Starter Project”,引入Web、MyBatis、MySQL依赖,配置application.yml(数据库连接、端口号)
  5. 配前端页面:用JSP+Bootstrap写农机列表、预约表单、订单管理页面,实现响应式布局(电脑端3列显示,手机端1列)
  6. 联调测试:在application.yml配置数据库连接(url: jdbc:mysql://localhost:3306/nongji_dianzhao?useSSL=false&serverTimezone=UTC),写“查询农机列表”接口,前端调用能显示农机名称、品牌、日租价即完成

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

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

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

先确定“实体”(管理员、农机机主、使用者、农机、农机类型、农机预约),再想“属性”,别漏关键字段!必做8张核心表,直接画ER图:

  • 管理员表(admin):id(主键)、username(账号)、password(密码,MD5加密)、role(角色)、addtime(创建时间)
  • 农机机主表(nongji_jizhu):id(主键)、jizhuzhanghao(机主账号)、jizhuxingming(机主姓名)、mima(密码)、xingbie(性别)、nianling(年龄)、shoujihao(手机号)、shenfenzheng(身份证)、addtime(创建时间)
  • 使用者表(shiyongzhe):id(主键)、yonghuming(用户名)、xingming(姓名)、mima(密码)、xingbie(性别)、nianling(年龄)、lianxidianhua(联系电话)、shenfenzheng(身份证)、jiazhaodengji(驾照等级)、addtime(创建时间)
  • 农机类型表(nongji_leixing):id(主键)、nongjileixing(农机类型,如收割机/播种机)、addtime(创建时间)
  • 农机表(nongji):id(主键)、nongjimingcheng(农机名称)、fengmiantupian(封面图片路径)、pinpai(品牌)、xinghao(型号)、nongjileixing(关联农机类型)、rizujia(日租价)、jizhuzhanghao(关联机主账号)、jizhuxingming(机主姓名)、shoujihao(机主手机号)、xiangqing(农机详情)、addtime(创建时间)
  • 农机预约表(nongji_yuyue):id(主键)、nongjimingcheng(农机名称)、fengmiantupian(封面图片路径)、pinpai(品牌)、xinghao(型号)、jizhuzhanghao(机主账号)、shoujihao(机主手机号)、yonghuming(关联使用者用户名)、xingming(使用者姓名)、zulintianshu(租赁天数)、zongjia(总价)、yuyueshijian(预约时间)、gongzuodidian(工作地点)、sfsh(审核状态:否/是)、ispay(支付状态:未支付/已支付)、addtime(创建时间)

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

  1. 矩形=实体(如“农机机主”“农机”)
  2. 椭圆=属性(如机主“手机号”“身份证”,农机“品牌”“日租价”)
  3. 菱形=关系(如“机主-农机”一对多,一个机主可发布多台农机;“使用者-预约”一对多,一个使用者可预约多台农机) 避坑提醒:别把“农机图片/身份证照片”存数据库!我当初存二进制导致数据库崩溃,改成存路径(如/static/nongji/img1.jpg、/static/idcard/file1.jpg)才对。

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

建表后一定要测:在“农机机主表”插数据(id=1,jizhuzhanghao=“jizhu001”,jizhuxingming=“张三”),“农机表”插关联数据(jizhuzhanghao=“jizhu001”,nongjimingcheng=“小麦收割机”,pinpai=“梅花”,rizujia=256),用JOIN查“某机主的农机列表”:

SELECT n.nongjimingcheng, n.pinpai, n.xinghao, n.nongjileixing, n.rizujia, n.xiangqing
FROM nongji n
JOIN nongji_jizhu j ON n.jizhuzhanghao = j.jizhuzhanghao
WHERE j.jizhuzhanghao = 'jizhu001';

能查出“农机名称+品牌+型号+类型+日租价+详情”说明关联对;若报错“Cannot add or update a child row”,大概率外键错,赶紧检查表结构(比如jizhuzhanghao字段类型是否和机主表一致)。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

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

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

1. 农机机主端:农机发布模块(必做!)

核心是“准确录入农机信息”,重点“参数校验”和“图片上传”,别漏这两步!

  • 操作逻辑
    1. 发布农机前校验“农机名称非空”“日租价≥0”“品牌/型号已填写”“封面图片已上传”,缺一项提示“完善农机信息”(我当初没加“日租价校验”,机主填负数价格也能提交,导师让我补了1小时逻辑)
    2. 封面图片限制格式(JPG/PNG)和大小(≤5MB),上传后预览效果,支持“重新上传”;农机详情用富文本框,允许插入图片和文字说明
    3. 发布后自动关联机主信息(机主姓名、手机号),状态默认为“待审核”,需管理员审核通过后才显示在首页列表
  • 页面设计(JSP+Bootstrap)
    • 表单区:输入农机名称、下拉选品牌/型号/农机类型、填写日租价、上传封面图片(带预览框)、富文本框填农机详情
    • 预览区:实时显示已填信息,底部“提交发布/保存草稿”按钮(保存草稿可后续编辑,提交后不可修改)
    • 农机列表:发布后跳转至个人农机列表,显示农机名称、状态(待审核/已通过)、操作列“查看/编辑/下架”

2. 使用者端:农机预约模块(答辩亮点!)

体现“用户核心需求”,导师超爱问!核心“便捷预约+状态跟踪”,别漏“资质校验”。

  • 操作逻辑
    1. 使用者预约时先浏览农机列表,筛选条件(如选“收割机”类型、日租价≤300),点击农机进入详情页,确认参数后点击“立即预约”
    2. 预约表单自动带入农机信息(不可修改),填写租赁天数(默认1天,可调整)、工作地点、上传驾照照片,系统自动计算总价(租赁天数×日租价)
    3. 提交后实时显示“预约成功,待机主审核”,机主审核后通过系统通知提醒(审核通过→提示“可支付租金”,驳回→显示驳回理由如“驾照等级不符”)
  • 页面设计
    • 农机详情页:顶部显示封面图片,中部展示农机参数(品牌、型号、日租价、机主联系方式),底部“立即预约”按钮
    • 预约表单页:左侧显示农机信息(只读),右侧填写租赁信息(租赁天数、工作地点、驾照上传框),底部显示总价和“提交预约”按钮
    • 预约列表页:按状态分组(待审核/已通过/已驳回),显示预约编号、农机名称、租赁天数、总价、审核状态,驳回项标注“审核理由”

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

管理员核心操作是“把控预约合规性”,流程别复杂:筛选待审核预约→查看资质→审核通过/驳回,我当初漏了“驾照等级校验”,使用者无对应驾照也能通过,补半天逻辑才好。

  • 操作逻辑
    1. 审核前校验“使用者驾照等级是否匹配农机要求”(如收割机需A照,无A照则提示“资质不符”)、“租赁天数≥1”,不满足则驳回并填写理由
    2. 支持“单个审核”和“批量审核”:单个审核时查看完整预约信息(农机参数、使用者资质、工作地点);批量审核针对状态相同的预约(如批量通过“驾照合规”的预约)
    3. 审核通过后同步更新预约状态为“已通过”,并提醒使用者支付;驳回则同步状态为“已驳回”,显示理由
  • 页面设计
    • 筛选区:按预约状态(待审核/已通过/已驳回)、使用者姓名、农机类型筛选,配“查询/批量审核”按钮
    • 预约列表:显示预约编号、农机名称、使用者姓名、租赁天数、总价、提交时间、审核状态,操作列“查看详情/审核”
    • 审核弹窗:加载预约完整信息(含驾照照片预览)、审核结果(radio选“通过/驳回”)、驳回理由输入框(驳回时必填)

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

很多宝子觉得“功能能跑就行”,答辩时评委一测就出问题!我当初没测“重复预约同一农机”,导致同一时间段多个人预约同一台农机,导师说“不符合租赁逻辑”,当场扣分😫 测试要针对性做:

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

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

测试场景操作步骤预期结果
使用者重复预约同一农机使用者选“小麦收割机”→选2024-06-10至06-15租赁→提交预约→另一使用者选同一农机同一时段→提交提示“该时段已被预约,请选择其他时间”,无法完成第二次预约
机主发布负数日租价机主填农机名称→日租价填“-200”→上传图片→提交发布提示“日租价不能为负数,请重新填写”,无法提交
管理员批量审核预约管理员勾选3条待审核预约→校验驾照均合规→选“审核通过”→提交3条预约状态均变为“已通过”,使用者收到通知

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

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

  • 浏览器:Chrome、Firefox、Edge、IE11(重点测IE,JSP页面兼容性差,需在index.html引入html5shiv.js修复)
  • 设备:电脑(1920×1080、1366×768分辨率)、手机(iPhone 13、华为Mate 40,测响应式布局)
  • 要求:无横向滚动条,按钮点击无延迟,农机图片加载≤3秒

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

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

  • 问题总结:“IE下农机列表显示错乱,加IE专属CSS修复;使用者可填负数租赁天数,加数值校验修复;预约审核无驾照校验,新增资质审核逻辑修复”
  • 测试结论:“核心功能无严重bug,兼容性问题已修复,满足农机发布、预约审核、租赁跟踪需求”

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

  1. 演示流程顺畅:提前录视频(怕现场崩),按“管理员新增农机类型→机主发布农机→管理员审核农机→使用者预约农机→机主审核预约”流程来,每个操作停顿2秒,让评委看清
  2. 讲“解决的问题”:比如“一开始农机图片存数据库崩了,改成存路径解决;使用者填负数日租价,加数值校验解决;IE下页面错乱,加兼容代码解决”,比光说“用了Spring Boot+MySQL”有亮点
  3. 准备常见问题:导师可能问“系统怎么保证用户数据安全?”,答“用户密码MD5加密;身份证/驾照照片脱敏显示(隐藏中间数字);操作留日志,便于追溯;数据库每天自动备份,防止数据丢失”

最后:毕设通关小私心

以上就是基于Spring Boot+MySQL的“农机电招平台”从0到1的避坑干货!毕设不难,别瞎做复杂功能(如智能匹配、在线支付),把农机发布、预约审核、租赁跟踪做扎实,答辩就能过。

需要核心源码(带注释,直接能跑)、数据库脚本(含测试数据)、ER图模板的宝子,评论区扣“农机电招平台”,我私发你;卡在某个模块(如农机审核、预约处理),也可以留言,看到必回!

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