基于iOS的移动校园助手设计与实现

2019-06-06 04:21廖环宇何贞铭
软件导刊 2019年3期

廖环宇 何贞铭

摘 要:为满足信息查询需求及促进移动校园发展,使用模拟登陆、Python爬虫、验证码识别等技术设计基于iOS的移动校园助手。该应用可实现新闻资讯实时浏览、教务管理无缝接入、校园地图搜索导航及校园招聘信息查看等功能,为高校师生提供一个解决学习生活难题的新渠道,提高学校信息传递时效性和工作效率,同时可为其它高校实现校园数字化和移动化提供参考。

关键词:校园助手;iOS应用;移动校园;Python爬虫;模拟登陆;验证码识别

DOI:10. 11907/rjdk. 182547

中图分类号:TP319文献标识码:A文章编号:1672-7800(2019)003-0129-04

0 引言

目前大多数高校均建设有独特的校园网站系统和信息管理系统,如图书管理系统、校园新闻网、科研管理信息系统、校园一卡通自助服务系统、学生就业信息平台、校园电子邮件系统等,多数高校信息化建设已具备一定规模[1-2]。但随着移动网络的发展,传统校园信息平台存在的弊端逐渐显现[3]。

(1)空间问题。传统校园信息的获取一般存在于PC端,但PC端一般固定于某场所,因此对空间有一定限制。

(2)信息交流问题。传统校园信息获取途径单一、空间固定,导致信息传达不及时,信息实用率低,甚至产生信息孤岛。

随着互联网技术的飞速发展,数字化校园越来越受到各高校的重视[4-6]。复旦大学于2011年8月率先发布“i复旦”校园移动信息应用,集成了新闻、日历、班车、图书馆、校园卡、黄页等应用模块[7]。其它各大高校也陆续推出了自己的校园移动客户端,如武汉理工大学的“掌上理工大”、清华大学的“AtTsinghua”、苏州大学的“你好苏大”等。在国外,校园应用也发展良好,如加州大学圣迭戈分校的移动平台提供课程安排、校车查询及天气查询功能[8]。阿拉巴马大学移动校园应用中的运动门户模块不仅提供不同运动场赛事安排情况,还可即时更新比赛资讯[9]。总体而言,国外移动校园服务平台在功能设计上重服务、轻管理,更贴近师生生活,但是在界面设计、功能设计等方面仍不够完善。

目前各高校校园信息服务系统大多基于B/S模式或Android系统开发而成[10-12],随着iPhone手机用户数量的不断增加,开发一款基于iOS系统的校园助手显得十分必要。iOS系统具有系统稳定、操作流畅、界面美观、安全性高等特点[13-14],可为用户带来良好的使用体验。基于上述问题和学校教学情况,本文设计开发了基于iOS平台的高校校园助手,在传统校园APP新闻浏览、成绩查询等基础功能上,增加校园地图和招聘信息功能,可缓解高校学生信息资料获取途径较少的问题,同时提高信息传递时效性和工作效率,促进校园移动互联建设发展。

1 关键技术

1.1 模拟登录

模拟登录是利用程序模拟用户登录、访问服务器的過程[15]。有些网站内容需登录后才可正常查看,如高校学生选课或考试成绩查询,需先输入教务处账号和密码。为实现模拟登陆,首先需使用浏览器开发者工具对目标网站进行数据抓包,分析登录网站的执行过程,包括请求的URL地址及每一步发送或返回的参数情况;然后在服务端编写代码模拟整个登录过程中全部操作。

模拟登录步骤一般分为:①访问登录页面;②解析返回的Header信息(如Cookie、Session id、Request URL等);③获取用户输入的账号和密码;④通过POST请求将账号、密码、Header等信息发送至Request URL;⑤解析返回的结果,判断是否登录成功。

1.2 Python爬虫

网络爬虫又名“网络蜘蛛”,其工作原理是首先设定一些初始的URL地址,通过模拟浏览器访问网站过程中的动作,获取目标网站返回的数据信息,并利用解析工具进行解析获得最终符合要求的数据。其主要包含配置模块、URL管理模块、网页抓取模块、网页解析模块及网页存储模块等[16]。

Python是一门功能强大的动态编程语言,由于其语法简洁、功能库丰富、高扩展性及代码开源等特点而受到广大开发者的青睐。目前大多数网络爬虫都是基于Python语言开发而成[17-18]。本文使用基于2.7版本的Python作为网络爬虫开发语言,从学校各个新闻网上抓取数据,为APP提供新闻、招聘信息数据来源。

1.3 验证码识别

验证码是为防止黑客恶意攻击网站及进行人机区分而设计的一种验证登录用户身份的技术,目前主要有文字、图片、语音和3D验证码4种类型[19-20]。其中,网站应用最广泛的为图片验证码,通过将一些字符进行扭曲、拉伸、错乱排版,并添加额外噪点或线条,增加图片验证复杂度,从而在一定程度上防止机器人登录网站。

