基于Java+MySQL 实现(Web)网络考试系统
网络考试系统
1 绪论
1.1 研究的目的及意义
在我们以往的考试经历中,我们可以看到,每次考试都需要经过出试卷、印试卷、发卷、做卷、收卷、阅卷、统计等过程,这几个过程有着很强的先后次序,不能顺序颠倒。这些过程中,又以出卷、阅卷和统计最为复杂,当一次考试涉及的人数众多时,老师需要批阅非常多的卷子,重复的批阅卷子浪费了大量的时间,此外,不仅效率底下,同时大量的阅卷工作也让老师疲于应付,最后导致阅卷的准确率下降。即便阅卷完成之后,工作还没结束,还需要对这些卷子进行分数登记、成绩统计以及对各个题目进行错误率统计,这些工作消耗时间非常多,因此效率也是非常低的。此外,从学生角度出发,每次做卷都要准备笔和草稿纸,麻烦且不符合环保的要求,从老师的角度出发,如果能够减少出卷、阅卷和统计的时间,那么可以腾出更多的时间用在其他的地方。因此本文基于 JavaWeb 技术希望开发一套网络考试系统来解决出卷、阅卷、统计花费时间过多的问题,同时为学校教务信息化作出一份贡献。
本文开发的网络考试系统具有一定的现实意义,主要是解决教师在出卷、阅卷和统计上花费时间过多的问题。开发一个系统需要考虑很多方面的问题,比如说时效性和高效性这是两个最最常见的因素,因为时效性关系到你的系统在投入使用时是不是真的能够解决当前所存在的这些问题,网络考试系统在国内虽然已经初具规模,一些学校也在使用这种方式考试,但我觉得目前的考试系统还存在着一些未解决的问题,还需进一步完善。同时高效性也是一个非常重要的因素,如果你的系统用了以后还不如不用那么你的系统必定是一个不成功的产品这也是我们开发需要考虑的一个重要问题。本系统目前只可以实现对一门科目的客观题的考试,基本上还不是特别成熟的一个系统,我还需要考虑如何进行多科目的主客观题型的考试是我以后研究的方向。因此是本系统的开发具有很重要的实际意义,能在当前的发展状态下为学生和教师提供适当的帮助的同时也为今后此类软件的发展提供一定的基础。
1.2 研究开发现状分析
国内考试系统的信息化发展比较缓慢,在广泛化应用的过程中,开发者一方面不断投资购建各种硬件、系统软件和网络,另一方面也不断开发实施了各类教学软件、数据统计、信息记录等应用系统,形成了一定规模的信息化建设体系。可是,由于目前国内的系统还不是很完善,比如一门考试就需要一个系统去支持,这样成本太高,而且我国集体信息化水平有些落后,资金短缺等因素。我国的网络考试系统还没有很好地完全自如的融入到我们的学习生活中,比其他国家有一定的差距。国外的管理与国内完全不同,不但在线考试化建设早,而且他们有坚强的技术团队来提供技术基础。
1.3 研究的内容
本系统的研究目的在于实现网络考试系统,实现该系统要完成的工作包括如下几个方面:
(1)了解全球的网络考试系统的发展历程和现状。深入解析其工作流程。
(2)根据该系统的工作流程设计其总体结构,绘制其结构图。
(3)设计系统的功能模块,如:后台系统运行维护模块。包括试题的录入、筛选、删除,随机生成,提交,打分等功能。前台考试模块,包括题的分发、时间的记录等功能。教师组题模块,具有考题的生成、选择、分数评判的等能力。设计并实现教师考前出题的组题功能模块。包括题类型,数量,每个题考分的设定等。
(4)熟练地运用和掌握 JavaWeb 技术和 MySQL 数据库编程,进行考试系统的程序代码编写、调试运行以及功能测试。
(5)了解电脑服务器的运行问题以及原理;大数据库的储存;以及大数据库与程序的互相交流问题。
2 可行性与需求分析
2.1 可行性分析
可行性分析是用最小的代价在最短的时间内确定问题是否能够解决。我首先需要进一步对上一章节目前考试系统现状的分析。之后初步的确定项目的规模跟目标,确定项目的约束跟限制,必须分析几种可能解法的利弊,从而判定原定系统的目标和规模是否能够实现,系统完成后带来的效益是否能够达到最大值。总之,只有认真的进行了可行性分析,才会避免或者减轻项目开发后期可能出现的困境。
- 经济可行性
经济可行性的重要方面是研究成本,其中包含毕业设计所需的开发成本,对开发成本是不是会大于开发项目前期预计利润进行预算。在结合上述所有情况的分析下,我觉得自己的毕设课题是经济可行性好的。首先开发此次毕设软件不要前期的投入资金,其次是自己设计的,最多是自己去图书馆找书,在实验室做项目,通过老师教导,同学帮助,这些都是免费的,再有就是需要一台电脑,这些都是能接受的,成本很小的同时我也可能够提升我在编码方面的实现能力。
- 技术可行性
本课题使用的是 Java 技术,开发平台选用 Eclipse,Eclipse 有着完整配备的功能,便于初学者使用还有代码提示,让我使用更加得心应手。在决定了编程框架后,再说用 Java 语言编码的优点:快,精简,可用性高等。同时,使用的数据库是 MySQL,开源的 MySQL 增添了可视化和稳定化的优点,而且安全方面也做得很好,更别说它的强大的保存数据功能以及查询数据功能。
- 操作可行性
该网络考试系统部署容器为 Tomcat,当需要进行考试时,只需要配置 Tomcat 服务器,便可进行考试。本系统采用 JSP 技术,利用网络就能够进行访问和操作,且界面简单易操作,用户只要有电脑,都能进行访问和操作。本系统具有易操作、易管理、交互性好的特点,在操作上是非常简单的。因此本系统可以进行开发。
2.2 需求分析
2.2.1 功能需求分析
网络考试系统主要用于实现高校在线考试,基本功能包括:自动组卷、试卷发布、试卷批阅、试卷成绩统计等。本系统结构如下:
(1)学生端:
登录模块:登录功能;
网络考试模块:可参加考试,并查看考试结果,提交试卷后老师允许的情况下查看错题;
(2)超级管理员端:
登录模块:实现管理员登录功能;
用户管理模块:实现用户信息的增加、修改、查看功能;
角色权限管理模块:实现角色的增加、修改、查看功能;
试卷管理模块:实现试卷信息的增加、修改、查看功能;
试题管理模块:实现试题信息的增加、修改、查看功能;
(3)试题管理员端(老师):
试卷管理模块:实现试卷信息的增加、修改、查看功能;
试题管理模块:实现试题信息的增加、修改、查看功能;
2.2.2 非功能需求分析
1、整个系统的设计中,系统必须满足以下要求:
(1)数据安全性
存储有关隐私权的网络考试等问题的系统数据,需要确保数据的安全性,在网站设计时必须要采取安全防范措施,以解决潜在的安全问题,比如如何防止学生上网查答案。
(2)易用性
在用户权限范围内,可在一个统一风格的界面内即可完成相关的所有业务流程操作或者获取所有相关信息,大大提高操作员的工作效率和易用性,灵活应用本系统。
(3)柔软性
由于这个网络考试系统涉及到范围广泛的业务,设计出的系统必须能够处理接受变化的能力。
(4)扩展性
随着互联网管理业务管理需求的不断变化,老师管理系统必然涉及到业务更新及扩展,这就要求在设计之初就应该考虑良好的可扩展性方案。
3 系统总体设计
3.1. 系统概要功能图
本系统所开发的网络考试系统主要分成了三个模块的主要功能,系统功能、考试功能和学生功能,每个功能都包含了几个子功能,子功能主要包括:对于系统功能方面的管理、角色的管理、用户方面的管理、对于试题管理、对于的试卷管理、学生答题、总结出错题库与得分。系统的概要功能图如图 4-1 所示:
图 4-1 系统概要功能图
3.2 系统基本功能
系统功能的划分方式可以分成很多种类,前面是按照功能模块进行划分,将系统分成三个模块,本章节依据网络考试系统的系统角色不同,可以分成用户端和管理员端。用户端包括:登录功能、学生答题、答题得分以及考完试之后的错题解析。管理员端包括:登录功能、系统功能管理、用户管理、角色管理、题目管理、试卷管理。下面本节主要对各个基本的功能进行一个简介。(此处没有对试题管理员进行详细介绍,因为管理员的题目管理跟试卷管理的功能就是他的功能)
3.2.1 登录功能
登录功能是一个系统的重要组成部分,也是一个系统重要的门户功能,登录功能主要实现了使用者对系统的登录,在本文所设计的体系中,登录主要分成了两种身份:学生用户和管理员。两种身份登陆,能细分系统的功能模块,实现更加方便的操作和管理。
3.2.2 系统答题
系统答题模块是本系统的一个重要功能,可以实现让用户的答题操作。系统答题功能主要是学生用户登录以后操作的,学生用户在输入正确的用户名和密码以后能开始系统答题,系统答题的题目均来自数据库。
3.2.3 答题得分
答题得分功能实现了学生用户在答题结束以后对自己得分情况的查看,该功能就实现了登录系统的学生用户在完成自己的试卷以后,点击体提交就能看到自己的得分,因此该功能是一个展示性质的功辅助能。
3.2.4 错题解析
错题解析功能是系统答题功能的一个辅助或者说优化的功能,只有学生用户在登录系统完成答题以后在老师允许的情况下才能进行该功能的操作,学生答题可能存在一定的错误,对错误题目的查看成为考试系统的子功能。因此本文所设计的错题解析功能,能让学生迅速发现正确或者错误题目,以及解析过程。这样方便自学和改进。学生功能结构图,如图 4-2 所示:
图 4-2 学生系统结构图
3.2.5 系统功 4 能管理
系统功能管理主要实现了对系统的其他功能进行管理,主要包括对新功能的添加和编辑,对现有功能的添加和修改,同时能对现有的功能进行子功能的编辑和修改,修改后的功能可以在系统中被查看。
3.2.6 用户管理
用户管理是一个系统的重要功能之一,对用户的管理可以实现对系统使用者的了解和查看,能让使用者更加方便的使用本系统,用户的种类分为多种,本文主要体现在学生用户和管理者两种用户上面,可以对用户的信息进行添加修改等。
3.2.7 角色管理
角色管理主要是针对用户来设计的,不同的用户拥有不同的权力。换句话说就是操作的权限是不同的。学生账号只能进行答题等行为,而不能进行后台的管理员操作。管理员账号也拥有不一样的权利。这些权力体现在对账号的操作,试卷和题目的管理上,因此对权限的管理能很好的控制系统用户的行为,有利于系统更加稳定的运行。
3.2.8 题目管理
题目管理主要是针对管理员的功能,该功能面向系统中试卷所使用的题目库,在本系统中,管理员能通过对题目的添加和修改对题目进行管理,可以查看现有的题目,同时也能对新的题目进行添加,为试卷的生成提供更多题目的选择。
3.2.9 试卷管理
试卷管理是本系统的核心功能,主要实现的是对学生用户考试答题的试卷进行管理,通过系统随机抽取的题目自动生成试卷并且能将试卷存入数据库,供学生考试时进行选择。管理员功能结构图,如图 4-3 所示:
图 4-3 管理员功能结构图
3.3 数据库设计
数据库的设计十分重要,下面将对本文所使用的数据表进行逐一的介绍。
- 用户表及 ER 图
表 4.1 用户表
字段名 | 数据类型 | 长 度 | 字段含义 | 是否主键 | 是否外键 |
userid | INTEGER | 11 | 用户 ID | 是 | |
roleid | INTEGER | 11 | 角色 id | 是 | |
username | VARCHAR | 20 | 用户账户名 | ||
userpwd | VARCHAR | 20 | 用户密码 | ||
usertruename | VARCHAR | 30 | 真实姓名 |
用户表 ER 图,如图 4-4 所示:
图 4-4 用户表 ER 图
用户 id:每一个登陆的用户都有一个特有的编号;
角色 id:学生、超级管理员、试题管理员,三个角色分别对应一个编号;
账号:登录时需要用到的;
密码:密码对应相应的账号;
姓名:用户的真实姓名;
状态:1 为正常,0 为禁用。
- 角色表
表 4.2 角色表
字段名 | 数据类型 | 长度 | 字段含义 | 是否主键 | 是否外键 |
roleid | INTEGER | 11 | 角色 id | 是 | |
rolename | VARCHAR | 20 | 角色名 | ||
rolestate | INTEGER | 11 | 角色状态 |
角色 id:学生、超级管理员、试题管理员,三个角色分别对应一个编号;
角色名:学生、超级管理员、试题管理员;
角色状态:1 为正常,0 为禁用。
- 功能表 ER 图
表 4.3 功能表
字段名 | 数据类型 | 长度 | 字段含义 | 是否主键 | 是否外键 |
funid | INTEGER | 11 | 功能 ID | 是 | |
funname | VARCHAR | 20 | 功能名 | ||
funurl | VARCHAR | 200 | 功能地址 | ||
funpid | INTEGER | 11 | 顶层功能 ID | ||
funstate | INTEGER | 11 | 功能状态 |
功能表 ER 图,如图 4-5 所示:
图 4-5 功能表 ER 图
功能 id:每个功能对应的编号;
功能名:分别有系统功能管理、角色管理、用户管理、题目管理、试卷管理等;
功能地址:每个功能对应一个地址,用于管理;
顶层功能 id:系统功能包括系统功能管理、角色管理、用户管理,试题管理包括题目管理、试卷管理;
状态:1 为正常,0 为禁用。
- 权限表 ER 图
表 4.4 权限表
字段名 | 数据类型 | 长度 | 字段含义 | 是否主键 | 是否外键 |
rrid | INTEGER | 11 | 角色权限 ID | 是 | |
funid | INTEGER | 11 | 功能 ID | 是 |
权限表 ER 图,如图 4-6 所示:
图 4-6 权限表 ER 图
角色权限 id:每个角色所拥有的权限对应的编号;
功能 id:每个功能对应的编号;
- 试题表 ER 图
表 4.5 试题表
字段名 | 数据类型 | 长度 | 字段含义 | 是否主键 | 是否外键 |
sid | INTEGER | 11 | 试题 ID | 是 | |
scontent | VARCHAR | 150 | 题干 | ||
sa | VARCHAR | 100 | A 选项 | ||
sb | VARCHAR | 100 | B 选项 | ||
sc | VARCHAR | 100 | C 选项 | ||
sd | VARCHAR | 100 | D 选项 |
试题表 ER 图,如图 4-7 所示:
图 4-7 试题表 ER 图
试题 id:每道题对应的编号;
题干:题目的内容;
- 试卷表 ER 图
表 4.6 试卷表
字段名 | 数据类型 | 长度 | 字段含义 | 是否主键 | 是否外键 |
pid | INTEGER | 11 | 试卷 ID | 是 | |
pname | VARCHAR | 11 | 试卷名 | ||
sid | INTEGER | 11 | 试题 ID | 是 |
试卷表 ER 图,如图 4-8 所示:
图 4-8 试卷表 ER 图
试卷 ID:每套试卷对应的编号;
试卷名:试卷对应的名字;
试题 id:每道题对应的编号;
- 学生试卷表 ER 图
表 4.7 学生试卷表
字段名 | 数据类型 | 长度 | 字段含义 | 是否主键 | 是否外键 |
spid | INTEGER | 11 | 试卷 ID | 是 | |
userid | INTEGER | 11 | 用户 ID | 是 | |
sid | INTEGER | 11 | 角色 ID | 是 | |
studentkey | VARCHAR | 10 | 学生答案 | ||
studentstate | INTEGER | 11 | 试题答案 |
学生试卷表 ER 图,如图 4-9 所示:
图 4-9 学生试卷表 ER 图
试卷 ID:每套试卷对应的编号;
用户 id:每一个登陆的用户都有一个特有的编号;
角色 id:学生、超级管理员、试题管理员,三个角色分别对应一个编号;
学生答案:学生做试卷后的结果;
试题答案:每道题的正确答案;
4 系统详细设计
本章主要介绍网络考试系统的详细设计,分别从用户端和管理员端介绍各个功能模块的实现情况和运行截图。下面首先介绍用户端,然后介绍管理员端。
4.1 学生用户端
在这个系统中使用者主要是分为管理员和学生,我在这里先介绍学生用户系统的运行情况。以下是学生用户从登陆到错题解析的整个运行流程情况将在下面的论文中进行展示。
4.1.1 学生用户登录
学生用户登陆,先到这个界面。 如图 5-1 所示:
图 5-1 用户登录运行界面
在进入登录界面以后选择学生登录,再输入正确的用户名和正确的密码,就可以登录。如图 5-2 所示:
图 5-2 用户登录输入界面
用户正确完成登录输入以后,系统会根据用户所输入的信息,通过功能代码实现与数据库中存储数据的对比,从而判别该登录用户是否合法,如果不合法将提示输入正确的登录信息,输入正确则登录系统,进入系统的主界面。
4.1.2 主界面
学生用户正确登录系统之后会跳转到学生用户端的界面,主界面如图 5-3 所示:
图 5-3 学生用户主界面
学生用户的主界面主要包含了试卷列表和查看错题两个功能,试卷列表中罗列了所有考试的试卷,学生可以根据老师的要求选择对应的的试卷进行考试,考试结束以后还可以进行错题查看功能。
4.1.3 系统答题
学生用户登录系统以后选择试卷列表中的试卷进行考试答题,答题界面如图 5-4 所示:
图 5-4 学生用户答题界面
学生要在一定的时间内,完成试卷上的所有题目,然后进行提交,答题的进度和时间的限制可以系统会给出提示,运行界面如图 5-5 所示:
图 5-5 学生用户答题进度界面
4.1.4 答题得分
学生在规定的时间内完成答题,完成以后提交系统,提交系统,系统会根据题库对比得到考试成绩,成绩界面如图 5-6 所示:
图 5-6 学生用户答题成绩界面
计时器(到时自动交卷)功能,交卷时判断试卷是否有未答题、计算得分等功能都在 paper.jsp 中用 JavaScript 来实现
// 交卷功能 判断是否有未答题目 function unAnswer(){ if(unanswer != 0){ layer.open({ title:'警告', content: "还有"+unanswer+"道题目未做!", icon:2, end:function(){ postAnswer(); } }); }else{ postAnswer(); } } //计算得分 function getScore(){ //var spid = n $.post({ url: basePath + 'user/studentPaper?cmd=score&userid='+'${userid}'+'&spid='+ now.getTime(), contentType: false, processData: false, success: function(res) { console.log(res) layer.open({ title:'得分', content: res, icon:1, end:function(){ location.href = basePath+'user/studentPaper?cmd=stupaper'; } }) }, error: function(res) { console.log('error'); } }) } //倒计时功能 //小于10的数字前面补0 function p(n){ return n