全国大学英语等级考试成绩定制查询系统设计与实现
2017-07-12薛艳锋高文莲王三虎
薛艳锋+高文莲+王三虎
摘要:全国大学英语等级考试(CET)是教育部针对在校大学生每学期组织的一项全国性英语考试,然而因准考证号遗忘导致考生无法在线查询成绩的现象时有发生。虽然部分应用软件通过选填所在学校信息可以弥补这一缺陷,但在相同学校相同姓名的情况下查询无效。针对这种情况,设计了一种CET成绩定制化查询系统。领取准考证后在微信公众平台进行成绩定制,成绩揭晓后系统第一时间通过微信公众平台以及手机短信推送对应成绩。实验结果表明,该系统不仅可以准确推送成绩结果,而且容易扩展到其它类似应用场景。
关键词:微信公众平台;定制化;定时任务;模板消息;网页抓取
DOIDOI:10.11907/rjdk.171145
中图分类号:TP319
文献标识码:A 文章编号:1672-7800(2017)006-0070-04
0 引言
全国大学英语等级考试(College English Test Band 4 and Band 6,CET)是教育部针对高校大学生每学期举办的一项全国性考试。考试结束两个月后,官网提供3个查询入口:99宿舍网[1]、中国高等教育学生信息网(学信网)[2]以及教育部考试中心综合查询网[3]。一些应用软件如支付宝及微信公众平台也提供类似查询功能,但数据源都来自上述官网,查询必填准考证号。然而在查询时,考生常常因为忘记准考证号而无法查询,一些应用软件提供了补填所在学校信息以解决这一问题,但效果不佳。因考生人数众多,如果有同名同姓出现则查询失败。
随着移动互联网技术的快速发展,智慧校园[4]兴起,微信公众平台在大学图书馆 [5-6]、信息服务 [7]以及学习等方面的应用[8]层出不穷。微信公众平台作为腾讯公司在微信基础上的新增功能模块[9],运营者可按照开发接口规范设计与实现满足特定功能的微信公众号,即移动应用系统,而用户可在微信客户端关注该公众号与系统互动。
该系统的主要功能与RSS的定制推送功能[10]类似,使用过程为:用户前期通过准考证号与姓名进行成绩定制,等成绩公布后,通过微信公众平台以及验证码对应手机号自动收取定制成绩,从而保证考试信息只需输入一次就能及时得到成绩,改变了过去被动查询局面,扩展并具体化RSS推送内容。
1 相关技术介绍
1.1 WeUI页面基础样式库
为了与微信原生视觉体验一致,使用户的感知统一,本文选择微信公众平台提供的WeUI页面基础样式库[11]开发成绩定制及查询结果页面。
1.2 JQuery
jQuery是一个快速、简洁的JavaScript框架,其设计宗旨为“Write Less,Do More”,即“写得少,做得多”[12]。它不仅封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,而且优化了HTML文档操作、事件处理、动画设计和Ajax交互,并与WeUI页面基础样式库交互良好。
1.3 openid
用户与微信公众号交互后,公众号可以设置网页授权并通过获取用户基本信息接口得到用户openid。该openid是微信加密后的微信号,是公众号区分用户的重要凭证[13]。
1.4 定时任务
定时任务[14]是新浪云推出的一项定期以HTTP方式触发执行后台程序的服务,定期清理和备份数据库表中的数据、发送邮件通知等,触发后执行应用中定义的 HTTP 回调函数。
1.5 模板消息
模板消息[15]指主动提醒、通知用户时,在公众平台网站模板消息库中选择对应模板,再根据模板ID向用户主动推送提醒、通知消息的一种服务。如果模板消息库没有对应模板,可按照模板填写规则申请设计模板消息[16],等审核通过后即可使用。
1.6 来信码
2012年BechTech推出来信码,2015年1月整合IM功能,是一款专注开发者的短信API服务平台[17]。通过它可以进行信息验证、发送通知消息,理论信息到达率达100%。
1.7 网页数据抓取
网页数据抓取是通过某一种机制获取网页数据的过程[18]。本文通过PHP编程语言的cURL函数[19]模拟登陆学信网,利用simple_html_dom功能将数据从HTML标记符中抽离出来,再打包成JSON格式的数据返回。
2 功能实现
本系统开发的所有服务都是基于新浪推出的公有云计算平台Sina App Engine(SAE)或与SAE有合作关系的第三方服务,具体使用服务如表1所示。
2.1 openid获取
本系统通过微信网页授权机制获取微信用户openid,具体流程为配置回调页面域名,用户授权并获取code,通过code换取网页授权access_token,获取的数据为JSON数据包形式[21],其中包含openid键值对。JSON数据包如下所示:
2.2 查询页面定制
本系统的成绩定制页面采用WeUI页面基础样式庫中部分表单页面,如图2所示。当输入手机号点击“获取验证码”时,调用JQuery框架的$.getJSON( )方法获取验证码,读取手机号对应文本框的值,然后赋值给phoneInput以参数形式传递给getVcode.php页面,getVcode.php页面获取手机号码之后首先动态生成由4位数字字符组成的验证码;然后以URL模拟登陆[18]的方式,将其推送给对应的手机号并返回给回调函数参数data;再赋值给全局变量vcode以匹配用户验证码是否正确,一致则匹配成功;最后点击“确定”按钮通过Ajax方法以“POST”方式提交表单给getCET.php页面。提交字段包括考生姓名、准考证号、openid以及手机号。其中使用的$.getJSON( )方法代码如下:
因为收到模板规则数限制(最多5条),所以除了这5条规则数据对应显示外,其它数据合并在{{first.DATA}}之内,即{考生姓名}.“您好,”.{考试日期} .“全国大学”.{考试级别} .“成绩现已揭晓,请查收!”,而{{remark.DATA}}照搬学信网提示“注:最终结果请以《成绩报告单》为准。”;而通过URL模拟登陆调用来信码接口发送内容模板如下所示:“{字符}您好,您{字符}CET考试成绩单已经发送。学校名称:{字符};考试级别:{字符};总成绩:{数字},其中听力:{数字}、阅读:{数字}、写作与翻译:{数字}。【智普】”。
3 实验仿真
因为每年CET次数仅为2次,且成绩公布周期较长,所以实验结果采用仿真方法,定制2016年6月全国大学英语等级成绩。首先点击微信公众号下拉菜单弹出CET定制查询页面,如图2所示,输入对应信息通过验证规则后,点击“确定”按钮。如果信息正确则跳转到查询成功页面,进入CET查询系统;假设在2016年6月输入相同信息,由于成绩未公布,则在CET定制系统得到定制成功提示页面,如图3所示。
定制成功后,启动定时任务程序,只要学信网支持成绩查询,则微信用户与手机用户在第一时间都可收到如图4、图5所示的CET成绩通知,系统完成CET定制成绩的及时推送。
4 结语
智慧校园高校建设[23]步伐加快为本文系统实施提供了很好的条件。本系统提供的成绩定制化服务不仅用于CET成绩查询,还可扩展到普通话、全国计算机等级考试以及期末考试等成绩查询定制服务中,如果显示结果内容过多,则可通过“模板消息”点击“详情”进一步显示,也可通过新浪推出的“云邮件”功能进行邮件推送[24],从被动查询过渡到主动接收。
参考文献:
[1]99宿舍网[EB/OL].[2016-11-15].http://cet.99sushe.com/.
[2]中国高等教育学生信息网.[2016-11-15].http://www.chsi.com.cn/cet/
[3]教育部考试中心综合查询网.[2016-11-15].http://chaxun.neea.edu.cn/examcenter/main.jsp.
[4]XIANG Y,CHANG D,CHEN B.A smart university campus information dissemination framework based on WeChat platform[M].LISS,2015:927-932.
[5]ZHAO Y,DENG S,GAO T,et al.Research on user needs for mobile information services in Chinese university libraries:comparison between existing user and potential users[J].The Electronic Library,2016,34(4):617-635.
[6]XU J,KANG Q,SONG Z,et al.Applications of mobile social media:WeChat among academic libraries in China[J].Journal of Academic Librarianship,2015,41(1):21-30.
[7]邱炳发,马燕.基于微信的研究生信息服务系统的设计与实现[J].计算机技术与发展,2016(1):190-194.
[8]LANG F,ZHANG K,LI P,et al.Computer english teaching based on WeChat[M].Social Computing,2016.
[9]王明亮,闵新力,姬江涛,等.基于微信的移动外勤管理系统设计与实现[J].计算机应用与软件,2015,32(7):82-85.
[10]HUA X,SI L,ZHUANG X,et al.Investigations about new methods of library marketing in Chinese “985” project universities[J].Library Management,2015,36(6/7):408-420.
[11]腾讯.微信网页开发样式库[EB/OL].[2016-10-25].http://mp.weixin.qq.com/wiki/2/ae9782fb42e47ad79eb7b361c2149d16.html.
[12]张旭红,刘渭滨.面向移动平台的新闻资讯系统的设计与实现[J].计算机应用与软件,2014(1):5-8.
[13]腾讯.获取用户基本信息接口文档[EB/OL].[2016-10-25].https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839&token=&lang=zh_CN.
[14]新浪.定时任务[EB/OL].[2016-10-25].https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839&token=&lang=zh_CN.
[15]腾讯.模版消息[EB/OL].[2016-10-25].https://mp.weixin.qq.com/advanced/tmplmsg?action=faq&token=499460181&lang=zh_CN.
[16]腾讯.模版消息[EB/OL].[2016-10-25].https://mp.weixin.qq.com/advanced/tmplmsg?action=open_tmpl&lang=zh_CN&token=499460181.
[17]BechTech.来信码[EB/OL].[2016-10-25].http://sms.bechtech.cn/Index/prointro.html?act=prointro.
[18]杨帆,沈来信.基于SS2H的微信公众平台账号设计[J].计算机技术与发展,2016(1):195-199.
[19]PHP手册.Client URL庫[EB/OL].[2016-10-25].http://cn2.php.net/manual/zh/book.curl.php.
[20]腾讯.网页授权获取用户基本信息[EB/OL].[2016-10-25].https://mp.weixin.qq.com/cgi-bin/settingpage?t=setting/function&action=function&token=773721195&lang=zh_CN.
[21]方倍工作室.微信公众平台开发最佳实践[M].北京:机械工业出版社,2014:72-79.
[22]肖金克,刘晓阳,陈鑫,等.基于微信公众平台的高校移动信息服务设计与实现[J].软件导刊,2016,15(8):83-85.
[23]王宇,吴炜鑫,王兴伟.“互联网+”下高校信息化建设模式的探索与研究[J].计算机应用与软件,2016,33(11):41-45.
[24]新浪.云邮件[EB/OL].[2016-10-25].https://sae.sina.com.cn/?m=newmail&a=doc&app_id=zpxue.
(责任编辑:杜能钢)