验证码识别主要通过图像处理和模式识别技术实现对图片验证码的处理。其中,图像处理技术包括图像灰度化、二值化、去噪、倾斜度校正、字符切割和归一化等;模式识别技术主要包括提取字符特征、样本训练及识别。

由于本应用在模拟登陆教务处过程中会出现图片验证码,为提供更好的用户体验,后台实现了自动识别图片验证码的功能,减少用户输入次数。

2 系统总体设计

2.1 需求分析

校园助手功能主要包括:新闻资讯、教务助手、校园地图、招聘信息和个人中心5大模块。

(1)新闻资讯。APP主要功能之一,提供最新校园资讯和通知公告等信息。用户可浏览、收藏、评论和分享新闻。

(2)教务助手。教务系统是高校学生使用频次最高的校园信息系统之一,在高校教务信息管理方面发挥着重要作用。该模块主要包括成绩查询和课表查询。

(3)校园地图。因学校占地面积较大,师生人数众多,且各个校区分布于不同地区。由于不熟悉校园环境,师生迷路的情况时有发生。针对该问题,校园助手提供各校区电子地图,方便师生快速定位和导航。模块主要包含用户定位、POI关键字搜索、地图导航、全景校园等功能。

(4)招聘信息。每年临近毕业时期,各大高校就业指导中心和就业信息网均会发布相关专业招聘和宣讲会信息。传统宣传方法通过在校内粘贴海报或在各个班群发送相关信息,不仅费时费力,而且宣传效果不佳。招聘信息模块能够在一定程度上解决该问题。后台系统通过网络爬虫技术,对学校就业信息网及海投网招聘信息进行抓取,并返回给前台进行展示,为用户提供全国各省、各大高校实时招聘信息。

(5)个人中心。该模块主要包含用户个人信息设置、我的收藏、意见反馈、字体大小和消除缓存等功能。

2.2 系统架构

基于iOS的移动校园助手分为服务端和客户端。服务端基于模拟登录和验证码识别技术,可实现与教务系统实时对接;通过设定Python爬虫定时运行的间隔时间,使其自动从学校网站上抓取新闻通知,并保存在MySQL数据库中,为客户端提供数据来源。

客户端采用AFNetworking和Realm等第三方库进行网络请求、数据库读写操作。应用接收用户操作事件后,由视图控制器调用相应功能服务,并向服务器接口请求数据,成功返回后填充到视图层,并保存至SQLite数据库中。系统整体架构如图1所示。

2.3 数据库设计

数据是组成一个系统的关键部分,数据库设计的质量对整个应用性能和用户体验产生重要影响。下文分别描述系统3个主要数据表结构。

(1)用户信息表。主要包含用户ID、用户名、密码、真实姓名、头像、学号、生日、性别、院系、专业、班级等信息。

(2)课程表。与课程相关的数据包括课程ID、课程名、学年、学期、周次、星期、节次、学时、学分、教师、教室等。

(3)新闻信息表。与新闻相关的数据包括新闻ID、标题、内容、关键词、时间、作者、源网站名称和URL等。

3 主要功能模块实现

APP使用Objective-C语言在Mac OS 10.11系统下进行相关功能开发。软件支持在iOS 7.0及以上设备运行。

3.1 新闻资讯模块实现

该模块主要提供学校新闻网中的新闻资讯,点击新闻条目可跳转至对应信息详情界面,并可对新闻进行收藏、分享和评论。模块工作原理为:设置定时任务运行Python爬虫,增量抓取校园网新闻数据,并保存至服务器数据库,通过调用后台数据接口,向服务器请求新闻信息并返回至APP,最终将新闻展示在界面上。

顶部轮播图片新闻区域及底部各个栏目的新闻条目可分别看作横向及纵向UITableView列表。其中,不同新闻列表图片数量可能不同,需自定义不同的UITableViewCell进行展示。为避免主界面线程阻塞,应使用异步方法加载图片数据。新闻资讯模块运行如图2所示。

3.2 教务助手模块实现

教务助手模块主要包含成绩查询及课表查询。进入成绩查询页面前,需先判斷用户是否为学号登录,否则跳转至登录界面。将学号及密码发送至服务器,由后台系统对教务系统进行模拟登录,成功后继续请求用户成绩,使用UITableView控件将分数及绩点信息显示在界面上,如图3所示。

课表查询的数据获取方法与成绩查询类似。通过读取NSUserDefaults,获取用户专业班级,同时将用户需查询的学年、学期等信息发送至服务器。解析网页信息后返回课程JSON数据,通过嵌套使用UITableView控件进行展示,并保存至SQLite数据库中。之后每次查询可直接使用Realm读取SQLite数据库,无需向服务器重复发送网络请求,一定程度上减轻了服务器压力,节省了用户流量。

3.3 校园地图模块实现

