系统摘要

随着高校社团数量不断增加,传统依赖纸质表格、微信群接龙等方式开展招新工作,已难以满足信息集中管理、报名过程可追溯、数据统计可视化等实际需求。本文设计并实现了一套面向校园场景的社团招新管理系统。系统采用 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、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路等。

更多个人原创作品👇🏻

原创课程设计大全✅

原创毕业设计集合✅

获取联系

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

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

更多推荐