一、简介
项目地址:https://github.com/CcQun/HomeworkSystem
本文主要介绍基于Spring Boot和JSP的作业管理系统的架构和功能介绍,在该系统中前端使用JSP,后端使用Spring Boot,数据库操作使用JPA并且数据库使用MySQL。该系统分为老师端和学生端,同时支持最基本的老师布置作业与学生提交作业等基本功能以及一些拓展功能。主要包括的功能如下:
老师端:
- 注册账号
- 作为老师登录
- 添加作业
- 查看自己布置的作业
- 查看某一作业的提交情况
- 对某一同学的作业进行打分和评价
- 查看作业统计信息(包括该作业的平均分、最高分、提交人数等)
- 注销登录
学生端:
- 注册账号
- 作为学生登录
- 查看作业(包括进行中、未开始和已截止的作业都可查看)
- 提交作业
- 编辑已提交的作业
- 查看作业情况(包括自己的得分以及老师的评价)
- 注销登录
二、数据库设计
本系统的数据模型主要包括四张表即Student、Teacher、Homework和Submit表。其中Submit表表示学生和作业之间的多对多关系,即学生提交的作业。具体的数据模型的ER图如下所示:
为了方便调试,我为数据库添加了若干条初始化的数据,可以直接使用项目中的homework.sql脚本初始化一个带有数据的数据库。
三、后端架构
1. 配置文件
后端服务器使用Spring Boot,其配置如下:
# 在执行sql语句是将其打印出来
spring.jpa.show-sql=true
# 以下部分为数据库设置
spring.jpa.database=mysql
spring.datasource.url=jdbc:mysql://localhost:3306/homework?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=Cui5039795891
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
2. 添加webapp文件夹
如果没有webapp文件夹的话就要先新建一个webapp文件夹,然后在webapp文件夹下新建WEB-INF文件夹,然后在WEB-INF文件夹下新建web.xml文件,最后按下图操作即可标定好项目的View层源文件夹了:
3. 项目文件结构
在下图中可以看到项目的一些文件夹结构,controller文件夹放置各个子模块的controller代码文件,core文件夹放置一些工具类,db文件夹放置数据库相关的mapper、model和service等文件夹。项目的文件结构图如下:
四、功能介绍
1. 登录(老师、学生)
进入登录界面后可以选择作为老师或学生进行登录,如果没有账号可以去注册一个。学生登录后的主页如下:
老师登录后的主页如下:
2. 注册(老师、学生)
进入注册界面后可以选择注册学生账号或老师账号。注册学生账号成功的界面如下:
注册老师账号成功的界面如下:
3. 添加作业(老师)
老师选择添加作业后进入添加作业界面:
老师填写作业标题和内容并选择作业起止时间后可以提交保存作业。添加作业成功的界面如下:
如果作业设置的起止时间中开始时间迟于截止时间则会出现以下提醒:
4. 查看自己发布的作业(老师)
老师选择查看自己发布的作业后进入查看作业界面:
在该界面中会以表格的形式来罗列自己发布的作业的一些信息。
5. 查看作业提交情况(老师)
在老师查看自己发布的作业时如果选择查看某一作业的提交情况则会进入对应作业的提交情况页面,在该页面可以看到某些同学提交的作业内容以及自己对其作业的评分和评价:
6. 为学生作业打分和评价(老师)
在查看作业时可以通过填写成绩栏和评价栏然后点击保存成绩按钮来为某一同学的作业进行评分和评价,其中成绩一栏的输入框被限制只能够输入数字。
7. 查看某一作业的统计信息(老师)
在老师查看自己发布的作业时如果选择查看某一作业的统计信息则会进入对应作业的统计信息页面:
在该页面可以看到一些具体的作业统计信息。
8. 查看作业(学生)
如果学生选择查看作业则会进入查看作业页面:
在查看作业时可以看到作业的当前状态(未开始、进行中、已结束)也可以看到自己是否已经提交作业,在提交了作业以后如果作业仍处于进行中的状态则可以编辑修改作业,同时也可以查看自己提交的作业。
9. 提交作业(学生)
选择提交作业后会进入提交作业页面:
可以填写作业的标题和内容来提交作业,提交成功会收到以下提示:
再次查看作业可以看到作业的提交状态已经改变:
10. 编辑作业(学生)
在查看作业页面上如果某一作业已经提交则可以选择编辑作业来修改已经提交的作业,点击编辑作业按钮以后会进入编辑作业页面:
在该页面上可以看到以往提交的作业的内容,修改以后可以点击提交来保存修改的作业,然后会收到以下提示:
11. 查看我的提交(学生)
在查看作业页面上如果某一作业已经提交则可以选择查看我的作业来查看自己的作业情况,如果老师已经打分和评价则也可以同时看到:
12. 注销登录(老师、学生)
在老师和学生的主页均有注销登录按钮,点击后会返回登录界面:
五、部署Docker镜像
- 首先在Maven工具栏中选择执行clean:
clean执行完以后target目录会被删除。
- 然后在Maven工具栏中选择执行package:
执行完package以后会生成target目录:
- 将target目录下的homework-0.0.1-SNAPSHOT.jar以及编写的Dockerfile文件夹上传Linux云服务器:
Dockerfile文件内容如下:
FROM java:8
ADD homework-0.0.1-SNAPSHOT.jar test.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/test.jar"]
- 在服务器上将jar包制作成镜像:
使用docker images
命令可以看到镜像已经存在:
- 提交镜像至阿里云:
开始push以后会看到以下过程,之后需要等待一段时间即可成功提交: