当前位置: 首页 > news >正文

基于Springboot+Thymeleaf学生在线考试管理系统——LW模板

摘 要

随着当前大数据时代的飞速发展,信息技术以及数据科学不断的普及,教育界也随之更新换代。无粉尘黑板以及电子化考试都已经是在各种学校中普及使用,而且因为操作简单以及对环境没有任何影响,这也将是未来发展的重大趋势。而由于今年来疫情的原因,各地高校也收到了极大地影响,开发出一套适合大多数学校使用的考试管理系统也显得迫在眉睫了。
本文将介绍使用SpringBoot技术开发的一套在线考试系统,从开发前期的背景调查以及开发中的需求分析到开发后的功能测试几个层面对考试系统进行全面的分析和探讨。本系统开发的分为三种权限:管理员、教师以及学生。主要功能有学生管理、班级管理、教师管理、试卷管理、试题管理、考试管理以及学生考试记录查看功能。后台使用MyBatis来快速的进行数据库交互。

关键词:在线考试系统 SpringBoot MyBatis

Abstract
With the rapid development of the current big data era and the continuous popularization of information technology and data science, the education sector is also updated. There is no significant impact on the popularization of electronic blackboard in the future, and there will be no impact on the development of electronic blackboard. Due to the epidemic this year, colleges and universities around the country have also been greatly affected. It is urgent to develop a set of examination management system suitable for most schools.
This paper will introduce a set of online examination system developed by using springboot technology, and comprehensively analyze and discuss the examination system from the background investigation in the early stage of development, the demand analysis in the development to the function test after development. The development of this system is divided into three permissions: administrator, teacher and student. The main functions are student management, class management, teacher management, test paper management, test question management, test management and student test record viewing. Mybatis is used in the background to quickly interact with the database.

Key words: Student online examination system SpringBoot MyBatis

目 录

摘 要 I
Abstract II
第一章 绪 论 1
1.1 课题背景、目的及意义 1
1.2 国内外研究现状 1
1.2.1 国外的研究现状 1
1.2.2 国内的研究现状 1
第二章 需求分析 3
2.1系统的功能需求分析 3
2.1.1 学生功能 3
2.1.2 教师(管理员)功能 3
2.2 系统的数据需求分析 3
第三章 系统的设计 5
3.1 技术框架的设计与介绍 5
3.1.1 Thymeleaf 5
3.1.2 BootStrap 6
3.1.3 SpringBoot 6
3.1.4 MySQL 6
3.1.5 MyBatis 7
3.1.6 Druid 7
3.1.7 Maven 7
3.2 系统功能模块的设计 7
3.2.1 学生模块 8
3.2.2 教师(管理员)模块 9
3.3 系统数据库的设计 10
第四章 系统的实现 13
4.1 首页界面实现 13
4.2 学生功能的实现 14
4.2.1 考试信息 15
4.2.2 考试历史 16
4.3 后台功能的实现 16
4.3.1 学生管理 17
4.3.2 教师管理 18
4.3.3 班级管理 19
4.3.4 试题管理 21
4.3.5 试卷管理 22
4.3.6 考试管理 24
4.3.7 记录管理 25
第五章 系统测试 26
5.1 测试的目的与目标 26
5.2 测试方法 26
5.3 测试用例 27
5.3.1 登录模块 27
5.3.2 学生模块 27
5.3.3 教师模块 28
5.4 测试结论 30
第六章 结论 31
参考文献 32
致 谢 33

第一章 绪 论

1.1 课题背景、目的及意义
考试是一种从古至今的筛选人才一种方式,也是最有效的方式之一,对于目前的很多的学校来说,纸质方式的考试仍然存在,而纸质化的考试对于环境来说也是极其不友好的,而且对于一个学校来说也是一种巨大的资源消耗[1],因为一张考试试卷在使用之后也没有办法再去重复使用,这也就意味着这个试卷只能用一次,用完之后就只能处理掉了,而在高中学校中,一周时间一个学生至少会考十次试,而平均一场考试三张试卷,那就意味着一周一个学生就要消耗三十张试卷,对于一个高中学校来说平均有一万人,那么一周一个学校至少消耗三十万张试卷,那一年的消耗将是一个恐怖的数字。而如果学校都采用线上在线考试的方式进行考试的话,将会节约很大的资源,而且线上考试也不需要更多的人力资源去检查以及收试卷等操作[2]。
在线考试系统使用方式也非常的简单,只需要老师在系统中录入题库,当然录入题库也是一种一劳永逸的操作,在系统中拥有足够的题库的时候,每次需要考试的时候,只需要进行系统自动组卷就可以达到出卷的效果,这也大大地较少了老师们的工作量。
1.2 国内外研究现状
1.2.1 国外的研究现状
在线考试是基于互联网发展的,也是互联网发展路上的产物,而国外在互联网发展上早于国内,所以早在1996年国外就出现了线上考试相关的技术系统[3],尤其是在互联网发展最早的那些发达国家中,而随着互联网技术的不断发展在科学技术不断提升下,国外考试系统的功能以及对应的技术更加的完善以及实用了,而且在大多数的学校中也是早早的推广起来了,就像TOEFL、GRE(美国研究生入学考试)、MSCE(微软系统工程师认证考试)等、Oracle认证考试等,都是通过在线考试的方式的。
1.2.2 国内的研究现状
目前在我们国内,在线考试还正处于蓬勃发展的时期,由于我们起步较晚所以我们在系统的应用方面还是要落后于国外的[4],所以应用也还不是非常普及,只有少数的国家级的简单考试会用到在线考试,如普通话水平考试、机动车驾驶科一、科四考试等,但我们现在各大高校也开始慢慢重视起来这个问题,尤其是去年的疫情影响下,在线考试的重要性便体现出来了[5]。
而我们国内较为成熟的在线考试平台有由清华大学开发的雨课堂考试平台,还有微信小程序中的问卷星,这虽然不是一个专业的考试系统,但它的使用率在国内比任何一个考试系统要大,它主要适用于调研,投票,信息采集和在线考试这几大用途。

第二章 需求分析

2.1系统的功能需求分析
本系统开发模式采用B/S模式,也就是采用浏览器服务器的方式,系统分为三种用户,每种用户拥有不同的权限,而且学生用户和教师以及管理员用户操作页面有着很大的区别,因为学生进入系统是为了进行考试的,而管理员和教师是为了操作数据的。本系统为用户提供不同的登录页面,来设计区分不同的用户进入系统[6]。
2.1.1 学生
本系统为学生用户提供了注册、考试以及对应的考试情况的查询等功能。每次学生考完试之后都可以查看到当前的得分情况,其他的考试在考试记录中都可以查询到自己的得分情况。
2.1.2 教师(管理员)
由于系统设计的教师用户和管理员用户有着很大的相同之处,所以将管理员和教师的相关功能放一起描述,而管理员是拥有教师的所有功能比教师多一个教师管理的功能。
教师和管理员共同拥有学生管理、班级管理、试题管理、试卷管理、考试管理以及考试记录管理等功能,其中学生管理是指教师和管理员都可以查看系统中的所有学生信息情况,并且可以对学生的信息进行修改和删除等操作;班级管理为教师和管理员可以对系统中的班级信息进行相关的新增、修改以及查看删除等操作;实体管理是指管理员和教师可以对试题进行相关的新增、修改以及查看删除等操作,并且可以对试题进行分类有利于试卷的生成;试卷管理是指管理员和教师都可以在系统中生成需要考试的试卷,并且可以对生成的试卷进行相关的增删改查操作;考试管理是指可以选择对应的试卷进行相关的考试,并组织学生完成对应的考试;考试记录管理可以查看到系统中的所有考试情况并且可以查看对应班级的总体考试情况。
2.2 系统的数据需求分析
在对本系统进行需求调研的过程中,考试系统将主要有学生、教师、班级、试题、试卷以及考试等数据,而在对这些数据进行分析后,得出如图2-1所示的流程图。

图2-1 考试流程数据分析

第三章 系统的设计

3.1 技术框架的设计与介绍
3.1.1 Thymeleaf
Thymeleaf作为一种现代服务端的Java模板引擎。它使用与独立环境和Web,能处理生成经过验证了的HTML和XML文件[7]。

图3-1 Thymeleaf结构图

模板引擎就是根据后端传来的Json数据生成一个标准的HTML文件,模板引擎有JSP、FreeMarker、Thymeleaf[8],这三个模板引擎各有优劣,但对于SpringBoot的官方是不推荐老大哥的JSP的,因为SpringBoot打包的时候有两种[9],一种是war包,另一种是jar包,但对于jar包来说是不支持JSP的。相对于FreeMarker来说Thymeleaf能够做到不用开启整个web应用就能直接打开显示模板的页面[10],这是极为方便的且它在有数据无数据的时候都能正确的显示,在无数据的情况下会显示静态页面,而如果有数据的传入,则会自动变成动态页面[11]。这样一来前端只需要会Thymeleaf就可以进行开发,测试,能完美的做到前后端分离。
3.1.2 BootStrap
BootStrap是时下较为主流的快速搭建Web应用的前端开源框架,它集成HTML、CSS以及JS为一体,常用于搭建开发响应式布局[12],以及优化设备的适配性的项目构建。致力于让前端开发更为高效、快速、简单,让所有的开发者都能快速上手。其源代码采用了最流行的CSS预处理工具Less和Sass编译开发。在js方面集成Jquery插件,便捷开发者的的网页的动态开发。BootStrap还提供了相应的开发帮助文档,为开发者提供字典式的开发帮助[13]。
BootStrap作为一个前端快速开发框架,我们仅需通过官方网站提供的相应的视图及代码样例,理解相对应的class和一些标签所代表的含义,通过引用所提供的的外部CSS文件以及JS文件并可实现相对应的网页效果。
BootStrap的社区开源性,具有很高的可扩展性。它支持开发者的自定义样式,支持开发者在已给的样式方面进行扩展,从而适应更为广泛的开发者的需求。这也简化了之后的软件维护,也提高了软件的实用效果。
3.1.3 SpringBoot
SpringBoot框架是由SSM框架衍生而来的[5],因为SSM框架有着非常复杂的配置,当开发一个大系统的时候配置文件可能会有十几个或者几十个,而SpringBoot的诞生将节省了开发人员的大多数时间,因为它只有一个配置文件,也就是说只需要一个配置文件就可以将SSM框架中的十几个配置文件代替,而且也可以完成SSM配置文件中的所有功能,这将大大的提高了开发人员的开发效率[14]。
3.1.4 MySQL
MySQL数据库[15]是目前最为流程的关系型数据库之一,它最初是由瑞典的MySQL AB公司开发而成,并且属于Oracle旗下的产品[16]。而且在web应用方面,MySQL也是最好的RDBMS(关系数据库管理系统)。
3.1.5 MyBatis
Mybatis最先是Apache的一个开源项目iBatis,但是在2010年这个项目被迁移到Google Code,并且改名为Mybatis。在2013年才被迁移到Github中Mybatis是目前最为流行的持久层框架之一,Mybatis与SpringBoot可以进行无缝整合。Mybatis作为访问数据库的框架,它具有较高的安全性,而且在处理数据库事务方面有很多的独到之处。而且它消除了几乎所有的JDBC代码和参数的手工设计以及结果集的检索。Mybatis具有简单易学、灵活、接触了Sql与程序代码的耦合、支持并提供关系映射和提供Xml标签等特点。
3.1.6 Druid
Druid是由Alibab开源的一款数据库连接池框架,对于数据库连接池的功能再上面的MyBatis中有提到,其作用就是使得数据库链接资源可以重用,最后更快的响应。其实数据库连接池有多种,像我们最熟悉的就是dbcp和c3p0,而Druid相对于前两者来说它是集两者的优点与一身,为我们提供了一个连接高效、功能强大、扩展性良好的数据库连接池,且在本身的数据库连接池的功能外它还可以监控数据库的访问情况。
3.1.7 B/S模式
B/S架构即浏览器/服务器架构,它是基于浏览器的基础上运行web应用程序的,它不需要像C/S架构一般需要去下载对应的软件并安装运行。B/S架构是目前最流行的架构之一,大多数的企业开发web应用都是使用B/S架构。因为在B/S架构的基础上,只需要通过网页访问即可,所有用户只要有一个可以上网的浏览器,那就可以访问web系统,既简单方便,使用又安全可靠。
3.2 系统功能模块的设计
作为考试系统,为了更好的对系统进行运行以及维护,采用用户权限判断验证的方式,对该平台进行系统性的管控。然后通过用户进行登录注册,将用户信息提交到数据库并进行比对,通过该用户的身份权限来控制该平台为用户展示所需的界面信息。

