# 考试系统 **Repository Path**: wu-yanzu-in-linkou/FreeMarkertest ## Basic Information - **Project Name**: 考试系统 - **Description**: SpringBoot+Mybatis+FreeMarkert的简单登录注册(其中注册中包含上传图片) - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2020-12-11 - **Last Updated**: 2022-06-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 系统功能模块图 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/010136_47406f77_5257965.png "屏幕截图.png") E-R图 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/010947_803964bd_5257965.png "屏幕截图.png") 6 英语考试分班系统的详细设计与实现 6.1 注册模块 注册模块可以新增用户,用户输入的账号和密码不能为空,若为空则会显示提示信息“不能为空”;输入的账号在提交后会根据数据库的内容判断是否已经存在该账号,若已存在该账户会返回“学号已存在”的提示信息;若输入的教师内推码不为空且和后台设定好的数字一致,则将会注册成老师的账号,否则只能注册为学生的账号;用户注册成功后会跳到登录页面且会提示“注册成功”的信息;注册成功后,用户的默认头像是“123.jpeg”,默认座右铭是“我还没想好写什么”,默认用户名是“”,如果需要修改可以登录以后对其一一修改,如图6.1所示。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011349_a637c25b_5257965.png "屏幕截图.png") 图 6.1 注册模块图 6.2 登录模块 注册成功的用户可以通过登录模块进行登录,后台会根据用户输入的用户账号和密码来在数据库里进行查找是否存在该用户,若不存在则会提示“账号或密码错误”,若存在则将该用户的信息放到session的属性上;若账号为教师账号则会直接跳到教师页面,若账号为学生账号则会先判断学生是否已经考过试了再跳到学生页面,如果还没考过试学生页面则显示所有的试卷,如果正在考试则学生页面只显示学生已经选择的试卷,如果已经考完试了则学生页面只会显示“您已经做过试卷了,请耐心等待老师批改试卷。”的提示信息。如图6.2所示。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011410_d8624fec_5257965.png "屏幕截图.png") 图 6.2 登录模块图 6.3 学生模块 学生模块是学生账号登录之后进入到的页面,学生模块有4个功能:修改个人信息、选择试卷进行考试、查看成绩和分班情况、退出登录。 (1)修改个人信息:学生可以修改自己的姓名、座右铭、密码信息和重新上传头像。修改个人信息的时候姓名和密码不能为空,若为空则会弹出“姓名和密码不能为空”提示信息;如果上传了新的照片就用新的照片作头像,如果没有重新上传照片就会用以前的提交。如图6.3.1所示。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011423_e2548ab1_5257965.png "屏幕截图.png") 图 6.3.1 学生模块的修改个人信息图 (2)选择试卷进行考试:系统会根据学生是否考过试来显示试卷的张数,若学生还没考过试则会显示所有的试卷让学生进行选择,若学生是因为考试时没有交卷但是不小心退出页面的,则只会显示学生已经选择了的那一张试卷,若学生已经考完试并交卷了则只会显示“您已经做过试卷了,请耐心等待老师批改试卷。”的提示信息。学生可以选择试卷后点击“开始考试”来进入试卷,系统后台会根据学生选择的试卷来找出该试卷的所有题目并且将他们显示出来。当点击“开始考试”后,系统会把当前的时间设置为该学生的考试开始时间。如图6.3.2所示。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011447_7b1bc247_5257965.png "屏幕截图.png") 图 6.3.2 学生模块的选择试卷进行考试图 (3)查看成绩和分班情况:待学生考完试交完卷,老师批改了该学生的试卷后,学生就可以看到自己所考的分数了。只有全班学生都考完试且老师批改完了全班学生的试卷,老师才能进行分班,学生才能看到自己被分到哪个班级。如图6.3.3所示。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011504_d665a289_5257965.png "屏幕截图.png") 图 6.3.3 学生模块的查看成绩和分班情况图 (4)退出登录:退出登录是将该用户的session会话注销掉,防止别人通过自己的电脑不需要账号密码也能直接登录。退出按钮旁边还有该网页的目录,当你点击某一项,就会跳到具体的位置,用起来十分方便快捷。如图6.3.4所示。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011519_f68078c0_5257965.png "屏幕截图.png") 图 6.3.4 学生模块的退出登录图 6.4 考试模块 考试模块是学生选择试卷后进入的页面。考试页面会把该学生点击的试卷里的所有试题显示出来,包括题目的分数、题目的问题还有题目的选项。学生可以在题目下方的输入框中进行作答。试卷右边有试题的目录,点击一个题目就会跳到该题目对应在试卷上的位置,十分方便。试卷的下方显示考试的时间和一个交卷按钮,考试时间倒计时是根据当前时间减去学生开始考试的的时间,当这个时间等于两小时零五分时考试结束。当时间倒计时结束时系统会自动交卷,学生也可以点击交卷按钮提前交卷。交卷后学生将不能继续作答并且跳回学生的主页面。如图6.4所示。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011534_0ddc3473_5257965.png "屏幕截图.png") 图 6.4 考试模块图 6.5 教师模块 教师模块是教师用户登录后进入到的页面,老师模块包含7个功能:个人信息的修改、学生管理、题目管理、试卷管理、批改试卷、分班、导出学生信息。 (1)个人信息的修改:教师可以修改自己的姓名、座右铭、密码信息和重新上传头像。修改个人信息的时候姓名和密码不能为空,若为空则会弹出“姓名和密码不能为空”提示信息;如果上传了新的照片就用新的照片作头像,如果没有重新上传照片就会用以前的提交。如图6.5.1所示。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011544_12bd4c30_5257965.png "屏幕截图.png") 图 6.5.1 教师模块的个人信息的修改图 (2)学生管理:学生管理页面分页地显示出学生的学号、头像、姓名、座右铭、分数、评分情况、分班情况和可执行的操作按钮,如图6.5.2.1所示。教师可以通过对学生的学号、姓名、座右铭、分数和班级进行模糊查询;可以点击“添加”按钮通过divDialog的弹窗功能为没有注册的学生添加他们的学生信息,如图6.5.2.3所示;可以勾选在学生信息列表学号左侧的复选框后,点击“添加”右边的“删除”按钮通过Ajax对多条学生信息进行删除操作,该删除操作不仅会把学生的个人信息删除掉,还会把该学生做过的试卷信息和答案同时删除掉;可以点击学生信息列表的某个学生列表中的“修改”按钮,它可以通过弹窗功能为学生个人信息写错的同学进行修改;可以点击“修改”右边的“删除”按钮,只删除单条对应的学生信息,同时也会将该学生做过的试卷信息和答案一并删除掉。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011552_77b2ada6_5257965.png "屏幕截图.png") 图 6.5.2.1 教师模块的学生管理图 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011606_b34a9116_5257965.png "屏幕截图.png") 图 6.5.2.3 教师模块的学生管理中的添加用户功能图 (3)题目管理:题目管理页面分页地显示出题目的ID、题型、问题、选项、答案、分数和可执行的操作按钮,如图6.5.3.1所示。教师可以通过对题目的ID、题型、问题、选项和分数进行模糊查询;可以点击“添加”按钮通过divDialog的弹窗功能添加新的题目,题目的问题和选项可以为空,因为比如听力题只有选项没有题目,而作文和翻译题只有题目没有选项,刚好完美地解决了这个问题;可以勾选在题目信息列表ID左侧的复选框后,点击“添加”右边的“删除”按钮通过Ajax对多条问题信息进行删除操作,该删除操作不仅会把该题的信息删除掉,还会把绑定有该题目的试卷中的这道题同时删除掉;可以点击题目信息列表的某个题目列表中的“修改”按钮,它可以通过弹窗功能对该题的错误信息进行修改;可以点击“修改”右边的“删除”按钮,只删除单条对应的问题信息,同时也会将绑定有该题目的试卷中的这一道题一并删除掉。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011617_ee6e9dab_5257965.png "屏幕截图.png") 图 6.5.3.1 教师模块的题目管理图 (4)试卷管理:试卷管理页面分页地显示出试卷的ID、名称、备注和可执行的操作按钮,如图6.5.4.1所示。教师可以通过对试卷的ID、名称和备注进行模糊查询;可以点击“添加”按钮通过divDialog的弹窗功能添加新的试卷;可以勾选在试卷信息列表ID左侧的复选框后,点击“添加”右边的“删除”按钮通过Ajax对多条试卷信息进行删除操作,该删除操作仅仅只是删除试卷库里的试卷,不会删除该试卷之前与题目的连接,因为这样不小心把试卷删了,老师还是可以批改学生的试卷,老师也可以通过阅做过这张试卷的同学的卷来恢复这张试卷的考试题;可以点击试卷信息列表的某个试卷列表中的“修改”按钮,它可以通过弹窗功能对该卷的错误信息进行修改;可以点击“修改”右边的“删除”按钮,只删除单条对应的问题信息;点击“查看该试卷所拥有的题目”按钮,系统会根据该试卷的id返回该试卷中所有被绑定的题目,如图6.5.4.2所示;勾选ID左侧的复选框并点击“解绑题目”即可解绑该试卷中的多条题目;点击“绑定题目”按钮,系统会根据该试卷的id返回该试卷所有未被绑定的题目,后点击ID左侧的复选框并点击“绑定”按钮即可将题目绑定如该试卷,如图6.5.4.3所示; ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011628_a401a167_5257965.png "屏幕截图.png") 图 6.5.4.1 教师模块的试卷管理图 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011639_a95cac95_5257965.png "屏幕截图.png") 图 6.5.4.2 教师模块的试卷管理中的查看该试卷所拥有的题目功能图 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011646_cf31593a_5257965.png "屏幕截图.png") 图 6.5.4.3 教师模块的试卷管理中的绑定题目功能图 (5)批改试卷:交完卷的学生会在老师页面里对应的学生信息列表的打分情况列下出现一个绿色的按钮——“阅卷”,如图6.5.5.1所示。点击“阅卷”按钮后,将会进入到老师批改答案的页面,如图6.5.5.2所示。该页面功能类似于学生的考试页面,只是显示的信息从题目变成了正确答案和学生所填写的答案,老师可以通过学生答案和正确答案的比较在页面下方对学生这次的考试进行打分,打完分之后学生在自己的个人信息页面就可以查看分数了,老师也可以在学生管理中的学生信息列表中看到该学生的成绩了,并且评分情况列下的绿色按钮“阅卷”变成了红的的“已评分”按钮,如图6.5.5.3所示。当然,点击“已评分”按钮还是可以继续进入到批改试卷的页面,可以对该学生进行重新批改分数,防止老师将学生的分数改错了。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011653_7070c242_5257965.png "屏幕截图.png") 图 6.5.5.1 教师模块的阅卷功能图 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011701_651f555f_5257965.png "屏幕截图.png") 图 6.5.5.2 教师模块的批改试卷页面图 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011710_a6746b11_5257965.png "屏幕截图.png") 图 6.5.5.3 教师模块的显示成绩和已评分图 (6)分班:待所有学生答完卷并且老师批改完所有试卷后,老师就可以点击“开始分班”的按钮,系统就会根据学生的人数来进行分班,要将所有的学生根据成绩分到对应的A、B、C三个班之中。班级人数必须大于等于三个人,具体算法就是将班级人数除以3,若余数为0,则A、B、C班人数相同;若余数为1,则C班比A、B班多一人;若余数为2,则B、C班比A班多一人,如图6.5.6.1所示。最后将所有学生的成绩按照降序将学生一个个代入A、B、C班中。分完班之后在每个学生信息后面的分班列表下即可看见学生被分到哪个班了,如图6.5.6.2所示。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011717_fbd62a61_5257965.png "屏幕截图.png") 图 6.5.6.1 教师模块的分班图 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011725_25fe5f77_5257965.png "屏幕截图.png") 图 6.5.6.1 教师模块的分班后图 (7)导出学生信息:老师可以点击“导出”的按钮将所有学生的学号、姓名、班级、成绩信息导出到本地的excel表中。可以更加轻易地对这些信息进行操作,比如排序、打印等等,如图6.5.7.1和图6.5.7.2所示。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011736_e1372c2b_5257965.png "屏幕截图.png") 图 6.5.7.1 教师模块的导出excel下载路径图 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0109/011744_b037e577_5257965.png "屏幕截图.png") 图 6.5.7.2 教师模块的导出excel图