校园社团管理平台
一个基于 Spring MVC + MyBatis 的校园社团管理系统,支持社团注册审核、成员管理、活动发布、经费管理等核心功能。
📋 项目简介
校园社团管理平台是一个面向高校的社团管理系统,旨在为学校社团提供统一的管理平台。系统支持学生注册社团、申请加入、发布活动、管理经费等功能,同时为管理员提供社团审核、成员管理等后台管理功能。
🛠️ 技术栈
后端技术
- Java 11 - 编程语言
- Spring MVC 5.3.30 - Web框架
- MyBatis 3.5.14 - 持久层框架
- MyBatis-Spring 2.0.7 - MyBatis与Spring集成
- Druid 1.2.18 - 数据库连接池
前端技术
- JSP - 视图层技术
- JSTL 1.2 - JSP标准标签库
- CSS/JavaScript - 前端样式和交互
数据库
- MySQL 8.0.33 - 关系型数据库
工具与依赖
- Maven - 项目构建工具
- Commons FileUpload 1.4 - 文件上传组件
- Commons IO 2.11.0 - IO工具类
服务器
- Tomcat - Web应用服务器(推荐 9.0+)
✨ 系统功能
1. 用户管理
- 用户注册/登录
- 用户信息管理
- 角色权限控制(普通用户、管理员)
2. 社团管理
- 社团注册:学生可以注册新社团,填写社团信息
- 社团审核:管理员审核社团注册申请(通过/拒绝)
- 社团列表:查看所有已审核通过的社团
- 社团详情:查看社团详细信息、成员列表、活动列表
- 社团编辑:社长可以编辑社团信息
- 我的社团:查看已加入的社团和创建的社团
3. 成员管理
- 申请加入:学生可以申请加入已审核通过的社团
- 申请审核:社长审核成员申请(支持单个/批量审核)
- 成员状态管理:待审核、已通过、已拒绝
4. 活动管理
- 活动发布:社团成员可以发布活动
- 活动列表:查看所有活动(支持按社团筛选)
- 活动详情:查看活动详细信息、参与人数
- 活动报名:学生可以报名参加活动
- 活动海报:支持上传活动海报图片
5. 经费管理
- 收支记录:记录社团的收入和支出
- 余额统计:自动计算社团当前余额
- 凭证管理:支持上传收支凭证图片
- 记录查询:查看历史收支记录
6. 消息通知
- 实时通知:系统自动发送通知
- 通知类型:
- 社团注册通知(通知管理员)
- 社团审核结果通知(通知社长)
- 成员申请通知(通知社长)
- 成员审核结果通知(通知申请人)
- 未读提醒:导航栏显示未读消息数量
- 标记已读:支持单条/全部标记已读
📁 项目结构
1.0/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/xync/
│ │ │ ├── config/ # 配置类
│ │ │ │ ├── AppConfig.java # Spring配置
│ │ │ │ └── WebConfig.java # Web配置
│ │ │ ├── controller/ # 控制器层
│ │ │ │ ├── ActivityController.java
│ │ │ │ ├── ClubController.java
│ │ │ │ ├── FinanceController.java
│ │ │ │ ├── HomeController.java
│ │ │ │ ├── MemberApplicationController.java
│ │ │ │ ├── NotificationController.java
│ │ │ │ ├── RegisterClub.java
│ │ │ │ └── UserController.java
│ │ │ ├── entity/ # 实体类
│ │ │ │ ├── Activity.java
│ │ │ │ ├── Club.java
│ │ │ │ ├── Finance.java
│ │ │ │ ├── Member.java
│ │ │ │ ├── Notification.java
│ │ │ │ └── User.java
│ │ │ ├── mapper/ # MyBatis Mapper接口
│ │ │ │ ├── ActivityMapper.java
│ │ │ │ ├── ActivityRegistrationMapper.java
│ │ │ │ ├── ClubMapper.java
│ │ │ │ ├── FinanceMapper.java
│ │ │ │ ├── MemberMapper.java
│ │ │ │ ├── NotificationMapper.java
│ │ │ │ └── UserMapper.java
│ │ │ ├── service/ # 业务逻辑层
│ │ │ │ ├── ActivityService.java
│ │ │ │ ├── ClubService.java
│ │ │ │ ├── FinanceService.java
│ │ │ │ ├── MemberService.java
│ │ │ │ ├── NotificationService.java
│ │ │ │ └── UserService.java
│ │ │ └── util/ # 工具类
│ │ │ └── FileUploadUtil.java
│ │ ├── resources/
│ │ │ ├── database.properties # 数据库配置
│ │ │ ├── Spring-servlet.xml # Spring MVC配置
│ │ │ └── ClubMapper.xml # MyBatis映射文件
│ │ └── webapp/
│ │ ├── css/ # 样式文件
│ │ ├── uploads/ # 上传文件目录
│ │ │ ├── activities/ # 活动海报
│ │ │ └── finance/ # 经费凭证
│ │ └── WEB-INF/
│ │ ├── web.xml # Web应用配置
│ │ └── views/ # JSP视图文件
│ │ ├── admin/ # 管理员页面
│ │ ├── activity-*.jsp
│ │ ├── club-*.jsp
│ │ ├── finance-*.jsp
│ │ ├── member-*.jsp
│ │ ├── notification.jsp
│ │ └── user-*.jsp
│ └── test/ # 测试代码
├── campus_club.sql # 数据库初始化脚本
└── pom.xml # Maven配置文件
🔧 环境要求
- JDK: 11 或更高版本
- Maven: 3.6+
- MySQL: 8.0+
- Tomcat: 9.0+ 或更高版本
- IDE: IntelliJ IDEA / Eclipse(推荐)
🚀 快速开始
1. 克隆项目
git clone <repository-url>
cd course_ds/1.0
2. 数据库配置
- 创建数据库:
CREATE DATABASE campus_club CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
- 导入数据库脚本:
mysql -u root -p campus_club < campus_club.sql
- 修改数据库配置:
编辑
src/main/resources/database.properties:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3307/campus_club?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=root
注意:请根据你的MySQL配置修改端口号、用户名和密码。
3. 构建项目
mvn clean package
4. 部署运行
- 将生成的
target/1.0-1.0-SNAPSHOT.war部署到 Tomcat - 启动 Tomcat 服务器
- 访问:
http://localhost:8080/1.0-1.0-SNAPSHOT/
5. 默认账号
数据库初始化后,可以使用以下测试账号:
- 普通用户:根据数据库脚本中的用户数据
- 管理员:需要手动在数据库中设置
role='ADMIN'
📖 功能说明
权限说明
| 功能 | 普通用户 | 社长 | 管理员 |
|---|---|---|---|
| 注册社团 | ✅ | ✅ | ✅ |
| 申请加入社团 | ✅ | ✅ | ✅ |
| 审核成员申请 | ❌ | ✅ | ✅ |
| 发布活动 | ✅(需是成员) | ✅ | ✅ |
| 报名活动 | ✅ | ✅ | ✅ |
| 管理经费 | ❌ | ✅ | ✅ |
| 审核社团 | ❌ | ❌ | ✅ |
| 编辑社团信息 | ❌ | ✅ | ✅ |
数据状态说明
-
社团状态:
PENDING- 待审核APPROVED- 已通过REJECTED- 已拒绝
-
成员状态:
PENDING- 待审核ACTIVE- 已通过REJECTED- 已拒绝
-
活动状态:
OPEN- 开放报名CLOSED- 已关闭
文件上传说明
- 活动海报:上传到
uploads/activities/目录 - 经费凭证:上传到
uploads/finance/目录 - 支持格式:jpg, png, gif 等图片格式
📝 主要路由
首页: /
社团列表: /clubs
注册社团: /clubs/register
我的社团: /clubs/my
社团详情: /clubs/{id}
活动广场: /activities
活动详情: /activities/{id}
消息通知: /notifications
[管理员] 社团审核: /clubs/admin/pending
[管理员] 社团管理: /clubs/admin/all
🔍 核心特性
-
基于注解的Spring MVC配置:使用
@Configuration和@ComponentScan进行配置 -
MyBatis集成:支持XML和注解两种方式
-
事务管理:使用Spring声明式事务管理
-
文件上传:支持图片上传和存储
-
权限控制:基于角色的访问控制
-
消息通知系统:实时通知用户重要操作