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

一、简介

项目地址:https://github.com/CcQun/HomeworkSystem

本文主要介绍基于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层源文件夹了:

指定webapp文件夹

3. 项目文件结构

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

项目文件结构

四、功能介绍

1. 登录(老师、学生)

登录

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

学生主页

老师登录后的主页如下:

老师主页

2. 注册(老师、学生)

注册

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

学生注册成功

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

老师注册成功

3. 添加作业(老师)

老师主页

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

添加作业

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

添加作业成功

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

时间错误提示

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

老师主页

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

查看自己发布的作业

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

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

查看自己发布的作业

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

查看作业提交情况

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

查看作业提交情况

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

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

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

查看自己发布的作业

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

查看某一作业的统计信息

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

8. 查看作业(学生)

学生主页

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

查看作业

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

9. 提交作业(学生)

查看作业

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

提交作业

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

作业提交成功

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

再次查看作业

10. 编辑作业(学生)

查看作业

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

编辑作业

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

编辑成功

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

查看作业

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

查看我的提交

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

学生主页
老师主页

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

注销后的界面

五、部署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完成
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342