Java课程设计-教学论坛系统-团队博客
教学论坛系统 - 团队项目博客
一、项目简介
教学论坛系统是一个基于 Java Web 的交流平台,类似于百度贴吧。系统支持普通用户注册登录、发布帖子、回复帖子、点赞、搜索、上传下载附件,以及查看活跃度排名。管理员可以对帖子进行审核管理、用户管理和板块管理。
项目 Git 地址:https://gitee.com/java-forum-1127/forum
功能架构图
二、项目采用技术
| 技术分类 | 具体技术 |
|---|---|
| 开发语言 | Java (JDK 21) |
| 前端技术 | JSP、HTML、CSS、JavaScript、Ajax |
| 后端技术 | Servlet |
| 数据库 | MySQL 8.0 |
| 服务器 | Apache Tomcat 9 |
| 开发工具 | VS Code |
| 版本管理 | Git |
| 代码规范扫描 | 阿里巴巴 P3C-PMD 规则集 + PMD 插件 |
| 数据库连接 | JDBC + 连接池 |
三、功能需求分析
3.1 普通用户功能
| 序号 | 功能模块 | 功能描述 |
|---|---|---|
| 1 | 用户注册 | 用户填写用户名、密码进行注册 |
| 2 | 用户登录 | 用户输入账号密码登录系统 |
| 3 | 用户退出 | 用户退出登录状态 |
| 4 | 查看论坛首页 | 展示所有已审核通过的帖子 |
| 5 | 发布新帖 | 用户发布新帖子,默认进入待审核状态 |
| 6 | 查看帖子详情 | 点击帖子查看详细内容和回复 |
| 7 | 回复帖子 | 对已发布的帖子进行回复 |
| 8 | 点赞帖子 | 用户对感兴趣的帖子点赞 |
| 9 | 查看我的帖子 | 查看当前用户发布的所有帖子 |
| 10 | 查看我的回帖 | 查看当前用户发布的所有回复 |
| 11 | 搜索帖子 | 按标题关键词搜索帖子 |
| 12 | 活跃度排名 | 查看用户发帖/回帖活跃度排行榜 |
| 13 | 上传附件 | 发帖时上传附件 |
| 14 | 下载资源 | 下载帖子中的附件资源 |
3.2 管理员功能
| 序号 | 功能模块 | 功能描述 |
|---|---|---|
| 1 | 管理员登录 | 使用管理员账号登录后台 |
| 2 | 进入管理后台 | 跳转至管理后台页面 |
| 3 | 审核待审核帖子 | 查看所有待审核的帖子 |
| 4 | 通过帖子 | 审核通过,帖子显示在首页 |
| 5 | 拒绝帖子 | 审核拒绝,帖子不显示 |
| 6 | 删除帖子 | 直接删除违规帖子 |
| 7 | 管理用户 | 查看所有注册用户 |
| 8 | 禁用用户 | 禁止违规用户发言 |
| 9 | 恢复用户 | 解除用户禁用状态 |
| 10 | 管理板块 | 查看所有板块 |
| 11 | 添加板块 | 创建新的讨论板块 |
| 12 | 删除板块 | 删除不需要的板块 |
四、项目亮点
-
帖子审核机制:普通用户发布的帖子需要管理员审核通过后才能显示在首页,有效防止垃圾信息。
-
用户活跃度排名:系统根据用户的发帖数和回帖数实时计算活跃度得分,激励用户参与讨论。
-
附件上传下载:支持用户在发帖时上传附件,其他用户可以下载,方便资源共享。
-
权限控制:区分普通用户和管理员权限,管理员拥有审核、禁用等管理功能。
-
点赞互动:用户可以对优质帖子点赞,增强社区互动性。
五、系统主要功能截图
5.1 论坛首页
5.2 用户登录/注册

5.3 发布帖子

5.4 帖子详情与回复

5.5 管理员后台 - 帖子审核

5.6 用户管理

5.7 活跃度排名

六、团队成员负责模块
| 姓名 | 班级 | 角色 | 负责模块 | 主要任务 |
|---|---|---|---|---|
| 孙昱晓 | 计科拔尖班25-1 | 组长 | 回复模块,点赞模块,管理员模块 | 回复,自动更新,保证数据一致性,发布、分页列表、详情搜索 |
| 张嘉怡 | 计科拔尖班25-1 | 组员 | 前端页面模块 | 前端页面美化、后台页面美化 |
| 魏雨馨 | 计科拔尖班25-1 | 组员 | 用户,活跃度统计,资源上传下载 | 活跃度排名/附件上传下载 |
七、Git 提交记录截图
7.1 项目 Git 提交总览

7.2 各成员提交记录
(放每位成员的提交记录截图)
组长 - 孙昱晓 的提交记录:

组员 - 张嘉怡 的提交记录:

组员 - 魏雨馨 的提交记录:

