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