
项目概述
开发一个基于Java和MySQL的校园社团活动管理系统,涵盖社团管理、活动发布、成员报名、数据统计等功能。适合零基础学习Java Web开发与数据库交互的实战项目。
技术栈选择
- 后端:Java 8+、Servlet/JSP(或Spring Boot简化开发)
- 数据库:MySQL 8.0
- 前端:HTML/CSS/JavaScript + Bootstrap(快速构建UI)
- 工具:Maven(依赖管理)、Git(版本控制)
数据库设计
核心表结构
-- 社团表
CREATE TABLE `club` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`description` TEXT,
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 活动表
CREATE TABLE `activity` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`club_id` INT NOT NULL,
`title` VARCHAR(100) NOT NULL,
`content` TEXT,
`start_time` DATETIME,
`end_time` DATETIME,
FOREIGN KEY (`club_id`) REFERENCES `club`(`id`)
);
-- 用户表(成员)
CREATE TABLE `user` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`student_id` VARCHAR(20) UNIQUE NOT NULL,
`name` VARCHAR(50) NOT NULL,
`password` VARCHAR(100) NOT NULL
);
-- 报名记录表
CREATE TABLE `registration` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`user_id` INT NOT NULL,
`activity_id` INT NOT NULL,
`register_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`),
FOREIGN KEY (`activity_id`) REFERENCES `activity`(`id`)
);
核心功能实现
数据库连接配置
使用JDBC连接MySQL,建议封装为工具类:
public class DBUtil {
private static final String URL = "jdbc:mysql://localhost:3306/club_db";
private static final String USER = "root";
private static final String PASSWORD = "123456";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
活动发布功能
// ActivityDao.java
public class ActivityDao {
public boolean addActivity(Activity activity) {
String sql = "INSERT INTO activity (club_id, title, content, start_time, end_time) VALUES (?, ?, ?, ?, ?)";
try (Connection conn = DBUtil.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setInt(1, activity.getClubId());
stmt.setString(2, activity.getTitle());
stmt.setString(3, activity.getContent());
stmt.setTimestamp(4, new Timestamp(activity.getStartTime().getTime()));
stmt.setTimestamp(5, new Timestamp(activity.getEndTime().getTime()));
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
}
用户报名功能
// RegistrationServlet.java
@WebServlet("/register")
public class RegistrationServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
int userId = Integer.parseInt(request.getParameter("user_id"));
int activityId = Integer.parseInt(request.getParameter("activity_id"));
RegistrationDao dao = new RegistrationDao();
if (dao.addRegistration(userId, activityId)) {
response.sendRedirect("success.jsp");
} else {
response.sendRedirect("error.jsp");
}
}
}
前端页面示例
活动列表页(JSP)
<%@ page import="java.util.List" %>
<%@ page import="com.example.model.Activity" %>
<% List<Activity> activities = (List<Activity>) request.getAttribute("activities"); %>
<div class="container">
<h3>近期活动</h3>
<table class="table">
<c:forEach items="${activities}" var="activity">
<tr>
<td>${activity.title}</td>
<td><fmt:formatDate value="${activity.startTime}" pattern="yyyy-MM-dd HH:mm"/></td>
<td><a href="/register?activity_id=${activity.id}" class="btn btn-primary">报名</a></td>
</tr>
</c:forEach>
</table>
</div>
部署与测试
- 环境准备:安装JDK 8+、MySQL 8.0、Tomcat 9+
- 数据库初始化:执行SQL脚本创建表结构
- 项目打包:使用Maven命令
mvn clean package生成WAR文件 - 部署运行:将WAR文件放入Tomcat的
webapps目录 - 访问测试:通过浏览器访问
http://localhost:8080/项目名
扩展建议
- 增加权限控制(管理员/普通用户角色)
- 实现活动签到二维码功能
- 添加活动评价与反馈模块
- 使用Redis缓存热门活动数据
1289

被折叠的 条评论
为什么被折叠?



