【原创唯一】基于微信小程序+uni-app+vue的社团招新管理系统小程序 课程设计/大作业/期末作业(源码+MySQL数据库+实验报告+PPT+远程部署)
系统摘要
随着高校社团数量不断增加,传统依赖纸质表格、微信群接龙等方式开展招新工作,已难以满足信息集中管理、报名过程可追溯、数据统计可视化等实际需求。本文设计并实现了一套面向校园场景的社团招新管理系统。系统采用 B/S 架构,后端基于 Spring Boot 3 与 MyBatis-Plus 构建 RESTful 服务,Web 管理端采用 Vue 3 与 Element Plus 实现,学生用户端同步提供 uni-app 微信小程序。系统划分管理员、社长、普通用户三类角色,覆盖社团信息维护、招新活动发布、在线报名、审核流转、数据统计等核心业务。数据库采用 MySQL 存储,通过外键约束保证社团、活动、报名等实体之间的引用完整性。实践表明,该系统结构清晰、功能完整,能够有效提升社团招新工作的规范性与效率。
技术栈: Spring Boot3+uni-app+Vue3+uViewPlus+Vite+MybatsiPlus+Echarts+微信小程序
数据库表:6张
🍅文末获取联系🍅
🍅文末获取联系🍅
作者介绍:专注于计算机课设、毕设辅导,本人开发,原创代码,一题一稿,绝不撞题,坚持原创,个人创作,非工作室,源码全网唯一。
✅ 原创唯一:个人原创开发,独立设计数据库与业务逻辑,拒绝工作室代码改造
✅ 技术主流:SpringBoot+Vue+uni-app前后端分离,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)