APP下载

基于PT的实验考核系统设计与实现

2016-08-22王为群

韶关学院学报 2016年4期

王为群

(韶关学院信息科学与工程学院,广东韶关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.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].

2系统设计

服务器端由教师操控,其主要任务是负责收集每个学生端发来的成绩分数,然后显示在一个实时更新的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系统特色

在引言中提出了本系统最初想解决的主要问题,然而在实际开发中并非只解决了该问题,为成就一个完善的联机考核系统,本系统还解决一般考试中的监管和安全保障问题,同时又有简洁易用和易于扩展和部署的特点.

3.1完善监管及安全保障

在初次登录过程中,会将学生输入的信息保存起来,而操作中分数的变化也会及时保存.即使学生中途关闭PT,只要保存了.pka文件,其成果就不会丢失.另一方面,又附带获得一个好处,即学生信息与. pka文件实现了绑定,换言之,这使得学生不容易进行代考作弊.

初次登录前和后续登录后都要检查学生是否打开了多个PT进程,此举可防止学生同时代考.即便要代考,也要先做完自己这一份.通常只要考核的分量足够,学生是难以在相同的时间段重复考核的.初次和后续登录都要在服务端核对学生端发来的实验序号.在学生端,.pka文件中受密码保护,预置的实验序号不可改,因此学生无法用教师制作的其他.pka,更难用自制的.pka来冒充.

在服务端,“保存分数”可随时给成绩表拍快照,以便保存临时结果.即便服务器崩溃,重启之后也很快能恢复全部学生的当前成绩,这也得益于所选择的通信方式的设计.“锁定界面/解锁选择”使得教师离开服务器时无需担心,“启动考试/结束考试”使得教师能自由地掌握考核的启动和停止.作废登录解决了他人无意中冒名的问题.

3.2简洁易用

系统采用jQuery核心和jQuery-UI库,代码简洁高效,界面美观.通过数据预置,简化了登录环节的输入.充分的信息提示,使学生能清楚知道系统的状况,以便采取相应的对策.

3.3易于扩展和部署

学生是按班级来组织的,只要简单添加或修改班级数据项,再对Web视图做一点修改,就可以轻松地扩展服务器和客户端,以便覆盖合适的考试对象.另外服务器与客户端的网络连接基于TCP/IP协议,服务器可以部署在有IP连通性的任意主机上.服务器和客户端的运行只需安装PT,它们只是PT的关联文件,部署起来相对简单.

此外在学生端登录时允许输入服务器的IP地址,故服务器的转移也不会带来较大影响.

4 结语

本系统开发完成后,即在笔者所在的韶关学院信息科学与工程学院开始试用,经笔者所任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