◆叶惠仙 黄伟刚 沈文杰
基于ThinkPHP框架的高职校在线考试系统的设计与实现
◆叶惠仙1黄伟刚2沈文杰1
(1.福建农业职业技术学院 福建 350007; 2.厦门理工学院 福建 361006)
在信息化时代下,我院的考试方式也需逐渐实现无纸化,该在线考试系统设计使用Thinkphp框架以Nginx作为应用服务器,以Mysql 作为后台数据库,实现用户管理,题库管理、试卷管理、考生成绩管理、考试自动出题与评卷管理等功能。本系统能满足各科课程教学考核需要,改善我院传统纸质考试模式,减轻教师与教务人员的工作量,提高考试效率,使我院考试制度更趋于完善与信息化。
在线考试系统;Thinkphp架构;Mysql;B/S
随着互联网与计算机技术的不断发展,教育开始步入信息化、网络化。传统的考核测试,由于它涉及试卷命题的组织,打印试卷,考试流程安排,集体阅卷等诸多方面,考试组织时间很长,效率不高;人为阅卷等主观因素,对考试公平也造成了一定程度上的影响。我院共有二三十个专业,数千名学生,每次考试时,监考教师和考场都不能满足需要。所以,对于学校的发展来说,建立一套具备现代化的、新型的在线考试系统是尤为重要的。
我国在线考试系统在一些专业技能考试上应用较多,如国家普通话等级考试、ATA 高新考试,清华大学的网络学堂、mooc 平台等,各高职院校除应用于通识课的在线考试系统外,适应能力不强,题库建设不合理,导致资源的重复建设[1].目前很多在线考试系统都是单一的为某一学科进行设计,缺乏通用性,高职院校和普通高校的不同之处在于学生学习的课程有所不同,高职院校更注重培养学生解决问题的能力,普通高校的学生在学习自觉性上占优,所以高职院校在线考试系统设计应该更强调阶段性的考核及系统化的测试方式。
本研究根据自身的工作经验,深入分析我院的考试模式,提出了基于应用B/S模式的ThinkPHP架构设计,该架构其自身包含了底层架构、兼容处理、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,具有很强的移植性[2]。PHP技术是服务器端脚本语言,是生成动态网页的工具,只需要将其嵌入到 HTML 语言中,就可以和代码一样生成网页。将其应用于在线考试系统,为在线考试系统的开发提供了便利。
我高职校在线考试系统总体架构主要包括三层架构,分别是表现层、业务层和数据层。表现层主要是用户通过浏览实现各个界面的操作,如用户添加、测验查询、题库查看等。业务层主要包括题库管理、试卷管理、考生信息管理、成绩管理、考试管理、题型管理等具体的业务功能[3]。数据层主要是对用户信息及操作信息、题库数据、试卷数据、成绩数据等进行处理及存储,三者的相互交互构建了高职院校在线考试系统的总体架构。
本设计采用快速原型模型来开发,完善在线考试系统功能。以问卷的形式获知管理员、教师、学生的需求,并且获取用户体验数据,作为反馈系统设计开发的参考数据。
管理员功能:能修改密码,用户数据信息,必须确保信息安全无误的传送到服务器,用户每进行一步操作后,数据都会首先缓存到服务器,当用户提交答案后,所有数据都会保存到数据库中。考试时间自动控制,系统自动对考生答卷进行评分,可以有效地防止改卷的违规行为。高职院校没有设专职维护考试系统人员,所以系统的稳定性和安全性是在线考试系统设计的要点。
教师功能:系统实现出卷,自动组卷、自动阅卷和成绩统计功能,以此提高教师的工作效率。实现客观题自动评阅,主观题人工批阅,在自动生成试卷过程中,可以选择设置难易程度进行组卷,并且做到知识点不重复,依据设置的规则,随机生成若干套试卷。
考生功能:考生信息可以自己注册,也可通过系统管理员或任课教师进行批量导入,考生信息建立好之后,考生通过登录口,进入在线考试系统、可修改个人信息,查看考试通知、成绩查询。考试按照要求在规定时间内逐一答题,对有疑问的题目可进行标注,最后选择标注题目再次检查确认,在规定时间内提交试卷,若提前完成,也可点击提交试卷完成考试。本系统的用例如图1所示:
图1 在线考试系统用例图
注册登录:用户通过页面点击注册,使用邮箱或手机号码,选择身份注册,用户输入正确的用户名与密码,系统自动通过搜索数据库进行身份认证,只有找到相应的用户信息才能进入系统,进入系统前,系统自动搜索数据库匹对,判断用户是学生还是教师,进入到相应的考试系统界面中。个人信息修改:进入到个人信息中心,可修改个人信息,如姓名、电话号码、密码等修改。管理员由指定的地址进入后端,管理员不能进入前端,学生与教师不能进入系统后端,保证系统的安全性。学生信息以班级为单位,任课教师可将所任课的班级学生信息批量导入,也可以通过老师的邀请码登入任课教师的班级[4]。教师用户可以修改个人信息,试卷信息,科目信息等;管理员可通过后台修改学生用户与教师用户的信息、试卷信息、科目信息及成绩管理等。用户信息表如表1所示。
表1 用户表
添加用户方法
function insert_user(){
$userdata=array(
'uid'=>$this->input->post('uid'),
'email'=>$this->input->post('email'),
'password'=>md5($this->input->post('password')),
'name'=>$this->input->post('name'),
'tel'=>$this->input->post('tel'),
'sex'=>$this->input->post('sex'),
'contact_no'=>$this->input->post('contact_no'),
'gid'=>$this->input->post('gid'),
'usertype'=>$this->input->post('usertype')
);
if($this->db->insert('savsoft_users',$userdata)){
return true;
}else{
return false;
}
}
(2)科目信息管理:对考试科目与对应课程进行设置。
(3)试卷信息管理: 试题类型分为单选题、多选题、判断题、填空题和分析题,教师逐个题型或逐题上传生成试卷及对自己上传的试卷进行修改、删除、查询;试卷信息主要包括科目类型、试题类型与试题题目3个方面。主要是由任课教师完成。任课教师需要在数据库中增加考试科目,也可以对现有的科目进行修改、删除,并将数据保存在试题表单数据库中[5]。
表2 试卷表
修改试卷信息代码:
function update_quiz($quid){
foreach($_POST['cid'] as $ck => $val){
if(isset($_POST['noq'][$ck])){
if($_POST['noq'][$ck] >= '1'){
$userdata=array(
'quid'=>$quid,
'cid'=>$val,
'lid'=>$_POST['lid'][$ck],
'i_correct'=>$_POST['i_correct'][$ck],
'i_incorrect'=>$_POST['i_incorrect'][$ck],
'noq'=>$_POST['noq'][$ck]
);
$this->db->insert('savsoft_qcl',$userdata);
for($i=1; $i<=$_POST['noq'][$ck]; $i++){
$correct_i[]=$_POST['i_correct'][$ck];
$incorrect_i[]=$_POST['i_incorrect'][$ck];
}
}
}
}
$userdata=array(
'noq'=>array_sum($_POST['noq']),
'correct_score'=>implode(',',$correct_i),
'incorrect_score'=>implode(',',$incorrect_i)
);
$this->db->where('quid',$quid);
$this->db->update('savsoft_quiz',$userdata);
}else{
$correct_i=array();
$incorrect_i=array();
(4)试卷评审管理: 学生通过选择科目类别,点击开始考试按钮,系统依据设计好的题型与题量自动出卷,在考试过程中,学生可以反复提交答案,以最后一次提交为准。点击结束考试,或者考试时间到的时候,系统停止考试并提交答卷,此时系统将对客观题自动评分。评审时,单选题、多选题、判断题、填空通过与数据库的答案一一匹配来评审,问答题通过模糊匹配,搜索与数据库标准答案的关键字来进行评审。主观题主要由教师手动评分。在学情分析方面,使用机器学习中的贝叶斯算法,针对学生考试情况进行分析,在学生下一次考试,或是下一届考生时,基于前几次的错题知识点分析,系统自动出卷的内容会针对这些错题知识点而更加关注。试卷评审表信息如表3所示。
表3 试卷评审表
试卷评审代码:
function get_result($rid){
$logged_in=$this->session->userdata('logged_in');
$uid=$logged_in['uid'];
if($logged_in['su']=='0'){
$this->db->where('savsoft_result.uid',$uid);
}
$this->db->where('savsoft_result.rid',$rid);
$this->db->join('savsoft_users','savsoft_users.uid=savsoft_result.uid');
$this->db->join('savsoft_group','savsoft_group.gid=savsoft_users.gid');
$this->db->join('savsoft_quiz','savsoft_quiz.quid=savsoft_result.quid');
$this->db->join('savsoft_quiz','savsoft_quiz.scuid=savsoft_result.scuid');
$query=$this->db->get('savsoft_result');
return $query->row_array();
(5)考生成绩管理:学生可以查看成绩、导出成绩、班级的排名信息;教师可以查看班级学生的考试成绩、学生的成绩排名、导出成绩。成绩表如表4所示。
表4 成绩表
(6)系统的非功能性分析: 对学生信息与教师信息的管理、对试卷信息与考生成绩的管理、对系统的数据进行备份和数据的导入导出、系统的安全性维护以及试卷的保密性与用户信息的保密。数据库的存储量:此系统需要存储大量的试卷数据、用户信息,因此需对数据库进行优化,让此系统能存储更多的信息;在可维护性上,系统需要有自动备份的功能,防止各种意外的产生而造成数据丢失[6];安全性:在数据库中,对用户密码使用MD5加密,防止因数据库被人攻击,而对用户造成的直接损失,管理员只能在特定的网络中才能登录后台系统,防止网络在传输中,被人抓包,导致数据泄露。
为了达到服务器共享、避免单点故障、集中管理、统一配置,将所有服务做统一使用,当某些应用访问量升高时,通过增加服务器节点达到整个服务器集群的性能提高[7],该Web前端系统基于Nginx主机平台,提供PHP程序运行环境。
本在线考试系统在 ThinkPHP 框架的基础上进行开发,采用B/S 架构,使系统在能实现考试功能的基础上不用过多的安装考试客户端。在功能上满足了原有考试教学辅助能力不足的问题。提高工作效率、节省考试成本,为我院校园信息化建设添砖加瓦,本系统只能实现单项选择题、多选题、判断题等客观题的自动阅卷,主观题的自动阅卷功能还需进一步研究与开发,还需根据客户需求不断的修改和完善该系统。
[1]谭敏,范强,童宇.在线考试系统的研究与设计[J].信息通信,2017(09).
[2]孙玉桦.基于Web的在线考试系统设计与实现[J].科技展望,2016(02).
[3]邓英伟,袁晓红,张小琳,谭艳,彭伟.智能在线考试系统研究[J].海峡科技与产业,2017(10).
[4]谭红春,金力,高洁.通用在线考试系统的开发与设计[J]. 齐鲁工业大学学报(自然科学版),2016(05).
[5]刘超.基于PHP的在线考试系统的设计与实现[J].电子技术与软件工程,2017(20).
[6]邢玉凤,张晓燕.PHP技术在在线考试系统开发中的应用研究[J].通讯世界,2016(10).
[7]龙万顺,姜学军.基于Web角度下的在线考试系统研究[J].黑龙江科技信息,2017(01).
院级科技类科研项目(2019JS013)。