图3-2 系统总体模块设计

作为根据系统功能分析,当前系统主要存在两个用户角色——学生、教师(管理员),在此通过用户角色不同,对该系统进行模块划分。
3.2.1 学生模块
学生作为该考试平台的主体,是该平台的重要角色之一。该模块是在用户进行正确登录之后,系统对于该用户的权限判断为学生时所进入的功能模块。
通过上述的需求分析,学生模块主要的功能是参加考试,以及自己参与的考试记录。

图3-3 学生模块系统功能
3.2.2 教师(管理员)模块
教师作为该平台的主要角色之一,部分涵盖了管理员的权限,教师与管理员共同使用同一可视化界面,在前端对该教师的权限进行判断,然后分别展示所涵盖的功能,对于无权限操作的功能不予展示或者进行错误信息提示。

图3-4 教师模块

3.3 系统数据库的设计
根据上述的数据库分析可以得出一个大概的主要实体关系图:

图3-5 部分系统E-R图
注解:本E-R图种只是列出了部分重要实体间的关系及属性,其他部分关系表及实体可见下列详细表:

第四章 系统的实现

本系统设计中,教师和管理员的功能基本一样,所以在阐述系统实现中将管理员和教师的模块放在一起阐述,然后将阐述内容分为首页、学生、管理员等三大部分。
4.1 首页实现
本系统首页中有对系统的简单描述,并且首页中含有系统登录和注册的入口按钮,首页中还统计了本系统本系统中的学生和老师的数量以及本系统中的试题数据,和管理员设置的试卷的数量。首页的截图如下图所示。

图4-1 平台主界面
在首页中点击登录按钮系统自动进入登录页面,本系统的登录页面设计比较简陋,这也符合教务管理系统的风格。在登录页面中用户可以自由切换后台登录和前台登录二种方式,也可以最直接点击注册进行数据注册,注册之后再进行登录操作。而且这里的登录注册功能都是通过前端你的form表单提交的方式,简单易懂。

图4-2 学生登录界面

图4-3 学生注册界面

图4-4 教师登录界面
4.2 学生实现
在前面章节的中已经展示了学生的功能仅包含参与考试及查看考试记录功能,故在本模块的主要功能不是很多,主要分两个部分展示:考试信息和考试历史。下图为学生登录后的主界面:

图4-5 学生主界面
4.2.1 考试信息
在此模块主要是展示当前需要参加的考试信息,且当前考试是已经开始但未结束,即已经出完但还未到达考试时间的试卷是不会展示出来,并且相关的考试信息也是不会进行相应的展示。

图4-6 待考试卷列表图
如下图4-7所示,学生点击一场考试进入考试页面,页面主要分为三个部分,左边展示考试的基本信息包括开始时间和结束时间等;上方展示本场考试名称以及学生模块中的通过的头部按钮;下方为统一的答题页面,所有的题目都从下方展示,而且系统控制学生在做题中如果没有做完的话是不运行进行提交考试的。

图4-7 答题界面
4.2.2 考试历史
如下图为学生登录后在考试历史中查看到的与自己相关的所有考试历史信息,并且能够查询相应的考试结果、答案信息即试卷的正确率。

图4-8 已答试卷记录
下图是对其中的一份试卷进行查阅。根据页面展示的内容,可以看出此页面主要展示这个试卷的内容,你的选择以及试卷的答案。

图4-9 已答样例试卷查阅
4.3 管理员实现
当教师输入正确的账号和密码进行登陆后,页面会跳转到后台的主界面。在上一章节的模块分析了解,后台管理主要存在两种不同的权限的用户——教师以及管理员,而管理员也是可以当作教师。
后台的主界面如下图所示,可以看出后台主要有学生管理、教师管理、班级管理、试题管理、试卷管理、考试管理以及记录管理七大模块,而且在后台的主页右下主要展示了该平台的所有人数、题库数、自定义公告信息以及部分最新的考试榜单信息。

图4-10 教师(管理员)主界面
4.3.1 学生管理
作为后台管理界面,对于用户(学生)的管理是必然存在的。在本次设计中的学生管理界面如下图所示,展示了查看学生信息、删除学生的功能。

图4-11 学生管理界面
下图为学生管理界面对某一学生信息进行编辑时所跳转的页面,展示了该学生的主要信息,以及可以对其进行修改的条目(学生登录靠学生账号以及密码进行登录,故在此不考虑修改学生的账户名以及密码功能)。

图4-12 学生信息修改界面
4.3.2 教师管理
教师管理作为后台的用户管理模块的一大主要,该模块主要包含教师的信息修改、教师删除(管理员)以及教师添加功能(管理员)。鉴于后台对于系统的安全性及稳定性等因素,故仅考虑部分对此模块的功能进行权限限制,仅向管理员权限进行开放,并且在该模块对于用户的信息展示时,将教师密码隐藏,避免教师信息泄露、账号被冒名使用等危险情况发生。教师管理界面如下图所示。

图4-13 教师管理界面
下图为管理员创建教师的界面,需要填写的内容主要含有教师姓名、教师账号、教师密码等基础信息。

图4-14 教师添加界面
下图为修改教师信息时所展示的页面,其实不难看出是采用教师创建时的页面模板,简化前端页面的开发,提高代码的复用率。
在教师信息修改的问题上,避免教师的误操作对于系统平台可能会造成的损失,及数据稳定安全性方面,避免教师修改教师账号、以及非本人的登录密码信息。

图4-15 教师信息修改
4.3.3 班级管理
班级管理作为教学系统的主要一部分,作为连接教师以及学生之间关系的纽带,故此模块也同样必不可少,在本部分主要展示班级管理模块的功能。在下面展示的截图中不难发现本模块主要包含对班级信息的获取、班级信息的修改、班级删除以及班级添加功能。在本管理模块默认展示当前所有得到班级以及其所对应的班主任的教师名字。

