本科毕业论文--安卓公交查询系统_第1页
本科毕业论文--安卓公交查询系统_第2页
本科毕业论文--安卓公交查询系统_第3页
本科毕业论文--安卓公交查询系统_第4页
本科毕业论文--安卓公交查询系统_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章绪论第3章技术背景介绍3.1GPS3.1.1全球定位系统(英语:GlobalPositioningSystem,通常简称GPS),又称全球卫星定位系统,是一个中距离圆型轨道卫星导航系统。它可以为地球表面绝大部分地区(98%)提供准确的定位、测速和高精度的时间标准。系统由美国国防部研制和维护,可满足位于全球任何地方或近地空间的军事用户连续精确的确定三维位置、三维运动和时间的需要。该系统包括太空中的24颗GPS卫星;地面上的1个主控站、3个数据注入站和5个监测站及作为用户端的GPS接收机。最少只需其中3颗卫星,就能迅速确定用户端在地球上所处的位置及海拔高度;所能收联接到的卫星数越多,解码出来的位置就越精确。该系统由美国政府于1970年代开始进行研制并于1994年全面建成。使用者只需拥有GPS接收机即可使用该服务,无需另外付费。GPS信号分为民用的标准定位服务(SPS,StandardPositioningService)和军规的精确定位服务(PPS,PrecisePositioningService)两类。由于SPS无须任何授权即可任意使用,原本美国因为担心敌对国家或组织会利用SPS对美国发动攻击,故在民用讯号中人为地加入选择性误差(即SA政策,SelectiveAvailability)以降低其精确度,使其最终定位精确度大概在100米左右;军规的精度在十米以下。2000年以后,克林顿政府决定取消对民用讯号的干扰。因此,现在民用GPS也可以达到十米左右的定位精度。GPS系统拥有如下多种优点:使用低频讯号,纵使天候不佳仍能保持相当的讯号穿透性;全球覆盖(高达98%);三维定速定时高精度;快速、省时、高效率;应用广泛、多功能;可移动定位;不同于双星定位系统,使用过程中接收机不需要发出任何信号增加了隐蔽性,提高了其军事应用效能。3.1.GPS系统主要由空间星座部分、地面监控部分和用户设备部分组成。空间星座部分GPS卫星星座由24颗卫星组成,其中21颗为工作卫星,3颗为备用卫星。24颗卫星均匀分布在6个轨道平面上,即每个轨道面上有4颗卫星。卫星轨道面相对于地球赤道面的轨道倾角为55°,各轨道平面的升交点的赤经相差60°,一个轨道平面上的卫星比西边相邻轨道平面上的相应卫星升交角距超前30°。这种布局的目的是保证在全球任何地点、任何时刻至少可以观测到4颗卫星。GPS卫星是由洛克菲尔国际公司空间部研制的,卫星重774kg,使用寿命为7年。卫星采用蜂窝结构,主体呈柱形,直径为1.5m。卫星两侧装有两块双叶对日定向太阳能电池帆板(BLOCKI),全长5.33m接受日光面积为7.2。对日定向系统控制两翼电池帆板旋转,使板面始终对准太阳,为卫星不断提供电力,并给三组15Ah镍镉电池充电,以保证卫星在地球阴影部分能正常工作。在星体底部装有12个单元的多波束定向天线,能发射张角大约为30度的两个L波段(19cm和24cm波)的信号。在星体的两端面上装有全向遥测遥控天线,用于与地面监控网的通信。此外卫星还装有姿态控制系统和轨道控制系统,以便使卫星保持在适当的高度和角度,准确对准卫星的可见地面。由GPS系统的工作原理可知,星载时钟的精确度越高,其定位精度也越高。早期试验型卫星采用由霍普金斯大学研制的石英振荡器,相对频率稳定度为/秒。误差为14m。1974年以后,GPS卫星采用铷原子钟,相对频率稳定度达到/秒,误差8m。1977年,BOKCKII型采用了马斯频率和时间系统公司研制的铯原子钟后相对稳定频率达到/秒,误差则降为2.9m。1981年,休斯公司研制的相对稳定频率为/秒的氢原子钟使BLOCKIIR型卫星误差仅为1m。地面监控部分地面监控部分主要由1个主控站(MasterControlStation,简称MCS)、4个地面天线站(GroundAntenna)和6个监测站(MonitorStation)组成。主控站位于美国科罗拉多州的谢里佛尔空军基地,是整个地面监控系统的管理中心和技术中心。另外还有一个位于马里兰州盖茨堡的备用主控站,在发生紧急情况时启用。注入站目前有4个,分别位于南太平洋马绍尔群岛的瓜加林环礁,大西洋上英国属地阿森松岛,英属印度洋领地的迪戈加西亚岛和位于美国本土科罗拉多州的科罗拉多斯普林斯。注入站的作用是把主控站计算得到的卫星星历、导航电文等信息注入到相应的卫星。注入站同时也是监测站,另外还有位于夏威夷和卡纳维拉尔角2处监测站,故监测站目前有6个。监测站的主要作用是采集GPS卫星数据和当地的环境数据,然后发送给主控站。用户设备部分用户设备主要是GPS接收机,主要作用是从GPS卫星收到信号并利用传来的信息计算用户的三维位置及时间。3.1.精确定时:广泛应用在天文台、通信系统基站、电视台中工程施工:道路、桥梁、隧道的施工中大量采用GPS设备进行工程测量勘探测绘:野外勘探及城区规划中都有用到导航:武器导航:精确制导导弹、巡航导弹车辆导航:车辆调度、监控系统船舶导航:远洋导航、港口/内河引水飞机导航:航线导航、进场着陆控制星际导航:卫星轨道定位个人导航:个人旅游及野外探险定位:车辆防盗系统手机,PDA,PPC等通信移动设备防盗,电子地图,定位系统儿童及特殊人群的防走失系统精准农业:农机具导航、自动驾驶,土地高精度平整授时:用于给电信基站、电视发射站等提供精确同步时钟源3.1.4随着中国国民经济的快速增长的西部大开发的实施,我省的高等级公路建设迎来前所末有的发展机遇,这就对勘测设计提出了更高的要求,随着公路设计行业软件技术和硬件设备的发展,公路设计已实现CAD化,有些软件本身还要求提供地面数字化测绘产品的支持;建立勘测、设计、施工、后期管理一体化的数据链,减少数据转抄、输入等中间环节,是公路勘测设计“内外业一体化”的要求,也是影响高等级公路设计技术发展的“瓶颈”所在。目前公路勘测中虽已采用电子全站仪等先进仪器设备,但常规测量方法受横向通视和作业条件的限制,作业强度大,且效率低,大大延长了设计周期。勘测技术的进步在于设备引进和技术改造,在目前的技术条件下引入GPS技术应当是首选。3.2Android平台Android是一个移动设备的软件平台,是由Linux+Java构成的开源软件,它提供包括SDK、KeyApps、Middleware、LinuxKernel四个部分在内的全套手机软件方案。它开放了基于Linux内核以上的开发工具,从而保证了内容的可移植性和多样性。Android平台为我们开发应用程序提供了一套很好的框架,我们可以在这个平台的基础上开发不同的应用程序,也可以开发新的组件供应用程序调用[1]。3.2.Dalvik虚拟:Android采用的Java虚拟机是自主开发的代号为Dalvik的虚拟机技术,在保证API方面兼容的同时Dalvik针对移动手机进行了大幅优化,占用资源更小,运行效率更高。内嵌浏览器:基于开源的浏览器网页排版引擎WebKit。优化的图形:强大的自定义二维图形库。基于OpenGLES1.O标准的3D图形功能,在移动3D开发中有着至关重要的地位。SQLite数据库:SQLitet提供结构化的数据存储。它是一款轻型免费的且开源的数据库,它的设计目标是嵌入式的,它占用的资源非常低、需要的内存空间少、处理速度比较快和支持事务处理功能等。多媒体支持:支持各种通用的音视频和静态图像格式,如MP3、JPG、PNG等。OpenCore是Android多媒体框架的核心,所有Android平台的音视频采集,播放的操作都是通过它来实现的。通过OpenCore,程序员可以方便快速的开发出想要的多媒体应用程序。GSM技术:(依赖硬件)GlobalSystemforMobileCommunications,全球移动通讯系统,俗称“全球通”,是第二代移动通信技术,其开发El的是让伞球各地可以共同使用一个移动电话网络标准,让用户使_一部手机就能行遍全球。蓝牙,EDGE,3G,andWiFi是一种短距离的无线连接技术,在短距离内可以实现话音和数据的无线传输。EDGE(EnhaIlcedDataRateforGSMEvolution),是增强型数据速率GSM演进技术。Camera,GPS,compass,andaccelerometer:(依赖硬件)GPS(GlobalPositioningSystem)ItTI驯全球定位系统。它是一个由覆盖全球的24颗1J星组成的卫星系统。Compass是个开放源代码的JAVA搜索引擎框架。强大的开发环境:包括一个设备模拟器,调试工具,内存和性能检测,以及EclipseIDE的开发插件。Eclipse是个集成开发环境[2]。3.2.Android的架构是Linux内核、C/C++函数库、Dalvik虚拟机、应用框架以及关键应用程序构成的,如图2-1。通过编译基于框架的应用程序可以降低开发负荷。应用软件原则上是在DalvikVM上运行的。图3-1Android架构图Android平台内包含一些关键应用程序,如邮件收发客户端程序、短信收发程序、日历和网页浏览器等,开发者可以在其平台上开发更多有特色的应用程序。开发语言是Java。Android应用程序的开发基于框架和组件。Android本身已在其框架中提高了许多的组件供应用程序调用,当然开发者也开放新的组件,并将组件放入应用程序框架中,以供自己和其它应用程序调用。Android应用程序框架之下是一套C/C++函数库,它们服务于Android应用程序组件,其功能通过组件间接提供给开发者。这些函数库包括:标准C函数库、媒体功能库、浏览器引擎、2D和3D图形库、基于WEB应用的的安全协议SSL、用于点阵和矢量字体渲染的FreeType以及SQLite引擎等。Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。所有的Android应用都运行在它自己的进程里,该进程是一个Dalvik虚拟机的实例,Dalvik被设计成能在一台设备上高效的运行多个虚拟机实例。Dalvik虚拟机的可执行文件被封装成Dalvik可执行格式(.dex)。这是被优化过的最小内存依赖的格式。Java编译器(dx工具)将注册了的和运行时用到的类编译成.dex格式。Dalvik虚拟机依赖于底层Linux内核提供的功能,如线程机制,和内存管理机制等。Android系统平台是基于优化了的Linux内核,是其系统平台的核心。它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层,提供了一个屏蔽层用于屏蔽硬件和上层软件。3.2.对于一个Android应用程序来说,是由Activity、IntentReceiver、Service、ContentProvider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。在应用程序中使用时,需要在配置文件AndroidMainfest.xml中进行配置。这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等。Activity是构成应用程序中最重要的构造块,在Android应用程序中,几乎都是通过Activity来与用户进行交互,所以Activity主要负责的就是创建与用户进行交互的显示窗口,你可以在这些窗口里通过调用setContentView(View)方法来显示你自己的用户界面。1.活动生命周期:活动(Activity)在系统中以活动栈的形式进行管理。当一个新的活动启动后,被放到了栈项,成为了运行活动,而新活动之前的活动在活动栈里总位于新活动之下,直到新的活动退出才重新回到前台。图3.2Activity状态变换路径图从图2-2可以看出,Activity有三个关键的循环:(1)活动的整个生命期:从首次调用onCreate(Bundle)开始,到最终调用onDestroyO结束。在onCreate()中进行所有初始化,在onDestroyO时进行清理工作,释放资源。(2)活动的可见生命期:从调用onStart()开始,到onStop()被调用为止。在这段时间内,即使活动不与用户进行交互,用户也可以在屏幕上看到它。在这两个方法调用之间,可以维护活动显示给用户的资源。onStart()和onStop()方法可以多次调用,因为活动随时可以在可见和隐藏之间进行转换。(3)活动的后台生命期:从调用onResume()开始,到onPause()被调用为止。在这段时间内活动处于其它所有活动之前,并与用户进行交互。一个活动可以不断在resumed状态和paused状态之间变换[4]。2.活动之间的切换:Android使用了Intent类来实现活动之间的切换工作。Intent负责对应用中一次操作的动作、动作涉及的数据和附加数据进行描述。根据Intent的描述,负责找到对应的组件,将Intent传递给调用的组件并完成组件的调用。因此,Intent起着一种媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。在应用中,我们可以以两种形式来使用Intent:直接Intent,指定了component属性的Intent,通过指定具体的组件类,通知应用启动对应的组件。间接Intent,没有指定comonent属性的Intent,则需要包含足够的信息,这样系统才能根据这些信息,在所有的可用组件中,确定满足此Intent的组件。IntentReceivert是用于对外部事件的响应,当外部事件发生时,会使用NotificationManager通知用户。当一个IntentReceiver被触发时,系统会在需要的时候启动对应的应用程序。如在本系统中,当用户正在其它界面进行操作时,有好友发送消息过来,就会以通知的形式发送到当前界面的正上方来通知用户。各种应用还可以通过使用Context.broadcastIntent()将它们的IntentReceiver广播给其它的应用程序,实现应用之间的通讯。Service是提供连续信息的应用程序。它是运行于应用程序后台的服务,在用户进行其它活动的时候,这个服务将一直运行在基于Android平台的即时通讯系统的研究与实现后台直到用户停止该服务或服务运行结束。本系统客户端扩展功能的音乐播放就是采用Service来进行设计和开发的,使用户可以边聊天边听音乐。ContentProvider应用程序能够将它们的数据保存到文件、SQL数据库和其它的存储设备中。当应用程序需要使用存储设备中的数据时,可以使用ContentProvider来完成。使用ContentProvider能够灵活的替换底层使用的存储设备,使开发者可以专著于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据。3.3本章小结本章对Android平台的特征、架构以及Android应用的构成和工作机制进行了详细的分析。对于Android应用程序来说,主要由Activity、IntentReceiver、Service和ContentProvider四部分组成,但并不是对于每一个应用程序,这四部分都是必须的。Activity是应用程序中最重要的一种构造块,我们对其进行了详细的分析,包括Activity的生命周期以及Activity之间的切换。第4章平台的搭建4.1Android开发环境的搭建Android平台为开发者提供了源码开放的软件开发包(SDK),它包含了使用Java语言开发Android平台应用的必要工具和组件(API)。进行开发前先要建立合适的开发环境,其中基于Java的整合型可扩展平台Eclipse是我们的首选。搭建环境所需要的软件:操作系统:WindowsXP或Linux;软件包:AndroidSDK,ADT;IDE环境:EclipseIDE+ADTEclipse3.3以上;JDK:JavaRuntimeEnvironmcnt,JDK;4.1.下载JDK并且一路next进行安装,这里主要讲解JDK的环境变量如何配置:我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:JAVA_HOME值为:D:\ProgramFiles\Java\jdk1.6.0_18(安装JDK的目录)CLASSPATH值为:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;Path:在开始追加%JAVA_HOME%\bin;安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java–version查看JDK的版本信息。出现类似如图3-1的画面表示安装成功了:图3.1验证JDK安装是否成功4.1.下载如图3-2所示的EclipseIDEforJavaDevelopers(92M)的win32bit版(选择自己适合的版本)解压之后即可使用。图3.2Eclipse下载4.1.在AndroidDevelopers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。运行SDKSetup.exe,点击AvailablePackages。如果没有出现可安装的包,请点击Settings,选中Misc中的"Forcehttps://..."这项,再点击AvailablePackages。选择希望安装的SDK及其文档或者其它包,点击InstallationSelected、AcceptAll、InstallAccepted,开始下载安装所选包在用户变量中新建PATH值为:AndroidSDK中的tools绝对路径(本机为D:\AndroidDevelop\android-sdk-windows\tools)。图3.3设置AndroidSDK的环境变量“确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。运行android–h如果有类似如图3-4的输出,表明安装成功:图3.4验证AndroidSDK是否安装成功4.1.打开EclipseIDE,进入菜单中的"Help"->"InstallNewSoftware"点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入/android/eclipse。如图3-5所示:图3.5AddSite确定返回后,在workwith后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有DeveloperTools,展开它会有AndroidDDMS和AndroidDevelopmentTool,勾选他们。如图3-6所示:图3.6选择插件然后就是按提示一步一步next。完成之后:选择Window>Preferences...;在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:D:\AndroidDevelop\android-sdk-windows。点击Apply、OK。配置完成。4.1.为使Android应用程序可以在模拟器上运行,必须创建AVD。1、在Eclipse中。选择Windows>AndroidSDKandAVDManager2、点击左侧面板的VirtualDevices,再右侧点击New3、填入Name,选择Target的API,SDCard大小任意,Skin随便选,Hardware目前保持默认值4、点击CreateAVD即可完成创建AVD4.2Eclipse简介Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于Java开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++和COBOL等编程语言的插件已经可用,或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于Eclipse的应用程序的一个突出例子是IBMRationalSoftwareArchitect,它构成了IBMJava开发工具系列的基础。第5章程序设计5.1系统体系结构图5.1系统体系结构5.2BaiduMapsAPI申请及使用5.2.1百度地图AndroidSDK是一套基于Android1.5及以上版本设备的地图开发工具。可以使用该套SDK开发适用于Android系统移动设备的地图应用,通过接口,可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图应用程序。该套SDK提供的服务是免费的,接口无使用次数限制。但需先申请密钥(key),才可使用该套SDK。申请地址为:/map/android-mobile-apply-key.htm然后随便输入软件名称,即可得到对应的Key5.2.自2.0.0版本开始,获取定位坐标的方法请参考定位SDK中的说明,如下获取定位坐标的方法只针对1.3.5及以前的版本有效。使用MKLocationManager类的requestLocationUpdates注册位置监听事件,在重写的回调函数onLocationChanged中,可获得定位的坐标(详见BMapApiDemoMain例程的MyLocation.java),通过调用MKSearch类的reverseGeocode接口,得到地址。@Override@OverridepublicvoidonLocationChanged(Locationlocation){if(location!=null){pt.setLatitudeE6((int)(location.getLatitude()*1e6));pt.setLongtitudeE6((int)(location.getLongtitude()*1e6));mSearch.reverseGeocode(pt);}}publicvoidonGetAddrResult(MKAddrInfores,interror){if(error!=0){Stringstr=String.format("错误号:%d",error);return;}StringstrInfo=String.format("纬度:%f经度:%f地址:%s\r\n",res.geoPt.getlatitudeE6()/1e6,res.geoPt.getLongtitudeE6/1e6,res.addressComponents.city+res.addressComponents.district+res.addressComponents.street);}5.2.此部分是针对1.3.5及以前版本的说明,自2.0.0版本以后,定位功能已从AndroidSDK中分离。首先在程序中打开相关的权限,然后将MyLocationOverlay实例添加到MapView中,并调用enableMyLocation方法,即可实现当前位置的显示,如果想让地图跟随当前位置移动,需要继承MyLocationOverlay并实现其onLocationChanged方法,调用MapView.getController().animateTo()方法移动地图位置。5.2.地址解析服务在MKSearch类中有两个接口:reverseGeocode、geocode。初始化搜索类MKSearch并注册结构监听对象MKSearchListener://初始化搜索模块,注册事件监听//初始化搜索模块,注册事件监听mSearch=newMKSearch();mSearch.init(app.mBMapMan,newMySearchListener());实现MySearchListener的onGetAddrResult获取得到的地址信息@Override@OverridepublicvoidonGetAddrResult(MKAddrInfores,interror){if(error!=0){Stringstr=String.format("错误号:%d",error);return;}StringstrInfo=String.format("纬度:%f经度:%f地址:%s\r\n",res.geoPt.getlatitudeE6()/1e6,res.geoPt.getLongtitudeE6/1e6,res.addressComponents.city+res.addressComponents.district+res.addressComponents.street);}geocode:根据地址名称获取地址信息:mSearch.geocode("天安门","北京");mSearch.geocode("天安门","北京");第6章系统设计与实现6.1欢迎界面的实现(1)欢迎界面的设计SplashActivity类是本系统的欢迎界面。SplashActivity继承自Activity。本系统的欢迎界面由两张图片组成。一张图片负责显示logo,一张图片负责显示脚注。Xml布局文件整体使用LinearLayout线性布局。(2)Timer类使用Timer类实现定时执行任务的功能,本程序定时3秒钟自动跳转至主页面,主要代码如下:importjava.util.Timer;importjava.util.TimerTask;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;publicclassSplashActivityextendsActivity{ Timertimer=newTimer(); TimerTasktask=newTimerTask(){ publicvoidrun(){ Intentintent=newIntent(SplashActivity.this,MainTabActivity.class); startActivity(intent); finish(); } }; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.splash); timer.schedule(task,3000); }}6.2主要功能的实现(1)换乘查询的实现换乘查询主要实现的是提供从出发站到目的站的乘车方案。实现该模块功能有关的类:DbHelper类、SwitchLineActivity类SwitchLineActivity类的主要变量和函数的介绍:start_id_search_key:起始线路idend_id_search_key:结束线路idstart_search_key:起点站end_search_key:到达站方法:selectSwitchLine(Stringstart,Stringend)是描述搜索过程中的方法,比如说从车站A通过线路L可以到达车站B,如图4-1所示。start_search_keystart_search_keyLineend_search_key图4-1SwitchLine结点(2)线路查询的实现线路查询主要实现的是查询该线路经过的所有站点,下图4-2是线路查询的流程图。输入线路输入线路线路是否为空在数据库中进行查询,返回结果结果是否为空提示线路不能为空提示没有相关线路显示查询结果查询结束是否否是图6-2线路查询流程当进入线路查询界面时,当按下查询按钮后,通过判断表单中的每一个文本框是否为空,如果为空,使用Toast弹出提示框否则就执行DbHelper类中的selectOneLineByName()方法,即到数据库中查找该线路经过的站点,然后再判断返回的结果是否为空,为空则弹出提示框。否则将返回的结果通过handleMessage()方法显示的界面上,该方法主要实现的是先为获取显示内容,然后把字符串进行换行处理,再将需要显示的文本放入TextView中,再将TextView放到LinearLayout中,得到每一行列表要显示的内容。(3)站点查询的实现站点查询主要实现的是查找与该站点相关的线路信息,下图4-3是站点查询的流程图。输入站点输入站点站点是否为空在数据库中进行查询,返回结果结果是否为空提示线路不能为空显示经过站点的所有线路结果显示线路的信息是否否是提示没有相关信息查询结束图4-3站点查询流程当进入站点查询界面时,同线路查询一样,当按下查询按钮后,通过判断表单中的每一个文本框是否为空,如果为空,就弹出提示框。然后再判断是否有该站点的相关信息,如果没有,就弹出提示没有相关的车站信息。若不为空,DbHelper类中的selectOneStopByName()方法是查找出经过该站点的所有线路,然后通过handleMessage()方法将结果显示在界面上。****毕业设计(论文)南通大学毕业设计(论文)6.3截图及运行说明(1)运行该程序首先进入的是欢迎界面,效果如图5-1所示。图6-1欢迎界面核心代码:设定三秒钟后自动跳转到下一页面:Timertimer=Timertimer=newTimer(); TimerTasktask=newTimerTask(){ publicvoidrun(){ Intentintent=newIntent(SplashActivity.this,MainTabActivity.class); startActivity(intent); finish(); } };timer.schedule(task,3000);

