摘 要:本文針對(duì)鐵路技能考證場(chǎng)景設(shè)計(jì)其題庫(kù)訓(xùn)練系統(tǒng),除了設(shè)計(jì)基本幾種訓(xùn)練模式外,同時(shí)設(shè)計(jì)了智能推薦訓(xùn)練場(chǎng)景,還提出把系統(tǒng)集成到數(shù)字校園平臺(tái),并給出接口設(shè)計(jì)方案和微信端應(yīng)用的設(shè)計(jì)方案,最后對(duì)系統(tǒng)關(guān)鍵的抽題功能給出實(shí)現(xiàn)方法。
關(guān)鍵詞:題庫(kù);集成;接口;訓(xùn)練系統(tǒng)
一、緒論
題庫(kù)練習(xí)是一種常見(jiàn)的教學(xué)手段,具有題庫(kù)管理,抽題練習(xí),學(xué)習(xí)記錄等功能。比較早出現(xiàn)的有“駕校一點(diǎn)通”題庫(kù)訓(xùn)練系統(tǒng),其面向機(jī)動(dòng)車(chē)駕駛證考試的科目一考試,由于針對(duì)性強(qiáng),易學(xué)易用的特點(diǎn)受到廣大學(xué)習(xí)者好評(píng)。鐵路技能考證是廣大鐵路從業(yè)人員的執(zhí)職資格證,覆蓋鐵路的所有工種,如客運(yùn),信號(hào),電務(wù),工務(wù),機(jī)務(wù)等崗位,加上鐵路工作人員多,按傳統(tǒng)紙質(zhì)的學(xué)習(xí)方式,學(xué)習(xí)資料易丟,學(xué)習(xí)沒(méi)有針對(duì)性,缺少學(xué)習(xí)過(guò)程記錄等。為方便工作人員或?qū)W生能便捷學(xué)習(xí),針對(duì)性訓(xùn)練,提高考證的通過(guò)率。本文為滿(mǎn)足鐵路技能考證題庫(kù)訓(xùn)練需求,設(shè)計(jì)其訓(xùn)練系統(tǒng)。
二、系統(tǒng)設(shè)計(jì)
鐵路技能考證訓(xùn)練系統(tǒng)以題庫(kù)練習(xí)為基礎(chǔ),面向鐵路技能考證應(yīng)用方向,除了題庫(kù)之外,還結(jié)合學(xué)校的數(shù)字校園平臺(tái)加上用戶(hù)登錄功能,即按授權(quán)使用。再者本系統(tǒng)作為學(xué)校信息化的一部分,按學(xué)校信息化標(biāo)準(zhǔn)進(jìn)行數(shù)據(jù)對(duì)接集成。系統(tǒng)具有智能推薦功能,根據(jù)用戶(hù)的錯(cuò)題比例,給用戶(hù)進(jìn)行智能推薦相關(guān)知識(shí)點(diǎn)的題目,實(shí)現(xiàn)智能訓(xùn)練的功能。
(一)功能分析
系統(tǒng)功能分為前端和后臺(tái)兩部分,前端為用戶(hù)登錄、各種訓(xùn)練模式、模擬測(cè)試等功能,后臺(tái)為管理員登錄、權(quán)限管理、題庫(kù)管理、數(shù)據(jù)統(tǒng)計(jì)與數(shù)據(jù)推送等功能。
(二)數(shù)據(jù)集成設(shè)計(jì)
數(shù)據(jù)集成主要是從數(shù)字校園平臺(tái)同步學(xué)生基礎(chǔ)信息,包括學(xué)號(hào),姓名,身份證號(hào),院系,專(zhuān)業(yè),班級(jí)等,采用中間表的方式集成,即數(shù)字校園平臺(tái)定時(shí)把學(xué)生基礎(chǔ)們信推送到中間表,技能考證訓(xùn)練系統(tǒng)從中間表取學(xué)生基礎(chǔ)數(shù)據(jù)更新到本地正式數(shù)據(jù)庫(kù)。中間表可以建在數(shù)據(jù)中心平臺(tái),也可以建在技能考證訓(xùn)練系統(tǒng),由于數(shù)據(jù)中心平臺(tái)承擔(dān)與所有業(yè)務(wù)系統(tǒng)的數(shù)據(jù)交換工作,本文設(shè)計(jì)把中間庫(kù)建在后者上,減輕數(shù)據(jù)中心平臺(tái)負(fù)擔(dān)。
技能考證訓(xùn)練系統(tǒng)從中間表取學(xué)生基礎(chǔ)數(shù)據(jù),有三種方式,一是使用數(shù)據(jù)庫(kù)觸發(fā)器功能,當(dāng)中間庫(kù)數(shù)據(jù)改變同時(shí)更新正式庫(kù)的數(shù)據(jù)。二是定時(shí)更新,使有數(shù)據(jù)庫(kù)的DTS功能或操作系統(tǒng)的計(jì)劃任務(wù)來(lái)實(shí)現(xiàn)。三是手動(dòng)更新,從管理后臺(tái)執(zhí)行數(shù)據(jù)同步功能。方法一是實(shí)時(shí)更新,數(shù)據(jù)量大時(shí)影響系統(tǒng)性能。方法二的定時(shí)任務(wù)需要配合第三方數(shù)據(jù)更新程序一起用,因此,要額外編程實(shí)現(xiàn)更新功能。方法三要求管員定時(shí)登錄系統(tǒng)進(jìn)行操作,過(guò)于繁鎖。本文設(shè)計(jì)采用第一種方式,因?yàn)閷W(xué)生數(shù)據(jù)相對(duì)比較穩(wěn)定,一般是每學(xué)期更新一次,對(duì)系統(tǒng)性能影響不大。數(shù)字校園平臺(tái)向中間表定時(shí)推送數(shù)據(jù)的功能由中心平臺(tái)完成,本文不進(jìn)行探討。
(三)單點(diǎn)登錄集成
隨著數(shù)字校園建設(shè)的推進(jìn),為方便整合各系統(tǒng)之間的交互,很多高校都建設(shè)了統(tǒng)一門(mén)戶(hù)平臺(tái),實(shí)現(xiàn)統(tǒng)一認(rèn)證和單點(diǎn)登錄。本系統(tǒng)設(shè)計(jì)遵循從統(tǒng)一門(mén)戶(hù)單點(diǎn)登錄到技能考證訓(xùn)練系統(tǒng)。常見(jiàn)的認(rèn)證與授權(quán)系統(tǒng)有OAuth、OPenID、SAML,其區(qū)別有:①OAuth協(xié)議的認(rèn)證憑證必須是資源擁有者發(fā)放的;而OPenID的認(rèn)證憑證可以是你需要登錄的網(wǎng)站支持的其它任何正規(guī)OPenIDProvier網(wǎng)站均可。②OPenID只是身份的象征,可以看作是身份證;而OAuth認(rèn)證憑證,一定是資源擁有者發(fā)放的,不僅是用戶(hù)在資源擁有者系統(tǒng)身份的憑證,還是其某些授權(quán)資源訪問(wèn)的憑證,可以看作是鑰匙。③SAML支持XACML協(xié)議進(jìn)行權(quán)限控制。SAML協(xié)議較OAuth來(lái)說(shuō)確實(shí)比較復(fù)雜,但是功能也十分強(qiáng)大,支持認(rèn)證,權(quán)限控制和用戶(hù)屬性。
本設(shè)計(jì)根據(jù)數(shù)據(jù)中心平臺(tái)的認(rèn)證與授權(quán)系統(tǒng)一致的認(rèn)證方式,使用的是OAuth協(xié)議,再結(jié)合CAS系統(tǒng)進(jìn)行單點(diǎn)登錄。
(四)抽題設(shè)計(jì)
抽題是順序訓(xùn)練,隨機(jī)訓(xùn)練,錯(cuò)題訓(xùn)練,推薦訓(xùn)練應(yīng)用中一項(xiàng)公共的功能,都是向后端服務(wù)器取題,傳統(tǒng)的方式是抽一題刷新一次頁(yè)面,用戶(hù)體驗(yàn)差。本文設(shè)計(jì)使用Ajax方式抽題,做到無(wú)刷新頁(yè)面進(jìn)數(shù)取題交互。Ajax又稱(chēng)“異步Java Script 和 XML”,其核心是通過(guò)XMLHttpRequst對(duì)象向服務(wù)器發(fā)送請(qǐng)求,進(jìn)行數(shù)據(jù)交互。Ajax有XML和JSON兩種數(shù)據(jù)格式。XML是官方標(biāo)準(zhǔn)格式,數(shù)據(jù)層次分明,數(shù)據(jù)共享方便。JSON是輕量的數(shù)據(jù)交換格式,格式用鍵/值對(duì)的方式,易于讀寫(xiě)。本文采用JSON的數(shù)據(jù)格式,占用帶寬小,易于解析,能兼容B/S架構(gòu)的ASP.NET,JSP,PHP,JavaScript等語(yǔ)言。其抽題思路如下:
由客戶(hù)端瀏覽器發(fā)起Ajax請(qǐng)求,使用JSON封裝題號(hào)發(fā)送給服務(wù)器,服務(wù)器根據(jù)題號(hào)用JSON封裝題目數(shù)據(jù)后返回給客戶(hù)端,客戶(hù)端用JavaScript解析JSON后顯示。
(五)權(quán)限設(shè)計(jì)
針對(duì)鐵路技能考證場(chǎng)景,滿(mǎn)足不同的工種,設(shè)計(jì)題庫(kù)切換功能,按學(xué)生的專(zhuān)業(yè)選擇題庫(kù),也就是說(shuō)鐵道運(yùn)營(yíng)專(zhuān)業(yè)、乘務(wù)專(zhuān)業(yè)對(duì)應(yīng)客運(yùn)員考證,鐵道信號(hào)專(zhuān)業(yè)對(duì)應(yīng)信號(hào)員考證等。系統(tǒng)設(shè)計(jì)按角色賦予權(quán)限,角色與用戶(hù)是多對(duì)多關(guān)系,允許學(xué)生使用多個(gè)訓(xùn)練庫(kù),考取多個(gè)技能證。
(六)接口設(shè)計(jì)
為方便把技能考證訓(xùn)練系統(tǒng)應(yīng)用擴(kuò)展到手機(jī)微信,APP等移動(dòng)端,對(duì)學(xué)生登錄,五種訓(xùn)練模式,模擬測(cè)試,數(shù)據(jù)分析等功能的數(shù)據(jù)交互設(shè)計(jì)成接口方式,方便WEB和移動(dòng)端調(diào)用,滿(mǎn)足應(yīng)用擴(kuò)展需求。常見(jiàn)的接口模式有WebService,WebAPI,WCF等。WebService用于跨平臺(tái)的可互操作,基于SOAP協(xié)議,數(shù)據(jù)格式是XML。WebAPI是輕量級(jí)的HTTP服務(wù),支持GET,POST,PUT等HTTP操作,并且對(duì)限制帶寬的設(shè)備(比如智能手機(jī))支持的很好,數(shù)據(jù)格式XML或JSON。WCF是WebService的升級(jí)版本,具有互操作性,跨進(jìn)程,跨平臺(tái),跨機(jī)器的通信的特點(diǎn),使用“契約”方式進(jìn)行數(shù)據(jù)、消息操作,數(shù)據(jù)格式是XML,JSON或ATOM。
技能考證訓(xùn)練系統(tǒng)從本質(zhì)上來(lái)說(shuō)還是B/S應(yīng)用,不會(huì)應(yīng)用在C/S客戶(hù)端,Linux系統(tǒng),PDA設(shè)備等情況。無(wú)需考慮跨進(jìn)程和跨機(jī)器的通信,以輕量便捷,快帶高效為目的。因此,本文設(shè)計(jì)使用WebAPI的模式進(jìn)行接口設(shè)計(jì),其接口的調(diào)用類(lèi)似于訪問(wèn)一個(gè)URI地址,容易集成。
(七)移動(dòng)端設(shè)計(jì)
本文主要擴(kuò)展是在微信公眾號(hào)上實(shí)現(xiàn)技能考證訓(xùn)練的功能進(jìn)行設(shè)計(jì),其原理如圖3所示。微信服務(wù)器將組裝XML請(qǐng)求消息后發(fā)給考證訓(xùn)練系統(tǒng)服務(wù)器,后者回復(fù)一個(gè)XML應(yīng)用消息給技能考證訓(xùn)練公眾賬號(hào),公眾賬號(hào)再回復(fù)給用戶(hù),在這個(gè)收發(fā)過(guò)程中,發(fā)送方和接收方進(jìn)行了調(diào)換(ToUserName和FromUserName值互換)。消息類(lèi)型MsgType有:text--文本,image--圖像,voice--語(yǔ)音,video--視頻,shortvideo--小視頻,location--地理位置,link--鏈接等。
當(dāng)接入微信公從號(hào)前必須進(jìn)行signature()請(qǐng)求校驗(yàn),其流程參考官方文檔。本系統(tǒng)使用微信服務(wù)號(hào)進(jìn)開(kāi)發(fā),消息類(lèi)型為“text”文本類(lèi)型,考證訓(xùn)練系統(tǒng)服務(wù)器交互使用WebAPI接口,界面設(shè)計(jì)為HTML5響應(yīng)式頁(yè)面布局。
三、系統(tǒng)實(shí)現(xiàn)
這里介紹關(guān)鍵抽題功能的實(shí)現(xiàn),使用JQuery輕量級(jí)框架的Ajax方法實(shí)現(xiàn),其語(yǔ)法為:
jQuery.ajax(function(){
url:http://res.backSer.com/api/getItem/1,//發(fā)送請(qǐng)求的地址,
type:post,//請(qǐng)求方式,POST,GET
data:{題目:1},//發(fā)送到服務(wù)器的數(shù)據(jù),JSON數(shù)據(jù)
dataType:json,//預(yù)期服務(wù)器返回的數(shù)據(jù)類(lèi)型,有字符串,JSON,XML等
success:function(response){ //請(qǐng)求成功后回調(diào)函數(shù)
$(“#title”).val(response.title);//顯示題目
for(var item in response.subject){ //遍歷候選項(xiàng)
$(“#subject”).append(“<input type=radio name="+item.id"+ " value="+item.selItem+" />”+item.title) ;
}
}
})
由JQuery.Ajax方法向接口請(qǐng)求題目數(shù)據(jù),把題目、候選項(xiàng)顯示到客戶(hù)端。當(dāng)用戶(hù)答題時(shí),用JQuery.Ajax方法把用戶(hù)選擇答案?jìng)鹘o服務(wù)器,服務(wù)器判斷答題結(jié)果并保存。服務(wù)器分析答題趨勢(shì)后,給用戶(hù)推送出錯(cuò)率較高知識(shí)點(diǎn)的題目,實(shí)現(xiàn)推薦訓(xùn)練。
另外,后臺(tái)實(shí)現(xiàn)基于MVC模式。M模型,實(shí)現(xiàn)數(shù)據(jù)庫(kù)模型和讀寫(xiě)操作;V視圖,前端顯示;C控制器,實(shí)現(xiàn)業(yè)務(wù)邏輯。后臺(tái)權(quán)限,接口,題庫(kù)管理等實(shí)現(xiàn)都是數(shù)據(jù)庫(kù)讀寫(xiě),使用EntityFramework框架完成,這里不詳細(xì)展開(kāi)。
四、總結(jié)
本文對(duì)鐵路技能考證訓(xùn)練系統(tǒng)的功能需求,數(shù)據(jù)集成,單點(diǎn)登錄,抽題訓(xùn)練,權(quán)限管理,接口管理,移動(dòng)端應(yīng)用等方面進(jìn)行了分析與詳細(xì)設(shè)計(jì),并對(duì)關(guān)鍵的抽題功能給了簡(jiǎn)單的實(shí)現(xiàn)方法。
參考文獻(xiàn):
[1]韋永軍, 覃秋密. 基于AJAX智能題庫(kù)訓(xùn)練系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電腦知識(shí)與技術(shù), 2011, 07(23):5651-5654.