图4-16 班级列表信息界面
下图为在管理模块对某一班级的编辑按钮进行点击是系统所跳转的页面,展示的是该班级的部分信息,包括时任班主任的教师名称,并且可以对其进行修改。在进行班级的班主任信息修改的时候,为了降低教师的压力,避免了同一教师对于不同班级的管理,严格限定每个教师最多管理一个班级。

图4-17 班级详细信息及信息修改界面
该模块也是采用代码复用的手段,利用教师信息修改的前端页面模板,提供了对于班级管理信息的填写,在本模块也采用上个功能的要求,强制每个教师最多管理一个班级,降低教师的管理压力。且担任班级班主任教师禁止无中生有,必须是已经存在于系统数据库中,有据可查。

图4-18 班级新增界面
4.3.4 试题管理
作为在线测试系统,其理应含有大量的数据题量信息,故该模块也是本篇设计的主要内容之一。在本模块中主要包含对于题目的查询、增加、删除以及题目信息的修改。在本此设计中默认将本模块的首页内容设置为展示本系统的所有的题库信息,并且展示本模块的主要的功能按钮,凸显本模块的功能。下图为试题管理的主界面内容展示截图。

图4-19 试题管理界面
下图为试题管理页面的试题编辑按钮点击后系统跳转的页面,展示的是试题信息修改内容。

图2-20 试题修改页面
下图展示的是试题增加页面,同样采取极简主义,复用试题信息修改的前端模板,提高代码的复用率。

图4-21 试题增加页面
4.3.5 试卷管理
试卷管理可以查看所有试卷信息。下图为所有试卷页面,教师及管理员都可对查看所有试卷的基本信息,和试卷的修改、删除以及查看试卷试题、添加试题和自动生成试题功能。同时教师及管理员也可以直接添加新的试卷。

图4-22 试卷信息管理
下图为添加试卷的页面,对于试卷的创建主要分为两个流程——试卷基本信息创建以及组题。教师(管理员)可以通过该模块的试卷添加按钮来创建试卷来基本信息——试卷的名称,单选题的分数,多选题的分数,判断题的分数来进行试卷的分数及题型组成。

图4-23 试卷增加
在教师创建完试卷后,该试卷的默认为空白,里面不含有任何的试题信息,此时需要对其进行组题——从题库中筛选出部分试题作为该试卷的考核题目。
本次的试卷组题功能主要分为两种——人工组题以及随机组题。人工组题就是人工从当前题库中选取题目,而随机组题就是通过系统使用随机算法根据选取的题库类别进行数据题目的获取,以组成当前试卷的考核内容。
对于已经存在的题目信息的试卷仍然可以采用组题功能来为该试卷增加题目,以补充之前组题所漏取的题目考点。

图4-24 试卷的试题管理界面
同样对于试卷的修改功能也是同样套用试卷添加的前端页面模板,复用其代码,故在此处就不在截图,多做赘述。
4.3.6 考试管理
考试管理作为在线考试系统的最后一步,主要负责着将已经组好的题目组作为考试试卷,并发布一场考试信息,使得学生可以参与,检验自己的真才实学,自己的学习情况,做到及时的查漏补缺。
在本模块的主界面默认展示的是所有发布的考试信息,并显示这些考试的基本信息以及状态信息,以及本模块的一些主要功能入口。如下图所示。

图4-25 考试信息管理
下图所展示的就是考试管理模块点击增加考试所跳转的页面展示示意图。可以看出此考试信息的发布需要填写得到主要的部分内容,其中包括该场考试所使用的试卷,该场考试的开始时间及结束时间,以达到到达时间后开始允许学生进行考试,以及考试时间结束强制学生提交试卷。

图4-26 增加考试
4.3.7 记录管理
记录管理模块主要是有两大功能:已考试卷信息以及班级及格率统计,并且该模块默认将已考试卷信息展示界面为主界面。
已考试卷信息主要展示的信息为试卷的名称,试题的答案,该试卷的正确率等信息。其截图如下图所示:

图4-27 试卷记录管理界面
班级及格率功能展示是根据目前所有的试卷还有班级进行统一计算,计算出每个班级的每张试卷的及格率并进行展示。其截图如下图所示。

图4-28 班级及格率界面

第五章 系统测试

5.1 测试方法
在一个系统开发完成之后,并不是直接进行线上部署并上线使用,而且需要进行一个系统性的测试,而系统性的测试也需要专业的测试人员进行,而测试也分为主要的二种方式:黑盒测试和白盒测试。黑盒测试顾名思义就是在不知道这个系统功能流程的基础上随便的对系统进行操作,也就是让一个不明所以地人来操作系统,这就是所谓的黑盒测试;而白盒测试可以理解成正常的功能测试,也就是测试人员明白当前输入的数据会有什么样的结果,在知道结果的前提下进行测试为白盒测试。这二种测试方式也是作为一名合格的软件测试人员必备的技术。
5.2 测试用例
5.2.1 登录模块
登录模块作为该系统的最基本的模块,以此用来对平台的用户进行权限坚定分配。登录模块测试如表5-1所示,测试的过程基本上都与期望结果相同。
表5-1 登录测试用例
功能 学生登录功能
目的 对学生数据的登录信息进行验证
编号 描述 数据 期望结果 测试结果
1 只输入用户名 用户名:ceshi,
密码为空 提示“密码不能为空” 正确
2 只输入密码 用户名为空,
密码:123456 提示“用户名不能为空!” 正确
3 输入错误的用户名密码 用户名:ceshi,
密 码:1111111 提示“用户名或密码误!” 正确
4 输入正确的用户名密码 用户名:ceshi,
密 码:111 正确登录 正确
5 点击重置按钮 用户名:ceshi;
密码:1111 清空输入框 正确
5.2.2 学生模块
学生模块是本系统中的最主要的模块之一,所以对学生模块也是做了相关的测试,针对学生模块的大多数功能做出如表5-2所示的测试用例。根据测试表展示可以得出测试的结果和期望结果基本上一致。
表5-2 学生参与考试测试用例
功能 参加考试
目的 对学生正常参加考试验证
编号 描述 数据 期望结果 测试结果
1 学生登录后点击考试按钮 存在可考试试卷 页面列出当前可以参加的考试信息 正确
2 学生登录后点击考试按钮 不存在可考试试卷 页面没有考试信息 正确
3 学生进入考试后。 考试时间结束 自动提交试卷,并返回考试信息列表页面 正确
4 学生进入考试后。 用户题目已答完,点击提交 提交试卷成功,并返回考试信息列表页面 正确
5 学生进入考试后。 用户题目未答完,点击提交 提交试卷成功,并返回考试信息列表页面 正确
5.2.3 教师模块
教师模块和管理员模块是一样的,所以这里只对教师模块进行相关的测试,而教师模块中的功能也是整个系统中的重点,因为教师需要新建考试以及试卷等,还可以对学生成绩进行查看,对学生进行编辑等。
表5-3为教师增加试题的测试样例表,从测试的结果来看与期望结果完全相符合。
表5-3 教师增加试题测试用例
功能 增加考试试题
目的 教师是否能正常增加考试试题
编号 操作描述 数据 期望结果 测试结果
1 选择单(多)项选择题选项 选择题选项输入框为四个,判断题选项框为两个 存在选项C、选项D输入框 正确
2 选择判断题选项 选择题选项输入框为四个,判断题选项框为两个 不存在选项C、选项D输入框 正确
3 填写试题信息后提交表单 输入项全部填写完全 正确提交表单,并返回试题管理主界面 正确
4 填写试题信息后提交表单 输入项未全部填写完全,存在部分未填写 提交表单失败,并在未填写的输入框进行“字段未填写”提示 正确

