基于Android的高校生活助手的设计与实现
2019-09-10张利强李川黄日辉施羽
张利强 李川 黄日辉 施羽
【摘 要】随着当今社会的生活节奏越来越快,高校学生对手机应用的要求也越来越高,也经常会为各种各样的App应用下载选择而感到烦恼。针对此现象,文章提出了一款基于Android的高校生活助手App,它整合了各大O2O领域经典应用,主要有出行叫车、地图导航、酒店预订、外卖点餐等服务,此外还添加了一些特色功能,如机器人管家、周公解梦、景点玩乐等,为用户提供多元服务。
【关键词】生活助手;Android;O2O
【中图分类号】TP311.52 【文献标识码】A 【文章编号】1674-0688(2019)08-0066-02
该软件是一款以景点、酒店、滴滴出行、饿了么外卖、在线题库、周公解梦、校园社区、地图导航为基本服务资源,结合了已参与用户的评价和提出的改进方案进行智能筛选和整合,为高校师生用户提供一套便捷舒心的活动方案的智能活动组织系统。该系统覆盖主流的安卓平台,将纯商业性的App打造成为集商业性、娱乐性于一体的新型本地化服务性App。
1 系统开发模式与技术
1.1 采用的开发模式
系统架构主要分C/S和B/S两种。B/S即Browser/Server(浏览器/服務器)结构,简单来说,B/S架构就是客户端可以通过浏览器访问服务器资源,例如百度网页版本。因此,只要客户端中安装有浏览器即可,但在美工方面B/S因为其页面较大,不管是UI设计还是前端实现都是比较麻烦的,且访问速度与效果低于C/S架构。C/S即Client/Server(客户端/服务器),该模式一般拥有指定的软件作为客户端与服务器相连接。用户在使用App的过程中,App将用户的请求发送到服务器,然后服务器处理请求数据返回给App,最终客户端再将从服务器获取到的数据以特定的形式展示出来,例如手机QQ。该模式的特点是用户只有安装指定的软件,才能对服务器资源进行访问。因为客户端软件普遍较小,所以UI设计与前端实现都是比较简单的。该系统主要工作于移动端中,又因在移动端中浏览器操作极不方便,故采用的是C/S模式架构。
1.2 涉及技术
(1)Android 4.0。Android 4.0名为Ice Cream Sandwich(简称ICS,冰淇淋三明治),于2011年9月发布,此时的Android系统在手机市场中的占有率已经达到了43%,目前绝大部分的Android系统都为4.0及以上。Android编程是基于Java编程语言的,同时它也是开源的,基于Linux的移动设备操作系统,如智能手机和平板电脑。Android具有以下开发优势:开放源代码;众多开发者及强大的社区;不断增长的市场;国际化的App集成;低廉的开发成本;更高的成功概率;丰富的开发环境。
(2)Android四大组件。Android四大组件分别是Activity、Service、Broadcast Receiver、Content Provider。一个Activity一般就是一个界面。一个Activity活动就是一个完整的页面,它可以包括各种选项卡、菜单布局等所有的页面控件。一个消息服务应用程序可能包括一个显示联系人列表的Activity,一个编写信息的Activity,以及其他查看信息和改动应用程序设置的Activity。这些Activity一起工作,共同组成了一个应用程序。Service是Android的四大组件之一,即Android系统的服务(不是一个线程,是主程序的一部分),与Activity不同,它是不能与用户交互的,不能自己启动的,需调用Context.start Service()启动,执行后台,假设我们退出应用时,Service进程并没有结束,它仍然在后台行。Service没有用户界面,但它依然会在后台一直运行着程序。例如,Service可能在用户处理其他程序命令的时候看一些电影,或者进行更新,或者执行一些在线的命令,并把运算结构提供给Activity展示给用户。每一个Service都扩展自类Serivce。正常广播Normal Broadcasts(用Context.sendBroadcast()发送)是全然异步的。它们都执行在一个没有定义的顺序,一般是在同一时间。这样会更有效,但意味着receiver不能包括所要使用的结果或中止的API。有序广播 Ordered Broadcasts(用Context.send Ordered Broadcast()发送)每次被发送到一个Receiver。所谓有序,就是每一个receiver执行后能够传播到下一个Receiver,也可以马上进行中止,不传播给其他Receiver。而Receiver执行的顺序能够通过Matched Intent-filter里面的Android:Priority来控制,当Priority优先级同样的时候,Receiver以随意的顺序执行。Content Provider(内容提供者)也是Android四大组件之一,主要用于将数据展示给其他用户。Content Provider把程序中的数据共享给访问者,其他应用的访问者能够通过Content Provider对自己想要的程序数据进行数据访问。ContentProvider分为系统的和自己定义的,系统即联系人、图片等数据。
(3)Android DeepLink。Deeplink是App应用中的深度链接,如果把App看做一个网站,那么Deeplink就是网站中的一个深入页面,如产品专题页面、活动促销页面等。如果没有Deeplink,每个App都是独立的。内容和服务之间的链接消失了,应用搜索是断裂的。从一定程度上说,每个App都建立起自己的孤岛,链接和数据不能在App之间交换,Deeplink让App开发者能够链接到应用内特定的页面。
(4)C3P0数据连接池。C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定。C3P0的自动回收控线连接功能使得在编写时不必考虑因数据库连接不释放而造成的连接数过多且异常的情况。C3P0连接池会根据配置初始化N个数据库连接,我们只需通过Data Sourse.get Connection()即可从线程池中取用一个已经连接好的资源,并执行数据库操作。
2 系统各功能模块设计
该软件主要模块有首页、综合教务系统、出行打车、机器人管家、广场、附近地图、英语四六级题库、预订酒店、外卖订餐、周公解梦、内江周边。该App界面美观,方便使用。 综合教务系统:跳转到学院教务系统登录界面,用户可以从这里直接登录教务系统主页。出行打车:接入滴滴出行接口,用户无需下载嘀嘀出行或其他打车软件,只要在本App内就可以选择目的地进行打车。机器人管家:该功能为智能机器人对话,在对话框内输入你想说的话,机器人会回答你的大部分问题,如旅行、地点、天气等。广场:一个学生论坛,用户平时有什么新鲜事,或是什么疑题都可以在广场里询问其他同学,或者参与其他讨论。附近地图:使用百度地图接口,同学们无需下载百度地图或高德地图等导航软件,只要打开本App就可以进行导航查看目的地路线与交通出行。英语四六级题库:同学们可以在上面刷近5年以来英语四级、六级真题和模拟题。界面虽然还不够好看,但主要功能都齐全。预订酒店:提供了本地大部分的酒店信息,包括床位的价钱、具体时间、人数等,以及其他网友对酒店的评价。外卖订餐:同学可以在上面选择不同距离、不同口味的餐厅进行点餐外卖服务,与饿了么没有多大区别。通过手机号码注册账号之后,进行点餐、付款。周公解梦:同学们可以将自己做过的梦输入文字框内来寻找自己梦的困惑。该模块功能齐全,包括名字解读、星座运势、生辰八字等。内江出行:包括内江大部分的旅游景点,供同学们参考。美食与交通出行也都有详细的攻略,方便同学们在节假日期间约上好朋友一起去玩。
3 数据库设计
本App主要是在校园内使用,用户量与并发量较小,因此不必考虑数据库的拆分。本系统采用MySQL作为数据库服务器对数据进行管理。结合对App的需求分析,共设计了ns_user(用户)、ns_tk(题库)、ns_bbs(广场)、ns_jwxt(教务系统)、ns_zgjm(周公解梦知识库)、ns_njzb(内江周边)、ns_jqr(机器人管家)7张核心数据表,所有表均有主键,且外键均为其他表主键。其中,ns_zgjm为周公解梦知识库,因此数据量可能偏大。数据库表均有适当的冗余设计,以便程序查询,例如为了在广场中方便留言用户的显示,在ns_bbs表中每一条记录除了储存用户ID外,还储存了用户的昵称。
4 系统功能模块实现
该App主要采用webview和h5相结合开发,其中外卖订餐、预订酒店、出行打车、附近地图分别调用其领域的经典应用接口,如出行打车调用的是滴滴出行的接口。其余功能实现如下。{1}首页:通过thbost实现滚动播放,通过线性布局上下对齐左上角的抽屉式菜单栏,通过DrawerLayout实现,在抽屉菜单里面有内江出行功能。{2}内江周边:主要涉及对ns_njzb表的增删改查操作。{3}周公解梦:该功能需要一个强大的知识库,因此需要使用到网络爬虫进行知识数据搜集,主要以关键词对应解释的形式存储于本地数据表ns_zgjm中,由于MySQL为关系型数据库的原因,程序在進行查询时会显得死板且处理麻烦,因此该表的数据应在服务启动时,由程序进行数据初始化并异构,缓存于服务器内存中。当用户输入自己的描述时,首先需要对用户的描述进行拆分、分词,并获取其中的关键词,再由关键词模糊匹配缓存于服务器内存中的数据,最终获取到匹配度最高的描述反馈给用户。{4}综合教务系统:使用DeepLink跳转到学院教务系统网站。{5}英语四级、六级题库:将最近6年的英语四级、六级真题整理加入数据库,供用户查阅。{6}机器人管家:用户发送消息后,首先对用户的消息进行分词处理,获取关键词,然后通过获取到的关键词在数据库中查询回复语,若库中没有关键词对应的回复,则调用图灵机器人接口获取回复,最后将相应关键词和回复入库,以便下次对话时能够直接从本地库中获取到回复语。
5 结语
本文提出了一种基于C/S架构的内江师范学院生活助手App。该App主要采用Android语言完成开发,以c3p0+MySQL作为持久层,将MySQL服务部署于服务器中,避免内网限制,以便支持移动端对于数据库的直接访问,为学院用户提供多元服务。其存在不足之处,如UI视觉设计不足、降低界面交互性体验。
参 考 文 献
[1]朱剑锋,熊志斌,尹成国.应用型高等学校JAVA程序设计课程体系的改革[J].中国电力教育,2011(27):174-175.
[2]张利强.基于B/S的高校二手图书交易平台设计与实现[J].内江师范学院学报,2017,32(10):55-59.
[3]李宁.Android/IPhone开发完全讲义[M].北京:中国水利水电出版社,2010.
[4]Ed Burnett.Hello,Android:Introducing Googles Mobile Development Platform[J].PRAGMATIC BO-
OKSHELF,2010(7):10-11.
[5]Rick Rogers,John Lombardo.Android Application Development[M].OReilly Media Inc.,2009.
[6]杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010.
[责任编辑:钟声贤]