一、简介
项目地址: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"]
开始push以后会看到以下过程,之后需要等待一段时间即可成功提交: