1. 项目背景与核心需求
贫困生申请管理系统是高校学生资助工作中的重要信息化工具。传统纸质申请流程存在效率低下、数据统计困难、审核透明度不足等问题。这个毕业设计项目旨在开发一套完整的贫困生申请管理系统,实现从学生在线申请到院系审核、学校审批的全流程数字化管理。
系统需要解决三个核心痛点:
- 申请材料电子化归档与长期保存
- 多级审核流程的线上化与留痕
- 贫困生数据的动态管理与统计分析
2. 系统架构设计
2.1 技术选型分析
前端采用Vue.js+ElementUI组合,主要考虑因素:
- 组件化开发适合表单密集型的业务场景
- 丰富的UI组件库可快速搭建管理后台界面
- 完善的文档和社区支持降低学习成本
后端采用Spring Boot框架,优势在于:
- 自动配置简化了SSM框架的整合
- 内嵌Tomcat方便部署
- 丰富的starter依赖快速集成常用功能
数据库选用MySQL 8.0,关键考量:
- 事务完整性保障审核流程数据一致性
- JSON类型字段支持动态扩展申请材料
- 完善的权限控制满足多角色需求
2.2 系统模块划分
-
用户中心模块
- 学生端:个人信息维护、申请材料上传
- 辅导员端:班级学生管理、初审功能
- 资助中心端:终审与名额分配
-
申请管理模块
- 电子申请表动态生成
- 证明材料多格式上传
- 申请进度实时追踪
-
审核工作流模块
- 多级审核流程配置
- 电子签章与批注功能
- 审核记录全程留痕
-
数据统计模块
- 贫困等级分布可视化
- 资助金发放统计
- 历史数据对比分析
3. 核心功能实现
3.1 动态表单引擎
采用JSON Schema定义申请表结构:
json复制{
"title": "贫困生申请表",
"type": "object",
"properties": {
"familyIncome": {
"type": "number",
"title": "家庭年收入(元)"
},
"specialSituation": {
"type": "string",
"format": "textarea",
"title": "特殊情况说明"
}
}
}
前端通过vue-json-schema-form库动态渲染表单,实现配置化:
javascript复制<template>
<vue-form
:schema="schema"
v-model="formData"
@submit="onSubmit"
/>
</template>
3.2 文件上传服务
采用分块上传方案解决大文件传输:
java复制@PostMapping("/chunk-upload")
public ResponseEntity<String> chunkUpload(
@RequestParam MultipartFile file,
@RequestParam String chunkId,
@RequestParam Integer chunkIndex,
@RequestParam Integer totalChunks) {
// 保存分片到临时目录
String tempPath = saveChunk(file, chunkId, chunkIndex);
if(chunkIndex.equals(totalChunks - 1)) {
// 所有分片上传完成,合并文件
return mergeChunks(chunkId, totalChunks);
}
return ResponseEntity.ok("chunk received");
}
3.3 审核工作流引擎
基于Activiti实现多级审核:
xml复制<process id="approvalFlow" name="贫困生审核流程">
<startEvent id="start"/>
<userTask id="classReview" name="班级初审" candidateGroups="class_teacher"/>
<userTask id="collegeReview" name="院系复审" candidateGroups="college_admin"/>
<userTask id="schoolReview" name="学校终审" candidateGroups="school_admin"/>
<endEvent id="end"/>
<sequenceFlow sourceRef="start" targetRef="classReview"/>
<sequenceFlow sourceRef="classReview" targetRef="collegeReview"/>
<sequenceFlow sourceRef="collegeReview" targetRef="schoolReview"/>
<sequenceFlow sourceRef="schoolReview" targetRef="end"/>
</process>
4. 关键问题解决方案
4.1 敏感数据安全存储
采用分层加密策略:
- 数据库字段级加密:使用AES算法加密身份证号等敏感字段
- 文件存储加密:上传的证明材料使用RSA非对称加密
- 传输加密:HTTPS+自定义报文签名
4.2 高并发申请提交
通过以下措施保障系统稳定性:
- 使用Redis缓存热点数据
- 采用Nginx负载均衡
- 数据库读写分离
- 引入消息队列异步处理文件转码
4.3 审核公平性保障
实现三重校验机制:
- 自动校验:系统核对材料完整性和格式规范
- 交叉校验:不同审核人员独立评审
- 抽样复核:资助中心随机抽查已通过申请
5. 系统部署方案
5.1 基础环境配置
bash复制# JDK环境
apt install openjdk-11-jdk
# 数据库配置
CREATE DATABASE poverty_relief
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
# Redis配置
bind 127.0.0.1
protected-mode yes
requirepass yourpassword
5.2 应用部署脚本
bash复制#!/bin/bash
# 启动后端服务
nohup java -jar poverty-relief-backend.jar \
--spring.profiles.active=prod \
> backend.log 2>&1 &
# 启动前端服务
nohup serve -s poverty-relief-frontend \
-l 3000 \
> frontend.log 2>&1 &
6. 项目扩展方向
- 移动端适配:开发微信小程序版本,方便学生随时提交申请
- 大数据分析:结合消费数据建立贫困认定模型
- 区块链存证:将审核关键环节上链确保不可篡改
- 智能客服:引入NLP技术解答申请常见问题
项目开发中的经验教训:在初期版本中,我们曾将审核流程硬编码在业务逻辑中,导致后期流程变更需要修改代码。重构为工作流引擎后,现在只需修改BPMN配置文件即可调整审核流程,这个教训让我深刻理解了"不要重复造轮子"的重要性。