表5-4为教师创建试卷测试样例表,从测试结果与期望结果对比,完全相同。
表5-4 教师创建试卷测试用例
功能 教师创建试卷
目的 验证教师能否正常增加试卷
编号 操作描述 数据 期望结果 测试结果
1 填写试卷的分数信息后提交表单 输入项全部填写完全 正确提交表单,并返回试题管理主界面 正确
2 填写试卷的分数信息后提交表单 输入项未全部填写完全,存在部分未填写 提交表单失败,并在未填写的输入框进行“字段未填写”提示 正确
表5-5为教师对试卷进行组题测试样例表,从测试的结果来看与期望结果完全相同。
表5-5 教师对试卷进行组题测试用例
功能 教师对试卷进行组题
目的 验证教师能否正常对试卷进行组题
编号 操作描述 数据 期望结果 测试结果
1 选择新创建的试卷的试题管理,进行随机组卷 选择的题库得到题目数量大于或等于需要的题量 组卷成功,返回到试卷的详细页可看到试题信息,题量为设置的题量 正确
2 选择新创建的试卷的试题管理,进行随机组卷 选择的题库得到题目数量小于需要的题量 组卷失败,抛出异常 正确
3 选择新创建的试卷的试题管理,进行人工组卷 选择题目后面的加号 组卷成功,返回到试卷的详细页可看到刚才添加的试题 正确
4 选择新创建的试卷的试题管理,进行人工组卷 无任何操作 返回到试卷的详细页未看到试卷的题量的改动 正确
5 选择已经进行过组题的试卷的试题管理,进行随机组卷 选择的题库得到题目数量大于或等于需要的题量 组卷成功,返回到试卷的详细页可看到试题信息,题量为设置的题量 正确
6 选择已经进行过组题的试卷的试题管理,进行随机组卷 选择的题库得到题目数量小于需要的题量 组卷失败,抛出异常 正确
7 选择已经进行过组题的试卷的试题管理,进行随机组卷 选择题目后面的加号 组卷成功,返回到试卷的详细页可看到刚才添加的试题 正确
8 选择已经进行过组题的试卷的试题管理,进行随机组卷 无任何操作 返回到试卷的详细页未看到试卷的题量的改动 正确
5.3 测试结论
通过黑盒测试以及白盒测试对系统大多数功能进行了测试,发现系统基本已经实现了当初设计本系统的所有功能,但是通过不断地测试发现系统在效率方面还是有着不少的问题,在同一个用例很多个进程同时触发时,系统的反应明显的慢了很多,但是由于是最初版的,所有有着这些问题也是可以原谅的。所以通过本次的测试,本系统基本满足当前的业务需求。

第六章 结论

本文从系统的背景叙述出发到详细的设计,过程中将对应的开发技术以及设计思路清晰的描述出,并根据现实的购物理论设计开发在线考试系统。根据本文中阐述的详细设计以及系统实现使用java技术实现的在线考试系统,并且通过测试基本完成了当初设想的功能。
通过本次的系统开发,让我清晰的了解到从头到尾开发一个系统的难度性,特别是在初期对系统的整体分析和对数据库的设计,如果在前期没有设计好的话,后面再修改就会有很多的局限性,因为在开发本系统的时候,我也出现了这种的问题,由于前期考虑不足,后面需要修改数据库导致之前设计的java类都要跟着修改一遍,而且在开发过程中,代码的书写也是需要注意,对于复杂的业务方面需要写入更多的注释,本系统前后开发二个月的时间,之前写的代码,回头再去看的时候已经发现不理解之前的思路了。
本系统虽然第一阶段开发完成了,但是由于对业务的不熟悉,很多的情况都没有考虑进去,比如学生手机登录进行考试没有开发,这些功能后面对本系统继续开发的过程中将会逐步的完善进去,只有不断地学习不断地突破自己才能取得最终的胜利。

相关文章:

基于Springboot+Thymeleaf学生在线考试管理系统——LW模板

摘 要 随着当前大数据时代的飞速发展,信息技术以及数据科学不断的普及,教育界也随之更新换代。无粉尘黑板以及电子化考试都已经是在各种学校中普及使用,而且因为操作简单以及对环境没有任何影响,这也将是未来发展的重大趋势。而由…...

STM32f103c6t6/STM32f103c8t6寄存器开发

目录 资料 寻址区 2区 TIMx RTC WWDG IWDG SPI I2S USART I2C USB全速设备寄存器 bxCAN BKP PWR DAC ADC ​编辑 EXTI ​编辑 GPIO AFIO SDIO DMA CRC RCC FSMC USB_OTG ETH(以太网) 7区 配置流程 外部中断 硬件中断 例子 点灯 …...

