




免费预览已结束,剩余41页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录目 录摘要i引言1第一章 绪论11.1问题的提出及研究意义11.2国内研究现状21.3 本论文组织结构2第二章 关键技术概述22.1 android平台相关内容介绍22.2 系统实现工具及运行环境5第三章 系统需求53.1 用户需求53.2 系统设计的原则5第四章 概要设计64.1系统体系结构64.2 模块设计64.3 功能模块对照表7第五章 详细设计75.1 地图相关功能模块75.2 公交查询功能模块105.3 公交数据下载模块155.4 数据更新模块175.5 地图图存模块17第六章 公交查询系统的实现186.1 系统环境的搭建186.2 软件组成186.3 android系统虚拟手机196.4 软件安装206.5 软件运行21致 谢23参考文献24abstract25附录:程序部分26基于android的北京公交离线查询系统基于android的北京公交离线查询系统摘要 在目前已有的公交系统中,存在数据更新较慢、不准确等问题。基于安卓的北京公交离线查询系统还没有被推广成为成熟的软件,本文在分析总结一些问题的基础上,设计并实现了基于安卓的公交离线查询系统。系统运行于android平台,使用谷歌地图,sqlite数据库,主要采用java语言编程。实现了当前位置定位、在地图中快速查找任一位置,车次查询、站点查询、站站查询、换乘查询等功能。该公交查询系统实现了查询结果的文本与电子地图的同时显示,使系统更直观、方便。整个查询过程中,只有谷歌地图功能需要连接网络获取网络数据,其余功能均能离线执行。关键词:公交查询;android平台;sqlite;谷歌地图;java;eclipsei引 言android是一个真正意义上的开放性移动设备综合平台,它包括操作系统、用户界面、中间件和一些关键的平台应用,拥有移动电话工作所需的全部软件。android最大特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验,android里面具有非常丰富的图形系统、对多媒体的支持功能和非常强大的浏览器。当然,提到android就不得不说手机开放联盟(openhandsetalliance),它是一个由33家手机制造商、软件商和电信业组成的推广android平台的联合会。android平台的开放性等特点既能促进技术(包括平台自身)的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定特色化的产品,以形成自己的竞争优势,这对于手机制造商来说,具有很强的吸引力。因此,它具有很大的市场发展潜力。由于手机价格低廉,使用方便,它已成为人们获得在生活工作上等各种信息服务的最佳选择。借助于无线互联网,基于手机的公交查询系统能为客户随时随地提供公交信息。鉴于本文做的是关于北京公交信息离线查询的系统软件,固然必须要有存放北京公交信息的数据库,关于数据库的搜集方面没有做好,所以在软件运行阶段不能直接实现公交的查询,试运行阶段主要实现了软件的运行界面及相关功能的演示。第一章 绪论 1.1问题的提出及研究意义城市公交其覆盖面广、经济快捷的特点,目前任然是绝大数出行者的首选方式,也是各地城市政府大力发展的一种交通方式。针对目前的实际情况,大力发展城市公共交通,鼓励并吸引市民选择乘公交出行,将会大大减弱交通压力,从极大程度改善交通状况。影响城市公交服务水平的因素主要有四个方面:方便性、迅捷性、经济性、舒适性。改善公交服务,就必须从着四个方面综合考虑;,一般各城市采取的措施有:(1) 合理布设公交线路网。(2) 改善公共交通设施。(3) 提高公交车速。(4) 将设智能公交系统。同时在建立在线网络查询公交信息的同时也支持离线查询,即使在没有网络连接更新的情况下可以利用已经下载存储在手机里的地图使用,并且能对手机里的地图做进一步的更新,从而使得信息具有实时性和准确性。1.2国内研究现状我国的公交事业发展比较落后,公交智能化水平比较低,绝大部分是沿袭旧的运营体制。目前我国的城市公交查询系统还处于一个相对落后的水平,广大乘客可以获得信息的方式很少,公交线路和站点信息的完整性和准确性得不到保证。虽然手机凭借小巧可人的身材、n合一的功能特色,成为数码时代人们日常生活中不可或缺的一部分,目前大多数基于手机的公交查询系统都是采用短消息的形式,虽然基于短消息的查询不受空间约束,但是可能受到运营商的一些约束:硬件方面,如果遇到服务器、网络繁忙时段或信号盲区,导致用户请求长时间得不到响应。1.3 本论文组织结构各章内容安排如下:第1章 绪论:本章主要讲述设计题目的研究目的、意义以及现状,相对于软件工程的问题定义和可行性研究部分。第2章 关键技术概述:本章主要介绍了系统所采用的关键技术,这些技术是构成系统的主要技术因素,并为系统的构造提供了理论依据。第3章 系统需求:本章描述了公交查询系统的基本用户需求比如用户界面等,同时介绍了本软件的设计原则以及运行环境。第4章 概要设计:本章描述了系统的体系结构,详细描述了系统的具体模块划分和模块的层次结构,并详细描述了各个模块的功能,为详细设计做好铺垫。第5章 详细设计:本章详细介绍了各个模块的内部处理流程,以及实现模块的类,类中的函数以及变量。第6章 系统测试及运行结构分析:本章属于软件测试环节,对于该软件的运行环境、运行情况进行详细的说明,详细说明软件的特色和优点。第二章 关键技术概述2.1 android平台相关内容介绍2.1.1 android操纵系统简介android一词的本义指“机器人”,同时也是google于2007年11月5日宣布的基于linux平台的开源手机操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。android是基于linux内核的操作系统,早期由google开发,后来由开放手机联盟开发。它采用了软件堆层的构架,主要分为三部分。底层是以linux内核工作为基础,只提供基本功能;其他的应用软件则有各公司自行开发,以java作为编写程序的一部分。另外,为了推广此技术,google和其他几十个手机公司建立开放手机联盟。2.1.2 android构架图2-1显示的是android操作系统的主要组件,每个部分将会在下面具体描述。android同一个核心应用程序包一起发布,该应用程序包包括email客户端、sms短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是用java编写的。android应用程序框架 开发者也完全可以访问核心应用程序所使用的api框架。该应用程序框架用来简化组建软件的重用;任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块。该应用程序重用机制使得组件可以被用户替代。 applicationhomecontactsphonebrowser application frameworkactivitymanagerwindowmanagercontentproviderviewsystemnotificationmanagerpackagemanagertelephonymanagerresourcemanagerlocationmanagerxmppservice librariessurface managermedia frameworksqliteopengl|esfreetypewebkitsglssllibcandroid runtimecore librariesdalvik vmlinux kerneldisplaydrivercameradriverblueteethdriverflash memdriverbinder(ipc)driverusbdriverkeypaddriverwifidriveraduiodriverspowermanagement 图2-1 android系统构架 目前android应用程序都由一系列的服务和系统组成,包括:(1) 一个可扩展的视图(view)可以用来建应用程序,包括列表(list)、网格(grids)、文本框(textboxes)、按钮(buttons),甚至包括一个可嵌入的web浏览器。(2) 内容管理器(content providers)使得应用程序可以访问另一个应用程序的数据,或者共享它们自己的数据。(3) 一个资源管理者(resource manager)提供非代码资源的访问,如本地字符串、图形和分层文件(layout files)。(4) 一个通知管理器(notification manager)使得应用程序可以在状态栏中显示客户通知信息。(5) 一个活动类管理器(activity manager)用来管理应用程序生命周期并提供常用的导航回退功能。android程序库-android包括一个被android系统中各种不同组建所使用的c/c+库集。该库通过android应用程序框架为开发者提供服务 。以下是一些主要的核心库:系统c库-一个从bsd继承来的标准c系统函数(libc),专门为基于embedded linux的设备定制。媒体库-基于packetvideo opencore;改库支持录放,并且可以录制许多流行的音频视频格式,还有静态印象文件包括mpeg4、h.264、mp3、aac、amr、jpg、png。surface manager-对显示子系统的管理,并且为多个应用程序提供3d和2d图层的无缝融合。libwebcore-一个最新的web浏览器引擎用来支持android浏览器和一个可嵌入的web视图。sgl-一个内置的2d图形引擎3d libraries-基于opengl es 1.0apis实现;该库可以使用硬件3d加速或者使用更高优化的3d软加速。freetype-位图(bitmap)和向量(vector)字体显示。sqlite-一个对于所有应用程序可用功能强劲的轻型关系型数据库引擎。android运行库-android包括一个核心库,该核心库提供了java编程语言核心库的大多数功能。每个android应用程序都在它自己的进程中运行,都拥有一个独立的dalvik虚拟机实例。dalvik是针对于同时高效地运行多个vms来实现的。dalvik虚拟机执行.dex的dalvik可执行文件,该格式文件针对内存最小使用做了优化。该虚拟机是基于寄存器的,所有的类都经由java汇编器编译,然后通过sdk中的dx工具转化成.dx格式由虚拟机执行。dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。linux内核-android的核心系统服务依赖于linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。linux内核也同时作为软件和硬件堆栈之间的硬件抽象层。 2.2 系统实现工具及运行环境开发工具是:eclipse、androidsdk、adt。软件运行环境:android操作系统。第三章 系统需求3.1 用户需求越来越复杂的公交网络使得人们经常非常的困惑,为了解决这些问题,在android这个平台上,设计开发一个公交信息查询系统。系统应该具有以下功能:(1) 实现地图的显示,并且能够对地图进行拖动、放大、缩小。(2) 用户应该能够从服务器中下载公交数据,当公交信息需要更新时,应该由管理员在服务器端进行更改,手机用户只需要下载新数据即可;数据库应该直接存在手机中,这样就不必每次登陆服务器,提高查询速度。(3) 系统应该可以进行车次查询,为用户提供某一路公交的信息,并在地图中画出路线。(4) 系统应该能够查询到在两个站点之间通车的所有公交车。(5) 系统应该能够进行站点查询,显示出经过某个站点的所有公交信息。3.2 系统设计的原则3.2.1 实用性原则该原则主要体现的是所设计的系统能够解决实际问题,是所有应用系统设计最基本的最主要的原则,直接关系到系统成败。基于手机的公交信息查询系统可以随时为人们解决出行时的公交选择问题,使用户方便的获取真正想要获得信息。3.2.2 可靠性原则可靠性是系统设计的立足点,若设计的系统故障频繁,就不能满足用户的需求,设计的公交查询系统应该从以下几个方面提高其可靠性:故障发生是应该给出提示,提示用户应该如何操作来排除故障;通过测试监测系统漏洞,完善系统。3.2.3 易于更新和维护系统的设计能够实现有关空间数据和属性数据的实时更新和维护。在系统维护时只需在服务器上维护即可,数据的更新和维护要简单可行。3.2.4 操作简单操作简单是软件设计过程中需要重视的问题,应该精心设计用户接口、使系统用户界面友好,便于用户理解。第四章 概要设计 4.1系统体系结构手机客户端通过无线网与服务器连接并请求数据。如图4-1所示: 手机客户端 internet服务器 图4-1通信示意图4.2 模块设计4.2.1 程序模块划分地图显示模块、gps定位模块、查找定位模块、公交查询模块、公交数据下载模块、数据更新模块、地图图层模块。4.2.2 程序模块功能描述(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) 地图图层模块该模块主要功能;在谷歌地图上增加图层。例如;在地图上画出某一路公交车的行车路线,在地图上用红色圆圈标识要查找的地点等。4.3 功能模块对照表 表4-1 功能模块对照表模块名称 模块功能地图显示模块显示地图,实现地图拖动、放大、缩小gps定位模块定位当前位置查找定位模块在地图中查找指定位置,并标示出来公交查询模块车次查询、站点查询、站站查询公交数据下载模块从服务器下载公交数据并存入数据库数据更新模块管理员对公交数据的管理地图图层模块在地图上增加图层第五章 详细设计5.1 地图相关功能模块5.1.1 地图显示模块(1)模块描述:该模块的主要功能:显示google地图,并且能够对地图进行拖动、放大、缩小。主要变量:private mapview mapview:mapview对象。主要函数: setcontentview(int layoutresid)功能:为界面设置布局,其中layoutresid是布局文件。 setbuiltinzoomcontrols(boolean bool)功能:参数设置为true时,地图可以控制,即可以进行拖动、放大、缩小。(2)具体实现android系统集成了googlemap功能,要在自己的系统中使用谷歌地图首先要申请apikey,获得apikey以后在清单文件androidmanifest。xml里添加“”,另外,还需要添加3个权限access_fine_location,access_coarse_location和internet并且要在使用googlemap的layout中手动添加控件,最后就是继承mapactivity,而不是单纯的activity。(3)源文件说明用到地图显示的模块有三个: map_browse.java: 实现地图浏览功能 gpsl_location.java: 实现gps定位的类 searchlocation.java: 在地图中查找指定的位置的类 showcurrentcity.java: 显示当前城市的类5.1.2 gps定位模块(1)模块描述主要功能:利用gps服务定位用户的当前位置主要变量: private locationmanager mlocationmanager01:获取系统中位置服务的变量 private mapview mmapview01:地图视图对象 private geopoint currentgeopoint:当前位置的geopoint,由经纬度构成。主要方法: private geopoint getgeobylocation(location location):传入参数location,将这个location转换成geopoint。 public void refreshmapviewbygeopoint(geopoint gp,mapview mv,int zoomlevel.boolean bifsatellite):更新地图mv到gp点,将地图移至以gp为中心的位置,zoomlevel是地图的放大级别,最后一个变量表示是否显示卫星图。 private void processlocationupdate(location location):当手机收到位置更改,将location传入geopoint及mapview,同时更新地图到新的位置。(2)具体实现主要实现方法有:通过getsystemservice(context.location-service)开启系统的gps服务,通过getlocationprovider(locationmanager im)获取到符合条件的位置,之后将获取到的location转化成经纬度格式的geopoint ,然后调用refreshmapviewbygeopoint(geopoint gp , mapview mv , int zoomlevel , boolean bifsatellite)更新地图到这个gp点。(3)文件说明gpslocation.java:实现gps定位的类。(4)流程逻辑如图5-1 所示: 通过locationmanager开启gps服务目标位置通过locationprovider获取location将location转化成geopoint更新地图到geopoint在地图中标注当前位置图5-1 gps定位模块流程逻辑5.1.3查找定位模块(1)模块描述主要功能以及方法如下:主要变量: private mapview mmap view01:地图视图对象 mapcontroller mmapcontroller01:控制地图大小以及是否可以拖动的变量主要方法: setonclicklistener(new button.onclicklistener():对查询按钮单击时间的监听,当用户单击查询时进行响应。 private geopoint getgeobyaddress(string strsearchaddress):以要查询的地址为参数,通过地址名在地图中的查找这个地址的geopoint.(2) 具体实现 系统界面中用了三个控件:edittext,button , mapview . 用户在edittext中输入要查询的地点名称,单击查询按钮以后调用getgeobyaddress(string strsearchaddress)函数进行查询,将获得的结果传递给refreshmapviewbygeopoint(geopoint gp,mapview mv,int zoomlevel,boolean bifsatellite),对显示的地图进行更新,更新至查询地点,并用红色圆圈标注要查询的地点。(3)文件说明 searchlocation.java:查询定位的java源文件。(4)输入项 所要地点名称。(5)输出项 将查询的结果在地图中标注出来。(6)处理流程如图5-2所示: 将地图移至这个geopoint并标注以地点名为参数获取geopoint输入要查询的地点名称 图5-2 查找定位模块处理流程5.2 公交查询功能模块5.2.1 车次查询模块(1)模块描述该模块的主要功能是:查询某一路车的信息,包括公交车名,通车起始时间以及通车路线。模块功能实现类:forbusinfo类。接口中用到的变量:private string busline:保存获得的公交的通车路线。forbusinfo类主要变量和方法如下:主要变量: private databsehhelper events:数据库的辅助类对象,用来对数据库进行操作 sqlitedatabase db:数据类的对象 cursor mcursor:从数据库中查询到的结果进行读取、写入的接口,存储查询结果列表主要方法:public viod ok():单击确定后响应的函数,在数据库中查询edittext中的车次查询,将查询到的信息显示在busdetailedinfo布局界面中。(2)具体实现点击确定按钮后判断edittext是否为空,若为空给出提示,否则在数据库中进行查询,关键代码:sqlitedatabase db=events.getreadabledatabase(); cursor mcursor=db.query(true,table_name,new string busnum,time, busline,”busnum=?”,new stringedit1.gettext().tostring(),null,null,null,null);查询结果为空弹出对话框进行提示,若结果不为空九江查询结果显示在busdetailedinfo布局界面中,对于这个界面中的“在地图中显示”按钮进行监听,单击时则将所查到结果中的busline存入bundle中,以intent的方式启动drawline这个java类,将通车路线在地图上画出来。(3)文件说明forbusinfo.java:查询某一路公交车的信息的类源文件。(4)输入项要查询的的公交车名。(5)输出项该路公交车的详细信息,如起始时间、通车路线等。(6)流程逻辑该流程逻辑如图5-3所示: 在数据库中进行查询,返回cursor输入要查询的车次名称车次为空cursor为null将查询到的信息在界面中显示车次查询结束提示用户输入提示不存在yesnoyesno 图5-3 车次查询模块流程逻辑5.2.2 站点查询模块(1)模块描述该模块的主要功能是:查询经过某个站点的所有公交车,查询结果以列表的形式列出,列表每一项包括公交车名,通车起始时间以及通车路线。焦点移到某一项时该路公交车的通车路线以走马灯(文字从右向左滑动显示)的效果显示。点击其中一项,会显示这一路公交车的详细信息。模块功能实现类:busstopinfo,showstopinfo,showclick类。接口中用到的变量:public stopname保存要查询的站点名称。busstopinfo类主要变量和方法如下:主要变量:bundle bundle:将不同类型的变量映射到一个字符串,在这里将编辑框中的内容映射到stopname中,以便与其他activity进行通信传递要查询的站点名称。showstopinfo类主要变量和方法如下:主要变量: private static stringfrom=busnum,time,busline;与后面的to数组相结合,显示查询结果,公交车名,起始时间,通车路线3个字段与他们的位置的映射关系。 private static in to=r.id.num,r.id.busline。 simplecursoradapter adapter:将查询结果按照from,to的方式进行映射,显示在列表中。主要方法:protected void onlistitemclick(listview arg(),view arg1,int arg2,long arg3): 单击列表中某一项后相应的函数,根据arg2判断单击的是哪一项,将这一路公交车的信息存入bundle中,将这些参数传递给showclick类,在showclick类中显示公交车的详细信息。(2)具体实现点击确定按钮后判断edittext是否为空,若为空给出提示,否则在数据库中进行查询,关键代码:sqlitedatabase db=events.getreadabledatabase();cursor c=db.query(table_name,new string _id,busnum,time,busline,“busline like?”,new string“%”+stopname+”%”,null,null,null);查询结果为空弹出对话框进行提示,如结果不为空就将查询到的的结果显示在stopinfo布局界面中。界面最上方的标题设置为“经过”+stopname+“的公交车有:”.然后对单击事件进行监听,单击某一想以后将该项公交车信息传递给showclick类,在showclick类中完成公交车详细信息的显示。(3)文件说明busstopinfo.java:提示用户输入要查询的站点名称的类源文件;showstopinfo.java:对busstopinfo传入的站点名称进行查询,并将查询结果显示在列表中;showclick.java:现实所单击公交车的详细信息。(4)输入项要查询的站点名称(5)输出项经过该站点的所有公交车,以及这些公交车的信息。(6)流程逻辑流程逻辑如图5-4所示:在数据库中进行查询,返回cursor输入要查询的站点名称站点为空cursor为null将查询到的信息在界面中显示站点查询结束提示用户输入提示不存在yesnoyesno 图5-4 站点查询模块流程逻辑5.2.3 站站查询模块(1)模块描述该模块的主要功能是:与站点查询类似,查询在两个站点之间通车的所有公交车,查询结果以列表的形式列出,列表的每一项包括公交车名,通车起始时间以及通车路线。焦点移到某一项时该路公交车的通车路线以走马灯(文字从右向左滑动显示)的效果显示。点击其中的一项,会显示这一路公交车的详细信息。模块功能实现类:stop2stopresult,stop2stop,showclick类。主要变量方法等与站点查询类似,在这里不再赘述。(2)具体实现点击确定按钮后判断两个edittext是否都为空,若有一个或者两个为空给出提示,否则在数据库中进行查询,关键代码:sqlitedatabase db=events.getreadabledatabase();cursor c=db.query(table_name,new string_id,busnum,time,busline,“busline like? or busline like?”,new string“%”+stopname+ “%”+stopname2+“%”,“%”+stopname2+“%”+stopname+“%”,null,null,null);查询结果为空弹出对话框进行提示,若不为空就将查询结果显示在stopinfo布局界面中。界面最上方的标题设置为“经过”+stopname+“和”+stopname2+“的公交车有:”。然后对单击事件进行监听,单击某一项以后该项公交车信息传递给showclick类,在showclick类中完成公交车详细信息的显示。(3)文件说明 stop2stop.java:提示用户输入要查询的两个站点名称的类源文件。 stop2stopresult.java:对stop2stop传入的站点名进行查询,并将查询结果显示在列表中。 showclick.java:现实所单击公交车的详细信息。(4)输入项要查询的两个站点名称(5)输出项在这两个站点之间通车的所有公交车,以及这些公交车的信息。(6)流程逻辑流程逻辑如图5-5所示:在数据库中进行查询,返回cursor输入要查询的站点名称两个站点都不为空cursor为null将查询到的信息在界面中显示站站查询结束提示用户输入提示不存在yesnoyesno 图5-5 站站查询模块流程逻辑5.3 公交数据下载模块(1)模块描述该模块功能:点击更新公交数据时,弹出选择城市对话框,用户点击选择后连接tomcat服务器,下载公交数据文件,同时存入sqlite数据库。模块功能实现类:download,select2download,databse,databsehelper类主要变量和方法有:变量: download load:定义一个下载的变量,用来下载文件。 private url url:资源定位符。 private urlconnection uc:一个具有特定协议类型的url交换数据通信链路。方法: public void start():从服务器中下载数据器然后写入文件。 public string getfilename(string str):获得url对应的文件名,在sdcard中以相同的名称存放。 public void devidetoitem(string filename):将原先的文本文件中的内容切分成段,将每个字段假如数据库中。 private void addevent(string string,string string1,string string2): 向数据库中添加一行。(2)具体实现用户点击更新公交数据时,弹出选择城市对话框,用户点击确定后连接tomcat服务器,调用download类中的函数start()开始下载公交数据文件,下载同时保存选择的城市名,传递城市名给databse类,在databse类的oncreate()函数中调用devidetoitem(filename)函数,将文件中的每一辆公交车的信息切分成三段,并调用addevent(string string,string string1,string string2)函数将这三段按照字段存入数据库。数据库中实体及属性如图5-7所示:公交数据公交车名起始时间通车路线 图5-7 数据库中的公交车实体及属性图(3)文件说明 download.java:从服务器下载文件到sdcard. select2download.java:供用户选择要下载公交数据的城市名。 databse.java:数据库操作类,将文件中的内容分段,然后存入数据库。 databsehhelper.java:数据库辅助类,实现数据库的建立、更新等。(4)输入项要下载公交数据的城市名。(5)输出项存有该城市的公交数据的数据库event.db。(6)公交数据下载模块流程逻辑流程逻辑如图5-8所示: download.start()从服务器下载选择用户要下载的公交数据devidetoitem(filename)addevent()向数据库中add添加完成,得到event.db 图5-8 公交数据下载模块流程逻辑5.4 数据更新模块模块描述服务器端公交数据以文本形式存在,当数据需要更新管理员只需要更新文件就可以了。5.5 地图图存模块(1)模块描述本模块完成在地图中添加图存的工作,例如在地图上画红色的圆圈来标识要查找的地点,在地图上画公交路线等。这个模块实现的类:overlay,myoverlay类,两个类均继承overlay,overlay是android提供的存在地图上添加图层的基类,只要重载其中的draw函数就可以在地图上画出不同的标志。(2)文件说明 overlay.java:画出红色圆圈来指定位置。 myoverlay.java:在某一路公交车的每个途径站点画蓝色的圆圈,相邻两个站点之间画蓝色的线。第六章 公交查询系统的实现6.1 系统环境的搭建 eclipse是一种多功能的集成开发环境,能开发java相关的软件,在windows系统下需要安装android sdk,eclipse和adt插件。6.2 软件组成如图6-1: 图6-1 软件组成 在eclipse集成环境下创建一个android的应用软件并命名为“and”,会生成几个文件夹。文件夹src中主要存放大量的java源程序,文件夹res中主要存放界面设计需要的xml文档、界面图片和数据库文件。公交车的活动类主要在busactivity.java程序中,软件界面设计主要在main.xml文档中。6.3 android系统虚拟手机 图6-2 虚拟手机 android的虚拟手机等同于现实世界中的android机器,但是没有现实生活中手机那么操作简单,由于该虚拟手机的输入法中只有英文跟日文的输入方法,固然不能实现北京的公交的直接查询,所以在该虚拟手机上又安装了搜狗拼音输入法,不但实现了公交查询的实现,还实现了站点的查询。6.4 软件安装 图6-3 软件安装后系统菜单软件安装之后会在模拟手机的软件菜单中发现北京公交离线查询的快捷方式,跟电脑中的软件一样,点击这个快捷方式就会运行该软件,而且为该虚拟手机安装的搜狗输入法可以协助公交查询系统实现站点查询功能,输入一个北京公交数据库中存在的站点名称,就会出现经过该站点的所有公交。6.5 软件运行 图6-4 软件运行界面从软件的运行界面中可以看出,实现的功能有线路查询、站点查询,软件的界面是北京地图的部分截图,同时说明查询结果的显示位置。点击menu按钮会有“帮助”“联系我”“退出”按钮。 图6-5 线路查询输入公交的线路点击“搜索信息”就会出现1路公交车经过的所有站点名称,在站点查询中输入站点名称,就会显示经过该站点的所有公交,如果不存在该路公交或者不存在该站点名称,则输出“没有您要找的信息”。致 谢论文完成之际,首先向我的指导老师胡哲老师致以深深的敬意和由衷的感谢。从毕业论文选题和整个论文完成期间,胡哲老师在研究思路方面和论文写作上给予了我悉心的指导。同时得益于胡老师所带的操作系统、计算机网络、java程序设计和数据结构,使得我的论文能顺利的完成。感谢我的辅导员杨俊仙老师,感谢她在这四年中对我学习上和生活上的帮助,感谢她为全班所做的一切。同时,对理学院的所有老师致以衷心的感谢和崇高的敬意。生活在信息与计算科学专业的大家庭中,感到无比的光荣,特别感谢在论文的格式和程序调试上给予我帮助的同学。在安徽农业大学学习的四年中结识的各位挚友,是我人生中最大的一笔财富。在此,对他们表示衷心感谢。 全文共45页,第44页参考文献参考文献1陶佩枫 城市公交查询系统的设计与实现,万方中文数据库。2. ed burnette.hello,android.美国,isbn-10:1-934356-17-14.3. 于小平,杨国东;城市公交查询系统的设计与实现j.吉林大学学报。4. mark l.murphy.beginningandroid.isbn-13(pbk):978-1-4302-2419-8.5. 张帅 基于its的智能乘客信息系统研究河北工业大学硕士论文6. 盖索林 王世江. google android 开发入门指南 人民邮电出版社7. 于志龙 anaroid sdk开发大全 人民邮电出版社8. 彭小伟、胡子祥 城市公交服务质量乘客评价的实证研究. 西南交大学报9. 李刚 疯狂android讲义 电子工业出版社10. 王贵彬 刘家兰 java大学教程 清华大学出版社abstractabstract in the exsiting system of public transportation query,there are still some problems, such as slow updating and inaccurate data. the beijing bus off-line query system based on the android is not being popularized to a molding software now. after analysing and summurizing several problems,the bus off-line query system based on android is designed as well as implemented.system,running on the android platform, using google maps and sqlite database, mainly use java language programing to achieve its function,which includes current location,searching any position quick ly,trips inquiries,station inquiries,site transfer inquiries and so on. to make the system more intuitive and convenient,the public transportation inquiry system achieves the show of the text result and electronic map at the same time, in the entire query proces
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钟点工中介服务合同
- 电商博主内容设计合同
- 海事登记合同履约金协议
- 智能旅游服务系统研发合同
- 货车运输合同
- 智能数据交换与共享平台开发合同
- 律师合同补充协议书
- 户口汉族苗族协议书
- 快递押金退回协议书
- 房屋置换拆除协议书
- 大模型在金融风控领域的应用与效率优化
- 2025年行政复议法试题及答案
- 基于PLC的自动生产线控制系统的设计毕业论文
- 肾病综合征护理疑难病例讨论
- 第六讲探寻新时期中美正确相处之道-2025年春季学期形势与政策课件
- 与合作伙伴的战略合作洽谈纪要
- 2025国家工作人员保密教育线上培训必考题库附含参考答案
- DB11-T 751-2010 住宅物业服务标准
- 智慧矿山无人机自动巡检解决方案
- 人文艺术活动与展览
- 测绘地理信息从业人员保密知识培训
评论
0/150
提交评论