


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