系统摘要

随着高校社团数量不断增加,传统线下招新方式存在信息分散、报名统计困难、审核流程不规范等问题。本文设计并实现了一套基于 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、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路等。

更多个人原创作品👇🏻

原创课程设计大全✅

原创毕业设计集合✅

获取联系

项目功能完整,可在本地运行,并可远程调试,确保运行顺利!

查看👇🏻👇🏻获取联系方式👇🏻👇🏻

更多推荐