前言

本文将介绍一个基于 MySQL+Tomcat+Servlet+JSP 的简单作业管理系统

Git 仓库地址:HomeworkManagement

开源许可证采用 Apache-2.0


功能介绍

这个项目是为学生和教师设计的简易的作业的提交和管理平台,暂时不用考虑权限问题

对于教师,有以下功能:

  • 添加学生
  • 查看学生
  • 添加作业
  • 查看作业
  • 查看已提交的作业

对于学生,有以下功能:

  • 查看作业
  • 提交作业

系统演示

启动后首先进入首页,这里的首页是 index.jsp,你需要选择自己的角色


我是教师

选择 我是教师 将进入教师主页,系统会列出所有可以进行的操作

添加作业

选择 添加作业 将弹出新窗口进入作业的添加页面,教师可以在这里发布新的作业

其中所有选项必填,提交后会返回到服务器和数据库,并返回结果

添加学生

选择 添加学生 将弹出新窗口进入学生的添加页面,教师可以在这里添加新的学生

如果学号已经存在,提交后将返回错误提示

查看学生列表

选择 查看学生列表 将弹出新窗口进入学生的展示页面,这里展示了所有的学生,点击下方可以添加学生

查看作业列表

选择 查看作业列表 将弹出新窗口进入作业的展示页面,这里展示了所有发布的作业,点击下方可以添加作业

点击作业右边的查看可以查看对应作业所有的提交情况


我是学生

从主页进入学生主页

查看作业列表

这里可以查看所有发布的作业,点击相应的按钮即可提交

点击提交后会查询数据库判断输入的合法性,并返回结果


系统设计与源码分析

系统架构与设计


数据库

数据库一共有三张表,具体内容可以参考源码中的 hwm.sql 文件


实体类

所有的实体类位于 package com.hwm.model,每个实体类对应数据库的一张表,并添加了 getset 方法,这里不再赘述


数据库连接件

所有的实体类位于 package com.hwm.jdbc

这里为项目添加了 Maven 用于管理依赖,mysql-connector 也在其中,使用源码的时候需要在 Project Structure -> Artifacts -> Output Layout -> WEV-INF 中添加 lib目录并添加依赖

其中,JdbcConnection 维护了一个单例类,用于保存与数据库的连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.hwm.jdbc;

import java.sql.*;

public class JdbcConnection {
private static JdbcConnection jdbcConnection;
private Connection connection;

public static JdbcConnection getInstance() {
if (jdbcConnection == null) {
jdbcConnection = new JdbcConnection();
}
return jdbcConnection;
}

private JdbcConnection() {
final String url = "jdbc:mysql://localhost:3306/hwm?serverTimezone=GMT%2B8";
final String driverName = "com.mysql.cj.jdbc.Driver";
try {
Class.forName(driverName);
connection = DriverManager.getConnection(url, "root", "19990326");
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
}
}

public Connection getConnection() {
return connection;
}
}

HomeworkJdbc, StudentJdbc, SubmitHomeworkJdbc 分别对应了三张表在数据库中的操作方法


Servlet

Servlet 共分为两个部分,分别是 package com.hwm.servlet.studentpackage com.hwm.servlet.teacher ,分别用于处理教师和学生的请求

所有的类都继承自 HttpServlet ,并采用 @WebServlet 注解进行映射

具体的跳转实现请参考上文,源码就不再赘述


JSP

所有的 前端页面均采用 JSP ,位于 web 目录下,页面跳转请参考上文

index.jsp 为系统主页,return.jsp 为处理结果的返回页面

teacher 目录包含教师的主页与所有相关页面,student 目录包含学生的主页与所有相关页面