基于springboot2+vue2的学生干部管理系统
温馨提示:
本文最后更新于 2026年06月03日,已超过 7 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
1. 资源
2. 项目简介
学生干部管理系统,旨在实现对高校学生干部的信息化管理。系统支持管理员和学生干部两种角色,主要功能包括:
- 学生干部信息管理(基本信息、部门、职位、考核、纪检、信访、履历、审计等指标)
- 公告信息发布与管理
- 留言与回复功能
- 信访举报管理
- 组织评价管理(正面/负面评价)
- 基础数据管理(部门、职位、公告类型、信访举报类型等字典数据)
系统基于 B/S 架构,提供后台管理界面,支持数据的增删改查、文件上传下载、报表统计等功能。
3. 技术栈
| 技术类别 | 技术选型 |
|---|---|
| 后端框架 | Spring Boot 2.2.2.RELEASE |
| 持久层框架 | Mybatis-Plus 2.3 + Mybatis |
| 安全框架 | Apache Shiro 1.3.2 |
| 数据库 | MySQL 5.7.32-log |
| 前端框架 | Vue.js + Element UI |
| 构建工具 | Maven |
| 工具库 | Hutool、Fastjson、Commons-lang3、POI |
4. 详细介绍
4.1 数据库设计
| 表名 | 说明 | 主要字段 |
|---|---|---|
xueshengganbu |
学生干部信息表 | 账户、密码、姓名、手机号、身份证号、头像、邮箱、性别、部门、职位、考核、纪检、信访、履历、审计、添加时间 |
gonggao |
公告信息表 | 公告名称、图片、类型、发布时间、详情 |
liuyan |
留言表 | 学生干部ID、留言标题、留言内容、回复内容、留言时间、回复时间 |
xinfangjubao |
信访举报表 | 学生干部ID、标题、类型、附件、内容、添加时间 |
zuzhipingjia |
组织评价表 | 学生干部ID、评价标题、评价类型(正面/负面)、附件、内容、评价时间 |
dictionary |
字典表(基础数据) | 字段编码、字段名、编码索引、编码名称、父ID、备注 |
users |
管理员表 | 用户名、密码、角色 |
token |
登录令牌表 | 用户ID、用户名、表名、角色、token、过期时间 |
4.2 角色与权限
- 管理员:拥有全部后台管理权限,包括:
- 基础数据管理(部门、公告类型、信访举报类型、职位)
- 公告信息管理
- 留言管理(查看、回复、删除)
- 学生干部管理
- 信访举报管理
- 组织评价管理
- 学生干部:拥有部分权限,包括:
- 查看公告信息
- 发起留言(新增、查看回复)
- 查看自己的信访举报记录
- 查看自己的组织评价记录
4.3 核心功能模块
4.3.1 学生干部管理
管理员可对学生干部进行增删改查,包含以下量化指标:
- 考核(kaohe)
- 纪检(jijian)
- 信访(xinfang)
- 履历(lvli)
- 审计(shenji)
学生干部可登录系统查看自己的信息。
4.3.2 公告信息管理
管理员发布公告(公告类型、图片、内容),学生干部可查看公告列表和详情。
4.3.3 留言管理
学生干部可发起留言,管理员可回复留言。留言支持标题和内容。
4.3.4 信访举报管理
学生干部可提交信访举报(选择类型、上传附件、填写内容),管理员可查看并管理。
4.3.5 组织评价管理
管理员可对学生干部进行评价(正面/负面评价,可上传附件),学生干部可查看自己的评价。
4.3.6 基础数据管理
管理员维护各类字典数据:部门、职位、公告类型、信访举报类型等。
4.3.7 文件上传与下载
支持图片、附件(如RAR、DOC等)的上传和下载,文件保存在 static/upload/ 目录下。
4.3.8 统计图表(预留)
系统在 CommonController 和 CommonDao 中提供了饼状图、柱状图的统计接口(基于字典分组、日期分组等),前端可调用展示。
5. 部分代码
5.1 学生干部实体类(XueshengganbuEntity.java)
@TableName("xueshengganbu")
public class XueshengganbuEntity<T> implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
private String username;
private String password;
private String xueshengganbuName;
private String xueshengganbuPhone;
private String xueshengganbuIdNumber;
private String xueshengganbuPhoto;
private String xueshengganbuEmail;
private Integer sexTypes;
private Integer bumenTypes;
private Integer zhiweiTypes;
private Integer kaohe;
private Integer jijian;
private Integer xinfang;
private Integer lvli;
private Integer shenji;
private Date insertTime;
private Date createTime;
// getter/setter 省略
}
5.2 学生干部控制器(XueshengganbuController.java)- 登录接口
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
XueshengganbuEntity xueshengganbu = xueshengganbuService.selectOne(
new EntityWrapper<XueshengganbuEntity>().eq("username", username));
if(xueshengganbu==null || !xueshengganbu.getPassword().equals(password))
return R.error("账号或密码不正确");
String token = tokenService.generateToken(xueshengganbu.getId(), username, "xueshengganbu", "学生干部");
R r = R.ok();
r.put("token", token);
r.put("role","学生干部");
r.put("username", xueshengganbu.getXueshengganbuName());
r.put("tableName","xueshengganbu");
r.put("userId", xueshengganbu.getId());
return r;
}
5.3 通用字典转换方法(DictionaryServiceImpl.java)
public void dictionaryConvert(Object obj, HttpServletRequest request) {
// 获取所有以 "Types" 结尾的Integer字段
// 从ServletContext中获取字典映射 Map<String, Map<Integer, String>>
// 根据Types的值查找对应的index_name,并设置到对应的 "Value" 字段中
}
5.4 留言控制器(LiuyanController.java)- 分页查询
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
String role = String.valueOf(request.getSession().getAttribute("role"));
if("学生干部".equals(role))
params.put("xueshengganbuId", request.getSession().getAttribute("userId"));
PageUtils page = liuyanService.queryPage(params);
List<LiuyanView> list = (List<LiuyanView>) page.getList();
for(LiuyanView c: list){
dictionaryService.dictionaryConvert(c, request);
}
return R.ok().put("data", page);
}
5.5 MyBatis 映射文件 - 级联查询示例(LiuyanDao.xml)
<select id="selectListView" resultType="com.entity.view.LiuyanView">
SELECT
a.id, a.xueshengganbu_id, a.liuyan_name, a.liuyan_text, ...
xueshengganbu.xueshengganbu_name as xueshengganbuName,
xueshengganbu.xueshengganbu_phone as xueshengganbuPhone
FROM liuyan a
LEFT JOIN xueshengganbu xueshengganbu ON a.xueshengganbu_id = xueshengganbu.id
<where>
... 动态条件
</where>
order by a.${params.orderBy} desc
</select>
6. 部分截图


















