基于Spring Boot和JSP的作业管理系统

一、简介

  项目地址:项目Github地址
  本文主要介绍基于Spring Boot和JSP的作业管理系统的架构和功能介绍,在该系统中前端使用JSP,后端使用Spring Boot,数据库操作使用JPA并且数据库使用MySQL。该系统分为老师端和学生端,同时支持最基本的老师布置作业与学生提交作业等基本功能以及一些拓展功能。主要包括的功能如下:
  老师端:
  1. 注册账号
  2. 作为老师登录
  3. 添加作业
  4. 查看自己布置的作业
  5. 查看某一作业的提交情况
  6. 对某一同学的作业进行打分评价
  7. 查看作业统计信息(包括该作业的平均分最高分提交人数等)
  8. 注销登录
  学生端:
  1. 注册账号
  2. 作为学生登录
  3. 查看作业(包括进行中未开始已截止的作业都可查看)
  4. 提交作业
  5. 编辑已提交的作业
  6. 查看作业情况(包括自己的得分以及老师的评价)
  7. 注销登录

二、数据库设计

  本系统的数据模型主要包括四张表即Student、Teacher、Homework和Submit表。其中Submit表表示学生和作业之间的多对多关系,即学生提交的作业。具体的数据模型的ER图如下所示:

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层源文件夹了:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ra6XwWT8-1592480294591)(https://upload-images.jianshu.io/upload_images/22097296-c53e68b7acb87b13.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

3. 项目文件结构

  在下图中可以看到项目的一些文件夹结构,controller文件夹放置各个子模块的controller代码文件,core文件夹放置一些工具类,db文件夹放置数据库相关的mapper、model和service等文件夹。项目的文件结构图如下:

项目文件结构

四、功能介绍

1. 登录(老师、学生)

登录

  进入登录界面后可以选择作为老师或学生进行登录,如果没有账号可以去注册一个。学生登录后的主页如下:

学生主页

  老师登录后的主页如下:

老师主页

2. 注册(老师、学生)

注册

  进入注册界面后可以选择注册学生账号或老师账号。注册学生账号成功的界面如下:

学生注册成功

  注册老师账号成功的界面如下:

老师注册成功

3. 添加作业(老师)

老师主页

  老师选择添加作业后进入添加作业界面:

添加作业

  老师填写作业标题和内容并选择作业起止时间后可以提交保存作业。添加作业成功的界面如下:

添加作业成功

  如果作业设置的起止时间中开始时间迟于截止时间则会出现以下提醒:

时间错误提示

4. 查看自己发布的作业(老师)

老师主页

  老师选择查看自己发布的作业后进入查看作业界面:

查看自己发布的作业

  在该界面中会以表格的形式来罗列自己发布的作业的一些信息。

5. 查看作业提交情况(老师)

查看自己发布的作业

  在老师查看自己发布的作业时如果选择查看某一作业的提交情况则会进入对应作业的提交情况页面,在该页面可以看到某些同学提交的作业内容以及自己对其作业的评分和评价:

查看作业提交情况

6. 为学生作业打分和评价(老师)

查看作业提交情况

  在查看作业时可以通过填写成绩栏和评价栏然后点击保存成绩按钮来为某一同学的作业进行评分和评价,其中成绩一栏的输入框被限制只能够输入数字。

修改某一同学的评分和评价后

7. 查看某一作业的统计信息(老师)

查看自己发布的作业

  在老师查看自己发布的作业时如果选择查看某一作业的统计信息则会进入对应作业的统计信息页面:

查看某一作业的统计信息

  在该页面可以看到一些具体的作业统计信息。

8. 查看作业(学生)

学生主页

  如果学生选择查看作业则会进入查看作业页面:

查看作业

  在查看作业时可以看到作业的当前状态(未开始、进行中、已结束)也可以看到自己是否已经提交作业,在提交了作业以后如果作业仍处于进行中的状态则可以编辑修改作业,同时也可以查看自己提交的作业。

9. 提交作业(学生)

查看作业

  选择提交作业后会进入提交作业页面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-knvwIMe6-1592480294623)(https://upload-images.jianshu.io/upload_images/22097296-642c83b85a5b6a28.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

  可以填写作业的标题和内容来提交作业,提交成功会收到以下提示:

作业提交成功

  再次查看作业可以看到作业的提交状态已经改变:

再次查看作业

10. 编辑作业(学生)

查看作业

  在查看作业页面上如果某一作业已经提交则可以选择编辑作业来修改已经提交的作业,点击编辑作业按钮以后会进入编辑作业页面:

编辑作业

  在该页面上可以看到以往提交的作业的内容,修改以后可以点击提交来保存修改的作业,然后会收到以下提示:

编辑成功

11. 查看我的提交(学生)

查看作业

  在查看作业页面上如果某一作业已经提交则可以选择查看我的作业来查看自己的作业情况,如果老师已经打分和评价则也可以同时看到:

查看我的提交

12. 注销登录(老师、学生)

学生主页

老师主页

  在老师和学生的主页均有注销登录按钮,点击后会返回登录界面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bZ0YZPW2-1592480294634)(https://upload-images.jianshu.io/upload_images/22097296-f57e56e5d2c37794.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

五、部署Docker镜像

  1. 首先在Maven工具栏中选择执行clean:

clean

clean结果

clean执行完以后target目录会被删除。

  1. 然后在Maven工具栏中选择执行package:

package

package结果

执行完package以后会生成target目录:

target目录

  1. 将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"]
  1. 在服务器上将jar包制作成镜像:

制作镜像

使用docker images命令可以看到镜像已经存在:

查看镜像

  1. 提交镜像至阿里云:

登录

tag

push至阿里云

开始push以后会看到以下过程,之后需要等待一段时间即可成功提交:

等待push完成

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值