【原创唯一】基于SpringBoot+Vue的社团管理系统 课程设计/大作业/期末作业(源码+MySQL数据库+实验报告+PPT+远程部署)
系统摘要
随着高校社团数量不断增加,传统线下招新方式存在信息分散、报名统计困难、审核流程不规范等问题。本文设计并实现了一套基于 B/S 架构的校园社团招新系统,采用 Vue 3 与 Spring Boot 3 前后端分离技术,结合 MyBatis-Plus 与 MySQL 完成数据持久化。系统面向管理员、社长、学生用户三类角色,实现了社团信息管理、社长账号维护、招新活动发布、活动封面图上传、在线报名、报名审核及数据统计可视化等功能。用户端采用卡片式界面展示可报名活动,提升了信息浏览体验。系统通过 JWT 令牌实现身份认证,结合角色注解完成接口级权限控制,保证了业务数据安全。经功能测试与场景验证,系统运行稳定,各模块功能符合预期,能够有效支撑校园社团招新工作的数字化管理。
技术栈: Spring Boot 3 + MyBatis-Plus + MySQL + Vue 3 + Element Plus + ECharts
数据库表:6张
🍅文末获取联系🍅
🍅文末获取联系🍅
作者介绍:专注于计算机课设、毕设辅导,本人开发,原创代码,一题一稿,绝不撞题,坚持原创,个人创作,非工作室,源码全网唯一。
✅ 原创唯一:个人原创开发,独立设计数据库与业务逻辑,拒绝工作室代码改造
✅ 技术主流:SpringBoot + Vue 前后端分离,MySQL,Echarts数据统计,可本地运行
✅ 配套资料:源码 + 数据库 + 实验报告/论文 + 答辩 PPT+部署演示+远程调试+问题解答

技术范围:SpringBoot、Vue、数据可视化、小程序、HLMT、Nodejs、uni-app、MySQL数据库、ElementUi等设计与开发。
适用范围:软件工程、软件技术、数据库课程设计、计算机科学与技术、数据库系统原理、JavaWeb开发、JavaEE、Java、Web应用开发、动态网页设计的课程设计、课设、大作业、课程实验、期末作业
实验报告参考内容
实验报告可供大家参考使用
|
角色 |
功能模块 |
功能描述 |
|
管理员 |
社团管理 |
社团信息的增删改查、批量删除 |
|
管理员 |
社长管理 |
社长账号维护、绑定社团、启用/禁用 |
|
管理员 |
用户管理 |
学生用户信息维护、启用/禁用 |
|
管理员 |
活动管理 |
查看/编辑/删除全部社团活动 |
|
管理员 |
报名名单 |
查看全部报名、审核、取消、批量删除 |
|
管理员 |
数据统计 |
查看社团、社长、用户、活动、报名统计及图表 |
|
社长 |
活动管理 |
发布/编辑本社团招新活动、上传封面图 |
|
社长 |
报名名单 |
审核/取消本社团活动报名记录 |
|
社长 |
数据统计 |
查看与本社团相关的统计数据 |
|
用户 |
活动报名 |
卡片式浏览可报名活动、在线报名 |
|
用户 |
我的报名 |
查看/取消本人报名记录 |
|
用户 |
注册登录 |
自助注册、分角色登录、资料与密码修改 |
|
公共 |
资料修改 |
三角色均可修改个人信息与登录密码 |



用户端功能



社长员端功能


管理员端功能



数据库设计
系统数据库设计为:

