基于JAVA WEB的计算机网络课程在线考试系统的设计与实现
摘 要
本系统基于B/S结构的模式开发,通过网络给广大用户提供了比较可靠、方便、快捷的在线测评平台,系统主要实现了自动抽取试题、人工出题、套题选择、自动阅卷计分、在线测试、用户信息管理、成绩存档、错题管理等功能。用户利用浏览器可以直接访问本平台,通过选择要考的套题进行测试,测试结束后系统自动为用户判卷得出测试成绩,并显示出测试中错题和相应的答案解析,使得用户非常方便完成一次计算机网络课程的在线测评。
关键词 :B/S模式;在线测试;计算机网络;
Abstract
The system uses B/S structure of the model development, through the network to provide customers with a more reliable, convenient and fast online evaluation platform, system is mainly to achieve the automatic extraction questions, artificial out of question, sets of questions selected, automatic scoring line in mind when testing, user information management, performance archiving, error management and other functions. users can use the browser to directly access the platform, by selecting a set of questions to test, after testing the system automatically for the user graders test results obtained, and shows the test wrong questions and corresponding answers to resolve, allows users to easily complete a computer network courses online evaluation.
Key words : B/S mode; Online Testing; Computer Network;
1 引言
1.1 研究背景
计算机网络技术的飞速发展以及计算机技术的发展及计算机的日益普及,现在很多国内外的大学和社会其他部门都已经开设了远程教育,通过计算机网络实现异地教育和培训,从而为在线测评系统发展提供了坚实的基础。相对于传统的笔试,网络在线测评系统集测试、评卷、成绩统计、查看错题等为一体,突破了时间与空间的限制,使得用户在任意时刻、任意地点,只要在有网的情况,均可以完成一次测评,这不仅节省了资源,而且提高了评分的客观性、公正性和准确度,大大改善了平时考试和测试的效率。
1.2 国内外研究现状
1977年Lord经过大量的研究,提出了现代测试理论,他发现由多选题组成的计算机辅助考试,与传统的纸质考试两种不同的考试形式对测试的人来说没有特别显著的差异。而BiNET做了一个有关于自适应考试的研究,研究的内容是智力测试。到了1960年,一些学者认为如果对课间的考试采用CAT可能会更加的好。
随着时间的发展,1996年底,国外渐渐的出现网络教学的系统和平台,像英国的OPEN COOLEGE、美国的NTU这些都是十分典型的例子。在英国的Derby大学运用网络教育的力量成功完成了以色列的本科教育;上海电视大学与澳大利亚昆士兰大学合作完成了在上海开设本科学历的教育课程。
国内的的网上测评技术的研究与西方国家相比相对要晚一些,我国在1995年首条连通所有的计算机互联网CERNET才正式投入使用。虽然起步比较晚,但在网络远程教育方面发展的相当迅猛。北京大学、清华大学、华南理工大学、上海复旦大学、河北大学、北京医科大学、湖南大学这些高等学校都已经在自己的网站上设立了自己的测评系统。很多公司都非常热情的和高校合作开办网络教育的课程。在中国知名度最高的清华大学也在网上举办了计算机网上硕士研究生的教育,全国各地纷纷上网咨询,报名人数更是达到了上万。
2 设计方法研究概述
2.1 可行性研究
2.1.1 经济可行性分析
主要是对项目的经济效益进行评价,利用计算机来实现网上测试以成为适应当今教学管理的方式。开发一套能满足网上测评系统的软件是十分必要的,实现试卷管理和试卷生成自动化,在减少由于认为失误而造成损失的同时,也可以使参加测试的人快速的找出自己的薄弱知识点。本系统在经济上是可以接受的,并且本系统实施后可以显著提高测试效率,有助于提高个人的知识的学习。所以本系统在经济上是可行的。
2.2.2 技术可行性分析
软件方面:网络化测试只需要一个web浏览器即可,用户便能通过浏览器访问到测试平台,在数据库方面有Oracle,它能存储海量数据,并且对数据能够进行优化,其易用性、灵活性、安全性为数据库的开发和存储为开发创造了比较好的条件,所以在软件方面完全具有可行性。
硬件方面:随着科学技术的发展,硬件发展速度突飞猛进,如今的硬件设备完全能满足系统在硬件方面的需求。
2.2 系统开发技术
系统设计基于B/S结构体系,前台采用JSP和JavaScript技术,后台运用目前主流的三层架构, 数据库为ORACLE,开发工具是My Eclipse 8.5,服务器是Tomcat。
2.2.1 B/S模式
B/S(Browser/Server,浏览器/服务器)模式又称B/S结构。它是随着Internet技术的兴起,对C/S模式应用的扩展。B/S模式维护运行都比较简便,能实现从不同的地点,不同的人员,以不同的接入方式访问和操作共同的数据;但它最大的缺点是对网络的依赖性太强,这导致在没有网络的情况下是没有办法访问和操作数据。
随着www和Internet的流行,以往的C/S模式完全无法满足全球网络互连、开放、信心共享的要求,就在此时B/S模式(浏览器/服务器)渐渐出现,它最大的特点是用户可以通过自己本机的浏览器去访问Internet上的数据、图像、动画、文本、视频点播和声音信息,这些信息都是从许多个web服务器应运而生,然而Web服务器可以通过各种各样的方式与数据服务器相连,一般数据库中都存着海量的数据。客户端除了WWW浏览器,一般无须任何用户程序,只需从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Intranet。
2.2.2 JSP技术
JSP网页是由传统网页HTML文件中加入JSP标记和Java程序段构成。JSP(Java Server Page)是由Sun公司提出、多个互联网公司一起参与合作而建立的一种动态网页开发技术的标准。JSP规范是中间件应用服务器、Web服务器、交易系统以及软件开发工具厂商间广泛合作的成果,这种技术为创建一个动态的Web网页提供了非常方便的方法。JSP的设计目的是Web应用系统的构造变得更加方便、容易、快捷,而这些应用程序可以和各种中间件应用服务器、Web服务器、浏览器和各种开发工具协同工作。
JSP继承了Java很多优点,用JSP开发动态网站十分方便,开发效率高。此外,JSP还具有强大的组件(Java Bean)支持此功能,可以方便地实现组件复用,进一步提高了开发效率。
2.2.3 Oracle数据库
Oracle是由美国甲骨文公司开发的一款数据库产品,它具有很多的优点,功能也非常强大,这导致Oracle受到了很多企业家的青睐,在系统开发中应用非常广泛。Oracle数据库的存储结构分为逻辑存储结构和物理存储结构,逻辑存储结构是用于描述Oracle内部组织和管理数据的方式;物理存储结构是用于描述Oracle外部即操作系统中组织和管理数据的方式。
在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个实例来访问和控制磁盘中的数据文件。Oracle有一个很大的内存快,成为全局区(SGA)。
Oracle数据库始终保持一定数量的服务器进程,用户的请求首先被连接到一个称为“调度程序”的特殊服务进程,然后由调度程序为用户分配一个服务器进程为其提供服务。这意味着只需要使用很少的服务器进程,便可以为多个用户进程提供服务。
2.2.4 自动生成试卷技术
自动生成试卷的关键在于随机抽取试题,并保证抽取的试题不能重复,但是在数据库中如果不断频繁的抽取试题又显得效率比较低,所以问题的核心在于随机、不重复、高效,实现此技术主要有两种方法。
第一种 是利用java中随机函数,抽取出符合要求的试题,但为了保证抽取试题不重复,可以给每一道试题在数据库中加入一个mark字段,在抽取的过程中,如果该试题被抽取到,则将该试题的mark字段置为1,这样我们每抽取一次都会先判断这道试题的mark字段是否为1,如果为1,那么本次抽取无效进入下一次随机,否则抽取有效。这种方式需要在数据库中加入一个mark字段,并且每次随机时都需要判断mark字段的值,显得比较笨重,因此系统采用的是第二种方法。
第二种 方法更为可靠、高效、复杂,该算法主要分为三个步骤:第一步是得到随机抽取试题总数和题库中试题总数,然后生成一个1到题库试题总数的阵列,阵列模型可以由程序中数组构造;第二步是生成随机数将阵列打乱;第三步是根据要求抽取试题数,如果题库中试题总数为10题,需要抽取5题,那么最后结果为取打乱后阵列的前5个即可满足要求。
第一步:生成1到题库总数阵列(假如题库中有十道试题)如表2-1所示。
A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 |
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
第二步:生成两个随机数,如3和6,此时交换索引为3和6中的内容,交换后阵列如表2-2所示。
A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 |
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 6 | 4 | 5 | 3 | 7 | 8 | 9 | 10 |
第三步:不断重复第二步就可以将阵列打乱,如果需要抽取的试题数为5,那么此时可以取(1,2,6,4,5),最后根据这些题号在数据库中进行相应查询即可。
2.2.5 简答题批阅算法
网络在线测试是很难实现主观题精准的批阅,因为在传统的人工阅卷过程中,不同的人批阅的结果也会不一致,用系统就更难实现了,这也是技术上的一大瓶颈。
本系统实现了简答题批阅算法,算法的思想主要是计算两个字符串之间的Levenshtein 距离,Levenshtein 距离又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数,编辑操作包括插入、删除、替换操作,编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance。举个简单的例子,现在比较字符串abc和abe之间的差异,算法的实现步骤如下:
将字符串想象成下表2-3的结构 。A处 是一个标记,为了方便讲解,不是这个表的内容。
abc | a | b | c | |
---|---|---|---|---|
abe | 0 | 1 | 2 | 3 |
a | 1 | A处 | ||
b | 2 | |||
e | 3 |
计算A处的值 。它的值取决于:左边的1、上边的1、左上角的0,按照Levenshtein distance的意思:上面的值和左面的值都要求加1,这样得到都是2。A处,由于是两个a相同,左上角的值加0.这样得到0+0=0,最后算出三个值,左边计算后为2,上边计算后为2,左上角计算为0,所以A处取他们里面最小的0,可用一个公式表示A处的值:min{左边值+1,上边值+1,(0,1)}。
计算出A处值后,变成如下表2-4 。B处的值根据第二步得到。
abc | a | b | c | |
---|---|---|---|---|
abe | 0 | 1 | 2 | 3 |
a | 1 | 0 | ||
b | 2 | B处 | ||
e | 3 |
依次类推得到填写完整表 如下表2-5所示。
abc | a | b | c | |
---|---|---|---|---|
abe | 0 | 1 | 2 | 3 |
a | 1 | A处0 | D处1 | G处2 |
b | 2 | B处1 | E处0 | H处1 |
e | 3 | C处2 | F处1 | I处1 |
计算相似度。先取两个字符串长度的最大值(maxlength),操作数记为A,那么两个字符串之间的相似度可表示为:1-(A/maxLength),最后得出abc和abe之间的相似度为0.666。
现在要解决的问题是将这种思想如何用程序实现,那么需要将二维表格在程序中表示出来,解决方案是用二维数组表示上面所示二维表,通过双层for循环和一定的算法可以计算出两个字符串的距离,这样就可以比较两个字符串之间的相似度。
3 系统的设计与实现
3.1 系统功能需求分析
3.1.1 功能描述
-
系统角色分为:管理员、用户
-
管理员输入用户名和密码登入系统
-
管理员登入系统后,可以对用户基本信息进行增删改查操作
-
管理员登入系统后,可以对题库进行增删改查
-
管理员登入系统后,按照一定的步骤手动生成试卷,并且可以对试卷进行增删改查
-
管理员登入系统后,可以对某个试卷进行授权操作
-
用户注册个人信息
-
输入用户名和密码登入系统
-
用户登入系统后,可以对个人信息进行修改
-
用户登入系统后,可以选择某一套试题进行测试
-
用户登入系统后,测试完成一套试题,可以查看此套试题成绩
-
用户登入系统后,测试完成一套试题,可以查看此套试题成绩排名
-
用户登入系统后,测试完成一套试题,可以查看此套试题错题
3.1.2 参与者用例图
管理员用例图如图3-1所示。
用户用例主要包括注册、登录、修改个人信息、在线测试、查看成绩、查看错题、查看排名等。用户用例图如图3-2所示。
3.2 系统流程图
本系统拥有管理员和用户两种角色,管理员登录系统后能够进行用户信息管理、题库管理、试卷管理、考试管理;用户登录后可以进行测试信息管理、成绩管理、我的测试管理、个人信息管理。系统整体结构图如图3-3所示。
管理员登录系统后,点击用户管理系统会查出所有的用户信息,管理员可以添加用户,也可以选中一条用户信息后,对该信息进行查看详情、删除、修改等操作。用户信息管理流程图如图3-4所示。
管理员可以对单选题、多选题、填空题、判断题、简答题进行添加,添加之前需进行题目重复验证避免相同的题目产生。管理员添加试题流程图如图3-5所示。
管理员手动生成试卷包括很多个步骤,首先需要填写试卷的基本信息,然后点击下一步添加各个题型的题目,题目需要管理员手动添加。管理员生成试卷流程图如图3-6所示。
添加完一套试卷后,用户是不能直接在网上进行测评的,需要管理员选中试卷点击授权,那么此套试卷才可以在网上进行测试,点击查看详情可以查看试卷的一些基本信息。管理员试卷授权流程图如图3-7所示。
用户登录系统后,可以选中某一试卷进行测试,测试完成后点击提交,系统会根据用户答题情况来给定分数,系统实现了简答题批阅算法,所以用户测试完一套试卷后是全自动化批阅试卷的过程。用户在线测试流程图如图3-8所示。
当用户测试完一套试题后,点击最新成绩查询,界面上会显示出用户最近一次测试的成绩,点击历史成绩查询会将用户以前参加的所有试题都罗列出来,用户也可以选择某套试卷点击查看错题,系统会显示出这套试卷的错题信息给用户参考。用户查看成绩以及错题流程图如图3-9所示。
3.3 系统数据分析
3.3.1 数据实体图
用户实体包括用户Id、用户名、密码信息。用户登陆实体如图3-10所示。
单选题实体包括单选题主键、单选题编号、单选题题目、A选项、B选项、C选项、D选项、答案、答案解析。单选题实体如图3-11所示。
多选题试题包括多选题主键、多选题编号、多选题题目、A选项、B选项、C选项、D选项、E选项、答案、答案解析。多选题实体图如图3-12所示。
判断题实体包括判断题主键、判断题编号、判断题题目、判断题答案、答案解析。判断题实体图如图3-13所示。
填空题实体包括填空题主键、填空题题目、填空题编号、填空题答案、填空题答案解析。填空题实体图如图3-14所示。
简答题实体包括主键、简答题题目、简答题编号、简答题答案、简答题答案解析。简答题实体图如图3-15所示。
试卷实体包括试卷主键、试卷编号、试卷题目、单择题编号集、多选题编号集、填空题编号集、判断题编号集、简答题编号集。试卷实体图如图3-16所示。
3.3.2 数据表
数据库表设计在整个软件开发过程中起着至关重要的作用,一个优秀的数据库设计可以大大简化开发,提高开发效率。本系统数据库设计共13张表,下面用二维表格一一进行描述。
用户表t_user
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[username] | 用户名 | Varchar2(30) | N | 唯一 |
[password] | 密码 | Varchar2(30) | N |
用户信息表t_student
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[stu_id] | 用户登录名 | Varchar2(30) | N | 外键 |
[stu_name] | 用户姓名 | Varchar2(50) | Y | |
[stu_sex] | 用户性别 | Varchar2(20) | Y | |
[stu_qq] | 用户QQ | Varchar2(20) | Y |
单选题表t_choice
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[choice_num] | 单选题编号 | Number | N | 唯一 |
[choice_ques] | 单选题题目 | Varchar2(50) | N | |
[a] | A选项 | Varchar2(50) | N | |
[b] | B选项 | Varchar2(50) | N | |
[c] | C选项 | Varchar2(50) | N | |
[d] | D选项 | Varchar2(50) | N | |
[choice_ans] | 单选题答案 | Varchar2(5) | N | |
[answer_anlysis] | 答案解析 | Varchar2(50) | N |
多选题表t_multi_choice
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[mc_num] | 多选题编号 | Number | N | 唯一 |
[mc_ques] | 多选题题目 | Varchar2(50) | N | |
[a] | A选项 | Varchar2(50) | N | |
[b] | B选项 | Varchar2(50) | N | |
[c] | C选项 | Varchar2(50) | N | |
[d] | D选项 | Varchar2(50) | N | |
[e] | E选项 | Varchar2(50) | N | |
[mc_ans] | 多选题答案 | Varchar2(5) | N | |
[answer_anlysis] | 答案解析 | Varchar2(50) | N |
判断题表t_tfng
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[tfng_num] | 判断题编号 | Number | N | 唯一 |
[tfng_ques] | 判断题题目 | Varchar2(50) | N | |
[tfng_ans] | 判断题答案 | Varchar2(50) | N | |
[answer_anlysis] | 判断题答案解析 | Varchar2(50) | N |
填空题表t_completion
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[completion_num] | 填空题编号 | Number | N | 唯一 |
[completion _ques] | 填空题题目 | Varchar2(50) | N | |
[completion _ans] | 填空题答案 | Varchar2(50) | N | |
[answer_anlysis] | 填空题答案解析 | Varchar2(50) | N |
简答题表t_short_answer
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[sa_num] | 简答题编号 | Number | N | 唯一 |
[sa _ques] | 简答题题目 | Varchar2(50) | N | |
[sa _ans] | 简答题答案 | Varchar2(50) | N | |
[answer_anlysis] | 简答题答案解析 | Varchar2(50) | N |
试卷表t_paper
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[paper_num] | 试卷编号 | Number | N | 唯一 |
[paper_name] | 试卷名称 | Varchar2(50) | N | |
[dx_num] | 单选题集 | Varchar2(50) | N | |
[mul_num] | 多选题集 | Varchar2(50) | N | |
[pd_num] | 判断题集 | Varchar2(50) | N | |
[tk_num] | 填空题集 | Varchar2(50) | N | |
[sa_num] | 简答题集 | Varchar2(50) | N |
试卷信息表t_paper_info
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[paper_num] | 试卷编号 | Number | N | 外键 |
[dx_num] | 单选题个数 | Number | N | |
[dx_value] | 单选题分值 | Number | N | |
[mul_num] | 多选题个数 | Number | N | |
[mul_value] | 多选题分值 | Number | N | |
[pd_num] | 判断题个数 | Number | N | |
[pd_value] | 判断题分值 | Number | N | |
[tk_num] | 填空题个数 | Number | N | |
[tk_value] | 填空题分值 | Number | N | |
[sa_num] | 简答题个数 | Number | N | |
[sa_value] | 简答题分值 | Number | N | |
[total_time] | 总时间 | Number | N | |
[total_value] | 总分 | Number | N | |
[user_times] | 使用次数 | Number | N | |
[status] | 是否授权 | Number | N |
标准答案表t_stanswer
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[paper_num] | 试卷编号 | Number | N | 外键 |
[dx_answer] | 单选题答案 | Varchar2(50) | N | |
[mul_answer] | 多选题答案 | Varchar2(50) | N | |
[pd_answer] | 判断题答案 | Varchar2(50) | N | |
[tk_answer] | 填空题答案 | Varchar2(50) | N | |
[sa_ answer] | 简答题答案 | Varchar2(50) | N |
答卷表t_answer
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[paper_num] | 试卷编号 | Number | N | 外键 |
[stu_id] | 用户id | Varchar2(30) | N | 外键 |
[dx_answer] | 单选题答案 | Varchar2(50) | N | |
[mul_answer] | 多选题答案 | Varchar2(50) | N | |
[pd_answer] | 判断题答案 | Varchar2(50) | N | |
[tk_answer] | 填空题答案 | Varchar2(50) | N | |
[sa_ answer] | 简答题答案 | Varchar2(50) | N |
成绩表t_grade
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[paper_num] | 试卷编号 | Number | N | 外键 |
[stu_id] | 用户id | Varchar2(30) | N | 外键 |
[dx_value] | 单选题得分 | Number | N | |
[mul_value] | 多选题得分 | Number | N | |
[pd_value] | 判断题得分 | Number | N | |
[tk_value] | 填空题得分 | Number | N | |
[sa_ value] | 简答题得分 | Number | N | |
[total] | 总分 | Number | N |
错题表t_error
列名 | 中文含义 | 数据类型 | 空值 | 注释 |
---|---|---|---|---|
[id] | Id | Number | N | 主键 |
[paper_num] | 试卷编号 | Number | N | 外键 |
[stu_id] | 用户id | Varchar2(30) | N | 外键 |
[dx_answer] | 单选题错题集 | Varchar2(50) | N | |
[mul_answer] | 多选题错题集 | Varchar2(50) | N | |
[pd_answer] | 判断题错题集 | Varchar2(50) | N | |
[tk_answer] | 填空题错题集 | Varchar2(50) | N | |
[sa_ answer] | 简答题错题集 | Varchar2(50) | N |
3.4 系统模块实现
3.4.1 注册、登录页面
本系统对用户来说需要先注册,然后才能登录系统在线测试。而对于管理员来说可以直接登录系统进行一系列的管理和操作。注册页面如图3-17所示。
**用户注册页面 **
**用户登录页面 **
管理员输入正确用户名和密码登录成功后,显示主页面如图3-19所示。
用户输入正确用户名和密码登录成功后,显示主页面如图3-20所示。
3.4.2 管理员用户管理模块
管理员登录成功后,可以对用户进行管理,主要包括分页查看所有用户信息、对某一用户进行修改操作、删除选中用户、查看某一用户详细信息。分页查看所有用户信息,删除选中用户页面如图3-21所示。
对某一用户进行修改操作页面如图3-22所示。
查看选中用户详细信息如图3-23所示。
3.4.3 管理员题库管理模块
管理员登录系统后,可以往题库中添加不同题型的题目,题型包括选择题、多选题、判断题、填空题、简答题。系统将五种题型的添加页面集成到一个主页面,使得题型添加时更加清晰、直观,主页面如图3-24所示。
在添加题目操作的过程中,有时难免会出现不合法的操作,例如:题目为空、单选题的某个选项为空、单选题的选项出现重复等,当出现这些操作时,系统会响应相应的触发条件通过ajax请求后台,后台会处理这些操作给管理员提示不合法的操作信息,使界面更加友好。不合法操作如图3-25所示。
管理员将题目添加到题库后可以查看不同题型的题目列表,同样,系统将多种题型的题目查找集成在一个主页面,通过这个主页面,管理员可以对某一具体题目进行查看、删除操作。查看多种题型题目列表主页面如图3-26所示。
查看某一具体题目详细信息如图3-27所示。
3.4.4 管理员试卷管理模块
管理员在系统中可以自动生成试卷也可以手动添加试卷,试卷添加分为六个步骤,第一个步骤是试卷的基本信息添加,主要包括试卷的名称、测试时间、题型分配情况等一些基本信息,剩下步骤为试卷各种题型题目选择性的添加,题目来源于系统题库中,试卷添加第一个步骤如图3-28所示。
某种题型题目添加页面如图3-29所示。
当试卷基本信息和各种题型题目添加完成后,会请求后台程序,此时后台需要将试卷的基本信息、试卷题型题目信息、试卷标准答案录入到数据库表中,这涉及到试卷表、试卷信息表、标准答案表这三张表,在试卷表中需要将各种题型的题目存入数据库中,这就需要将单个题型的题目编号集以某种规则存入数据库表中,当程序读取这些数据时,也需要按照同样的规则进行解码,将特殊字符串转换成某种题型题目的编号集。
管理员可以对试卷进行管理,主要包括分页查询所有试卷、查看详细信息、删除等操作,试卷分页查询和删除页面如图3-30所示。
查看页面详细信息如图3-31所示。
3.4.5 管理员测试管理模块
管理员添加完一套试卷后,用户是不能直接在浏览器上进行测试的,需要管理员对该套试题进行授权操作,用户才能进行测试,试卷授权页面如图3-32所示。
3.4.6 用户我的测试管理模块
当用户点击我的测试模块中在线测试,会展示所有可以进行测试的试题,当然同一个人只能测试某套试卷一遍,当再次操作时,会提示不能对试卷进行重复测试,在线测试试题列表如图3-33所示。
当用户点击在线测试试题列表中开始考试,用户便可以开始一次测试,测试完成后,系统会自动的为这次测试给出理论上的评分。在线测试页面如图3-34所示。
当用户测试完一套试卷后,点击提交试卷,如果存在没有作答的题目,系统会给出哪种题型第几题没有作答提示,全部作答完成后试卷便会提交到后台进行处理, 首先后台需要将用户的答案保存在答题表中;其次也是最重要的需要将用户答案与后台数据库中标准答案进行比对,然后得出用户每个题型的得分,并将结果存入到成绩表中;最后根据用户所提交的答案与后台标准答案比对后,将错题信息添加到错题表中,对于错题信息应包括错题题号、用户答案、标准答案、答案解析等基本信息。在开发本系统的过程中,存在着一大难点是客观题的匹配算法,一般主观题通过系统进行匹配很少出现误差的情况,而主观题不然,如今简答题的答案不是固定不变,用户答题可以从多个角度进行阐述,只要合理即可,所以给这方面的系统带来了很大的难度,主观题的批阅给出的分数只能是一个近似值,很难达到精确的地步,这类系统在开发过程中主观题一般设计为人工阅卷与系统阅卷相结合。
本系统实现了简答题批阅的算法,但是也只能是一个近似值,该算法首先是由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance,算法的实现原理为:两个字符串之间,由一个字符串转换成另一个字符串所需要的操作数,对字符串的操作包括插入、删除、替换,最后两字符串相似度可以表示为1-操作数/两字符串中较长字符串字符数。算法实现如下:
java
public static float levenshtein(String str1,String str2) {
//计算两个字符串的长度。
int len1 = str1.length();
int len2 = str2.length();
//建立一个二维数组用于计算操作数
int[][] dif = new int[len1 + 1][len2 + 1];
//对数组赋初值
for (int a = 0; a <= len1; a++) {
dif[a][0] = a;
}
for (int a = 0; a <= len2; a++) {
dif[0][a] = a;
}
//计算两个字符是否一样,计算左上的值
int temp;
for (int i = 1; i <= len1; i++) {
for (int j = 1; j <= len2; j++) {
if (str1.charAt(i - 1) == str2.charAt(j - 1)) {
temp = 0;
} else {
temp = 1;
}
//取三个值中最小的
dif[i][j] = min(dif[i - 1][j - 1] + temp, dif[i][j - 1] + 1, dif[i - 1][j] + 1);
}
}
//计算相似度
float similarity = 1 - (float) dif[len1][len2] / Math.max(str1.length(), str2.length());
return similarity;
}
//该方法计算三个整数中最大数
private static int min(int... is) {
int min = Integer.MAX_VALUE;
for (int i : is) {
if (min > i) {
min = i;
}
}
return min;
}
3.4.7 用户成绩查询模块
当用户点击成绩查询模块中最新成绩查询,系统会查出用户最近一次的测试信息,查看最新成绩页面如图3-35所示。
同样当用户点击历史成绩查询时,会查出用户以前所有测试成绩列表。
3.4.8 用户测试信息管理模块
当用户点击测试信息中成绩排行时,用户可以很清楚的知道自己测试过的试题在所有测试过人中的排名,成绩排行页面如图3-37所示。
当用户点击测试信息中我的错题时,可以查看测试试题中自己的错题情况,从而知道自己在哪些方面存在不足,需要加强学习。错题列表如图3-38所示。
点击错题列表中查看详情,便可以查看选中试题的错题信息,错题详情页面如图3-39所示。
3.5 测试
测试在一个软件开发周期中起着重要的作用,一个好的软件是经过专业的测试人员无数次测试才会没那么多bug,测试是为了补充系统的不足,使系统更加完美,用户的体验更好,试想一下,如果你开发的软件没有经过严格的测试,而发布在互联网进行使用,那是多么可怕的一件事,用户随意点击页面便会出现很多错误,这给用户的感觉简直就是差劲!我认为这样的软件是失败的,因此测试与开发是同等重要的,并且测试人员与开发人员必须协调好才能开发出优秀的软件。
测试方法主要包括黑盒测试和白盒测试,但软件测试有一个致命的缺陷,即测试的不完全、不彻底性,由于任何程序只能进行少量的有限的测试,在未发现错误时,是不能说明程序中没有错误。
测试用例如下:
-
管理员输入用户名 :admin,密码:admin登入系统,点击用户管理系统,查看用户列表是否显示成功;在用户列表中点击修改、查询、删除操作看是否能够执行
-
管理员输入用户名 :admin,密码:admin登入系统,点击题库管理,查看题库列表是否显示成功;选择不同的题型后,查看题目列表是否显示成功;在题目列表中点击查看,是否能够显示题目的详情
-
管理员输入用户名 :admin,密码:admin登入系统,点击试卷管理,填写试卷基本信息后,看是否能够自动生成试卷,点击手动生成试卷看是否能添加成功
-
管理员输入用户名 :admin,密码:admin登入系统,点击试卷授权功能,当给某一试卷授权后,检测用户登入系统是否能够对该套试卷进行测试
-
用户点击注册,填写用户名 :123456,密码123456进行注册,注册完成后点击登录,看是否能够正常登录
-
用户输入 :123456,密码:123456登入系统,点击在线测试,选择试题后,看是否能够在线考试
-
用户输入 :123456,密码:123456登入系统,点击查看成绩看是否能够查看当前考试的成绩
另外在系统设计和测试的过程中,发现系统存在以下几方面的不足:
-
系统如果需要做的更完美,应该可以在线测试多个科目的试题
-
在主观题的批阅过程中,始终无法达到精确的地步,所以算法需要做进一步改进优化
-
计算机网络测试仍然存在着局限性,比如不能对计算机网络课程中画图题、连线题进行测试,所以这是需要改进的
4 总结与展望
在这次系统的设计与开发中我遇到了很多问题,像需求不是很明确、数据库设计出现问题、软件后台开发框架不能熟练的运用、简答题的批阅算法等,每一个问题都给我带来了巨大的困惑,起初需求不是很明确,当按照任务书上功能模块进行开发时,你会发现以前写的功能模块完全没有办法实现,原因是没有好好的理解需求和认真深入分析这个系统,不明确哪些功能模块可以实现,而哪些功能模块不能实现,所以我明白软件设计过程中需求分析、概要设计是相当重要的,可以直接导致一个软件设计的成败,终于理解前辈们通过自己亲身经历写下软件工程这本书的重要性,这是留给后人最宝贵的资料。然而在数据库的设计中也给我带来了不少麻烦,刚开始我便设计数据库,才发现一个不深入了解系统的人是很难设计出数据库的,于是我花了两三天的时间,认真专研系统,理清自己的逻辑思路,按照用户注册-登录-在线测试-查看成绩-查看错题这个流程渐渐的将数据库设计完成,当然在后期中也存在了一些改动,才会有今天这个成果。刚开始系统后台框架使用的是s2sh,但在一个简单的错误调试中花费了我大量的时间,让我无法专研到系统业务逻辑的实现,于是我选择了比较直接的jsp和mvc模式开发,这大大提高了我的开发效率,所以我认为系统实现的方法应该选择合理,不然会耽搁很多时间,不能在规定的时间完成任务。
这个系统从需求分析、数据库设计、代码开发、测试都是自己独立完成,以前没有自己独立完成一个系统,当开发完成后,心里有特别大的成就感,在遇到问题-解决问题-遇到新问题这种重复模式中,自己的能力有了很大的提高,我想程序设计者应该要勇于面对问题,并且通过自己的方式寻找解决办法,在解决问题时,你往前又迈了一大步,这对自己是一种经验的积累,同时也会让自己走得更高更远。
参考文献
[1] 吕雯雯.网上报名与在线考试系统的设计与实现[J].电脑知识与技术,2012,8(7):43-47
[2] 魏振,王婷,宫禹.基于JSP实验系统总体设计[J].黑龙江科学,2012,6(5):20-30
[3] 朱静.基于WEB的在线考试系统的设计与实现[J].福建电脑,2007,4(23):14-25
[4] 郑飞.基于J2EE的医药管理系统的设计与实现[J].信息技术,2012,6(5):12-14
[5] 唐超礼,黄友锐.基于B/S模式的教师信息管理系统的设计与实现[J].中国科技信息,2006,3(8):19-36
[6] 吴爽.教务管理的研究与设计[J].华东师范大学,2010:10-15
[7] 冯彦.基于JSP和Struts框架动态Web开发技术研究以及实践[J].吉林大学,2005,6(7): 33-45
[8] 赵高丽,冀红举,宋军平.基于SQL的高校考务管理系统的设计与实现[J].河南机电高等专科报, 2006,14(2):45-78
[9] 靳新,李莹基.JSP的网络文件管理系统的设计与实现[J].沈阳理工大学,2007,5(7),20-21
[10] 王妍.JSP的开发技术[J].科技创新与应用,2008,3(5):31-33
[11] 蒋毅.WEB与数据库连接技术应用对比分析 [J].计算机光盘应用,2011,11(23):16-25
[12] 李绍静,汤玉琛,王宝盼.基于JSP技术的就业信息网的架构与实现[J].计算机与现代化,2012,6(5):12-14
[13] 张晓孪.基于SSH的团购网站的设计与实现 [J].电子设计工程,2009,3(8):19-23
[14] 姜南.基于JSP技术的学生信息管理系统的设计与实现[J].计算机与现化,2010,3(8):10-15
[15] 房明.基于JSP技术的教材管理信息系统设计分析[J].山西科学,2009,6(7):33-45
[16] 陈月霞.浅谈在线考试系统的结构与实现[J].科技风,2007,14(2):22-28
[17] Chen, Jing M., Josef Cihlar. Retrieving leaf area index of boreal conifer forest using landsat TM images [J]. Remote Sen. Environ, 1996, 55(2): 153-162
[18] akehurst B C, Tobacco(Second edition). New York: Longman press, 1981: 51-58
[19] Rafael C Gonzalez, Richard E Woods, Steven L Eddins. Digital Image Processing Using MATLAB.Beijing: Publishing House of Electronics Industry, 2004: 153-222
[20] Mckee, G.W., A coefficient for computing leaf area in hybird corn. Agron. J. 1964, 56(2): 240-241
[21] Debayle J, Pinoli J C. Multiscale image filtering and segmentation by means of adaptive neighborhood mathematical morphology[J]. Image Processing, 2005, 3(1 l-14): 537-540
[22] Punt T. Entropic thresholding: A new approach[J]. CGIP, 1981, 16(21): 209-320
[23] Meyer, Elsevier Trends Division. Computer & Security. Kidington, Oxford, UK, 1982
[24] Bonanza Drive. Database. P.O.Box 70, Park City, UT 84060, USA, 1978
[25] James A.O’Brien. Introduction to Information Systems[M]. McGraw-Hill, 2002
参考文献
- 基于JAVA考试培训系统的设计与实现(辽宁科技大学·李青军)
- 基于WEB的在线考试系统的设计与实现(北京邮电大学·李静云)
- 基于JavaEE技术网上在线考试系统(电子科技大学·邱崇志)
- 基于Java的在线考试系统(电子科技大学·卓先德)
- 基于Flex与J2EE的在线考试系统的设计与实现(电子科技大学·罗建明)
- 基于J2EE技术的考试系统的实现(大连海事大学·齐崧然)
- 基于J2EE技术的考试系统的实现(大连海事大学·齐崧然)
- 网络在线考试系统的设计与实现(云南大学·熊国铨)
- 基于.NET的WEB计算机在线考试系统的设计与实现(内蒙古大学·刘秉政)
- 基于J2EE的远程教育考试系统分析与设计(电子科技大学·黄城)
- 基于J2EE的在线考试系统的设计与实现(吉林大学·李桂玲)
- 基于J2EE技术的考试系统的实现(大连海事大学·齐崧然)
- 基于Flex与J2EE的在线考试系统的设计与实现(电子科技大学·罗建明)
- 基于WEB的在线考试系统的设计与实现(北京邮电大学·李静云)
- 计算机基础课程web考试系统的设计与实现(内蒙古大学·王春红)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码客栈网 ,原文地址:https://m.bishedaima.com/yuanma/35572.html