7. 项目总结
学生干部管理系统实现了对学生干部信息的集中管理,以及与之相关的公告、留言、信访举报、组织评价等业务流程。技术选型上采用 Spring Boot + Mybatis-Plus 简化后端开发,前端使用 Vue + Element UI 构建现代化管理界面。系统特点包括:
- 角色权限分离:管理员与学生干部拥有不同功能权限,通过 Token 和拦截器实现接口鉴权。
- 字典数据动态维护:通过
dictionary表和监听器机制,在启动时将字典数据加载到 ServletContext,前端可通过统一的dictionaryConvert方法将数字编码转换为可读文本。 - 文件处理:支持多种格式文件的上传下载,便于附件管理。
- 统计扩展性:后端已预留分组求和、柱状图、饼状图等统计接口,便于后续数据可视化。
- 安全措施:密码存储为明文(示例项目,生产环境需加密),SQL 注入过滤(
SQLFilter类),Token 过期验证。
该系统的业务逻辑完整,代码结构清晰,可作为学校或组织内部学生干部管理的信息化基础平台,后续可扩展更多统计分析、评价指标计算等功能。
正文到此结束
- 本文标签: Java Spring Boot 毕业设计
- 本文链接: https://blog.xiaobias.com/article/43
- 版权声明: 本文由十五喵原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
