本次使用JAVA开发一个简单的作业管理系统。首先先用Mysql对数据库进行设计;然后创建JAVAEE WEB项目,通过JDBC连接数据库并编写Dao层对数据库进行操作,接下来编写servlet提供服务器接口,最后编写JSP提供网页端可视化管理。
要实现的功能有:
- 老师:登录、添加作业(题目、要求和截止时间),添加学生(学生学号)
- 学生:登录、根据老师添加的作业进行作业提交(作业内容)
一、数据库设计
首先在mysql设计相应的表
- 新建数据库homework
CREATE DATABASE homework;
use homework;
- 新建表teacher, student, homework, assign, submit
- teacher
teacher 表记录老师的基本信息,包括id,name和password,其中id为主键
CREATE TABLE teacher(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(10) NOT NULL UNIQUE,
password VARCHAR(20) NOT NULL
);
- student
student 表记录学生的基本信息,同样包括id(主键),name和password
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(10) NOT NULL UNIQUE,
password VARCHAR(20) NOT NULL
);
- homework
homework 表记录作业的基本信息,包括 作业的id,作业的标题title,和作业的要求requirement,
CREATE TABLE homework(
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(20) NOT NULL UNIQUE,
requirement VARCHAR(256)
);
- assign
assign 表用于连接homework和teacher,包括布置作业的老师tid,作业hid,以及作业的新建时间(通过mysql在添加记录时来自动生成)
CREATE TABLE assign(
tid INT,
hid INT,
create_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (tid, hid)
);
- submit
submit 表用于连接homework和student,包括学生的sid,作业的hid,提交状态status(待提交0、已提交1),提交内容content,提交时间submit_time
CREATE TABLE submit(
sid INT,
hid INT,
status INT NOT NULL,
content VARCHAR(512),
submit_time DATETIME,
PRIMARY KEY (sid, hid)
);
二、创建JAVAEE WEB项目
在web->WEB-INF目录下创建classes目录和lib目录(之后的jar包就直接拷进lib目录即可),
然后File->Project Structure
选择本项目下的lib目录
然后将其添加到Artifacts ->output root中(如果现在无法添加的话,可以先往lib里添加一个jar包)
三、通过JDBC连接数据库
-
添加jar包
直接将其添加到lib目录下即可 -
创建JDBC connnection,为了使用方便,我将获取connection封装成了一个静态方法,以后获取connection只需要
Connection connection = JDBCUtil.getConnection();就可以了
public class JDBCUtil {
//单实例Connection
private static Connection connection;
//JDBC驱动名
private static final String driverName = "com.mysql.cj.jdbc.Driver";
//连接数据库的url
private static final String url = "jdbc:mysql://127.0.0.1:3306/homework?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true";
//数据库用户名
private static final String user = "user";
//数据库用户的密码
private static final String password = "password";
//私有constructor,防止实例化
private JDBCUtil(){ }
public static Connection getConnection() {
if(connection == null) {
try {
Class.forName(driverName);
connection = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
try {
connection.close();
} catch (SQLException e1) {
e.printStackTrace();
}
}
}
return connection;
}
//测试获取connection是否成功
public static void main(String[] args) {
Connection connection = JDBCUtil.getConnection();
if (connection != null)
System.out.println("连接成功");
else
System.out.println("连接失败");
}
}
四、项目源码
由于代码过多,就不把每个文件都展示了,我把代码放到了Github上,大家可以去上面查看:
https://github.com/BaoSKY/JavaEE
五、项目运行截图
-
登录和注册
为了方便我把老师和学生的登录和注册都放到了一起
-
老师登录后进入创造作业的页面
-
要设计一份作业,需要填写标题title和要求requirement
-
作业设计完成之后,进入给学生分配作业的页面
添加学生框中,填写学生的编号,并通过";"进行分割
-
提交后提示操作成功
-
学生登陆后直接查看被分配到的作业
- 填写作业内容提交作业
- 操作完成后提示操作成功