王為群
(韶關學院信息科學與工程學院,廣東韶關512005)
基于PT的實驗考核系統設計與實現
王為群
(韶關學院信息科學與工程學院,廣東韶關512005)
摘要:利用Cisco Packet Tracer的活動向導、Multiuser連接、腳本引擎和基于PTMP的IPC,開發了分別基于.pkt和. pka文件的教師端PT服務器和學生端PT客戶.當一個學生從客戶端成功登錄并打開.pka文件之后,該文件本身可自動評估他的成績,同時內置的JavaScript腳本將成績傳遞到教師端.通過簡單的系統設置,一個教師即可輕松管理不同班級不限次數的機試考核,為高校或培訓機構相關課程的考核提供了一種高效、簡便和省力的新手段.
關鍵詞:Cisco Packet Tracer;機試考核;自動評估
在本科《網絡工程》、《路由器與交換機配置》等課程的教學中,經常使用Cisco Packet Tracer(后簡稱PT)作為實驗工具.PT本身有一個活動向導管理界面,教師可以根據考試意圖來利用它設計配置說明、初始網絡、答案網絡,并設置若干評估點及其得分,最終獲得一個用于考試的.pka文件.此文件發給學生打開后,每個學生即可按照配置說明參加考試.隨著操作的進行,該.pka文件本身會自動評估學生操作的正誤,并實時給出當前所獲的累積總分.當考試結束時,學生的成績也隨即產生.
但遺憾的是,教師要記錄每個學生的成績,就不得不逐個登記.當學生人數較多時,相當麻煩.能否通過網絡把每個學生的成績自動實時傳遞到一個服務器上,這樣既不影響學生考試,又方便教師收集成績,這就是本系統最初想解決的主要問題.