(2)当欢迎界面完毕,进入主界面,如图5-2所示。图6-2主页面publicclassMainTabActivityextendsTabActivityimplements OnCheckedChangeListener{privateTabHostmHost; privateIntentmradio1Intent;publicclassMainTabActivityextendsTabActivityimplements OnCheckedChangeListener{privateTabHostmHost; privateIntentmradio1Intent; privateIntentmradio2Intent; privateIntentmradio3Intent; privateIntentmradio4Intent;publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){….}privatevoidsetupIntent(){ this.mHost=getTabHost(); TabHostlocalTabHost=this.mHost;…..}{图6-3换乘查询界面图6-4线路查询界面图6-5站点查询界面

(4)在换乘查询界面上,输入出发站和目的站,如果输入的两个站名不为空且存在经过这两个站点的线路,将其查询结果显示在界面,如图5-6所示。图6-6换乘查询结果界面Stringsql="selectA."+FIELD_STOPSID+"from(selectdistinct"+FIELD_STOPSID+"from"+TABLE_LINES_STOPS+"where"+FIELD_LINESID+"in(select"+FIELD_LINESID+"from"+TABLE_LINES_STOPS+"where"+FIELD_STOPSID+"="+start+"))A,(selectdistinct"+FIELD_STOPSID+"from"+TABLE_LINES_STOPS+"where"+FIELD_LINESID+"in(select"+FIELD_LINESID+"from"+TABLE_LINES_STOPS+"where"+FIELD_STOPSID+"="+end+"))BwhereA."+FIELD_STOPSID+"=B."+FIELD_STOPSID+"";核心代码:主要sql语句

(5)在线路查询界面上,输入要查询的线路名称,单击查询按钮,如果有此线路,将其结果显示在界面上,如图5-7。Stringsql="selectA."+FIELD_STOPSID+"from(selectdistinct"+FIELD_STOPSID+"from"+TABLE_LINES_STOPS+"where"+FIELD_LINESID+"in(select"+FIELD_LINESID+"from"+TABLE_LINES_STOPS+"where"+FIELD_STOPSID+"="+start+"))A,(selectdistinct"+FIELD_STOPSID+"from"+TABLE_LINES_STOPS+"where"+FIELD_LINESID+"in(select"+FIELD_LINESID+"from"+TABLE_LINES_STOPS+"where"+FIELD_STOPSID+"="+end+"))BwhereA."+FIELD_STOPSID+"=B."+FIELD_STOPSID+"";图6-7线路查询结果界面核心代码:主要sql语句Cursorcursor=this.getReadableDatabase().rawQuery("selects."+FIELD_STOP_NAME+",ls."+FIELD_SEQ+"from"+TABLE_LINE+"l,"+TABLE_LINES_STOPS+"ls,"+TABLE_STOP+"sWHEREl."+FIELD_LINE_NAME+"='"+line_name+"'ANDl."+FIELD_LINE_ID+"=ls."+FIELD_LINESID+"ANDs."+FIELD_STOP_ID+"=ls."+FIELD_STOPSID+"ORDERBYls."+FIELD_SEQ+"limit?,?",newString[]{"0","100"});

(6)在站点查询界面上,输入要查询的站点名称,单击查询按钮,如果该站点存在,就先显示经过该站点的线路,如图5-8。Cursorcursor=this.getReadableDatabase().rawQuery("selects."+FIELD_STOP_NAME+",ls."+FIELD_SEQ+"from"+TABLE_LINE+"l,"+TABLE_LINES_STOPS+"ls,"+TABLE_STOP+"sWHEREl."+FIELD_LINE_NAME+"='"+line_name+"'ANDl."+FIELD_LINE_ID+"=ls."+FIELD_LINESID+"ANDs."+FIELD_STOP_ID+"=ls."+FIELD_STOPSID+"ORDERBYls."+FIELD_SEQ+"limit?,?",newString[]{"0","100"});图6-8站点查询结果界面核心代码:主要sql语句Cursorcursor=this.getReadableDatabase().rawQuery("selectl."+FIELD_LINE_NAME+",ls."+FIELD_SEQ+"from"+TABLE_LINE+"l,"+TABLE_LINES_STOPS+"ls,"+TABLE_STOP+"sWHEREs."+FIELD_STOP_NAME+"='"+stop_name+"'ANDl."+FIELD_LINE_ID+"=ls."+FIELD_LINESID+"ANDs."+FIELD_STOP_ID+"=ls."+FIELD_STOPSID+"ORDERBYls."+FIELD_SEQ+"limit?,?",newString[]{"0","100"});Cursorcursor=this.getReadableDatabase().rawQuery("selectl."+FIELD_LINE_NAME+",ls."+FIELD_SEQ+"from"+TABLE_LINE+"l,"+TABLE_LINES_STOPS+"ls,"+TABLE_STOP+"sWHEREs."+FIELD_STOP_NAME+"='"+stop_name+"'ANDl."+FIELD_LINE_ID+"=ls."+FIELD_LINESID+"ANDs."+FIELD_STOP_ID+"=ls."+FIELD_STOPSID+"ORDERBYls."+FIELD_SEQ+"limit?,?",newString[]{"0","100"});(7)当进入线路地图查询界面时,显示用户选择的线路,并将该线路的首站显示在地图的中心位置,如图5-9。图6-9线路地图查询界面核心类:BusLineSearchDemo.javabaidumapapi_v2_0_0.jarBusLineSearchDemo.javabaidumapapi_v2_0_0.jarlocSDK_3.1.jar图6-10站点地图查询界面6.4软件可以改进之处软件还可以进行一系列改进和优化,主要有以下几方面:1、换乘的算法比较简单,没有进行最短路径的优化。2、可以增加导航的功能,让用户可以根据导航找到所要去的车站。第7章系统测试7.1手动测试方案该部分主要以测试系统的功能为主,由测试小组分功能模块进行手动测试,保证系统符合需求规格中的功能,所有业务流程处理按照系统详细设计方案完成,所有处理正确。功能举例:手机城市定位;地图精准度定位;其他功能模块;7.2工具测试方案该部分测试主要以方便编写测试脚本的单元测试和无需编写测试脚本的系统测试为主,不承担测试系统功能的任务。7.2.1单元测试测试步骤:编写测试脚本:使用工具进行单元测试之前要编写测试脚本,测试脚本是测试工具进行自动化测试的执行代码,单元测试要以一个功能函数为单位进行用例的测试。建立测试:将所有测试脚本按照单元特性组织成测试组件,对测试组件进行统一的测试,减少测试执行次数并方便统计测试结果。测试方案:扩展TestCase类,编写测试脚本运行测试测试分析7.2.2系统测试测试方案:采用脚本和人工方式进行测试,实际使用模拟方式测试。7.3测试用例对所有的模块进行黑盒测试,采用等价类划分的方法设计测试用例,按照设计尽可能少的测试用例涵盖所有有效等价类,设计尽可能多的测试用例涵盖无效等价类的原则进行测试用例设计。Case类型编号:正常测试:0边界测试:1极值测试:2异常测试:3性能/压力测试:4接口测试:5对数据访问对象进行白盒测试,采用路径覆盖的方法设计测试用例,测试用例覆盖数据访问的对象的全部功能路径。7.4辅助测试工具软件工具主要功能Eclipse开发工具SVN版本控制MicorsoftProject项目管理Junit单元测试自制接口测试DDMS调试、监控、模拟Traceview性能监控Monkey压力测试Monkeyrunner黑盒测试android-cts-manual兼容性测试结论本次毕业设计是结合本地公交线路系统开发的一款手机查询工具。历经几个月的毕业设计,我的收获还是很大的。从资料查找到课题的设计分析、数据库的设计、界面的设计、然后进行代码编写、程序调试等,整个开发过程都是一边摸索一边实践出来的。为了毕业设计,我阅读了不少的资料,付出了不少的心血,有些是对毕设有帮助的,有些只能作为知识来积累,我深有体会的是要完成一个完善的系统是相当不容易,要考虑周全也是相当困难的。在这一步一步地学习摸索的过程中,我感到开心的就是能够将所学到的知识应用到设计中,使自己的设计能更加完善些。由于能力的限制,最终的系统还是没有那么令人满意,还是存在一些不足之处。希望在日后有机会对其继续改进。比如实现导航功能,换乘查询的算法能够更加完善等。由于时间和个人能力有限,本文对Android的理解和分析还不够深入,系统功能也有待完善。参考文献[1]李明峰,冯宝红,刘三枝.GPS定位技术及其应用.国防工业出版社,2006[2]熊志昂,李红瑞,赖顺香.GPS技术与上程应用.国防工业出版社,2005[3]田丁.基于ARM9手持GPS定位系统的研究与实现[D].武汉:武汉理工大学,2008[4]孔祥元,郭际明,刘宗泉.大地测量学基础.武汉大学出版社,2006[5]中国人民解放军总装备部军事训练教材编辑丁作委员会.GPS技术与应用.国防工业出版社,2004[6]http://code.google.corn/android/[7]王解先,俞振武.高斯投影引起的面积计算误差[D]测绘通报,2003[8]http://code.google.corn/android/what.is.android.html[9]何伟,杨宗德,张兵等.基于SymbianOS的手机开发与应用.人民邮电出版社[10]ItEye/[11]Wien.GlobalPositioningSystemtheoryandpractice.NewYork:SPringer-Verlag,2001[12]李大文.GPS原理及应用.科学出版社,2003[13]WillardMarqnis.Misformodernization.GPSWorld,September2001[14]MichaelJuntaoYuan.梁超译.EnterpriseJ2MEDevelopingMobileJavaApp移动应用程序开发.清华大学出版社,2004[15]甘树满.基于Eclipse的开源框架技术与实践.电子1:业出版社,2007[16]国家测绘局,地籍测量规范一匕京.测绘出版社,1988[17]EricClaybergDanRubel.周良忠译.EclipseBuildingCommercial—Quality插件开发.人民邮电出版社,2006[18]JoeWalnes.甄山译JavaOpenSourceProgramming.Java开放源码编程.2005[19]林信良.Java学习笔记.清华大学出版社.2007[20]赵炯.Linux内核完全注释机械工业出版社.2004[21]RobertJ.Sweet.GPSforMariners.McGraw—HillProfessional,2003[22]彭永麟.城镇地籍测量的可行性研究.福州大学学报,1998[23]冯宝红,郑小元等.GPS.PDA在_十地变更调查中的应用研究.测控技术,2003[24]MicrosoftCorporation.IntroducingMicrosoftWindowsCE3.0.MicrosoftCorporation,2001[25]嵌入式实时多任务操作系统[M].成都:电子科技大学,1999[26]JanVanSiekle,GPSforLandSurveyors,CRCPress,2001[27]Android的安装/haix/archive/2007/11[28]http://www.1etsandroid.cn/SDKm5rcl4/docs/documentation.html[29]Google开发人员访谈Android平台/2007/111[30]AlfredLeiek.GPSSatelliteSur

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论