摘 要:本文针对铁路技能考证场景设计其题库训练系统,除了设计基本几种训练模式外,同时设计了智能推荐训练场景,还提出把系统集成到数字校园平台,并给出接口设计方案和微信端应用的设计方案,最后对系统关键的抽题功能给出实现方法。
关键词:题库;集成;接口;训练系统
一、绪论
题库练习是一种常见的教学手段,具有题库管理,抽题练习,学习记录等功能。比较早出现的有“驾校一点通”题库训练系统,其面向机动车驾驶证考试的科目一考试,由于针对性强,易学易用的特点受到广大学习者好评。铁路技能考证是广大铁路从业人员的执职资格证,覆盖铁路的所有工种,如客运,信号,电务,工务,机务等岗位,加上铁路工作人员多,按传统纸质的学习方式,学习资料易丢,学习没有针对性,缺少学习过程记录等。为方便工作人员或学生能便捷学习,针对性训练,提高考证的通过率。本文为满足铁路技能考证题库训练需求,设计其训练系统。
二、系统设计
铁路技能考证训练系统以题库练习为基础,面向铁路技能考证应用方向,除了题库之外,还结合学校的数字校园平台加上用户登录功能,即按授权使用。再者本系统作为学校信息化的一部分,按学校信息化标准进行数据对接集成。系统具有智能推荐功能,根据用户的错题比例,给用户进行智能推荐相关知识点的题目,实现智能训练的功能。
(一)功能分析
系统功能分为前端和后台两部分,前端为用户登录、各种训练模式、模拟测试等功能,后台为管理员登录、权限管理、题库管理、数据统计与数据推送等功能。
(二)数据集成设计
数据集成主要是从数字校园平台同步学生基础信息,包括学号,姓名,身份证号,院系,专业,班级等,采用中间表的方式集成,即数字校园平台定时把学生基础们信推送到中间表,技能考证训练系统从中间表取学生基础数据更新到本地正式数据库。中间表可以建在数据中心平台,也可以建在技能考证训练系统,由于数据中心平台承担与所有业务系统的数据交换工作,本文设计把中间库建在后者上,减轻数据中心平台负担。
技能考证训练系统从中间表取学生基础数据,有三种方式,一是使用数据库触发器功能,当中间库数据改变同时更新正式库的数据。二是定时更新,使有数据库的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.
赞(0)
最新评论