互联网技术的成熟促进了地图开发产业的蓬勃发展,市场涌现出大量各有所长的地图API[21]。由于高德地图具有接口丰富、定位精准、使用简易、文档齐全等特点,故本文选用其进行二次开发。

用户进入该模块后,点击“定位”图标按钮可快速定位到用户当前所在位置,点击“校区切换”图标可切换显示不同校区的地图,通过设置iOS地图SDK中AMapPOIKeywordsSearchRequest类的keyword参数,发起POI关键字搜索,查询用户感兴趣的地点信息。另外,导航SDK中还提供步行、骑行、公交、驾车等多种出行路线规划接口,对不同路线规划类中的出发地和目的地等参数进行设置后,在回调函数中将路线显示在地图上,为用户提供便捷的导航服务。

3.4 招聘信息模块实现

用户进入该模块后,默认显示学校招聘及宣讲会信息。APP将请求参数发送给后台服务器,服务器通过模拟浏览器访问的方式获取学校就业信息网、海投网上对应省份和学校招聘宣讲信息并返回至APP。用户点击“省份”和“学校”按钮后,底部弹出UIActionSheet视图,以便切换选择其它地区高校的招聘信息。

4 结语

随着校园信息化建设的推进,移动校园APP逐渐在各大高校得到广泛推广和应用。本系统通过整合学校新闻网、就业信息网和海投网等网站信息,基于高德地图SDK及模拟登录、图片识别、Python爬虫技术,实现了新闻资讯、教务助手、校园地图、招聘信息等功能,为师生打造了一个移动校园iOS应用平台。

目前该应用已成功在苹果应用商店上线,并在校内进行了一段时间的试运行。系统界面友好、操作简便、性能稳定,取得了良好效果,不仅为师生提供了获取校园资讯的新途径,同时促进了学校教学、科研及综合教务服务水平的提升。随着应用功能不断丰富及系统性能逐步提升,该系统将为学校师生提供更加便捷的校园生活服务。

参考文献:

[1] 赵小刚. 浅谈高校信息化建设现状与发展趋势[J]. 江苏科技信息,2013(20):28-30.

[2] 王力斌,张伟,顿文涛. 高校信息化建设演进分析[J].  河南工业大学学报:社会科学版,2016(02)

[3] 王凤仙. 上海大学生智能手机的使用行为研宄[D]. 上海:上海交通大学,2013.

[4] 傅宇凡,冀婧岩,高凯涛,等. 117所高校综合管理信息化对比分析[J]. 中国教育网络,2017(Z1):23-28.

[5] 崔为花. 基于移动互联网技术的“移动智慧校园”设计与实现[J]. 软件工程师,2015,18(5):27-29.

[6] 尚进. 浅谈西安电子科技大学移动校园建设[J]. 陕西教育:高教版,2014(Z1):115-116.

[7] 任婷婷. 基于Android系统的校园助手应用的设计与实现[D]. 北京:北京交通大学,2014.

[8] ALDRICH A. Universities and libraries move to the mobile Web[EB/OL]. http://www.educause.edu/ero/article/universities-and-libraries- move- mobile-web.

[9] GUIRGUIS S, HASSAN M A. A smart framework for web content and resources adaptation in mobile devices[C]. IEEE Advanced Communication Technology (ICACT),2010:1-8.

[10] 曹双双. 基于Android手机的校园移动平台设计[J]. 软件导刊,2015,14(8):179-181.

[11] 王欣,景波. 基于云技术支持的智慧校园支撑平台的总体设计[J]. 现代电子技术,2016,39(6):18-20.

[12] 江龙. 基于Android系统的校园助手软件的设计与实现[D]. 淄博:山东理工大学,2016.

[13] 邹光临. Android与iOS对比分析及竞争优缺点[J]. 科技与创新,2017(10):65.

[14] 吴寅鹤. iOS平台应用程序的安全性研究[D]. 广州:广东工业大学,2014.

[15] 孫青云,王俊峰,赵宗渠,等. 一种基于模拟登录的微博数据采集方案[J]. 计算机技术与发展,2014,24(3):6-10.

[16] 王敏. 分布式网络爬虫的研究与实现[D]. 南京:东南大学,2017.

[17] 冯清. 基于Python的基因表达数据网络爬虫研究与设计[D]. 太原:山西医科大学,2017.

[18] 陈琳,任芳. 基于Python的新浪微博数据爬虫程序设计[J]. 信息系统工程,2016(9):97-99.

[19] 吕霁. 浅谈验证码的识别[J]. 河北能源职业技术学院学报,2015,15(1):72-74.

[20] 朱莹玲. 粘连字符验证码的识别研究[D]. 南京:南京理工大学,2017.

[21] 向玉云,高爽,陈云红,等. 百度、高德及Google地图API比较研究[J]. 软件导刊,2017,16(9):19-21,25.

(责任编辑:江 艳)