毕业设计实战基于SSM的学生网上请假系统设计与实现全攻略在开发“学生网上请假系统”这套毕设时我曾因“请假流程与考勤管理脱节”踩过一个关键坑。初期设计时我将“学生请假申请”和“考勤记录”视为两个独立的模块导致学生请假获批后考勤记录未自动同步更新教师端看到的考勤状态与请假状态不一致期末统计时数据混乱耗费3天重构了请假与考勤的联动机制、引入请假状态机待审核→班主任审核→系主任审核→通过/拒绝和考勤自动更新逻辑才解决了问题。基于此次实战经验本文将精简拆解这套涵盖管理员、系主任、老师、学生四大角色的网上请假系统分享核心开发流程与实操细节为同类请假审批类毕设提供一份可落地的参考。一、需求分析聚焦“请假审批流程”核心避免功能冗余很多同学在做审批类系统时容易陷入“功能堆砌”的误区。我最初也曾想加入一个复杂的“课程签到地图”模块结果因偏离“请假申请、多级审批、考勤关联”等核心业务被导师要求删减。在做这套系统时我的核心思路是抓住**“请假”这个事件主体围绕“审批”这个场景理清“学生申请人”、“老师班主任审批”、“系主任最终审批”、“管理员系统管理”**之间的关系最终形成“学生提交请假 → 班主任初审 → 系主任终审 → 通过后自动更新考勤 → 学生查看审批结果”的业务闭环。1. 核心角色与功能精简版角色核心功能管理员系主任管理增删改查/重置密码、老师管理、学生管理、班级管理、课程管理、课表管理、公告管理系主任请假管理查看学生请假申请并终审、学生管理、老师信息查看、考勤统计查看、课程查看、公告管理老师班主任请假管理初审学生的请假申请、考勤管理录入/修改学生考勤、课程查看、学生信息查看学生请假管理提交请假申请/查看审批进度、考勤查看、班级查看、课程查看、个人信息管理2. 需求避坑要点拒绝空想模拟流程在开发前我邀请了10名学生、3位班主任和2位系主任模拟了“学生因病请假→提交申请→班主任审批→系主任审批→通过后考勤自动更新→学生查看结果”的完整流程。发现学生最关心“审批进度”于是增加了“审批状态跟踪待班主任审核/待系主任审核/已通过/已拒绝”功能。明确约束条件提前规定“请假编号自动生成格式QJ年月日流水号”“请假天数自动计算根据开始日期和结束日期”“请假通过后考勤状态自动更新为请假”“不同请假类型需不同证明材料”这些明确的约束为后续系统实现提供了清晰的业务边界。二、技术选型稳定框架 多级审批新手友好这套系统涉及多级审批流程前期我曾尝试使用工作流引擎结果学习成本高且配置复杂。最终我回归了更简单直接的方案技术工具选型理由避坑提醒SSM框架SpringSpringMVCMyBatis经典成熟的企业级开发框架文档丰富适合审批类系统的稳定开发重点掌握Spring声明式事务管理请假审批涉及多表操作请假单状态更新考勤记录新增必须加事务JSP JSTL jQuery传统的服务端渲染方式开发简单适合毕设快速实现使用c:if标签根据审批状态显示不同按钮表单提交用Ajax提升用户体验MySQL 5.7存储所有业务数据请假表需要请假编号、请假类型、开始/结束日期、请假天数、审批状态等多个字段考勤表需要关联学生和考勤状态Bootstrap快速搭建响应式前端界面适配PC端和移动端使用Bootstrap的模态框实现审批弹窗方便填写审核意见三、数据库设计业务关联清晰支撑审批闭环数据库设计直接影响后续开发效率。前期因未设计“审批状态字段”和“考勤联动机制”导致请假通过后考勤状态未更新、审批流程不可追溯。1. 核心表结构精选核心表学生表yonghuid、username学号、password、clazz_id班级、yonghu_uuid_number学号、yonghu_name、yonghu_phone、yonghu_id_number、yonghu_photo、sex_types、yonghu_email。老师表laoshiid、username、password、laoshi_uuid_number工号、laoshi_name、laoshi_phone、laoshi_id_number、laoshi_photo、sex_types、laoshi_email。系主任表xizhurenid、username、password、xizhuren_uuid_number工号、xizhuren_name、xizhuren_phone、xizhuren_id_number、xizhuren_photo、sex_types、xizhuren_email。班级表clazzid、laoshi_id班主任、clazz_name、clazz_address。课程表kechengid、laoshi_id任课老师、kecheng_name、kecheng_address、kecheng_types课程形式。请假表qingjia这是核心业务表。包含qingjia_uuid_number请假编号、yonghu_id学生、qingjia_name请假标题、qingjia_types请假类型、qingjiakaishi_time开始日期、qingjia_number请假天数、qingjiajieshu_time结束日期、qingjia_content请假内容、insert_time申请时间、qingjia_yesno_types审批状态1待班主任审核/2待系主任审核/3已通过/4已拒绝、qingjia_yesno_text审核回复、qingjia_shenhe_time审核时间。考勤表kaoqinid、yonghu_id学生、kaoqin_types考勤状态正常/迟到/早退/旷课/请假、kaoqin_time考勤日期、insert_time录入时间。公告表gonggaoid、gonggao_name、gonggao_types、insert_time、gonggao_content。2. 关键业务SQL示例示例SQL查询学生的完整请假记录及审批进度-- 查询学生“张三”的所有请假记录及审批状态SELECTq.qingjia_uuid_numberASleave_no,q.qingjia_nameAStitle,q.qingjia_typesASleave_type,q.qingjiakaishi_timeASstart_date,q.qingjiajieshu_timeASend_date,q.qingjia_numberASdays,q.qingjia_contentASreason,q.insert_timeASapply_time,q.qingjia_yesno_typesASstatus,-- 1待班主任/2待系主任/3已通过/4已拒绝q.qingjia_yesno_textASreply,q.qingjia_shenhe_timeASaudit_time,l.laoshi_nameASteacher_name,x.xizhuren_nameASdirector_nameFROMqingjia qLEFTJOINyonghu yONq.yonghu_idy.idLEFTJOINclazz cONy.clazz_idc.idLEFTJOINlaoshi lONc.laoshi_idl.idLEFTJOINxizhuren xON11-- 系主任固定实际可根据业务关联WHEREy.yonghu_name张三ORDERBYq.insert_timeDESC;关键避坑审批状态流转请假单状态必须按顺序流转待班主任审核1→待系主任审核2→已通过/已拒绝3/4。班主任审核通过后状态变为2系主任审核通过后状态变为3。考勤自动更新请假通过后需在考勤表中自动插入对应日期的请假记录标记为请假状态。数据一致性涉及请假单状态更新和考勤记录插入的多表操作务必使用事务注解Transactional。四、核心功能实现6大模块满足答辩需求这套系统功能点清晰答辩时只需讲清楚核心业务流程即可。以下6个模块是重中之重也是答辩评委最可能提问的地方。1. 请假管理核心业务流程 - 学生端核心逻辑学生提交请假申请→填写请假标题、类型、开始/结束日期、请假内容→系统自动计算请假天数→提交后状态为“待班主任审核”。代码要点ServiceTransactionalpublicvoidaddQingjia(Qingjiaqingjia){// 1. 自动生成请假编号 QJ年月日流水号StringuuidQJLocalDate.now().toString().replace(-,)String.format(%04d,getTodayCount()1);qingjia.setQingjiaUuidNumber(uuid);// 2. 自动计算请假天数longdaysChronoUnit.DAYS.between(qingjia.getQingjiakaishiTime().toInstant(),qingjia.getQingjiajieshuTime().toInstant());qingjia.setQingjiaNumber((int)days1);// 3. 设置初始审批状态为“待班主任审核”qingjia.setQingjiaYesnoTypes(1);qingjia.setInsertTime(newDate());qingjia.setCreateTime(newDate());qingjiaMapper.insert(qingjia);log.info(学生 {} 提交请假申请编号{},qingjia.getYonghuId(),uuid);}2. 请假管理核心业务流程 - 老师/班主任端核心逻辑班主任查看本班学生的请假申请→初审通过/拒绝→通过后状态变为“待系主任审核”→填写审核意见。代码要点班主任初审ServiceTransactionalpublicvoidteacherAudit(IntegerqingjiaId,Integerstatus,Stringreply){QingjiaqingjiaqingjiaMapper.selectByPrimaryKey(qingjiaId);if(qingjia.getQingjiaYesnoTypes()!1){thrownewRuntimeException(该请假单状态异常无法审核);}qingjia.setQingjiaYesnoText(reply);qingjia.setQingjiaShenheTime(newDate());if(status1){// 通过qingjia.setQingjiaYesnoTypes(2);// 进入系主任审核log.info(班主任通过请假申请进入系主任审核请假编号{},qingjia.getQingjiaUuidNumber());}else{// 拒绝qingjia.setQingjiaYesnoTypes(4);// 已拒绝log.info(班主任拒绝请假申请请假编号{},qingjia.getQingjiaUuidNumber());}qingjiaMapper.updateByPrimaryKey(qingjia);}3. 请假管理核心业务流程 - 系主任端核心逻辑系主任查看通过班主任初审的请假申请→终审通过/拒绝→通过后自动更新考勤记录→填写最终审核意见。代码要点系主任终审 考勤联动ServiceTransactionalpublicvoiddirectorAudit(IntegerqingjiaId,Integerstatus,Stringreply){QingjiaqingjiaqingjiaMapper.selectByPrimaryKey(qingjiaId);if(qingjia.getQingjiaYesnoTypes()!2){thrownewRuntimeException(该请假单状态异常无法审核);}qingjia.setQingjiaYesnoText(reply);qingjia.setQingjiaShenheTime(newDate());if(status1){// 通过qingjia.setQingjiaYesnoTypes(3);// 已通过// 关键自动更新考勤记录updateKaoqinOnLeaveApproved(qingjia);log.info(系主任通过请假申请请假编号{},qingjia.getQingjiaUuidNumber());}else{// 拒绝qingjia.setQingjiaYesnoTypes(4);// 已拒绝log.info(系主任拒绝请假申请请假编号{},qingjia.getQingjiaUuidNumber());}qingjiaMapper.updateByPrimaryKey(qingjia);}// 请假通过后更新考勤privatevoidupdateKaoqinOnLeaveApproved(Qingjiaqingjia){LocalDatestartqingjia.getQingjiakaishiTime().toLocalDate();LocalDateendqingjia.getQingjiajieshuTime().toLocalDate();// 遍历请假日期范围内的每一天插入考勤记录for(LocalDatedatestart;!date.isAfter(end);datedate.plusDays(1)){KaoqinkaoqinnewKaoqin();kaoqin.setYonghuId(qingjia.getYonghuId());kaoqin.setKaoqinTypes(5);// 5请假kaoqin.setKaoqinTime(date);kaoqin.setInsertTime(newDate());kaoqin.setCreateTime(newDate());kaoqinMapper.insert(kaoqin);}}4. 考勤管理老师端核心逻辑老师可以录入/修改学生的日常考勤正常/迟到/早退/旷课期末统计学生出勤情况。页面设计考勤列表按日期倒序排列支持按班级、学生姓名、日期筛选。5. 班级与课程管理管理员端核心逻辑管理员管理班级信息班级名称、位置、班主任管理课程信息课程名称、地点、任课老师、课程形式。代码要点publicvoidaddClazz(Clazzclazz){// 校验班级名称是否重复ClazzExampleexamplenewClazzExample();example.createCriteria().andClazzNameEqualTo(clazz.getClazzName());ListClazzlistclazzMapper.selectByExample(example);if(!list.isEmpty()){thrownewRuntimeException(班级名称已存在);}clazz.setInsertTime(newDate());clazz.setCreateTime(newDate());clazzMapper.insert(clazz);}6. 公告管理系主任/管理员端核心逻辑系主任和管理员发布通知公告放假通知、补课安排等→学生和老师可查看公告列表和详情。页面设计公告列表按发布时间倒序排列支持公告类型分类展示。五、学生网上请假系统特色功能设计关键加分项这套系统的核心在于“请假审批与考勤管理的完整闭环”以下几个特色设计能让你的毕设脱颖而出1. 多级审批流程可视化在学生和老师的请假管理界面用标签清晰展示请假单的审批状态待班主任审核显示黄色标签学生可撤回申请待系主任审核显示蓝色标签班主任审核已通过等待系主任已通过显示绿色标签考勤已自动更新已拒绝显示红色标签显示拒绝原因2. 请假与考勤联动统计-- 统计学生出勤情况正常/迟到/早退/旷课/请假SELECTy.yonghu_name,COUNT(CASEWHENk.kaoqin_types1THEN1END)ASnormal_days,COUNT(CASEWHENk.kaoqin_types2THEN1END)ASlate_days,COUNT(CASEWHENk.kaoqin_types3THEN1END)ASearly_days,COUNT(CASEWHENk.kaoqin_types4THEN1END)ASabsent_days,COUNT(CASEWHENk.kaoqin_types5THEN1END)ASleave_daysFROMyonghu yLEFTJOINkaoqin kONy.idk.yonghu_idWHEREy.clazz_id#{clazzId}GROUPBYy.id;在系主任和老师后台展示班级出勤统计报表按月/按学期统计辅助学生管理决策。3. 请假审批提醒可选加分项学生提交请假后系统自动通知班主任站内消息班主任审批通过后自动通知系主任最终审批通过/拒绝后自动通知学生实现方式数据库消息表 前端轮询或WebSocket4. 请假类型统计分析-- 统计各类请假类型的占比SELECTqingjia_typesASleave_type,COUNT(*)AScount,ROUND(COUNT(*)*100.0/(SELECTCOUNT(*)FROMqingjia),2)ASpercentageFROMqingjiaWHEREqingjia_yesno_types3-- 已通过的请假GROUPBYqingjia_typesORDERBYcountDESC;在管理员后台展示请假类型统计图表为学校管理提供数据支持如病假占比高可加强流感预防宣传。六、测试与答辩流程演示为主突出请假闭环1. 核心测试用例测试场景操作步骤预期结果学生提交请假学生登录→新增请假→填写信息→提交请假单生成状态为“待班主任审核”班主任初审通过班主任登录→查看请假列表→审核通过请假单状态变为“待系主任审核”系主任终审通过系主任登录→查看请假列表→审核通过请假单状态变为“已通过”考勤表自动新增请假记录学生查看进度学生登录→查看请假记录审批状态正确显示待班主任/待系主任/已通过/已拒绝考勤统计老师登录→查看考勤统计学生出勤数据准确包含请假天数2. 答辩准备技巧演示流程分角色演示强调闭环。管理员端展示添加班级、添加学生、添加老师、添加系主任。学生端展示提交请假申请、查看审批进度。班主任端展示初审通过、查看班级学生列表。系主任端展示终审通过。最终展示在学生端查看请假单状态已变为“已通过”并在考勤查看中看到对应日期已标记为请假强调完整的请假-考勤联动闭环。业务讲解准备一页PPT展示系统业务流程图从“学生提交请假”到“考勤自动更新”的全过程。技术亮点多级审批流程设计如何用状态字段实现待班主任审核→待系主任审核→已通过的流转。事务一致性系主任终审通过时同时更新请假单状态和插入考勤记录的事务管理。考勤自动更新算法如何根据请假开始/结束日期自动生成多天考勤记录。统计报表出勤统计、请假类型统计的实现。突出问题解决讲清楚“如何保证请假通过后考勤自动同步”事务考勤插入逻辑、“如何防止重复审批”状态校验、“如何实现请假天数自动计算”日期差计算。结语本文核心是“聚焦网上请假核心业务、实现多级审批与考勤联动、设计一套完整的请假管理系统”。毕设无需追求技术多炫酷把学生申请人、老师初审人、系主任终审人、**考勤结果关联**之间的业务逻辑讲透实现一个功能完整、流程闭环的系统就足以成为答辩中的亮点。若需完整项目源码带详细注释、测试数据SQL脚本、以及多级审批和考勤联动的完整代码可在评论区留言“学生网上请假系统”获取开发中遇问题如审批状态流转、考勤自动更新、事务一致性也可留言咨询 祝毕设顺利