admins(管理员表)结构
|
字段名 |
数据类型 |
说明 |
约束 |
|
id |
BIGINT |
主键 |
自增,非空 |
|
username |
VARCHAR(50) |
登录用户名 |
唯一,非空 |
|
password |
VARCHAR(100) |
登录密码 |
BCrypt 加密,非空 |
|
real_name |
VARCHAR(50) |
真实姓名 |
可空 |
|
phone |
VARCHAR(20) |
联系电话 |
可空 |
|
enabled |
TINYINT |
启用状态 |
默认 1 |
|
created_at |
DATETIME |
创建时间 |
可空 |
clubs(社团表)结构
|
字段名 |
数据类型 |
说明 |
约束 |
|
id |
BIGINT |
主键 |
自增,非空 |
|
name |
VARCHAR(100) |
社团名称 |
非空 |
|
club_code |
VARCHAR(30) |
社团编码 |
可空 |
|
leader |
VARCHAR(50) |
指导教师 |
可空 |
|
phone |
VARCHAR(20) |
联系电话 |
可空 |
|
description |
VARCHAR(500) |
社团简介 |
可空 |
|
created_at |
DATETIME |
创建时间 |
可空 |
|
updated_at |
DATETIME |
更新时间 |
可空 |
presidents(社长表)结构
|
字段名 |
数据类型 |
说明 |
约束 |
|
id |
BIGINT |
主键 |
自增,非空 |
|
username |
VARCHAR(50) |
登录用户名 |
唯一,可空 |
|
password |
VARCHAR(100) |
登录密码 |
BCrypt 加密 |
|
president_no |
VARCHAR(30) |
学号/工号 |
可空 |
|
name |
VARCHAR(50) |
姓名 |
非空 |
|
grade |
VARCHAR(50) |
年级 |
可空 |
|
major |
VARCHAR(100) |
专业 |
可空 |
|
club_id |
BIGINT |
所属社团 |
外键→clubs.id |
|
phone |
VARCHAR(20) |
联系电话 |
可空 |
|
introduction |
VARCHAR(500) |
个人简介 |
可空 |
|
enabled |
TINYINT |
启用状态 |
默认 1 |
|
created_at |
DATETIME |
创建时间 |
可空 |
users(用户表)结构
|
字段名 |
数据类型 |
说明 |
约束 |
|
id |
BIGINT |
主键 |
自增,非空 |
|
username |
VARCHAR(50) |
登录用户名 |
唯一,非空 |
|
password |
VARCHAR(100) |
登录密码 |
BCrypt 加密,非空 |
|
real_name |
VARCHAR(50) |
真实姓名 |
可空 |
|
gender |
VARCHAR(10) |
性别 |
MALE/FEMALE |
|
phone |
VARCHAR(20) |
联系电话 |
可空 |
|
student_no |
VARCHAR(30) |
学号 |
可空 |
|
enabled |
TINYINT |
启用状态 |
默认 1 |
|
created_at |
DATETIME |
创建时间 |
可空 |
activities(活动表)结构
|
字段名 |
数据类型 |
说明 |
约束 |
|
id |
BIGINT |
主键 |
自增,非空 |
|
club_id |
BIGINT |
所属社团 |
外键→clubs.id,非空 |
|
title |
VARCHAR(200) |
活动标题 |
非空 |
|
description |
VARCHAR(1000) |
招新公告 |
可空 |
|
image_url |
VARCHAR(500) |
封面图路径 |
可空 |
|
activity_date |
DATE |
活动日期 |
非空 |
|
location |
VARCHAR(200) |
活动地点 |
可空 |
|
max_quota |
INT |
名额上限 |
默认 50,非空 |
|
registered_count |
INT |
已报名人数 |
默认 0,非空 |
|
status |
VARCHAR(20) |
活动状态 |
OPEN/CLOSED |
|
remark |
VARCHAR(500) |
备注 |
可空 |
|
created_at |
DATETIME |
创建时间 |
可空 |
registrations(报名表)结构
|
字段名 |
数据类型 |
说明 |
约束 |
|
id |
BIGINT |
主键 |
自增,非空 |
|
registration_no |
VARCHAR(30) |
报名编号 |
唯一,非空 |
|
user_id |
BIGINT |
报名用户 |
外键→users.id,非空 |
|
activity_id |
BIGINT |
报名活动 |
外键→activities.id,非空 |
|
status |
VARCHAR(20) |
报名状态 |
REGISTERED/CANCELLED/APPROVED |
|
remark |
VARCHAR(500) |
备注 |
可空 |
|
created_at |
DATETIME |
报名时间 |
可空 |
主要数据表关系说明
|
主表 |
从表 |
关系 |
说明 |
|
clubs |
presidents |
1:N |
一个社团可有多个社长账号(通常一个) |
|
clubs |
activities |
1:N |
一个社团可发布多个招新活动 |
|
users |
registrations |
1:N |
一个用户可报名多个活动 |
|
activities |
registrations |
1:N |
一个活动对应多条报名记录 |
系统架构

Controller及Service层核心代码写法:
private final ClubService clubService;
// 分页查询社团列表
@GetMapping
@RequireRole({UserRole.ADMIN, UserRole.USER})
public ApiResponse<PageResult<Club>> list(
@RequestParam(required = false) String keyword,
@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "10") int size) {
return ApiResponse.ok(clubService.list(keyword, page, size));
}
// 获取社团下拉选项
@GetMapping("/options")
@RequireRole({UserRole.ADMIN, UserRole.PRESIDENT, UserRole.USER})
public ApiResponse<List<Club>> options() {
return ApiResponse.ok(clubService.options());
}
// 新增社团
@PostMapping
@RequireRole(UserRole.ADMIN)
public ApiResponse<Club> create(@Valid @RequestBody ClubDTO dto) {
return ApiResponse.ok("创建成功", clubService.create(dto));
}
// 修改社团
@PutMapping("/{id}")
@RequireRole(UserRole.ADMIN)
public ApiResponse<Club> update(@PathVariable Long id, @Valid @RequestBody ClubDTO dto) {
return ApiResponse.ok("更新成功", clubService.update(id, dto));
}
// 批量删除社团
@DeleteMapping("/batch")
@RequireRole(UserRole.ADMIN)
public ApiResponse<Void> batchDelete(@Valid @RequestBody IdsDTO dto) {
clubService.batchDelete(dto.getIds());
return ApiResponse.ok("删除成功", null);
}
博主本身从事软件开发、有丰富的编程能力和水平,累积给上千名同学进行辅导,论文纯手写查重低于10%,全都顺利通过答辩!
擅长:功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路等。
更多个人原创作品👇🏻
获取联系
项目功能完整,可在本地运行,并可远程调试,确保运行顺利!
查看👇🏻👇🏻获取联系方式👇🏻👇🏻
更多推荐

所有评论(0)