




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录摘要I引言1第一章绪论111问题的提出及研究意义112国内研究现状213本论文组织结构2第二章关键技术概述221ANDROID平台相关内容介绍222系统实现工具及运行环境5第三章系统需求531用户需求532系统设计的原则5第四章概要设计641系统体系结构642模块设计643功能模块对照表7第五章详细设计751地图相关功能模块752公交查询功能模块1053公交数据下载模块1554数据更新模块1755地图图存模块17第六章公交查询系统的实现1861系统环境的搭建1862软件组成1863ANDROID系统虚拟手机1964软件安装2065软件运行21致谢23参考文献24ABSTRACT25附录程序部分26基于ANDROID的北京公交离线查询系统摘要在目前已有的公交系统中,存在数据更新较慢、不准确等问题。基于安卓的北京公交离线查询系统还没有被推广成为成熟的软件,本文在分析总结一些问题的基础上,设计并实现了基于安卓的公交离线查询系统。系统运行于ANDROID平台,使用谷歌地图,SQLITE数据库,主要采用JAVA语言编程。实现了当前位置定位、在地图中快速查找任一位置,车次查询、站点查询、站站查询、换乘查询等功能。该公交查询系统实现了查询结果的文本与电子地图的同时显示,使系统更直观、方便。整个查询过程中,只有谷歌地图功能需要连接网络获取网络数据,其余功能均能离线执行。关键词公交查询;ANDROID平台;SQLITE;谷歌地图;JAVA;ECLIPSE引言ANDROID是一个真正意义上的开放性移动设备综合平台,它包括操作系统、用户界面、中间件和一些关键的平台应用,拥有移动电话工作所需的全部软件。ANDROID最大特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验,ANDROID里面具有非常丰富的图形系统、对多媒体的支持功能和非常强大的浏览器。当然,提到ANDROID就不得不说手机开放联盟OPENHANDSETALLIANCE,它是一个由33家手机制造商、软件商和电信业组成的推广ANDROID平台的联合会。ANDROID平台的开放性等特点既能促进技术包括平台自身的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定特色化的产品,以形成自己的竞争优势,这对于手机制造商来说,具有很强的吸引力。因此,它具有很大的市场发展潜力。由于手机价格低廉,使用方便,它已成为人们获得在生活工作上等各种信息服务的最佳选择。借助于无线互联网,基于手机的公交查询系统能为客户随时随地提供公交信息。鉴于本文做的是关于北京公交信息离线查询的系统软件,固然必须要有存放北京公交信息的数据库,关于数据库的搜集方面没有做好,所以在软件运行阶段不能直接实现公交的查询,试运行阶段主要实现了软件的运行界面及相关功能的演示。第一章绪论11问题的提出及研究意义城市公交其覆盖面广、经济快捷的特点,目前任然是绝大数出行者的首选方式,也是各地城市政府大力发展的一种交通方式。针对目前的实际情况,大力发展城市公共交通,鼓励并吸引市民选择乘公交出行,将会大大减弱交通压力,从极大程度改善交通状况。影响城市公交服务水平的因素主要有四个方面方便性、迅捷性、经济性、舒适性。改善公交服务,就必须从着四个方面综合考虑;,一般各城市采取的措施有(1)合理布设公交线路网。(2)改善公共交通设施。(3)提高公交车速。(4)将设智能公交系统。同时在建立在线网络查询公交信息的同时也支持离线查询,即使在没有网络连接更新的情况下可以利用已经下载存储在手机里的地图使用,并且能对手机里的地图做进一步的更新,从而使得信息具有实时性和准确性。12国内研究现状我国的公交事业发展比较落后,公交智能化水平比较低,绝大部分是沿袭旧的运营体制。目前我国的城市公交查询系统还处于一个相对落后的水平,广大乘客可以获得信息的方式很少,公交线路和站点信息的完整性和准确性得不到保证。虽然手机凭借小巧可人的身材、N合一的功能特色,成为数码时代人们日常生活中不可或缺的一部分,目前大多数基于手机的公交查询系统都是采用短消息的形式,虽然基于短消息的查询不受空间约束,但是可能受到运营商的一些约束硬件方面,如果遇到服务器、网络繁忙时段或信号盲区,导致用户请求长时间得不到响应。13本论文组织结构各章内容安排如下第1章绪论本章主要讲述设计题目的研究目的、意义以及现状,相对于软件工程的问题定义和可行性研究部分。第2章关键技术概述本章主要介绍了系统所采用的关键技术,这些技术是构成系统的主要技术因素,并为系统的构造提供了理论依据。第3章系统需求本章描述了公交查询系统的基本用户需求比如用户界面等,同时介绍了本软件的设计原则以及运行环境。第4章概要设计本章描述了系统的体系结构,详细描述了系统的具体模块划分和模块的层次结构,并详细描述了各个模块的功能,为详细设计做好铺垫。第5章详细设计本章详细介绍了各个模块的内部处理流程,以及实现模块的类,类中的函数以及变量。第6章系统测试及运行结构分析本章属于软件测试环节,对于该软件的运行环境、运行情况进行详细的说明,详细说明软件的特色和优点。第二章关键技术概述21ANDROID平台相关内容介绍211ANDROID操纵系统简介ANDROID一词的本义指“机器人”,同时也是GOOGLE于2007年11月5日宣布的基于LINUX平台的开源手机操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。ANDROID是基于LINUX内核的操作系统,早期由GOOGLE开发,后来由开放手机联盟开发。它采用了软件堆层的构架,主要分为三部分。底层是以LINUX内核工作为基础,只提供基本功能;其他的应用软件则有各公司自行开发,以JAVA作为编写程序的一部分。另外,为了推广此技术,GOOGLE和其他几十个手机公司建立开放手机联盟。212ANDROID构架图21显示的是ANDROID操作系统的主要组件,每个部分将会在下面具体描述。ANDROID同一个核心应用程序包一起发布,该应用程序包包括EMAIL客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是用JAVA编写的。ANDROID应用程序框架开发者也完全可以访问核心应用程序所使用的API框架。该应用程序框架用来简化组建软件的重用;任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块。该应用程序重用机制使得组件可以被用户替代。APPLICATIONHOMECONTACTSPHONEBROWSERAPPLICATIONFRAMEWORKACTIVITYMANAGERWINDOWMANAGERCONTENTPROVIDERVIEWSYSTEMNOTIFICATIONMANAGERPACKAGEMANAGERTELEPHONYMANAGERRESOURCEMANAGERLOCATIONMANAGERXMPPSERVICELIBRARIESSURFACEMANAGERMEDIAFRAMEWORKSQLITEOPENGL|ESFREETYPEWEBKITSGLSSLLIBCANDROIDRUNTIMECORELIBRARIESDALVIKVMLINUXKERNELDISPLAYDRIVERCAMERADRIVERBLUETEETHDRIVERFLASHMEMDRIVERBINDERIPCDRIVERUSBDRIVERKEYPADDRIVERWIFIDRIVERADUIODRIVERSPOWERMANAGEMENT图21ANDROID系统构架目前ANDROID应用程序都由一系列的服务和系统组成,包括(1)一个可扩展的视图(VIEW)可以用来建应用程序,包括列表(LIST)、网格(GRIDS)、文本框(TEXTBOXES)、按钮(BUTTONS),甚至包括一个可嵌入的WEB浏览器。(2)内容管理器(CONTENTPROVIDERS)使得应用程序可以访问另一个应用程序的数据,或者共享它们自己的数据。(3)一个资源管理者(RESOURCEMANAGER)提供非代码资源的访问,如本地字符串、图形和分层文件(LAYOUTFILES)。(4)一个通知管理器(NOTIFICATIONMANAGER)使得应用程序可以在状态栏中显示客户通知信息。(5)一个活动类管理器(ACTIVITYMANAGER)用来管理应用程序生命周期并提供常用的导航回退功能。ANDROID程序库ANDROID包括一个被ANDROID系统中各种不同组建所使用的C/C库集。该库通过ANDROID应用程序框架为开发者提供服务。以下是一些主要的核心库系统C库一个从BSD继承来的标准C系统函数(LIBC),专门为基于EMBEDDEDLINUX的设备定制。媒体库基于PACKETVIDEOOPENCORE;改库支持录放,并且可以录制许多流行的音频视频格式,还有静态印象文件包括MPEG4、H264、MP3、AAC、AMR、JPG、PNG。SURFACEMANAGER对显示子系统的管理,并且为多个应用程序提供3D和2D图层的无缝融合。LIBWEBCORE一个最新的WEB浏览器引擎用来支持ANDROID浏览器和一个可嵌入的WEB视图。SGL一个内置的2D图形引擎3DLIBRARIES基于OPENGLES10APIS实现;该库可以使用硬件3D加速或者使用更高优化的3D软加速。FREETYPE位图(BITMAP)和向量(VECTOR)字体显示。SQLITE一个对于所有应用程序可用功能强劲的轻型关系型数据库引擎。ANDROID运行库ANDROID包括一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每个ANDROID应用程序都在它自己的进程中运行,都拥有一个独立的DALVIK虚拟机实例。DALVIK是针对于同时高效地运行多个VMS来实现的。DALVIK虚拟机执行DEX的DALVIK可执行文件,该格式文件针对内存最小使用做了优化。该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的DX工具转化成DX格式由虚拟机执行。DALVIK虚拟机依赖于LINUX的一些功能,比如线程机制和底层内存管理机制。LINUX内核ANDROID的核心系统服务依赖于LINUX26内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。LINUX内核也同时作为软件和硬件堆栈之间的硬件抽象层。22系统实现工具及运行环境开发工具是ECLIPSE、ANDROIDSDK、ADT。软件运行环境ANDROID操作系统。第三章系统需求31用户需求越来越复杂的公交网络使得人们经常非常的困惑,为了解决这些问题,在ANDROID这个平台上,设计开发一个公交信息查询系统。系统应该具有以下功能(1)实现地图的显示,并且能够对地图进行拖动、放大、缩小。(2)用户应该能够从服务器中下载公交数据,当公交信息需要更新时,应该由管理员在服务器端进行更改,手机用户只需要下载新数据即可;数据库应该直接存在手机中,这样就不必每次登陆服务器,提高查询速度。(3)系统应该可以进行车次查询,为用户提供某一路公交的信息,并在地图中画出路线。(4)系统应该能够查询到在两个站点之间通车的所有公交车。(5)系统应该能够进行站点查询,显示出经过某个站点的所有公交信息。32系统设计的原则321实用性原则该原则主要体现的是所设计的系统能够解决实际问题,是所有应用系统设计最基本的最主要的原则,直接关系到系统成败。基于手机的公交信息查询系统可以随时为人们解决出行时的公交选择问题,使用户方便的获取真正想要获得信息。322可靠性原则可靠性是系统设计的立足点,若设计的系统故障频繁,就不能满足用户的需求,设计的公交查询系统应该从以下几个方面提高其可靠性故障发生是应该给出提示,提示用户应该如何操作来排除故障;通过测试监测系统漏洞,完善系统。323易于更新和维护系统的设计能够实现有关空间数据和属性数据的实时更新和维护。在系统维护时只需在服务器上维护即可,数据的更新和维护要简单可行。324操作简单操作简单是软件设计过程中需要重视的问题,应该精心设计用户接口、使系统用户界面友好,便于用户理解。第四章概要设计41系统体系结构手机客户端通过无线网与服务器连接并请求数据。如图41所示手机客户端INTERNET服务器图41通信示意图42模块设计421程序模块划分地图显示模块、GPS定位模块、查找定位模块、公交查询模块、公交数据下载模块、数据更新模块、地图图层模块。422程序模块功能描述(1)地图显示模块该模块的功能就是实现地图的显示,并且能够对地图进行拖动、放大、缩小。当用户点击主界面上列表中需要显示地图的ITEM时,显示谷歌地图,单机地图界面后能够浮现出放大、缩小按钮,每次单击放大(缩小)按钮都能将地图放大(缩小)一个级别,谷歌地图共有24个级别,放大级别越高实现结果越详细,按住屏幕不放就可以拖动地图。(2)GPS定位模块本模块利用系统中的GPS服务实现定位,但是由于模拟器中没有GPS模块,所以需要通过DDMS虚拟坐标,模拟卫星获得当前位置并发给手机的过程。获得LOCATION以后就可以在地图中找到这个位置,并将地图更新,使这个LOCATION位于地图中央,并用红色的圈圈表示出来。(3)查找定位模块本模块实现的功能是在地图中查找用户要查找的点,并在地图中用红色圆圈标识出来。这个模块从编辑框中捕获用户要查找的地点名以后根据这个地名字符串在地图中查找最相近的LOCATION,找到之后更新地图到相应的GEOPOINT。(4)公交查询模块公交查询模块的主要功能分为三个车次查询、站点查询、站站查询。车次查询是从数据库中查询某一路公交车的信息,包括起始时间,公交路线等,并且可以再地图中画出这路公交车的通车路线;站点查询可以获得经过某个站点的所有公交车,查询结果以列表的形式显示,单击一项会显示该路公交车的详细信息;站站查询与站点查询类似,是获取在两个站点之间通车的公交车次。(5)公交数据下载模块本模块通过HTTP协议,与WEB服务器进行连接,并下载公交数据。手机上通过HTTP协议来获取网页一般会有500MS的延迟,网页请求过程是手机客户端访问网页的最大瓶颈所在。该模块通过指定URL连接到TOMCAT服务器,从WEB服务器上获取所选城市对应的公交数据以数据流的方式下载到手机的SDCARD上,为了减少处理时间,采用下载与存入数据库并行的方式。该模块中将获得的公交数据分成公交车名、起始时间、公交路线三段后按照字段存入SQLITE数据库中。(6)数据更新模块本模块实现管理员对于公交数据的管理更新。公交数据是存放在服务器上的,所以当公交数据需要更新时,管理员在服务器端更新文件,手机用户只需要从服务器重新获取新数据即可。(7)地图图层模块该模块主要功能;在谷歌地图上增加图层。例如;在地图上画出某一路公交车的行车路线,在地图上用红色圆圈标识要查找的地点等。43功能模块对照表表41功能模块对照表第五章详细设计51地图相关功能模块511地图显示模块(1)模块描述该模块的主要功能显示GOOGLE地图,并且能够对地图进行拖动、放大、缩小。主要变量PRIVATEMAPVIEWMAPVIEWMAPVIEW对象。主要函数SETCONTENTVIEWINTLAYOUTRESID功能为界面设置布局,其中LAYOUTRESID是布局文件。SETBUILTINZOOMCONTROLSBOOLEANBOOL功能参数设置为TRUE时,地图可以控制,模块名称模块功能地图显示模块显示地图,实现地图拖动、放大、缩小GPS定位模块定位当前位置查找定位模块在地图中查找指定位置,并标示出来公交查询模块车次查询、站点查询、站站查询公交数据下载模块从服务器下载公交数据并存入数据库数据更新模块管理员对公交数据的管理地图图层模块在地图上增加图层即可以进行拖动、放大、缩小。(2)具体实现ANDROID系统集成了GOOGLEMAP功能,要在自己的系统中使用谷歌地图首先要申请APIKEY,获得APIKEY以后在清单文件ANDROIDMANIFEST。XML里添加“”,另外,还需要添加3个权限ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION和INTERNET并且要在使用GOOGLEMAP的LAYOUT中手动添加控件,最后就是继承MAPACTIVITY,而不是单纯的ACTIVITY。(3)源文件说明用到地图显示的模块有三个MAP_BROWSEJAVA实现地图浏览功能GPSL_LOCATIONJAVA实现GPS定位的类SEARCHLOCATIONJAVA在地图中查找指定的位置的类SHOWCURRENTCITYJAVA显示当前城市的类512GPS定位模块(1)模块描述主要功能利用GPS服务定位用户的当前位置主要变量PRIVATELOCATIONMANAGERMLOCATIONMANAGER01获取系统中位置服务的变量PRIVATEMAPVIEWMMAPVIEW01地图视图对象PRIVATEGEOPOINTCURRENTGEOPOINT当前位置的GEOPOINT,由经纬度构成。主要方法PRIVATEGEOPOINTGETGEOBYLOCATIONLOCATIONLOCATION传入参数LOCATION,将这个LOCATION转换成GEOPOINT。PUBLICVOIDREFRESHMAPVIEWBYGEOPOINTGEOPOINTGP,MAPVIEWMV,INTZOOMLEVELBOOLEANBIFSATELLITE更新地图MV到GP点,将地图移至以GP为中心的位置,ZOOMLEVEL是地图的放大级别,最后一个变量表示是否显示卫星图。PRIVATEVOIDPROCESSLOCATIONUPDATELOCATIONLOCATION当手机收到位置更改,将LOCATION传入GEOPOINT及MAPVIEW,同时更新地图到新的位置。(2)具体实现主要实现方法有通过GETSYSTEMSERVICECONTEXTLOCATIONSERVICE开启系统的GPS服务,通过GETLOCATIONPROVIDERLOCATIONMANAGERIM获取到符合条件的位置,之后将获取到的LOCATION转化成经纬度格式的GEOPOINT,然后调用REFRESHMAPVIEWBYGEOPOINTGEOPOINTGP,MAPVIEWMV,INTZOOMLEVEL,BOOLEANBIFSATELLITE更新地图到这个GP点。(3)文件说明GPSLOCATIONJAVA实现GPS定位的类。(4)流程逻辑如图51所示通过LOCATIONMANAGER开启GPS服务目标位置通过LOCATIONPROVIDER获取LOCATION将LOCATION转化成GEOPOINT更新地图到GEOPOINT在地图中标注当前位置图51GPS定位模块流程逻辑513查找定位模块(1)模块描述主要功能以及方法如下主要变量PRIVATEMAPVIEWMMAPVIEW01地图视图对象MAPCONTROLLERMMAPCONTROLLER01控制地图大小以及是否可以拖动的变量主要方法SETONCLICKLISTENERNEWBUTTONONCLICKLISTENER对查询按钮单击时间的监听,当用户单击查询时进行响应。PRIVATEGEOPOINTGETGEOBYADDRESSSTRINGSTRSEARCHADDRESS以要查询的地址为参数,通过地址名在地图中的查找这个地址的GEOPOINT(2)具体实现系统界面中用了三个控件EDITTEXT,BUTTON,MAPVIEW用户在EDITTEXT中输入要查询的地点名称,单击查询按钮以后调用GETGEOBYADDRESSSTRINGSTRSEARCHADDRESS函数进行查询,将获得的结果传递给REFRESHMAPVIEWBYGEOPOINTGEOPOINTGP,MAPVIEWMV,INTZOOMLEVEL,BOOLEANBIFSATELLITE,对显示的地图进行更新,更新至查询地点,并用红色圆圈标注要查询的地点。(3)文件说明SEARCHLOCATIONJAVA查询定位的JAVA源文件。(4)输入项所要地点名称。(5)输出项将查询的结果在地图中标注出来。(6)处理流程如图52所示将地图移至这个GEOPOINT并标注以地点名为参数获取GEOPOINT输入要查询的地点名称图52查找定位模块处理流程52公交查询功能模块521车次查询模块(1)模块描述该模块的主要功能是查询某一路车的信息,包括公交车名,通车起始时间以及通车路线。模块功能实现类FORBUSINFO类。接口中用到的变量PRIVATESTRINGBUSLINE保存获得的公交的通车路线。FORBUSINFO类主要变量和方法如下主要变量PRIVATEDATABSEHHELPEREVENTS数据库的辅助类对象,用来对数据库进行操作SQLITEDATABASEDB数据类的对象CURSORMCURSOR从数据库中查询到的结果进行读取、写入的接口,存储查询结果列表主要方法PUBLICVIODOK单击确定后响应的函数,在数据库中查询EDITTEXT中的车次查询,将查询到的信息显示在BUSDETAILEDINFO布局界面中。(2)具体实现点击确定按钮后判断EDITTEXT是否为空,若为空给出提示,否则在数据库中进行查询,关键代码SQLITEDATABASEDBEVENTSGETREADABLEDATABASECURSORMCURSORDBQUERYTRUE,TABLE_NAME,NEWSTRINGBUSNUM,TIME,BUSLINE,”BUSNUM”,NEWSTRINGEDIT1GETTEXTTOSTRING,NULL,NULL,NULL,NULL查询结果为空弹出对话框进行提示,若结果不为空九江查询结果显示在BUSDETAILEDINFO布局界面中,对于这个界面中的“在地图中显示”按钮进行监听,单击时则将所查到结果中的BUSLINE存入BUNDLE中,以INTENT的方式启动DRAWLINE这个JAVA类,将通车路线在地图上画出来。(3)文件说明FORBUSINFOJAVA查询某一路公交车的信息的类源文件。(4)输入项要查询的的公交车名。(5)输出项该路公交车的详细信息,如起始时间、通车路线等。(6)流程逻辑该流程逻辑如图53所示在数据库中进行查询,返回CURSOR输入要查询的车次名称车次为空CURSOR为NULL将查询到的信息在界面中显示车次查询结束提示用户输入提示不存在YESNOYESNO图53车次查询模块流程逻辑522站点查询模块(1)模块描述该模块的主要功能是查询经过某个站点的所有公交车,查询结果以列表的形式列出,列表每一项包括公交车名,通车起始时间以及通车路线。焦点移到某一项时该路公交车的通车路线以走马灯(文字从右向左滑动显示)的效果显示。点击其中一项,会显示这一路公交车的详细信息。模块功能实现类BUSSTOPINFO,SHOWSTOPINFO,SHOWCLICK类。接口中用到的变量PUBLICSTOPNAME保存要查询的站点名称。BUSSTOPINFO类主要变量和方法如下主要变量BUNDLEBUNDLE将不同类型的变量映射到一个字符串,在这里将编辑框中的内容映射到STOPNAME中,以便与其他ACTIVITY进行通信传递要查询的站点名称。SHOWSTOPINFO类主要变量和方法如下主要变量PRIVATESTATICSTRINGFROMBUSNUM,TIME,BUSLINE与后面的TO数组相结合,显示查询结果,公交车名,起始时间,通车路线3个字段与他们的位置的映射关系。PRIVATESTATICINTORIDNUM,RIDBUSLINE。SIMPLECURSORADAPTERADAPTER将查询结果按照FROM,TO的方式进行映射,显示在列表中。主要方法PROTECTEDVOIDONLISTITEMCLICKLISTVIEWARG,VIEWARG1,INTARG2,LONGARG3单击列表中某一项后相应的函数,根据ARG2判断单击的是哪一项,将这一路公交车的信息存入BUNDLE中,将这些参数传递给SHOWCLICK类,在SHOWCLICK类中显示公交车的详细信息。(2)具体实现点击确定按钮后判断EDITTEXT是否为空,若为空给出提示,否则在数据库中进行查询,关键代码SQLITEDATABASEDBEVENTSGETREADABLEDATABASECURSORCDBQUERYTABLE_NAME,NEWSTRING_ID,BUSNUM,TIME,BUSLINE,“BUSLINELIKE”,NEWSTRING“”STOPNAME”,NULL,NULL,NULL查询结果为空弹出对话框进行提示,如结果不为空就将查询到的的结果显示在STOPINFO布局界面中。界面最上方的标题设置为“经过”STOPNAME“的公交车有”然后对单击事件进行监听,单击某一想以后将该项公交车信息传递给SHOWCLICK类,在SHOWCLICK类中完成公交车详细信息的显示。(3)文件说明BUSSTOPINFOJAVA提示用户输入要查询的站点名称的类源文件;SHOWSTOPINFOJAVA对BUSSTOPINFO传入的站点名称进行查询,并将查询结果显示在列表中;SHOWCLICKJAVA现实所单击公交车的详细信息。(4)输入项要查询的站点名称(5)输出项经过该站点的所有公交车,以及这些公交车的信息。(6)流程逻辑流程逻辑如图54所示在数据库中进行查询,返回CURSOR输入要查询的站点名称站点为空CURSOR为NULL将查询到的信息在界面中显示站点查询结束提示用户输入提示不存在YESNOYESNO图54站点查询模块流程逻辑523站站查询模块(1)模块描述该模块的主要功能是与站点查询类似,查询在两个站点之间通车的所有公交车,查询结果以列表的形式列出,列表的每一项包括公交车名,通车起始时间以及通车路线。焦点移到某一项时该路公交车的通车路线以走马灯(文字从右向左滑动显示)的效果显示。点击其中的一项,会显示这一路公交车的详细信息。模块功能实现类STOP2STOPRESULT,STOP2STOP,SHOWCLICK类。主要变量方法等与站点查询类似,在这里不再赘述。(2)具体实现点击确定按钮后判断两个EDITTEXT是否都为空,若有一个或者两个为空给出提示,否则在数据库中进行查询,关键代码SQLITEDATABASEDBEVENTSGETREADABLEDATABASECURSORCDBQUERYTABLE_NAME,NEWSTRING_ID,BUSNUM,TIME,BUSLINE,“BUSLINELIKEORBUSLINELIKE”,NEWSTRING“”STOPNAME“”STOPNAME2“”,“”STOPNAME2“”STOPNAME“”,NULL,NULL,NULL查询结果为空弹出对话框进行提示,若不为空就将查询结果显示在STOPINFO布局界面中。界面最上方的标题设置为“经过”STOPNAME“和”STOPNAME2“的公交车有”。然后对单击事件进行监听,单击某一项以后该项公交车信息传递给SHOWCLICK类,在SHOWCLICK类中完成公交车详细信息的显示。(3)文件说明STOP2STOPJAVA提示用户输入要查询的两个站点名称的类源文件。STOP2STOPRESULTJAVA对STOP2STOP传入的站点名进行查询,并将查询结果显示在列表中。SHOWCLICKJAVA现实所单击公交车的详细信息。(4)输入项要查询的两个站点名称(5)输出项在这两个站点之间通车的所有公交车,以及这些公交车的信息。(6)流程逻辑流程逻辑如图55所示在数据库中进行查询,返回CURSOR输入要查询的站点名称两个站点都不为空CURSOR为NULL将查询到的信息在界面中显示站站查询结束提示用户输入提示不存在YESNOYESNO图55站站查询模块流程逻辑53公交数据下载模块(1)模块描述该模块功能点击更新公交数据时,弹出选择城市对话框,用户点击选择后连接TOMCAT服务器,下载公交数据文件,同时存入SQLITE数据库。模块功能实现类DOWNLOAD,SELECT2DOWNLOAD,DATABSE,DATABSEHELPER类主要变量和方法有变量DOWNLOADLOAD定义一个下载的变量,用来下载文件。PRIVATEURLURL资源定位符。PRIVATEURLCONNECTIONUC一个具有特定协议类型的URL交换数据通信链路。方法PUBLICVOIDSTART从服务器中下载数据器然后写入文件。PUBLICSTRINGGETFILENAMESTRINGSTR获得URL对应的文件名,在SDCARD中以相同的名称存放。PUBLICVOIDDEVIDETOITEMSTRINGFILENAME将原先的文本文件中的内容切分成段,将每个字段假如数据库中。PRIVATEVOIDADDEVENTSTRINGSTRING,STRINGSTRING1,STRINGSTRING2向数据库中添加一行。(2)具体实现用户点击更新公交数据时,弹出选择城市对话框,用户点击确定后连接TOMCAT服务器,调用DOWNLOAD类中的函数START开始下载公交数据文件,下载同时保存选择的城市名,传递城市名给DATABSE类,在DATABSE类的ONCREATE函数中调用DEVIDETOITEMFILENAME函数,将文件中的每一辆公交车的信息切分成三段,并调用ADDEVENTSTRINGSTRING,STRINGSTRING1,STRINGSTRING2函数将这三段按照字段存入数据库。数据库中实体及属性如图57所示公交数据公交车名起始时间通车路线图57数据库中的公交车实体及属性图(3)文件说明DOWNLOADJAVA从服务器下载文件到SDCARDSELECT2DOWNLOADJAVA供用户选择要下载公交数据的城市名。DATABSEJAVA数据库操作类,将文件中的内容分段,然后存入数据库。DATABSEHHELPERJAVA数据库辅助类,实现数据库的建立、更新等。(4)输入项要下载公交数据的城市名。(5)输出项存有该城市的公交数据的数据库EVENTDB。(6)公交数据下载模块流程逻辑流程逻辑如图58所示DOWNLOADSTART()从服务器下载选择用户要下载的公交数据DEVIDETOITEM(FILENAME)ADDEVENT()向数据库中ADD添加完成,得到EVENTDB图58公交数据下载模块流程逻辑54数据更新模块模块描述服务器端公交数据以文本形式存在,当数据需要更新管理员只需要更新文件就可以了。55地图图存模块(1)模块描述本模块完成在地图中添加图存的工作,例如在地图上画红色的圆圈来标识要查找的地点,在地图上画公交路线等。这个模块实现的类OVERLAY,MYOVERLAY类,两个类均继承OVERLAY,OVERLAY是ANDROID提供的存在地图上添加图层的基类,只要重载其中的DRAW函数就可以在地图上画出不同的标志。(2)文件说明OVERLAYJAVA画出红色圆圈来指定位置。MYOVERLAYJAVA在某一路公交车的每个途径站点画蓝色的圆圈,相邻两个站点之间画蓝色的线。第六章公交查询系统的实现61系统环境的搭建ECLIPSE是一种多功能的集成开发环境,能开发JAVA相关的软件,在WINDOWS系统下需要安装ANDROIDSDK,ECLIPSE和ADT插件。62软件组成如图61图61软件组成在ECLIPSE集成环境下创建一个ANDROID的应用软件并命名为“AND”,会生成几个文件夹。文件夹SRC中主要存放大量的JAVA源程序,文件夹RES中主要存放界面设计需要的XML文档、界面图片和数据库文件。公交车的活动类主要在BUSACTIVITYJAVA程序中,软件界面设计主要在MAINXML文档中。63ANDROID系统虚拟手机图62虚拟手机ANDROID的虚拟手机等同于现实世界中的ANDROID机器,但是没有现实生活中手机那么操作简单,由于该虚拟手机的输入法中只有英文跟日文的输入方法,固然不能实现北京的公交的直接查询,所以在该虚拟手机上又安装了搜狗拼音输入法,不但实现了公交查询的实现,还实现了站点的查询。64软件安装图63软件安装后系统菜单软件安装之后会在模拟手机的软件菜单中发现北京公交离线查询的快捷方式,跟电脑中的软件一样,点击这个快捷方式就会运行该软件,而且为该虚拟手机安装的搜狗输入法可以协助公交查询系统实现站点查询功能,输入一个北京公交数据库中存在的站点名称,就会出现经过该站点的所有公交。65软件运行图64软件运行界面从软件的运行界面中可以看出,实现的功能有线路查询、站点查询,软件的界面是北京地图的部分截图,同时说明查询结果的显示位置。点击MENU按钮会有“帮助”“联系我”“退出”按钮。图65线路查询输入公交的线路点击“搜索信息”就会出现1路公交车经过的所有站点名称,在站点查询中输入站点名称,就会显示经过该站点的所有公交,如果不存在该路公交或者不存在该站点名称,则输出“没有您要找的信息”。致谢论文完成之际,首先向我的指导老师胡哲老师致以深深的敬意和由衷的感谢。从毕业论文选题和整个论文完成期间,胡哲老师在研究思路方面和论文写作上给予了我悉心的指导。同时得益于胡老师所带的操作系统、计算机网络、JAVA程序设计和数据结构,使得我的论文能顺利的完成。感谢我的辅导员杨俊仙老师,感谢她在这四年中对我学习上和生活上的帮助,感谢她为全班所做的一切。同时,对理学院的所有老师致以衷心的感谢和崇高的敬意。生活在信息与计算科学专业的大家庭中,感到无比的光荣,特别感谢在论文的格式和程序调试上给予我帮助的同学。在安徽农业大学学习的四年中结识的各位挚友,是我人生中最大的一笔财富。在此,对他们表示衷心感谢。参考文献1陶佩枫城市公交查询系统的设计与实现,万方中文数据库。2EDBURNETTEHELLO,ANDROID美国,ISBN10193435617143于小平,杨国东;城市公交查询系统的设计与实现J吉林大学学报。4MARKLMURPHYBEGINNINGANDROIDISBN13PBK97814302241985张帅基于ITS的智能乘客信息系统研究河北工业大学硕士论文6盖索林王世江GOOGLEANDROID开发入门指南人民邮电出版社7于志龙ANAROIDSDK开发大全人民邮电出版社8彭小伟、胡子祥城市公交服务质量乘客评价的实证研究西南交大学报9李刚疯狂ANDROID讲义电子工业出版社10王贵彬刘家兰JAVA大学教程清华大学出版社ABSTRACTINTHEEXSITINGSYSTEMOFPUBLICTRANSPORTATIONQUERY,THEREARESTILLSOMEPROBLEMS,SUCHASSLOWUPDATINGANDINACCURATEDATATHEBEIJINGBUSOFFLINEQUERYSYSTEMBASEDONTHEANDROIDISNOTBEINGPOPULARIZEDTOAMOLDINGSOFTWARENOWAFTERANALYSINGANDSUMMURIZINGSEVERALPROBLEMS,THEBUSOFFLINEQUERYSYSTEMBASEDONANDROIDISDESIGNEDASWELLASIMPLEMENTEDSYSTEM,RUNNINGONTHEANDROIDPLATFORM,USINGGOOGLEMAPSANDSQLITEDATABASE,MAINLYUSEJAVALANGUAGEPROGRAMINGTOACHIEVEITSFUNCTION,WHICHINCLUDESCURRENTLOCATION,SEARCHINGANYPOSITIONQUICKLY,TRIPSINQUIRIES,STATIONINQUIRIES,SITETRANSFERINQUIRIESANDSOONTOMAKETHESYSTEMMOREINTUITIVEANDCONVENIENT,THEPUBLICTRANSPORTATIONINQUIRYSYSTEMACHIEVESTHESHOWOFTHETEXTRESULTANDELECTRONICMAPATTHESAMETIME,INTHEENTIREQUERYPROCESS,ONLYGOOGLEMAPSFUNCTIONNEEDSTOWORKONLINETOGETNETWORKDATA,WHILETHEOTHERFUNCTIONSCANBEPERFORMEDOFFLINEKEYWORDBUSQUERYANDROIDPLATFORMSQLITEGOOGLEMAPJAVAECLIPSE附录程序部分RJAVA2222BUILDCONFIGJAVA/AUTOGENERATEDFILEDONOTMODIFY/PACKAGECOMLJBUSACTIVITYPUBLICFINALCLASSRPUBLICSTATICFINALCLASSATTRPUBLICSTATICFINALCLASSCOLORPUBLICSTATICFINALINTRED0X7F050000PUBLICSTATICFINALCLASSDRAWABLEPUBLICSTATICFINALINTBG0X7F020000PUBLICSTATICFINALINTHEFEI0X7F020001PUBLICSTATICFINALINTIC_LAUNCHER0X7F020002PUBLICSTATICFINALINTICON0X7F020003PUBLICSTATICFINALCLASSIDPUBLICSTATICFINALINTKEY0X7F070000PUBLICSTATICFINALINTRESULT0X7F070003PUBLICSTATICFINALINTSEACH0X7F070002PUBLICSTATICFINALINTSTATION0X7F070001PUBLICSTATICFINALCLASSLAYOUTPUBLICSTATICFINALINTMAIN0X7F030000PUBLICSTATICFINALCLASSRAWPUBLICSTATICFINALINTANDROID0X7F040000PUBLICSTATICFINALCLASSSTRINGPUBLICSTATICFINALINTAPP_NAME0X7F060001PUBLICSTATICFINALINTHELLO0X7F060000PUBLICSTATICFINALINTKEY0X7F060004PUBLICSTATICFINALINTLINE0X7F060002PUBLICSTATICFINALINTLINE20X7F060003PUBLICSTATICFINALINTRESULT0X7F060007PUBLICSTATICFINALINTSEACH0X7F060006PUBLICSTATICFINALINTSTATION0X7F060005BUSACTIVITYJAVA/AUTOMATICALLYGENERATEDFILEDONOTMODIFY/PACKAGECOMLJBUSACTIVITYPUBLICFINALCLASSBUILDCONFIGPUBLICFINALSTATICBOOLEANDEBUGTRUEBUSACTIVITYJAVA续PACKAGECOMLJBUSACTIVITYIMPORTANDROIDAPPACTIVITYIMPORTANDROIDDATABASECURSORIMPORTANDROIDDATABASESQLITESQLITEDATABASEIMPORTANDROIDOSBUNDLEIMPORTANDROIDVIEWMENUIMPORTANDROIDVIEWMENUINFLATERIMPORTANDROIDVIEWMENUITEMIMPORTANDROIDVIEWMOTIONEVENTIMPORTANDROIDVIEWVIEWIMPORTANDROIDWIDGETBUTTONIMPORTANDROIDWIDGETEDITTEXTIMPORTANDROIDWIDGETTEXTVIEWIMPORTCOMLJBUSACTIVITYDOMAINBUSIMPORTCOMLJBUSACTIVITYSERVICEBUSSERVICEIMPORTCOMLJBUSACTIVITYSERVICEIMPORTDBFILEPUBLICCLASSBUSACTIVITYEXTENDSACTIVITY/CALLEDWHENTHEACTIVITYISFIRSTCREATED/PRIVATEBUSSERVICEBUSSERVICEPUBLICIMPORTDBFILEDBFILEPRIVATESQLITEDATABASEDATABASEOVERRIDEPUBLICVOIDONCREATEBUNDLESAVEDINSTANCESTATE/导入数据库DBFILENEWIMPORTDBFILETHISDBFILEOPENDATABASEDBFILECLOSEDATABASESUPERONCREATESAVEDINSTANCESTATESETCONTENTVIEWRLAYOUTMAINFINALEDITTEXTKEYEDITTEXTTHISFINDVIEWBYIDRIDKEYFINALEDITTEXTSTATIONEDITTEXTTHISFINDVIEWBYIDRIDSTATIONBUTTONSEACHBUTTONTHISFINDVIEWBYIDRIDSEACHFINALTEXTVIEWRESULTTEXTVIEWTHISFINDVIEWBYIDRIDRESULT/数据库服务类/BUSSERVICENEWBUSSERVICETHISDATABASESQLITEDATABASEOPENORCREATEDATABASEIMPORTDBFILEDB_PATH“/“IMPORTDBFILEDB_NAME,NULL/线路输入监听,获得焦点时,清空站点KEYSETONTOUCHLISTENERNEWVIEWONTOUCHLISTENERBUSACTIVITYJAVA续OVERRIDEPUBLICBOOLEANONTOUCHVIEWV,MOTIONEVENTEVENT/TODOAUTOGENERATEDMETHODSTUBSTATIONSETTEXT“RETURNFALSE/搜索按钮监听SEACHSETONCLICKLISTENERNEWVIEWONCLICKLISTENEROVERRIDEPUBLICVOIDONCLICKVIEWV/TODOAUTOGENERATEDMETHODSTUBSTRINGBUSLINEKEYGETTEXTTOSTRINGSTRINGBUSSTATIONSTATIONGETTEXTTOSTRING/BUSBUSBUSSERVICEFINDDDDBUSBUSNEWBUSSTRINGBUFFERLINESNEWST
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汝州职业技术学院《钢结构原理与设计》2023-2024学年第一学期期末试卷
- 深圳大学《道路施工技术B》2023-2024学年第二学期期末试卷
- 西乡塘区2024-2025学年五下数学期末调研试题含答案
- 山东省蒙阴2025届初三检测试题(二)(4月)生物试题试卷含解析
- 四年级下册译林版三年级起点小学英语《Fun timeCartoon time》公开教案
- 智能家电产品推广合作协议
- 江苏省南京市南师附中集团新城中学2025年初三下学期1月月考数学试题试卷含解析
- 上海市各区县2025届高三年级模拟考试历史试题试卷含解析
- 药学药理学知识应用练习题集
- 石家庄经济职业学院《有机化学(1)》2023-2024学年第二学期期末试卷
- 高三一模总结主题班会课件
- 幼儿园优质公开课:中班语言绘本《明天我再来吃掉你》第二版课件
- 注塑APQP资料参考
- 类比法-创新思维
- DB4403T339-2023城市级实景三维数据规范
- 设备维护工程师简历
- 2023版押品考试题库必考点含答案
- 口腔与健康智慧树知到答案章节测试2023年温州医科大学
- 挖孔桩基施工方案(水磨钻)
- 变电检修技能考试计算
- 国际经济法学(湘潭大学)智慧树知到答案章节测试2023年
评论
0/150
提交评论