多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

基于 Spring Boot 的高校毕业生离校管理系统设计与实现

基于 Spring Boot 的高校毕业生离校管理系统设计与实现 温馨提示本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片1. 项目背景与意义随着高校办学规模的不断扩大每年毕业季都有大量学生需要办理离校手续。传统的人工办理方式涉及多个部门图书馆、财务处、宿管中心、教务处等流程繁琐、周期长、易出错学生往往需要往返多个部门盖章签字效率低下且体验不佳。本系统基于 Spring Boot 框架旨在构建一套线上化、流程化的高校毕业生离校管理系统实现离校手续的在线申请、部门审核、进度跟踪和统计查询提升离校办理效率减轻各部门工作负担同时为学校信息化建设提供支撑。2. 系统需求分析2.1 功能需求学生端登录系统、查看离校办理进度、在线提交离校申请、查看各部门审核结果、下载离校单。部门端图书馆、财务处、宿管中心、教务处等各部门登录后对待办审核事项进行审批通过/驳回并填写审核意见。管理员端学生信息管理、部门信息管理、离校流程配置、数据统计与导出、系统公告发布。2.2 非功能需求安全性用户密码加密存储基于角色的权限控制RBAC。性能支持并发访问常规操作响应时间不超过 2 秒。可维护性采用分层架构代码结构清晰便于后续扩展和维护。3. 系统架构设计系统采用 B/S 架构前后端分离开发。后端基于 Spring Boot MyBatis-Plus前端采用 Vue Element UI数据库使用 MySQL。flowchart TD A[学生端浏览器] -- B[Nginx 反向代理] C[部门端浏览器] -- B D[管理员浏览器] -- B B -- E[Spring Boot 后端服务] E -- F[MySQL 数据库] E -- G[Redis 缓存]4. 数据库设计4.1 核心表结构表名说明关键字段student学生信息表id、student_no、name、college、major、class_name、phone、statusdepartment部门表id、dept_name、dept_code、sort_orderleave_process离校流程配置表id、dept_id、step_order、is_requiredleave_application离校申请表id、student_id、apply_time、status、finish_timeleave_approval离校审核记录表id、application_id、dept_id、approve_status、approve_comment、approve_time4.2 表关系说明一名学生提交一条离校申请leave_application该申请对应多条审核记录leave_approval每条审核记录对应一个部门department。离校流程配置表leave_process用于定义各部门的审核顺序和是否必办。5. 后端核心代码实现5.1 项目依赖配置pom.xml 关键片段dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-boot-starter/artifactId version3.5.3/version /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId scoperuntime/scope /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-security/artifactId /dependency5.2 实体类示例LeaveApplicationData TableName(leave_application) public class LeaveApplication { TableId(type IdType.AUTO) private Long id; private Long studentId; private LocalDateTime applyTime; private Integer status; // 0-办理中 1-已完成 2-已驳回 private LocalDateTime finishTime; }5.3 离校申请提交接口PostMapping(/apply) public Result submitApply(RequestBody LeaveApplyDTO dto) { // 1. 校验学生是否存在且未提交过申请 Student student studentService.getById(dto.getStudentId()); if (student null) { return Result.error(学生信息不存在); } // 2. 创建离校申请 LeaveApplication application new LeaveApplication(); application.setStudentId(student.getId()); application.setStatus(0); application.setApplyTime(LocalDateTime.now()); leaveApplicationService.save(application); // 3. 根据流程配置生成各部门审核记录 ListLeaveProcess processList leaveProcessService.list( new LambdaQueryWrapperLeaveProcess().orderByAsc(LeaveProcess::getStepOrder)); for (LeaveProcess process : processList) { LeaveApproval approval new LeaveApproval(); approval.setApplicationId(application.getId()); approval.setDeptId(process.getDeptId()); approval.setApproveStatus(0); // 待审核 leaveApprovalService.save(approval); } return Result.success(离校申请提交成功, application.getId()); }5.4 部门审核接口PostMapping(/approve) public Result approve(RequestBody ApproveDTO dto) { LeaveApproval approval leaveApprovalService.getById(dto.getApprovalId()); if (approval null || approval.getApproveStatus() ! 0) { return Result.error(审核记录不存在或已处理); } approval.setApproveStatus(dto.getPass() ? 1 : 2); approval.setApproveComment(dto.getComment()); approval.setApproveTime(LocalDateTime.now()); leaveApprovalService.updateById(approval); // 判断该申请是否所有必办部门均已通过 checkApplicationFinish(approval.getApplicationId()); return Result.success(审核完成); } private void checkApplicationFinish(Long applicationId) { ListLeaveApproval approvals leaveApprovalService.list( new LambdaQueryWrapperLeaveApproval().eq(LeaveApproval::getApplicationId, applicationId)); boolean allPassed approvals.stream() .allMatch(a - a.getApproveStatus() 1); if (allPassed) { LeaveApplication app leaveApplicationService.getById(applicationId); app.setStatus(1); app.setFinishTime(LocalDateTime.now()); leaveApplicationService.updateById(app); } }6. 前端页面设计6.1 页面结构登录页学生、部门管理员、系统管理员统一入口按角色跳转不同首页。学生端-离校办理页展示离校申请状态、各部门审核进度条、审核意见列表。部门端-待办审核页展示待审核列表支持通过/驳回操作并填写意见。管理员端-数据统计页按学院、专业统计离校完成率支持导出 Excel。6.2 进度展示组件示例Vuetemplate el-steps :activeactiveStep finish-statussuccess el-step v-foritem in steps :keyitem.deptId :titleitem.deptName :descriptionitem.statusText/el-step /el-steps /template script export default { props: { approvals: { type: Array, required: true } }, computed: { steps() { return this.approvals.map(a ({ deptId: a.deptId, deptName: a.deptName, statusText: a.approveStatus 1 ? 已通过 : (a.approveStatus 2 ? 已驳回 : 待审核) })); }, activeStep() { return this.approvals.filter(a a.approveStatus 1).length; } } }; /script7. 系统测试7.1 测试用例示例编号测试项操作步骤预期结果TC-01学生提交离校申请学生登录后点击提交申请系统生成申请记录及各部门待审核记录TC-02部门审核通过图书馆管理员审核通过该部门审核状态变为已通过进度条更新TC-03全部审核完成所有必办部门均审核通过申请状态变为已完成学生可下载离校单TC-04部门驳回申请财务处驳回并填写意见申请状态变为已驳回学生端可见驳回原因7.2 测试结论经过功能测试和接口测试系统各模块运行正常核心业务流程提交申请、部门审核、进度跟踪、完成离校均符合预期能够满足高校毕业生离校管理的基本需求。8. 总结与展望本文设计并实现了一个基于 Spring Boot 的高校毕业生离校管理系统实现了离校手续的线上化办理和全流程跟踪有效提升了离校办理效率。系统采用前后端分离架构具有良好的扩展性和可维护性。后续可从以下方向继续优化一是引入消息通知机制短信、邮件及时提醒学生和审核人员二是增加移动端适配方便学生通过手机查看办理进度三是结合大数据分析对离校数据进行深度挖掘为学校管理决策提供数据支持。
返回列表