MySQL Connection not available.

Mysql 报错 最近部署在服务器上的mysql总是报这种错。 但是在服务器上,使用命令行是可以登录进mysq的。 cursor db.cursor() File “/home/ubuntu/miniconda3/envs/chatbot_env/lib/python3.9/site-packages/mysql/connector/connection_cext.py”, line 700, in …...

PHP反序列化 字符串逃逸

前言 最近在打西电的新生赛&#xff0c;有道反序列化的题卡了很久&#xff0c;今天在NSS上刷题的时候突然想到做法&#xff0c;就是利用字符串逃逸去改变题目锁死的值&#xff0c;从而实现绕过 为了研究反序列化的字符串逃逸 我们先简单的测试下 原理 <?php class escape…...

DockerFile解析

1. 是什么 Dockerfile是田来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本 1.1 概述 1.2 官网 Dockerfile reference | Docker Documentation 1.3 构建三步骤 1. 编写dockerfile文件 2. docker build命令构建镜像 3. docker run依镜像运…...

斯坦福大学医学院教授:几年内ChatGPT之类的AI将纳入日常医学实践

注意&#xff1a;本信息仅供参考&#xff0c;分享此内容旨在传递更多信息之目的&#xff0c;并不意味着赞同其观点或证实其说法。 在一项新研究中&#xff0c;斯坦福大学研究人员发现&#xff0c;ChatGPT在复杂临床护理考试题中可以胜过一、二年级的医学生。此项研究显示&#…...

golang 命令行 command line (flag,os,arg,args)

目录 1. golang 命令行 command line1.1. Introduction1.2. Parsing Arguments from the command line (os package)1.2.1. Get the number of args1.2.2. Iterate over all arguments 1.3. Using flags package1.3.1. Parse Typed Flags1.3.2. Set flags from the script1.3.3…...

Shell语法揭秘:深入探讨常见Linux Shell之间的语法转换

深入探讨常见Linux Shell之间的语法转换 一、引言二、Linux常用Shell&#xff1a;Bash、Zsh、Ksh、Csh、Tcsh和Fish的简介2.1、Bash、Zsh、Ksh、Csh、Tcsh和Fish的特点和用途2.2、语法差异是常见Shell之间的主要区别 三、变量和环境设置的语法差异3.1、变量定义和使用的不同语法…...

Python3 基础语法

Python3 基础语法 编码 默认情况下&#xff0c;Python 3 源码文件以 UTF-8 编码&#xff0c;所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码&#xff1a; # -*- coding: cp-1252 -*- 上述定义允许在源文件中使用 Windows-1252 字符集中的字符编码&…...

spring boot分装通用的查询+分页接口

背景 在用spring bootmybatis plus实现增删改查的时候&#xff0c;总是免不了各种模糊查询和分页的查询。每个数据表设计一个模糊分页&#xff0c;这样代码就造成了冗余&#xff0c;且对自身的技能提升没有帮助。那么有没有办法实现一个通用的增删改查的方法呢&#xff1f;今天…...

【OpenCV】OpenCV环境搭建,Mac系统,C++开发环境

OpenCV环境搭建&#xff0c;Mac系统&#xff0c;C开发环境 一、步骤VSCode C环境安装运行CMake安装运行OpenCV 安装CMakeList 一、步骤 VSCode C环境安装CMake 安装OpenCV 安装CmakeList.txt VSCode C环境安装运行 访问官网 CMake安装运行 CMake官网 参考文档 OpenCV 安…...

node安装node-sass依赖失败(版本不一致)

1.官网对应node版本 https://www.npmjs.com/package/node-sass2.node-sass版本对应表...

联想小新Pro 16笔记本键盘失灵处理方法

问题描述&#xff1a; 联想小新Pro 16新笔记本开机准备激活&#xff0c;到连接网络的时候就开始触控板、键盘失灵&#xff0c;但是有意思的是键盘的背光灯是可以调节关闭的&#xff1b;外接鼠标是正常可以移动的&#xff0c;但是只要拔掉外接鼠标再插回去的时候就不能用了&…...

python 连接Redis 数据库

pip install redis python代码 import redis# 连接数据库 r redis.Redis(host192.168.56.15, port6379, db0)# 存储数据 #r.set(key, value) r.set(name, zaraNet)# 获取数据 value r.get(name) print(value)# 关闭连接&#xff08;可选&#xff09; r.close()...

使用 wxPython 和 pymupdf进行 PDF 加密

PDF 文件是一种常见的文档格式&#xff0c;但有时候我们希望对敏感信息进行保护&#xff0c;以防止未经授权的访问。在本文中&#xff0c;我们将使用 Python 和 wxPython 库创建一个简单的图形用户界面&#xff08;GUI&#xff09;应用程序&#xff0c;用于对 PDF 文件进行加密…...

Mysql性能优化:什么是索引下推?

导读 索引下推&#xff08;index condition pushdown &#xff09;简称ICP&#xff0c;在Mysql5.6的版本上推出&#xff0c;用于优化查询。 在不使用ICP的情况下&#xff0c;在使用非主键索引&#xff08;又叫普通索引或者二级索引&#xff09;进行查询时&#xff0c;存储引擎…...

Pytorch建立MyDataLoader过程详解