八、静态代码扫描与规范整改
8.1 扫描工具
本项目使用 VS Code 作为开发环境,通过 阿里巴巴官方 P3C-PMD 规则集 结合 PMD 插件 进行静态代码扫描。P3C 是《阿里巴巴 Java 开发手册》的落地实现,涵盖命名风格、常量定义、OOP 规约、集合处理、并发处理、异常处理等代码规范。
8.2 扫描结果统计
| 问题等级 | 问题类型 | 数量 | 整改状态 |
|---|---|---|---|
| Blocker(阻断) | 类缺少 Javadoc 注释 | 3 | ✅ 已修复 |
| Critical(严重) | 魔法值未定义为常量 | 8 | ✅ 已修复 |
| Critical(严重) | 异常被吞没(未抛出或记录) | 2 | ✅ 已修复 |
| Major(一般) | 变量名未遵循驼峰命名 | 5 | ✅ 已修复 |
| Major(一般) | 未使用泛型 | 4 | ✅ 已修复 |
| Major(一般) | 方法缺少注释 | 6 | ✅ 已修复 |
8.3 典型问题整改示例


示例1:魔法值问题(Critical)
整改前:
if (status == 1) {
// 通过审核
}
整改后:
java
private static final int STATUS_APPROVED = 1;
if (status == STATUS_APPROVED) {
// 通过审核
}
示例2:类缺少注释(Blocker)
整改前:
java
public class JDBCUtil {
// ...
}
整改后:
java
/**
- 数据库连接工具类
- 负责获取 MySQL 数据库连接和释放资源
- @author XXX
*/
public class JDBCUtil {
// ...
}
示例3:异常被吞没(Critical)
整改前:
java
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
整改后:
java
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
logger.error("数据库连接失败", e);
throw new RuntimeException("数据库连接失败", e);
}
8.4 整改总结
本次共扫描出多处代码规范问题,已全部修复并重新验证。通过本次静态代码扫描,团队深入理解了阿里巴巴 Java 开发规范,代码可读性和可维护性显著提升。
九、课程设计感想
孙昱晓(组长)
本次课程设计我主要负责论坛系统的帖子模块、回复模块和管理员模块开发,并独立完成数据库设计。帖子模块实现了发布、分页列表、详情搜索及我的帖子功能;回复模块发表后自动更新帖子回复数,保证数据一致性;管理员模块基于角色控制权限,实现审核置顶删除、用户禁用启用、板块动态管理等后台功能。开发中最大难点是中文乱码问题,通过数据库连接指定UTF-8编码、统一页面编码、输出时转换三步解决,加深了对字符编码的理解。项目让我从零到一完成完整Java Web应用开发,对MVC分层架构、DAO模式有了深入认识,为今后学习工作打下坚实基础。
张嘉怡(组员)
我主要负责校园论坛系统的前端页面模块,包括论坛首页、登录注册页、发帖页、帖子详情页、个人中心页面以及管理后台页面的样式美化。通过修改 JSP 页面和 common.css 样式文件,统一了导航栏、按钮、表格和帖子列表等页面效果,使系统界面更加清晰美观。
魏雨馨(组员)
在本次课程设计中,我主要负责论坛系统的用户模块、资源模块和活跃度统计的开发,搭档完成了用户模块的注册登录、活跃度统计的周月榜排名以及资源上传下载功能,使系统功能更加完整。用户模块保障了账号安全,活跃度统计有效激励了用户参与,资源上传下载为论坛提供了资源共享能力。通过本次项目实践,我深入理解了MVC分层架构的设计思想,掌握了DAO模式下的数据库访问方法,学会了Servlet和JSP的协同工作方式。项目过程中遇到的问题和解决方案都让我积累了宝贵的开发经验,为今后的学习工作打下坚实基础。
十、使用技术说明
| 技术 | 是否使用 | 备注 |
|---|---|---|
| 数据库 | ✅ | MySQL 8.0 |
| GUI/WEB | ✅ | JSP + Servlet |
| DAO或MVC | ✅ | DAO 模式访问数据库 |
| 使用Git进行代码管理 | ✅ | Gitee 仓库 |
| 文件上传下载 | ✅ | Servlet 实现 |
| 静态代码扫描 | ✅ | 阿里巴巴 P3C-PMD 规则集 |
| 数据库连接池 | ✅ | Druid |
| JavaScript/Ajax | ✅ | 异步交互 |
| JSTL/EL | ✅ | JSP 表达式和标签 |
| 多线程 | ❌ | 未使用 |
| 网络Socket | ❌ | 未使用 |
附:AI使用声明
本项目中部分技术难点(如 Filter 权限拦截配置、UNION ALL 多表查询优化、文件上传编码处理等)参考了 AI 辅助工具提供的解决方案,所有代码均已手动调试、理解并整合到项目中。
博客撰写日期:2026年6月26

浙公网安备 33010602011771号