◆葉惠仙 黃偉剛 沈文杰
?
基于ThinkPHP框架的高職校在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)
◆葉惠仙1黃偉剛2沈文杰1
(1.福建農(nóng)業(yè)職業(yè)技術(shù)學(xué)院 福建 350007; 2.廈門理工學(xué)院 福建 361006)
在信息化時代下,我院的考試方式也需逐漸實(shí)現(xiàn)無紙化,該在線考試系統(tǒng)設(shè)計使用Thinkphp框架以Nginx作為應(yīng)用服務(wù)器,以Mysql 作為后臺數(shù)據(jù)庫,實(shí)現(xiàn)用戶管理,題庫管理、試卷管理、考生成績管理、考試自動出題與評卷管理等功能。本系統(tǒng)能滿足各科課程教學(xué)考核需要,改善我院傳統(tǒng)紙質(zhì)考試模式,減輕教師與教務(wù)人員的工作量,提高考試效率,使我院考試制度更趨于完善與信息化。
在線考試系統(tǒng);Thinkphp架構(gòu);Mysql;B/S
隨著互聯(lián)網(wǎng)與計算機(jī)技術(shù)的不斷發(fā)展,教育開始步入信息化、網(wǎng)絡(luò)化。傳統(tǒng)的考核測試,由于它涉及試卷命題的組織,打印試卷,考試流程安排,集體閱卷等諸多方面,考試組織時間很長,效率不高;人為閱卷等主觀因素,對考試公平也造成了一定程度上的影響。我院共有二三十個專業(yè),數(shù)千名學(xué)生,每次考試時,監(jiān)考教師和考場都不能滿足需要。所以,對于學(xué)校的發(fā)展來說,建立一套具備現(xiàn)代化的、新型的在線考試系統(tǒng)是尤為重要的。
我國在線考試系統(tǒng)在一些專業(yè)技能考試上應(yīng)用較多,如國家普通話等級考試、ATA 高新考試,清華大學(xué)的網(wǎng)絡(luò)學(xué)堂、mooc 平臺等,各高職院校除應(yīng)用于通識課的在線考試系統(tǒng)外,適應(yīng)能力不強(qiáng),題庫建設(shè)不合理,導(dǎo)致資源的重復(fù)建設(shè)[1].目前很多在線考試系統(tǒng)都是單一的為某一學(xué)科進(jìn)行設(shè)計,缺乏通用性,高職院校和普通高校的不同之處在于學(xué)生學(xué)習(xí)的課程有所不同,高職院校更注重培養(yǎng)學(xué)生解決問題的能力,普通高校的學(xué)生在學(xué)習(xí)自覺性上占優(yōu),所以高職院校在線考試系統(tǒng)設(shè)計應(yīng)該更強(qiáng)調(diào)階段性的考核及系統(tǒng)化的測試方式。
本研究根據(jù)自身的工作經(jīng)驗,深入分析我院的考試模式,提出了基于應(yīng)用B/S模式的ThinkPHP架構(gòu)設(shè)計,該架構(gòu)其自身包含了底層架構(gòu)、兼容處理、數(shù)據(jù)庫訪問層、模板引擎、緩存機(jī)制、插件機(jī)制、角色認(rèn)證、表單處理等常用的組件,具有很強(qiáng)的移植性[2]。PHP技術(shù)是服務(wù)器端腳本語言,是生成動態(tài)網(wǎng)頁的工具,只需要將其嵌入到 HTML 語言中,就可以和代碼一樣生成網(wǎng)頁。將其應(yīng)用于在線考試系統(tǒng),為在線考試系統(tǒng)的開發(fā)提供了便利。
我高職校在線考試系統(tǒng)總體架構(gòu)主要包括三層架構(gòu),分別是表現(xiàn)層、業(yè)務(wù)層和數(shù)據(jù)層。表現(xiàn)層主要是用戶通過瀏覽實(shí)現(xiàn)各個界面的操作,如用戶添加、測驗查詢、題庫查看等。業(yè)務(wù)層主要包括題庫管理、試卷管理、考生信息管理、成績管理、考試管理、題型管理等具體的業(yè)務(wù)功能[3]。數(shù)據(jù)層主要是對用戶信息及操作信息、題庫數(shù)據(jù)、試卷數(shù)據(jù)、成績數(shù)據(jù)等進(jìn)行處理及存儲,三者的相互交互構(gòu)建了高職院校在線考試系統(tǒng)的總體架構(gòu)。
本設(shè)計采用快速原型模型來開發(fā),完善在線考試系統(tǒng)功能。以問卷的形式獲知管理員、教師、學(xué)生的需求,并且獲取用戶體驗數(shù)據(jù),作為反饋系統(tǒng)設(shè)計開發(fā)的參考數(shù)據(jù)。
管理員功能:能修改密碼,用戶數(shù)據(jù)信息,必須確保信息安全無誤的傳送到服務(wù)器,用戶每進(jìn)行一步操作后,數(shù)據(jù)都會首先緩存到服務(wù)器,當(dāng)用戶提交答案后,所有數(shù)據(jù)都會保存到數(shù)據(jù)庫中。考試時間自動控制,系統(tǒng)自動對考生答卷進(jìn)行評分,可以有效地防止改卷的違規(guī)行為。高職院校沒有設(shè)專職維護(hù)考試系統(tǒng)人員,所以系統(tǒng)的穩(wěn)定性和安全性是在線考試系統(tǒng)設(shè)計的要點(diǎn)。
教師功能:系統(tǒng)實(shí)現(xiàn)出卷,自動組卷、自動閱卷和成績統(tǒng)計功能,以此提高教師的工作效率。實(shí)現(xiàn)客觀題自動評閱,主觀題人工批閱,在自動生成試卷過程中,可以選擇設(shè)置難易程度進(jìn)行組卷,并且做到知識點(diǎn)不重復(fù),依據(jù)設(shè)置的規(guī)則,隨機(jī)生成若干套試卷。
考生功能:考生信息可以自己注冊,也可通過系統(tǒng)管理員或任課教師進(jìn)行批量導(dǎo)入,考生信息建立好之后,考生通過登錄口,進(jìn)入在線考試系統(tǒng)、可修改個人信息,查看考試通知、成績查詢??荚嚢凑找笤谝?guī)定時間內(nèi)逐一答題,對有疑問的題目可進(jìn)行標(biāo)注,最后選擇標(biāo)注題目再次檢查確認(rèn),在規(guī)定時間內(nèi)提交試卷,若提前完成,也可點(diǎn)擊提交試卷完成考試。本系統(tǒng)的用例如圖1所示:
圖1 在線考試系統(tǒng)用例圖
注冊登錄:用戶通過頁面點(diǎn)擊注冊,使用郵箱或手機(jī)號碼,選擇身份注冊,用戶輸入正確的用戶名與密碼,系統(tǒng)自動通過搜索數(shù)據(jù)庫進(jìn)行身份認(rèn)證,只有找到相應(yīng)的用戶信息才能進(jìn)入系統(tǒng),進(jìn)入系統(tǒng)前,系統(tǒng)自動搜索數(shù)據(jù)庫匹對,判斷用戶是學(xué)生還是教師,進(jìn)入到相應(yīng)的考試系統(tǒng)界面中。個人信息修改:進(jìn)入到個人信息中心,可修改個人信息,如姓名、電話號碼、密碼等修改。管理員由指定的地址進(jìn)入后端,管理員不能進(jìn)入前端,學(xué)生與教師不能進(jìn)入系統(tǒng)后端,保證系統(tǒng)的安全性。學(xué)生信息以班級為單位,任課教師可將所任課的班級學(xué)生信息批量導(dǎo)入,也可以通過老師的邀請碼登入任課教師的班級[4]。教師用戶可以修改個人信息,試卷信息,科目信息等;管理員可通過后臺修改學(xué)生用戶與教師用戶的信息、試卷信息、科目信息及成績管理等。用戶信息表如表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)科目信息管理:對考試科目與對應(yīng)課程進(jìn)行設(shè)置。
(3)試卷信息管理: 試題類型分為單選題、多選題、判斷題、填空題和分析題,教師逐個題型或逐題上傳生成試卷及對自己上傳的試卷進(jìn)行修改、刪除、查詢;試卷信息主要包括科目類型、試題類型與試題題目3個方面。主要是由任課教師完成。任課教師需要在數(shù)據(jù)庫中增加考試科目,也可以對現(xiàn)有的科目進(jìn)行修改、刪除,并將數(shù)據(jù)保存在試題表單數(shù)據(jù)庫中[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)試卷評審管理: 學(xué)生通過選擇科目類別,點(diǎn)擊開始考試按鈕,系統(tǒng)依據(jù)設(shè)計好的題型與題量自動出卷,在考試過程中,學(xué)生可以反復(fù)提交答案,以最后一次提交為準(zhǔn)。點(diǎn)擊結(jié)束考試,或者考試時間到的時候,系統(tǒng)停止考試并提交答卷,此時系統(tǒng)將對客觀題自動評分。評審時,單選題、多選題、判斷題、填空通過與數(shù)據(jù)庫的答案一一匹配來評審,問答題通過模糊匹配,搜索與數(shù)據(jù)庫標(biāo)準(zhǔn)答案的關(guān)鍵字來進(jìn)行評審。主觀題主要由教師手動評分。在學(xué)情分析方面,使用機(jī)器學(xué)習(xí)中的貝葉斯算法,針對學(xué)生考試情況進(jìn)行分析,在學(xué)生下一次考試,或是下一屆考生時,基于前幾次的錯題知識點(diǎn)分析,系統(tǒng)自動出卷的內(nèi)容會針對這些錯題知識點(diǎn)而更加關(guān)注。試卷評審表信息如表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)考生成績管理:學(xué)生可以查看成績、導(dǎo)出成績、班級的排名信息;教師可以查看班級學(xué)生的考試成績、學(xué)生的成績排名、導(dǎo)出成績。成績表如表4所示。
表4 成績表
(6)系統(tǒng)的非功能性分析: 對學(xué)生信息與教師信息的管理、對試卷信息與考生成績的管理、對系統(tǒng)的數(shù)據(jù)進(jìn)行備份和數(shù)據(jù)的導(dǎo)入導(dǎo)出、系統(tǒng)的安全性維護(hù)以及試卷的保密性與用戶信息的保密。數(shù)據(jù)庫的存儲量:此系統(tǒng)需要存儲大量的試卷數(shù)據(jù)、用戶信息,因此需對數(shù)據(jù)庫進(jìn)行優(yōu)化,讓此系統(tǒng)能存儲更多的信息;在可維護(hù)性上,系統(tǒng)需要有自動備份的功能,防止各種意外的產(chǎn)生而造成數(shù)據(jù)丟失[6];安全性:在數(shù)據(jù)庫中,對用戶密碼使用MD5加密,防止因數(shù)據(jù)庫被人攻擊,而對用戶造成的直接損失,管理員只能在特定的網(wǎng)絡(luò)中才能登錄后臺系統(tǒng),防止網(wǎng)絡(luò)在傳輸中,被人抓包,導(dǎo)致數(shù)據(jù)泄露。
為了達(dá)到服務(wù)器共享、避免單點(diǎn)故障、集中管理、統(tǒng)一配置,將所有服務(wù)做統(tǒng)一使用,當(dāng)某些應(yīng)用訪問量升高時,通過增加服務(wù)器節(jié)點(diǎn)達(dá)到整個服務(wù)器集群的性能提高[7],該Web前端系統(tǒng)基于Nginx主機(jī)平臺,提供PHP程序運(yùn)行環(huán)境。
本在線考試系統(tǒng)在 ThinkPHP 框架的基礎(chǔ)上進(jìn)行開發(fā),采用B/S 架構(gòu),使系統(tǒng)在能實(shí)現(xiàn)考試功能的基礎(chǔ)上不用過多的安裝考試客戶端。在功能上滿足了原有考試教學(xué)輔助能力不足的問題。提高工作效率、節(jié)省考試成本,為我院校園信息化建設(shè)添磚加瓦,本系統(tǒng)只能實(shí)現(xiàn)單項選擇題、多選題、判斷題等客觀題的自動閱卷,主觀題的自動閱卷功能還需進(jìn)一步研究與開發(fā),還需根據(jù)客戶需求不斷的修改和完善該系統(tǒng)。
[1]譚敏,范強(qiáng),童宇.在線考試系統(tǒng)的研究與設(shè)計[J].信息通信,2017(09).
[2]孫玉樺.基于Web的在線考試系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].科技展望,2016(02).
[3]鄧英偉,袁曉紅,張小琳,譚艷,彭偉.智能在線考試系統(tǒng)研究[J].海峽科技與產(chǎn)業(yè),2017(10).
[4]譚紅春,金力,高潔.通用在線考試系統(tǒng)的開發(fā)與設(shè)計[J]. 齊魯工業(yè)大學(xué)學(xué)報(自然科學(xué)版),2016(05).
[5]劉超.基于PHP的在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2017(20).
[6]邢玉鳳,張曉燕.PHP技術(shù)在在線考試系統(tǒng)開發(fā)中的應(yīng)用研究[J].通訊世界,2016(10).
[7]龍萬順,姜學(xué)軍.基于Web角度下的在線考試系統(tǒng)研究[J].黑龍江科技信息,2017(01).
院級科技類科研項目(2019JS013)。