简介 torch.utils.data.DataLoader(dataset, batch_size1, shuffleNone, samplerNone, batch_samplerNone, num_workers0, collate_fnNone, pin_memoryFalse, drop_lastFalse, timeout0, worker_init_fnNone, multiprocessing_contextNone, generatorNone, *, prefetch_factorN…...

十问华为云 Toolkit:开发插件如何提升云上开发效能

众所周知&#xff0c;桌面集成开发环境&#xff08;IDE&#xff09;已经融入到开发的各个环节&#xff0c;对开发者的重要性和广泛度是不言而喻的&#xff0c;而开发插件更是建立在IDE基础上的功能Buff。 Huawei Cloud ToolKit作为华为云围绕其产品能力向开发者桌面上的延伸&a…...

NO.06 自定义映射resultMap

1、前言 在之前的博客中&#xff0c;实体类的属性名和数据库表的字段名是一致的&#xff0c;因此能正确地查询出所需要的数据。当实体类的属性名与数据库表的字段名不一致时&#xff0c;会导致查询出来的数据为空指针。要解决这个问题就需要使用resultMap自定义映射。 使用的…...

国产精品:讯飞星火最新大模型V2.0

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…...

网络综合布线实训室方案(2023版)

综合布线实训室概述 随着智慧城市的蓬勃发展,人工智能、物联网、云计算、大数据等新兴行业也随之崛起,网络布线系统作为现代智慧城市、智慧社区、智能建筑、智能家居、智能工厂和现代服务业的基础设施和神经网络,发挥着重要作用。实践表明,网络系统故障的70%发生在布线系统,直接…...

Qt应用开发(基础篇)——文本编辑窗口 QTextEdit

一、前言 QTextEdit类继承于QAbstractScrollArea&#xff0c;QAbstractScrollArea继承于QFrame&#xff0c;用来显示富文本和纯文本的窗口部件。 框架类 QFramehttps://blog.csdn.net/u014491932/article/details/132188655滚屏区域基类 QAbstractScrollAreahttps://blog.csdn…...

NineData中标移动云数据库传输项目(2023)

近日&#xff0c;玖章算术NineData智能数据管理平台成功中标《2023年移动云数据库传输服务软件项目》&#xff0c;中标金额为406万。这标志着玖章算术NineData平台已成功落地顶级运营商行业&#xff0c;并在数据管理方面实现了大规模应用实践。 NineData中标2023移动云数据库传…...

Java面向对象三大特性之多态及综合练习

1.1 多态的形式 多态是继封装、继承之后&#xff0c;面向对象的第三大特性。 多态是出现在继承或者实现关系中的。 多态体现的格式&#xff1a; 父类类型 变量名 new 子类/实现类构造器; 变量名.方法名(); 多态的前提&#xff1a;有继承关系&#xff0c;子类对象是可以赋…...

HTTPS 握手过程

HTTPS 握手过程 HTTP 通信的缺点 通信使用明文&#xff0c;内容可能被窃听(重要密码泄露)不验证通信方身份&#xff0c;有可能遭遇伪装(跨站点请求伪造)无法证明报文的完整性&#xff0c;有可能已遭篡改(运营商劫持) HTTPS 握手过程 客户端发起 HTTPS 请求 用户在浏览器里…...

docker之Consul环境的部署

目录 一.Docker consul的介绍 1.1template模板(更新) 1.2registrator&#xff08;自动发现&#xff09; 1.3agent(代理) 二.consul的工作原理 三.Consul的特性 四.Consul的使用场景 五.搭建Consul的集群 5.1需求 5.2部署consul 5.3主服务器[192.168.40.20] 5.4client部署&…...

服务机器人,正走向星辰大海

大数据产业创新服务媒体 ——聚焦数据 改变商业 国内机器人联盟&#xff08;IFR&#xff09;将机器人划分为工作机器人、服务机器人、特种机器人三类。服务机器人广泛应用于餐饮场景、酒店场景&#xff0c;早已构成一道靓丽的风景。行业数据显示&#xff0c; 作为服务机器人发…...

SciencePub学术 | 计算机及交叉类重点SCIE征稿中

SciencePub学术 刊源推荐: 计算机及交叉类重点SCIE征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 计算机土地类重点SCIE 【期刊简介】IF&#xff1a;1.0-1.5&#xff0c;JCR4区&#xff0c;中科院4区&#xff1b; 【版面类型】正刊…...

Java面试题--SpringCloud篇

一、Spring Cloud 1. 什么是微服务架构&#xff1f; 微服务架构就是将单体的应用程序分成多 个应用程序&#xff0c;这多个应用程序就成为微服 务&#xff0c;每个微服务运行在自己的进程中&#xff0c;并 使用轻量级的机制通信 这些服务围绕业务能力来分&#xff0c;并通过自…...

【linux】常用的互斥手段及实例简述

文章目录 10. 原子变量(atomic_t)20. 自旋锁(spinlock_t)21. 读写锁(rwlock_t)22. 顺序锁(seqlock_t) 10. 原子变量(atomic_t) 头文件 #include <linux/types.h> // -> <linuc/atomic.h> // -> <asm-generic/atomic64.h>结构体 /* 32bit */ typedef …...

STM32 F103C8T6学习笔记12:红外遥控—红外解码-位带操作

今日学习一下红外遥控的解码使用&#xff0c;红外遥控在日常生活必不可少&#xff0c;它的解码与使用也是学习单片机的一个小过程&#xff0c;我们将通过实践来实现它。 文章提供源码、测试工程下载、测试效果图。 目录 红外遥控原理&#xff1a; 红外遥控特点&#xff1a; …...

linux 环境收集core文件步骤

Linux环境下进程发生异常而挂掉&#xff0c;通常很难查找原因&#xff0c;但是一般Linux内核给我们提供的核心文件&#xff0c;记录了进程在崩溃时候的信息&#xff0c;在C语言类的大型项目中&#xff0c;有助于深入定位。其配置流程如下&#xff1a; 1 查看生成core文件开关是…...

Git企业开发控制理论和实操-从入门到深入(一)|为什么需要Git|Git的安装

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总https://blog.csdn.net/yu_cblog/cate…...

上篇——税收大数据应用研究

财税是国家治理的基础和重要支柱&#xff0c;税收是国家治理体系的重要组成部分。我们如何利用税收数据深入挖掘包含的数据价值&#xff0c;在进行数据分析&#xff0c;提升税收治理效能&#xff0c;推进税收现代化。 1. 定义与特点 对于“大数据”&#xff08;Big data&#…...

疲劳驾驶检测和识别4:C++实现疲劳驾驶检测和识别(含源码,可实时检测)

疲劳驾驶检测和识别4&#xff1a;C实现疲劳驾驶检测和识别(含源码&#xff0c;可实时检测) 目录 疲劳驾驶检测和识别4&#xff1a;C实现疲劳驾驶检测和识别(含源码&#xff0c;可实时检测) 1.疲劳驾驶检测和识别方法 2.人脸检测方法 3.疲劳驾驶识别模型(Python) &#xf…...

Android WakefulBroadcastReceiver的使用

WakefulBroadcastReceiver 是一种特殊类型的广播接收器&#xff0c;为应用创建和管理 PARTIAL_WAKE_LOCK 。 简单来说&#xff0c; WakefulBroadcastReceiver 是持有系统唤醒锁的 BroadcastReceiver &#xff0c;用于执行需要保持CPU运转的场景。 注册 注册 Receiver &#…...

python知识:什么是字符编码?

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 我们的MySQL使用latin1的默认字符集&#xff0c; 也就是说&#xff0c;对汉字字段直接使用GBK内码的编码进行存储&#xff0c; 当需要对一些有汉字的字段进行拼音排序时&#xff08;特别涉及到类似于名字这样的字段时…...

Vue2中使用Pinia

Vue2中使用Pinia 1.初始化配置 # main.jsimport Vue from vue import App from ./App.vue import pinia from ./stores/index import { PiniaVuePlugin } from piniaVue.use(PiniaVuePlugin)new Vue({render: h > h(App),pinia, }).$mount(#app)2.模块化开发 新建stores文…...

Docker关于下载,镜像配置,容器启动,停止,查看等基础操作

系列文章目录 文章目录 系列文章目录前言一、安装Docker并配置镜像加速器二、下载系统镜像&#xff08;Ubuntu、 centos&#xff09;三、基于下载的镜像创建两个容器 &#xff08;容器名一个为自己名字全拼&#xff0c;一个为首名字字母&#xff09;四、容器的启动、 停止及重启…...

穿越网络迷雾的神奇通道 - WebSocket详解

WebSocket&#xff0c;作为一项前端技术&#xff0c;已经成为现代Web应用不可或缺的一部分。本文将深入解析WebSocket&#xff0c;介绍其工作原理和用途&#xff0c;并通过简单的代码示例&#xff0c;让你对这个神奇的网络通信协议有更深入的了解。 WebSocket是什么&#xff1…...

无脑入门pytorch系列(五)—— nn.Dropout

本系列教程适用于没有任何pytorch的同学&#xff08;简单的python语法还是要的&#xff09;&#xff0c;从代码的表层出发挖掘代码的深层含义&#xff0c;理解具体的意思和内涵。pytorch的很多函数看着非常简单&#xff0c;但是其中包含了很多内容&#xff0c;不了解其中的意思…...

Python土力学与基础工程计算.PDF-压水试验

Python 求解代码如下&#xff1a; 1. import math 2. 3. # 输入参数 4. L 2.0 # 试验段长度&#xff0c;m 5. Q 120.0 # 第三阶段计算流量&#xff0c;L/min 6. p 1.5 # 第三阶段试验段压力&#xff0c;MPa 7. r0 0.05 # 钻孔半径&#xff0c;m 8. 9. # 计算透…...

Linux入门

一、安装相关软件 1.下载vmware (很容易下载,搜一下官网 ) 在cmd敲入 ncpa.cpl &#xff0c;查看是否有vmware 2.下载centos 下面是镜像源网站&#xff0c;当然你可以选择其他的镜像源&#xff0c;像清华镜像源和阿里镜像源。 Index of /centos/7.9.2009/isos/x86_64/ | …...

适合国内用户的五款ChatGPT插件

众所周知使用ChatGPT3.5需要使用魔法且不稳定&#xff0c;订阅ChatGPT4.0每月需要支付20美元&#xff0c;并且使用次数有限制。对于那些不想每年花费240美元&#xff08;超过1500元人民币&#xff09;来使用GPT4.0的朋友们来说&#xff0c;还有别的办法吗&#xff1f; 答案是&…...

Dubbo Spring Boot Starter 开发微服务应用

环境要求 系统&#xff1a;Windows、Linux、MacOS JDK 8 及以上&#xff08;推荐使用 JDK17&#xff09; Git IntelliJ IDEA&#xff08;可选&#xff09; Docker &#xff08;可选&#xff09; 项目介绍 在本任务中&#xff0c;将分为 3 个子模块进行独立开发&#xff…...

linux中互斥锁,自旋锁,条件变量,信号量,与freeRTOS中的消息队列,信号量,互斥量,事件的区别

RTOS 对于目前主流的RTOS的任务&#xff0c;大部分都属于并发的线程。 因为MCU上的资源每个任务都是共享的&#xff0c;可以认为是单进程多线程模型。 【freertos】003-任务基础知识 在没有操作系统的时候两个应用程序进行消息传递一般使用全局变量的方式&#xff0c;但是如…...

安装docker服务,配置镜像加速器

文章目录 1.安装docker服务&#xff0c;配置镜像加速器2.下载系统镜像&#xff08;Ubuntu、 centos&#xff09;3.基于下载的镜像创建两个容器 &#xff08;容器名一个为自己名字全拼&#xff0c;一个为首名字字母&#xff09;4.容器的启动、 停止及重启操作5.怎么查看正在运行…...

CF 896 C Willem, Chtholly and Seniorious(珂朵莉树模板)

CF 896 C. Willem, Chtholly and Seniorious(珂朵莉树模板) Problem - C - Codeforces 大意&#xff1a;给出一个区间 &#xff0c; 要求进行四种操作 &#xff0c; 区间加 &#xff0c; 区间第k大 &#xff0c; 区间推平 &#xff0c; 区间求和。 珂朵莉树模板题 &#xff…...

Android Jetpack组件的全方位分析

Jetpack是一个用于简化Android应用程序开发的工具包&#xff0c;包含了一系列的组件和工具。Jetpack包含了很多组件&#xff0c;如LiveData、ViewModel、Room、Data Binding、Navigation等。 Jetpack组件是一种更高级别的抽象&#xff0c;它们可以提供更简洁、更易于使用的API。…...

Prometheus+Grafana+AlertManager监控SpringBoot项目并发送邮件告警通知

文章目录 PrometheusGrafanaAlertManager监控平台搭建新建SpringBoot项目为Prometheus提供指标新建项目&#xff0c;引入依赖新建接口&#xff0c;运行程序 推送指标到pushgateway 开始监控Grafana连接Prometheus数据源导入Grafana模板监控SpringBoot项目 邮件告警通知同系列文…...