圖1 PT運行時組件體系
1.1 PT的內部結構
實際上,在制作.pka文件時,可以在其中編寫JavaScript腳本與PT進行交互,通過設置事件處理函數,即可以捕獲到最新分數.此外,在位于不同主機的兩個PT進程之間,可以利用PT的Multiuser連接功能,并基于PT消息協議——PTMP,實現IPC消息的傳遞[1-3].PT內部的結構體系見圖1.
1.2 PT的腳本編程環境
PT有兩類文件:即普通的.pkt和活動考試.pka文件.
這兩類文件都有一個共同的腳本編程環境,可在其中編寫與PT交互的基于MVC框架的JavaScript程序,前者從主菜單中進入,后者從活動向導界面進入[4].一旦在這些文件中編寫了程序,打開文件時便可執行.
在相當于一個小型IDE的腳本編程環境中,有3個界面分別用于編寫程序所需的數據模型、Web視圖和控制代碼.數據可以是簡單的鍵值,也可以是復雜的對象數組;Web視圖可以包含html、css、圖片和js代碼;控制代碼用JavaScript語言編寫并分為兩部分:即嵌入Web頁面中的視圖代碼和位于控制器中的純腳本代碼,后者在.pkt或.pka文件打開時首先獲得控制[5].當然,還需要類庫,這是一個內置于PT的名為ptaplayer的Java API,利用它可廣泛地與PT組件任意交互[6].
服務器端由教師操控,其主要任務是負責收集每個學生端發來的成績分數,然后顯示在一個實時更新的Web頁面中.很明顯不適合做成.pka文件,故選擇.pkt作為其類型.
客戶端則由學生使用,并通過內置的腳本與服務器交互,但主要功能是執行實驗考核,只能選擇. pka文件類型.
PT的腳本編程環境是按MVC結構來組織的,因此下面就按照這種框架來介紹系統設計.
2.1教師端服務器設計
(1)數據模型,包含7個數據項.
CLASS_x.json:一個json格式的對象數組,保存一個班級中每個學生的學號、姓名和登錄時間/狀態.可定義多個班級,x為班級編號.
CREDITS:CSV格式的成績表文本字符串,易于導入Excel數據表中.
GAME_CREDITS:一個html表格,顯示每個學生的學號、姓名、登錄時間、可實時刷新的分數和登錄以來消耗的時間.
LAB_NUM:實驗序號,用于比較學生端登錄時傳遞過來的內置實驗序號,僅當兩邊一致時才允許考試,以防意外弄錯或假冒.
LOGIN_RES_VALUE:記錄登錄結果,以備事后反饋.
OPREATE_CONTROLS:html代碼片段,保存3個下拉菜單選項和3個動作按鈕,其作用見后述.
PASSWORD:設置密碼,用于控制界面操作權.
(2)Web視圖.引入jQuery核心和JQuery-UI進行編程[7].界面由兩大塊組成:操作界面和跟蹤表格.操作界面由OPREATE_CONTROLS數據項定義,其中實驗和班級下拉菜單允許教師在啟動考試之前進行設置,方便支持不同考試和不同班級.而學號下拉菜單允許教師撤銷學生的登錄,以防止有意或無意的假冒登錄,或無意義的重復登錄.
還有3個按鈕:“保存分數”用于隨時將學生成績存入CREDITS數據項;“鎖定界面/解鎖選擇”用于在密碼控制下禁用/啟用有關操作;“啟動考試/結束考試”用于統一開啟和結束考試.跟蹤表格由GAME_CREDITS定義,但開始時是一個空表格,在選擇班級后再用CLASS_x.json數據項填充.
(3)控制器.純腳本代碼 (server.js)由若干函數構成,main函數是啟動函數.腳本啟動后首先創建腳本對象,然后調用init初始化函數.該函數注冊與客戶端通信的事件處理函數onRemoteMsg,再用Web視圖管理器webViewManager創建并顯示html管理頁面,此時控制權轉移到Web視圖.
視圖代碼首次獲得控制權時初始化操作界面和一個空白的跟蹤表格.此時教師可通過下拉列表選擇實驗序號和班級,跟蹤表格隨即自動填充.接下來啟動考試,這時視圖代碼會調用server.js中的create_multiUser函數,該函數為每一個學生創建按學號命名的Multiuser連接并顯示在PT工作區中,同時注冊on-MuConnected事件處理函數等待客戶端的連接.
事件處理函數onRemoteMsg完成大部分工作,它接收來自客戶端的4個消息并作出相應處理.
FIRST_LOGIN_REQ:這是首次登錄請求消息.此時調用Web視圖中的firstLogin函數,該函數將根據客戶端提交的登錄信息和已知登錄情況來決定登錄是否成功,并反饋成功消息或各種可能的錯誤消息.
SUCCESSOR_LOGIN_REQ:這是后續登錄請求消息.此時僅做少量處理后,回送應答消息即可.
CREDIT_UPDATE_REQ:這是分數更新請求,這時要調用Web視圖中的updateCredits函數以更新分數,然后根據分數是否為滿分回送不同消息.
KEEPALIVE_REQ:這是連接保活消息,以便跟蹤連接狀態,連帶觸發考試結束消息的回送.此函數還判斷考試結束標志,當考試結束時通知客戶端.
2.2學生端客戶設計
(1)數據模型,包含11個數據項.
ACTION:字符串鍵值,保存客戶端后續應發送到服務端的消息,其值根據當前狀態而定.
CLASS_x.json:與服務端類似,但只保存班級中每個學生的學號和姓名,作用是方便登錄.
CONNECT_STATUS:邏輯鍵值,指示客戶端發起的連接請求是否得到了回應.
IS_LOGIN_SUCCEED:邏輯鍵值,指示客戶端是否已成功登錄.
LAB_NUM:字符串鍵值,鎖定學生端運行的.pka文件所屬實驗序號.
LOGIN_FAIL_TIPS:字符串鍵值,登錄失敗的警示語.
LOGIN_INFO:對象鍵值,登錄時發送給服務端的信息,包括班級、學號、姓名和實驗序號.
NEW_CREDIT:數值鍵值,保存當前分數.
PROMPT_INFO:字符串鍵值,登錄前的提示語.
RETRY_SELECT:邏輯鍵值,指示連接請求失敗后是否允許重試.
TEACHER_SERVER_ID:IP鍵值,保存服務器的IP地址.
(2)web視圖.有2個Web視圖:即主視圖和提示信息視圖.主視圖用于實現登錄,完成登錄后即關閉.提示信息視圖則視情況可應時打開.
主視圖界面也包含兩塊:一塊相當于Web表單,通過下拉菜單學生可選擇所屬班級和學號,姓名則在文本字段中自動填充.此外還包含服務器地址輸入框,便于靈活確認服務端所在的位置.另一塊是顯示登錄前后提示信息的div塊,以便根據服務端的回應向學生提供反饋.
提示信息視圖有2個作用:一是顯示初次或后續登錄過程中連接服務器失敗的反饋信息,并讓學生選擇是否重試;二是在學生達到滿分、重新登錄、考試結束和試圖打開2個以上PT實例時給予提醒.
(3)控制器.客戶端的純腳本代碼(client.js)也由若干函數構成,其流程比服務端稍微復雜些.
初始化代碼首先代碼注冊2個事件:一個是.pka文件被打開時觸發的fileOpened事件,另一個是服務端消息到來時觸發的remoteMessageReceived事件.再根據IS_LOGIN_SUCCEED數據項指示的登錄狀態來決定是打開主視圖進行初次登錄,還是實施后續登錄.
在fileOpened事件的處理函數中,先暫時關閉PT內置的活動管理窗口(根據具體的考試要求,此窗口可以一直保持關閉),接著注冊percentageCompleteChanged事件,它在學生的操作導致分數發生變化時觸發,該事件正是實現本系統目標的關鍵.在其處理函數中,將保存分數到NEW_CREDIT數據項,同時通過消息通信把分數傳遞至服務端.
與服務端類似,remoteMessageReceived事件的處理函數onRemoteMsg也要處理大部分事務,它接收來自服務器的5個消息并做出相應處理:
ACCEPTCONNECTREQUEST:這是服務端接受連接請求的回應消息.此時即可根據ACTION數據項指示的4種不同動作(初次或后續登錄、更新分數和連接保活)綁定不同數據進行回應.
FIRST_LOGIN_ACK:這是服務端對初次登錄請求的回應,有“實驗序號錯誤”、“登錄失敗”和“登錄成功”3種可能的回應.前兩者導致程序無法再運行下去,必須退出;而后者則修改登錄狀態,初始化分數,關閉主視圖,打開內置的活動管理窗口(可選)和激活保活定時器(以便定時向服務器發送保活信息)
SUCCESSOR_LOGIN_ACK:這是服務端對后續登錄請求的回應,此時應先檢查學生是否打開了新的PT實例(對Multiuser連接監聽的端口號進行判斷),理應不允許.若非,則激活保活定時器即可,因后續登錄是自動進行的,無須打開主視圖.
CREDIT_UPDATE_ACK:這是服務端對更新分數的回應,若已達滿分,回應消息會指示考試可以結束了.此時客戶端提醒學生并關閉PT,否則不做任何處理.
EXAM_IS_OVER:這是服務端根據教師的操作主動發來的消息,此時應關閉保活定時器,打開提示信息視圖提醒學生,然后退出PT.
值得一提的是:因學生與教師端沒有連續的大量數據互相傳遞,故彼此的通信采用了類似HTTP協議的機制[8].當客戶端要發送消息時,先主動發起連接,待連接成功后,再發送請求消息,一旦服務端的回應消息到來,就即刻斷開連接,再來處理.這樣可減輕服務端的連接負載,客戶端較多時好處較為明顯,缺點是頻繁的連接會影響傳輸效率.
客戶端在初次與后續登錄、更新分數和定時保活時將主動發起連接,為處理連接超時,需要設置超時值并觸發檢查.這通過JavaScript的setTimeout函數即可實現[9].若發生超時,則打開提示信息視圖,并通過RETRY_SELECT數據項允許學生選擇重試.
主視圖代碼利用jQuery來編寫,在視圖打開時可以初始化班級下拉列表和提示信息.當學生選擇所屬的班級后,便自動根據CLASS_x.json數據項填充學號下拉列表.當學生進一步選擇自己的學號時,又自動填充其姓名,這種方式可大大方便輸入登錄信息.一旦提交表單,其中輸入的學生信息和服務器IP地址便存入LOGIN_INFO和TEACHER_SERVER_ID數據項中以備后用.
提示信息視圖只包含一個函數和div,雖在.pka文件打開時與主視圖一起創建,但卻只在需要向學生提示各種信息時才通過showInfo函數打開.打開的原因包括:后續登錄時發現分數已達滿分,后續登錄成功,操作中分數已滿,連接請求失敗,考試已結束,發現不止一個PT實例.其中當連接請求失敗時,對于初次登錄,失敗可能是服務器IP地址錯誤或未啟動造成的,此時應允許學生重試,以便修改服務器IP地址或等待服務器啟動.對于后續登錄,一般非前述原因,可能是網絡故障造成超時,應立即停止重試.
在引言中提出了本系統最初想解決的主要問題,然而在實際開發中并非只解決了該問題,為成就一個完善的聯機考核系統,本系統還解決一般考試中的監管和安全保障問題,同時又有簡潔易用和易于擴展和部署的特點.
3.1完善監管及安全保障
在初次登錄過程中,會將學生輸入的信息保存起來,而操作中分數的變化也會及時保存.即使學生中途關閉PT,只要保存了.pka文件,其成果就不會丟失.另一方面,又附帶獲得一個好處,即學生信息與. pka文件實現了綁定,換言之,這使得學生不容易進行代考作弊.
初次登錄前和后續登錄后都要檢查學生是否打開了多個PT進程,此舉可防止學生同時代考.即便要代考,也要先做完自己這一份.通常只要考核的分量足夠,學生是難以在相同的時間段重復考核的.初次和后續登錄都要在服務端核對學生端發來的實驗序號.在學生端,.pka文件中受密碼保護,預置的實驗序號不可改,因此學生無法用教師制作的其他.pka,更難用自制的.pka來冒充.
在服務端,“保存分數”可隨時給成績表拍快照,以便保存臨時結果.即便服務器崩潰,重啟之后也很快能恢復全部學生的當前成績,這也得益于所選擇的通信方式的設計.“鎖定界面/解鎖選擇”使得教師離開服務器時無需擔心,“啟動考試/結束考試”使得教師能自由地掌握考核的啟動和停止.作廢登錄解決了他人無意中冒名的問題.
3.2簡潔易用
系統采用jQuery核心和jQuery-UI庫,代碼簡潔高效,界面美觀.通過數據預置,簡化了登錄環節的輸入.充分的信息提示,使學生能清楚知道系統的狀況,以便采取相應的對策.
3.3易于擴展和部署
學生是按班級來組織的,只要簡單添加或修改班級數據項,再對Web視圖做一點修改,就可以輕松地擴展服務器和客戶端,以便覆蓋合適的考試對象.另外服務器與客戶端的網絡連接基于TCP/IP協議,服務器可以部署在有IP連通性的任意主機上.服務器和客戶端的運行只需安裝PT,它們只是PT的關聯文件,部署起來相對簡單.
此外在學生端登錄時允許輸入服務器的IP地址,故服務器的轉移也不會帶來較大影響.
本系統開發完成后,即在筆者所在的韶關學院信息科學與工程學院開始試用,經筆者所任10、11和12級計科、物聯網等專業多個班級的實際使用,達到了很好的預期效果.期間暴露出來一些小問題,也逐一解決,現已成為《網絡工程》、《路由器與交換機配置》等課程中實施課程考核的有力手段.
參考文獻:
[1]Thi N,Pam V,Abbas H,et al.Cisco Packet Tracer Help[CP].[Cisco Networking Academy],2013.
[2]Michael W.Packet Tracer Messaging Protocol(PTMP)Specifications Document[CP].[Cisco Press],2008.
[3]Bruce M.Unix/Linux編程實踐教程[M].楊宗源,黃海濤,譯.北京:清華大學出版社,2004.
[4]Sam R.Web開發敏捷之道[M].駱古道,譯.北京:機械工業出版社,2012.
[5]Elizabeth Castro.HTML5與CSS3基礎教程[M].7版.望以文,譯.北京:人民郵電出版社,2013.
[6]李尊朝,蘇軍.Java語言程序設計[M].2版.北京:中國鐵道出版社,2007.
[7]比伯奧特.jQuery實戰[M].2版.三生石上,譯.北京:人民郵電出版社,2011.
[8]Gourley.HTPP權威指南[M].陳涓,趙振平,譯.北京:人民郵電出版社,2012.
[9]Nicholas C.Zakas.JavaScript高級程序設計[M].3版.李松峰,曹力,譯.北京:人民郵電出版社,2012.
(責任編輯:歐愷)
中圖分類號:TP311.5
文獻標識碼:A
文章編號:1007-5348(2016)04-0013-05
[收稿日期]2016-04-08
[作者簡介]王為群(1965-),男,貴州羅甸人,韶關學院信息科學與工程學院講師,碩士;研究方向:網絡工程和Web應用程序設計.
Design and Implementation of Experimental Evaluation System Based Cisco Packet Tracer
WANG Wei-qun
(InstituteofInformationScienceAndEngineering,ShaoguanUniversity,Shaoguan512005,Guangdong,China)
Abstract:This paper,using theCiscoPacket Tracer Activity Wizard,multi-user connecting,script engineand IPC based on PTMP,has developed teacher-end PT server and student-end PT client based on.pkt and.pka file respectively.After a student’s login-in and opening a.pka file successfully from client,this file itself can automatically assess his results,at the same time,the built-in JavaScript scripting will send results to the teacher end.Through a simple systemsettings,A teacher can easily manage computer-based examfor different classes for unlimited number of times.This provides new efficient,simple and cost-saving methods for related courses examinationinuniversityortraininginstitutions.
Key words:CiscoPacketTracer;computer-basedexam;automatedassessment