毕业论文-基于Android查询地铁软件的设计与实现_第1页
毕业论文-基于Android查询地铁软件的设计与实现_第2页
毕业论文-基于Android查询地铁软件的设计与实现_第3页
毕业论文-基于Android查询地铁软件的设计与实现_第4页
毕业论文-基于Android查询地铁软件的设计与实现_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1、 太原理工大学毕业设计(论文)用纸 绪 论1.1 本课题研究背景和意义在我国,随着经济、城市化的快速发展,城市地铁系统也随之迅速扩大,复杂的地铁系统使得用户往往处于迷惑的状态,给出行带来诸多不便,而基于Android的地铁查询系统的选题也正是基于该背景。以Android作为平台,能为客户随时随地提供地铁信息的查询,同时,随着现在社会的发展,我们的生活也朝着电子化不断发展,如交通电子眼在交通管理中越来越普及;而经济的不断发展,避免不了人们都要到某些城市去公干或其他的事情。一旦你对这个城市不熟悉,你的出门就会举步维艰。打的,对于一些因公出差的人来说算不了什么,但是对于旅游者或是个人来说就不是很好的

2、选择。因此,开发一个城市的地铁车查询系统就显得十分必要,可以说是关系到一个城市的形象问题。因此地铁查询系统将帮助出行人士方便、高效的安排自己的行程。本课题将基于Android设计并开发了一个城市地铁查询信息系统,并验证其可行性。即能确定移动用户的地理位置,并能随时、随地提供与此地理位置相关或指定位置的空间信息服务。在智能地铁系统中,地铁查询系统服务是目前最贴近乘客日常生活的,也是最能让乘客亲生体会公交服务水平高低的方面。因此,如何给乘客提供一个良好的平台,让乘客选择或是推荐合适的乘车方案出行,以节省乘车时间,缩短达到目的地的乘坐距离,减少乘坐的票款成本,才是提高公交服务水平最值得关注的问题之一

3、。越来越多的人倾向于通过上网获得和共享信息,随着网络应用的普及和不断地发展,Internet的应用成了世人关注的焦点。智能地铁查询系统即提供全面的地铁信息,更具实用性、便利性、多样性。因此我们提出开发并设计了一个基于Android平台的地铁查询系统。用户可以在任何一款Android手机中安装此应用。通过查询工具可以查看线路,更方便用户出行,节省时间、减缓交通压力。1.2 课题研究现状Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。Google与开放手机联盟合作

4、开发了 Android,这个联盟由包括中国移动、摩托罗拉、高通、HTC和 T-Mobile 在内的30多家技术和无线应用的领军企业组成。Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。作为谷歌企业战略的重要组成部分,Android 将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。全球为数众多的移动电话用户正在使用各种基于 Android 的电话。谷歌的目标是让(移动通讯)不依赖于设备甚至平台。出于这个目的,Android 将补充,而不会替代谷歌长期以来奉行的移动发

5、展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。目前,移动空间信息服务的需求产生,一些学术论文介绍了Android平台的体系结构,分析了该平台的地图接口,针对移动平台资源的有限性,改进了传统公交矩阵换乘算法,采用集合的数学方法,提出了一种基于地铁路线起终点线路信息的地铁查询算法。移动地铁查询系统充分利用了无线移动的方便性与灵活性,也体现了大部分信息与位置相关的客观事实,使GIS应用进入了一个全新的时代。1.3 本论文的组织结构本论文共分六章:第1章:课题的研究背景和意义。针对Android平台的地铁查询系统的背景分析以及该系统开发的实

6、际意义做了详尽地分析说明。第2章:关键技术介绍。对Android平台的各种核心技术做了分析说明,同时也针对了SQLite数据库的作用做了介绍。第3章:查询地铁系统分析和设计。本章分两部分,分析部分对系统开发的可行性和系统的开发需求做了分析,设计部分对地铁查询过程设计和数据库设计做了较为详细的介绍。第4章:系统实现。对本软件的线路站点查询功能的实现过程做了介绍第5章:系统测试。通过对系统进行分析后进行了代码设计、输入输出设计和处理过程设计。详细地给出了系统的所涉及到的大部分页面和最核心的代码,最后还对系统做了较为详细的测试分析。 第6章:总结与展望。归纳总结了整个论文工作过程中遇过的问题,并针对

7、本系统做了一些个人评价。2 关键技术介绍2.1 什么是AndroidAndroid是首个基于Linux平台的开源手机操作系统,该平台由操作系统中间件,用户界面和应用软件组成号称是首个为移动终端打造的真正开放和完整的软件。Android一词的本义指“机器人”,2003年美国有一家以Android为名的小公司成立,开发手机平台。Google收购Android之后,于07年11月5日发布了开源的Android平台一款包括操作系统(基于Linux内核)、中间件和关键应用的手机平台,并组建了开放手机联盟(Open Handset Alliance),包括Google、中国移动、T-Mobile、宏达、高

8、通、摩托罗拉等领军企业。2008年9月22日,美国运营商T-Mobile USA在纽约正式发布第一款Google手机T-Mobile G1。该款手机为宏达电制造,是世界上第一部使用Android操作系统的手机。2.2 应用组件Android开发四大组件分别是:活动(HYPERLINK /view/1136177.htmActivity): 用于表现功能。服务(HYPERLINK /view/3862339.htmService): 后台运行服务,不提供界面呈现。广播接收器(BroadcastReceiver):用于接收广播。内容提供商(HYPERLINK /view/1445128.htmCo

9、ntent Provider): 支持在多个应用中存储和读取数据,相当于HYPERLINK /view/1088.htm数据库。2.2.1 活动Android 中,Activity是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。在Android的程序当中,Activity 一般代表HYPERLINK /view/1455.htm手机屏幕的一屏。如果把手机比作一个浏览器,那么Activity就相当于一个网页。在Activity 当中可以添加一些Button、Check box 等控件。可以看到A

10、ctivity 概念和网页的概念相当类似。一般一个Android 应用是由多个Activity 组成的。这多个Activity 之间可以进行相互跳转。2.2.2 服务Service 是android 系统中的一种组件,它跟Activity 的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service 是没有界面的长生命周期的代码。HYPERLINK /view/3862339.htmService是一种程序,它可以运行很长时间,但是它却没有用户界面。开启Service有两种方式:(1)Context.startService():Service会经历onCreat

11、e - onStart(如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次 );StopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用StopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。 注意,多次调用Context.startservice()不会嵌套(即使会有相应的onStart()方法被调用),所以无

12、论同一个服务被启动了多少次,一旦调用Context.stopService()或者StopSelf(),他都会被停止。补充说明:传递给StartService(0的Intent对象会传递给onStart()方法。调用顺序为:onCreate - onStart(可多次调用) - onDestroy。(2) Context.bindService():Service会经历HYPERLINK /view/2270482.htmonCreate() -onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这

13、个时候把调用者(Context,例如Activity)会和Service绑定在一起,HYPERLINK /view/694084.htmContext退出了,Srevice就会调用onUnbind - onDestroyed相应退出,所谓绑定在一起就共存亡了。2.2.3 广播接收器在Android 中,HYPERLINK /view/109237.htmBroadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver 是对发送出来的Broadcast进行过滤接受并响应的一类组件。可以使用BroadcastReceiver 来让应用对一个外部的事件做出响应。2

14、.2.4 内容提供商Content Provider 是Android提供的第三方应用数据的访问方案。在Android中,对数据的保护是很严密的,除了放在SD卡中的HYPERLINK /view/38752.htm数据,一个应用所持有的数据库、文件等内容,都是不允许其他直接访问的。2.3 Android系统架构简介Android的系统架构和其操作系统一样,采用了分层的架构。从软件分层的角度来看,Android平台由应用程序,应用程序框架,Android运行时,库以Linux内核共5部分构成,结构如图2-1所示。图2-1 整体结构2.3.1 应用程序Android会同一系列核心应用程序包一起发布

15、,Android平台默认包含了一系列核心应用程序,包括电子邮件、短信、日历、地图、浏览器、联系人管理程序等,这些程序都以java 程序语言编写,你也可以用自己便携的应用程序来替换Android提供的应用程序,这个替换的机制实际是由应用程序框架来保证的,框架结构如图2-2所示。图2-2 应用层2.3.2 应用程序框架开发人员也可以完全访问核心应用程序所使用的HYPERLINK /view/16068.htmAPI框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用

16、户可以方便的替换程序组件。应用程序框架是我们进行Android开发的基础应用程序框架层,包含了视图系统,内容提供器,窗口管理器,活动管理器,通知管理器,位置管理器,资源管理器,电话管理器和包管理器9大部分,结构结构如图2-3所示。 图2-3中间件层隐藏在每个应用后面的是一系列的服务和系统, 其中包括:丰富而又可扩展的HYPERLINK /view/71981.htm视图(Views),可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的web浏览器。内容提供器(Content Providers)使得应用程

17、序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。2.3.3 Android 运行时Android 虽然采取Java程序语言来编写应用程序,但不使用J2ME执行Java程序,而是用Android自有的Android运行时(RunTime)

18、Android 运行时包括核心库和Dalvik虚拟机两部分,结构如图2-4所示。图2-4 核心库,虚拟机2.3.4 系统库应用程序框架是贴近于应用程序的软件组件服务,而更底层则是Android的函数库,这一部分是应用程序框架的支撑,其架构如图2-5所示。图2-5系统库2.3.5 Linux系统Android平台是开放,采用Linux内核则是Android平台开放性的基础。Android平台中的操作系统采用了Linux2.6版的内核,它包括了显示驱动、摄像头驱动、Flash内存驱动、Binder(IPC)驱动、键盘驱动、wifi驱动、Audio驱动以及电源管理部分。Linux内核层为我们在软件层

19、和硬件层建立了一个抽象层,使得应用程序开发人员无需关心硬件细节。对于手机的开发商而言,如果想要Android平台运行到自己的硬件平台上就必须通过对Linux层进行修改,通常要做的工作就是为自己的硬件便携驱动程序。2.4 SQLite数据库Android采用SQLite这个轻量级数据库工具来管理数据;SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比

20、如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至今已经有12个年头,SQLite也迎来了一个版本 SQLite 3已经发布。SQLite实现了多数的SQL-92标准,包括事务,就是代表原子性、一致性、隔离性和持久性的(ACID),触发器和多数的复杂查询。不进行类型检查。你可以把字符串插入到整数列中。例如,某些用户发现这是使数据库更加有用的创新,特别是与无类型的脚本语言一起使用的时候。其他用户认为这是主要的缺点。多个进程或线程可

21、以同时访问同一个数据而没有问题。可以同时平行读取同一个数据库。但同一时间只能有一个进程或线程进行数据写入;否则会写入失败并得到一个错误信息(或者会自动重试一段时间,而这重试时间的长短是可以设置的)。程序设计者还提供了一个叫做sqlite3的独立程序用来查询和管理SQLite数据库文件。SQLite的用户可以把这个程序当作如何写SQLite应用程序的示例。3 查询地铁系统分析与设计本章首先介绍了基于Android的地铁查询系统的可行性,确立了开发基础,直接详细阐述了系统各个模块的详细需求分析,接着分析了系统的研究路线和系统的流程设计,最后对地铁数据库的数据结构做了分析。3.1 系统可行性分析可行

22、性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实质上是对进行了一次较大压缩简化后的系统进行分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。系统的可行性分析主要包括经济上的可行性,技术上的可行性,操作上的可行性和法律上的可行性。3.1.1 经济可行性目标系统开发经济需求的比较低,加上具有成熟的Android平台以及十分普及手机设备,所以在软硬件的支出上十分有限。而且,目标系统并是十

23、分的复杂,开发的周期较短,人员经济支出有限。当系统开发成后,通过测试和、试运行和实际应用后,将很大程度上提高移动地铁查询系统的科学性和高效性,在为人们带来便利的同时,也为系统的进一步推广、创新创造了条件,这带来的经济回报将远超过支出,并且最重要的一点是通过该系统的开发,可以使我们进一步理解软件工程思想和软件开发流程,为从事软件开发工作打下很好的基础,从长远利益来考虑,本课题的设计开发还是具有相当大的经济可行性的。在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平

24、台也将很快走向成熟。开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。3.1.2 技术可行性本系统使用Android技术进行开发,发展到现在,Android已经算是一个较成熟的平台了,现在有越来越多的企业及技术人员选择它作为开发平台。因此,在技术上是完全可以胜任这个平台的开发。Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。Android开发平台是由谷歌与 H

25、YPERLINK t _blank 开放手机联盟合作开发的一个开放、自由的移动终端平台,它由操作系统、中间件、应用软件三部分组成。该平台备有完善的程序开发环境,包括模拟器、除错工具、程序执行所耗用存储器、性能评介等功能。平台提供了两个基于位置服务的地图API开发包:Android.location 以及 HYPERLINK file:/C:androiddocsreferencecomgoogleandroidmapspackage-summary.html com.baidu.Android.maps.通过对这两个地图API开发包内与位置服务相关的类的使用,配合设备本身的具备的定位定向等相关

26、模块,可以很好地实现对用户移动空间信息服务应用程序开发。Android的定位接口(Android.location)包含几个与位置服务相关的类,并且提供LocationManager服务,这个服务提供定位与定向API,当然,前提是设备具备这种基本的功能模块,比如说,设备内置了GPS接收机模块等等。LocationManager服务不会被直接用来获取用户位置信息,它会通过getSystemService(Context.LOCATION_SERVICE)来获得一个指向它的Handle,实现对它的有效应用。一旦应用程序拥有了一个指向LocationManager的Handle,那么它将会拥有以下三

27、种功能:(1)查询LocationManager所掌握的全部LocationProviders的最终位置信息列表;(2)注册或者注销当前位置从一个LocationProvider提供的实时位置更新;(3)当移动终端在一个给定的位置半径范围以内的话,激活一个给定的intent,从而实现用户所需的空间信息功能。需要说明的是,开发阶段不能使用Network、GPS等获取的真正的实时位置数据。为此,平台提供了模拟数据开发的功能模块,开发者可以使用DDMS或者geo 命令行导入模拟数据到模拟器中进行程序模拟,对开发者来说,是一个很好的位置信息服务开发辅助工具。3.1.3 操作可行性在互联网的Google

28、已经走过10年度历史,从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。本系统用户只要有一台Android手机,就可以使用了,系统的操作都是用户熟悉的选择框或者按钮等等。所有的操作通过手机就可以完成,用户不需培训,只要稍微提示一下即可。因此,在操作使用上,本系统简单、方便,易于使用户接受,因而是十分可行的。3.1.4 法律可行性由于本系统是在相关法律法规下实施完成的,所以不存在任何法律问题,在法律上是完全可行的。综合考虑经济、技术、操作和法律等方面的因素,该安卓地铁查询系统可以立即

29、开始进行。3.2 需求分析系统提供了地铁线路、站点和换乘的查询,本软件采用的是本地数据库的查询,这样不受手机网络的影响,即使手机在没有无线网络的环境下也可以查询地铁信息,通过仔细对移动地铁查询系统用户需求的分析,确认系统要完成以下功能:(1)线路查询系统提供线路模糊查询功能,通过输入线路关键字,系统自动匹配得到存在的线路列表,用户再选择某一条线路查询其详细的信息;(2)站点查询系统提站点名称模糊查询功能,通过输入站点名称关键字,系统自动匹配得到存在的站点列表,用户再选择某一个站点查询该站点的详细细的信息,包括经过该站点的所有地铁线路;(3)换乘查询可以查询一个站点到另外一个站点的直达或换乘方案

30、;3.3 系统研究线路图本软件研究了一个Android平台的地铁查询软件实现方案,从数据库数据保存到地铁数据的提取,再到界面的友好展示,最后到一个成型软件的生成这样一个过程,研究了SQLite数据库在Android平台的应用以及在手机平台的展示等等。3.4 系统流程设计在设计和开发系统过程中,采用了一些相对比较成熟、安全性较高、运行比较稳定的技术。这些技术贯穿了整个系统的设计与开发过程,是设计和实现各个模块的基础技术,只有运用先进的设计模式和开发技术,才能保证开发工作顺利地进行,才能保证系统设计的合理性和灵活性,才能保证各个功能模块的稳定性。本系统的流程比较清晰,用于可以选择其中的一个或者多个

31、模块进行查询,查询完毕后可以通过Android手机提供的返回键或者软件的上下文菜单 “退出”按钮来退出系统。在查询的过程中,用户可以从线路查询界面转入站点查询,即查询一个站点的所有车辆,也可以又站点查询转入线路查询,即查看对应的线路的站点停靠信息,查询该线路经过的站点位置以及地铁的运行轨迹。3.5 系统数据库设计本软件采用离线数据库查询方式,极大地方便了用户查询和能够快速地响应用户的操作,即使在没有移动网络的环境下也可以实现地铁信息的查询。克服了在线查询对环境较高要求的缺点。由于本软件是基于Android平台的,所以数据库采用了小型数据库SQLite,系统只需要两个表即可,即线路表和站点表,站

32、点表里面存放线路的主键,这样就实现了线路和站点之间的关联,逻辑也非常清晰。如表3.1和表3.2所示。表3.1 地铁线路表字段名数据类型长度描述idInt4ID,自动增长BuswVarchar200线路名称ShijianVarchar200发车时间说明ZxdateVarchar200最后更新时间KindVarchar200线路类型GjgsVarchar200所属公司JBit2是否夜车NoteVarchar200说明PiaoVarchar200票价ShuziInt8线路数字表3.2 站点信息表字段名数据类型长度描述xidInt4线路IDPmInt4排序ZhanVarchar200站点名称aZhan

33、Varchar200说明KindVarchar200线路类型XzhanbdVarchar200经度YzhanbdVarchar200纬度EzhanVarchar200站名拼音4 移动地铁系统实现4.1 主界面框架实现系统菜单模块需要分成三个,分别是换乘、线路查询和站点查询,为了让代码具有较高的可维护性,设计时把这三个模块都独立处理,即分别在各自的Activity里面实现对应的逻辑业务,这样对系统的后期功能扩展具有很高的实际意义。本系统采用ActivityGroup来管理这三个Activity,通过一个FrameLayout来装载当前的Activity,每当当前的Activity被激活后,另外两

34、个同时也被移除,移除的方法可以通过FrameLayout对象的removeAllViews方法来实现;主框架里面默认的是地铁查询模块,也就是说用户一进来看到的是地铁查询界面,在地铁查询界面了,有两个EditText和两个Button组件, EditText是供用户输入线路名称和站点名称的,上面一个Button是供用户查询线路用的,用户可以通过单击这个按钮来查询对应的线路,如果系统不存在用户输入的线路名称,则会给出相应的提示。下面一个Button是供用户查询站点用的,用户可以通过输入站点名称并单击这个按钮来查询相应的站点信息,如果用户要查询的站点信息不存在,系统也会给出相应的提示,显示效果如图4

35、-1所示。图4-1 系统主界面4.2 线路查询模块实现用户可以在地铁查询模块输入线路名称来模糊匹配对应的线路,例如输入“1”,则类似“1路”、“G1路”等线路都会被匹配处理,这时用户再选择一条线路,然后单击“确定”按钮即可查询到该线路的详细信息。在线路详细信息的界面中,用户可以看到该线路经过的所有站点,点击一个站点可以查看该站点的所有停靠车辆,同时用户通过界面上方的“查看下行”按钮可以查看该路车下行时经过的车站,再次点击该按钮可以查看该路车上行时经过的车站,通过点击“线路图”可以一目了然地查看该路车所有的停靠站点位置,也可以查看到该路车的行驶轨迹图,非常方便;弹出的线路列表可以通过AlertD

36、ialog.Builder来实现,效果如图4-2所示。图4-2 线路查询界面4.3 站点查询模块实现用户可以在地铁查询模块输入站点名称来模糊匹配对应的站点,例如输入“国”,则类似“长江国际花园”、“东方国际服装城”等站点都会被匹配处理,这时用户再选择一个站点,然后单击“确定”按钮即可查询到该站点的详细信息,包括停靠在该站点的车辆信息。在站点信息界面里,显示了该站点的所有地铁信息,用户也可以通过点击界面上方的返回按钮返回上一个界面,效果如图4-3所示。图4-3 站点查询界面4.4 换乘模块实现本系统提供换乘功能,用户可以查看一个站点到另外一个站点的地铁方案。查询时如果存在直达车辆则系统直接返回直

37、达车辆的信息。否则进入换乘算法查询,判断是否存在换乘方案,具体的做法算法判断逻辑是:(1).获取起始站经过的所有车辆信息,和这些车所经过的站点集合,记为list1;(2).获取终点站经过的所有车辆信息,并获取这些车所经过的站点集合,记为list2;(3).取得list1和list2中相同的站点名称,这个站点即是换乘站点;(4).给出换乘方案,效果如图4-4所示。图4-4 地铁查询界面5 系统测试5.1 软件测试在开发软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。测试目的在于:测试是指“用意在发现错误而执行一个程序的过程”;一个好的测试用例是指这

38、个测试用例有很高的概率可以发现一个尚未发现的错误;一个成功的测试是指它成功地发现一个尚未发现的错误。本系统的测试和纠错信息流程如图5-1所示。图5-1 测试和纠错信息流程图按照软件工程的观点,软件测试(主要是指多模块程序的测试)共包括4个层次。层次测试的信息流程如图5-2所示,。图5-2 层次测试的信息流程图(1)单元测试。单元测试的用例从单元详细设计中导出。在单元测试中可以采用功能性测试和结构性测试两种。(2)集成测试和确认测试。这一阶段的任务,是通过了单元测试的模块逐步组装起来,通过测试与纠错,最终得到一个满足需求的目标软件。(3)系统测试。在这个测试步骤中所发现的往往是需求规格说明的错误

39、。一般来说,系统测试是功能性测试,不是结构性测试。在次测试中,我们采用白盒测试和黑盒测试相结合的方法。5.2 测试用例5.2.1 线路查询测试该测试的目的是看系统能否根据输入的线路关键字提取出所有匹配到的线路名称,以证明软件线路查询结果的正确性。例如:输入站点信息,显示效果如图5-3、5-4所示。 图5-3 站点查找界面图5-4 站点查找界面5.2.2 站点查询测试该测试目的是验证软件的站点查询是否正常,即通过选择一个站点,查看该站信息。例如:输入站点信息,显示效果如图5-5、5-6所示。 图5-5 站点搜索界面图5-6 站点搜索界面5.3 测试总结经过上述测试,本系统各项操作中均可按照预期的

40、设计运行,实现了地铁查询系统的开发目标与要求。重要的是,还要从最终用户的角度进行安全性和可用性测试。完成了系统的基本功能。实施开发计划管理,质量计划管理,进行产品的设计和实现;进行多层次的测试和验证,交付安装时提供义务期限;提供维护支持、配置管理、文档控制、质量记录、培训人员和其它支持活动等; 总之,加强质量管理,针对所有可能影响软件质量的各个因素都要采取有力措施,作出加强质量管理和控制的决定。与质量有关的人员都要规定其职责和权限,使责任落实到人,保证产品质量真正得到控制。6 总结及展望6.1 总 结毕业设计是我在大学学习阶段的最后一个环节,是对所学基础知识和专业知识的一种综合应用,是一种综合

41、的再学习、再提高的过程,这一过程有助于培养我的学习能力和独立工作能力,而现在两三个月的毕业设计全部结束了,心情极为复杂,在这期间,我既学到了许多知识,同时又锻炼了自己的实际动手能力。通过对本系统的开发和探索,我对软件的开发过程有了一定程度的了解;特别是通过对Android平台地铁查询系统的开发,使我对面向对象技术有了较为深入的理解和掌握。通过这次毕业设计,我认识到系统开发是一件不容易的事,在开发之前的准备工作也是尤为重要,比如需求分析,系统分析与实现,这些都是不言而喻的重要。在毕业设计过程中,我遇到过很多问题,通过查阅参考书和请教导师,都一一得到了解决。这不仅锻炼了自己的分析问题、解决问题的能

42、力,同时也使我认识到自己对所学的知识理解的深度还远远不够,还有很多方面知识结构的缺乏。 很快就要毕业了,我今后一定要努力提高自己的理论水平,同时,尽可能多的阅览一些科技书籍,以加强自己的理论水平和实际动手能力。由于时间的限制,本文所解决问题的方法并不能称之完美。在许多小细节方面尚待推敲、修改与完善。6.2 展 望如果想让本系统应用起来,可能功能还有所欠缺,还有待完善,例如地铁二次换乘功能,这是一个被普遍使用的功能,它允许用户选择起始站和终点站,然后系统给出一种或多种乘车方案,但是由于这个涉及到换乘算法,例如在哪个站换乘等等,这些都需要专业的算法来计算实现,暂时没有实现这个功能。但是毕竟是一个毕

43、业设计,时间和本人的知识面都很有限,不过我相信只要不断地锻炼自己的实际开发能力及动手能力,积极的吸收最新技术,不断摸索不断改进,不断发现问题,解决问题,那么一切困难都会将会迎刃而解,系统功能肯定可以更完善,稳定性可以跟好,效率可以更高的。参考文献1 杨丰盛 Android应用开发揭秘。 北京:机械工业出版社,20102 郭宏志. Android应用开发详解 M. 北京:电子工业出版社,20103 靳岩,姚尚朗. Google Android开发入门与实战M. 北京:人民邮电出版社,2009;4 美Shane Conder Lauren. Android移动应用开发从入门到精通M. 北京人民邮电

44、出版社, 2010;5 张利国,代闻,龚海平. Android移动开发案例详解M. 北京:Android移动开发案例详解,2010;6 张红娟. Android从入门到精通M. 北京:清华大学出版社,2012;7 Herv Guihot. Android应用性能优化M. 北京:人民邮电出版社,2009;8 王东华. Android网络开发与应用实战详解M. 北京:人民邮电出版社,2012;9 王振丽. Android底层开发技术实战详解M. 北京:电子工业出版社,2012;10 美佩腾(Patton,R). 软件测试. 北京:机械工业出版社,2006;11 德斯皮勒(Spillner,A.).

45、 软件测试基础教程(第2版). 北京:人民邮电出版社,2006;12 Mario Zechner. Beginning Android Games. Apress,2012;13 Donn Felker. Android Application Development for Dummies. HUNGRY MINDS,2012;14 Satya Komatineni/Dave MacLean /Sayed Hashimi Pro Android 3. Apress,2012;致 谢首先,我要对我的指导老师表示谢意,在这一次的毕业设计中,感谢胡莉老师在安卓地铁查询系统的开发期间给予我无微不至的

46、关怀,从课题的确定到研究方法的选择都给了我悉心的指导。我还要感谢李建林老师在我论文完成过程中给我的指导,李老师在我的论文完成过程中给我提出了许多宝贵的意见,李老师治学严谨、诚恳谦和、知识渊博、一丝不苟,对我的论文进行了字字句句的斟酌和把关。两位指导老师在百忙之中抽出时间给我帮助,使我在学习中收益匪浅,为以后的工作打下了良好的基础,养成了很好的习惯。老师严谨的治学态度和兢兢业业的工作精神,对于我都是很好的榜样,而老师渊博的知识和解决实际问题的经验,也使我获益很多。在此,我向胡莉老师和李建林老师表示深深的敬意和衷心的感谢。我要感谢太原理工大学和软件学院以及昆山杰普基地所有老师对我的培养和关怀,那些

47、谆谆教诲与美好建议,将是我今后最值得回忆的东西。我要感谢在毕业设计和论文撰写过程中给我帮助和建议的每一位同学。我要感谢我的家人,是他们给予了我最大的关爱、支持和理解,使得我能一心致力于学习,顺利完成学业。总之,我要感谢在毕业设计的整个过程中帮助我的所有领导、老师和同学,没有他们的帮助我也不可能完成此次毕业设计。感谢他们给我的各方面的关心和帮助。最后,我还要感谢本文相关资料及文献的作者和出席答辩的各位评委老师,由于我的知识水平储备还不是很充足,论文难免会有疏漏和错误之处,敬请各位老师批评指正!谢谢。附 录(核心代码)/* * 判断数据库是否存在 * * return false or true

48、*/public boolean checkDataBaseExist() return FileUtil.checkFileExist(DATABASE_PATH + dbName);/* * 获取一路车所有单向停靠的站点 * * return List */public List getOneWayStationByXID(String xid) List list = new ArrayList();SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DATABASE_PATH+ dbName, null);Cursor cur

49、sor = db.rawQuery( select zhan,count(zhan) c from cnbus where xid=? group by zhan , new String xid );if (cursor.moveToFirst() do if (cursor.getInt(1) = 1) list.add(cursor.getString(0); while (cursor.moveToNext();if (!cursor.isClosed() cursor.close();cursor = null;db.close();return list;/* * 获取一个站点白天

50、/夜间车辆数 * * return List */public List getOneStationLineCount(String stationName) List list = new ArrayList();SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DATABASE_PATH+ dbName, null);Cursor cursor = db.rawQuery(select cnbusw.j, count(1) c from cnbus inner join cnbusw on cnbus.xid=cnbusw.id

51、 where zhan=? and cnbus.kind=1 group by cnbusw.j ,new String stationName );if (cursor.moveToFirst() do list.add(cursor.getInt(0) + , + cursor.getInt(1); while (cursor.moveToNext();if (!cursor.isClosed() cursor.close();cursor = null;db.close();return list;/* * 获取一个站点的所有车辆 * * return List */public Lis

52、t getAllLineByStationName(String stationName) List list = new ArrayList();BusLineInfo info = new BusLineInfo();SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DATABASE_PATH+ dbName, null);Cursor cursor = db.rawQuery(select distinct xid,cnbusw.* from cnbus inner join cnbusw on cnbus.xid=cnbus

53、w.id where zhan=? and cnbusw.kind地铁线路 order by cnbusw.j,cnbusw.shuzi,new String stationName );if (cursor.moveToFirst() int index_id = cursor.getColumnIndex(id);int index_busw = cursor.getColumnIndex(busw);int index_shijian = cursor.getColumnIndex(shijian);int index_zxdate = cursor.getColumnIndex(zxd

54、ate);int index_kind = cursor.getColumnIndex(kind);int index_gjgs = cursor.getColumnIndex(gjgs);int index_note = cursor.getColumnIndex(note);int index_piao = cursor.getColumnIndex(piao);int index_shuzi = cursor.getColumnIndex(shuzi);do info = new BusLineInfo();info.setID(cursor.getInt(index_id);info.

55、setBusw(cursor.getString(index_busw);info.setShiJian(cursor.getString(index_shijian);info.setZXDate(cursor.getString(index_zxdate);info.setKind(cursor.getString(index_kind);info.setGjgs(cursor.getString(index_gjgs);info.setNote(cursor.getString(index_note);info.setPiao(cursor.getString(index_piao);i

56、nfo.setShuZi(cursor.getInt(index_shuzi);list.add(info); while (cursor.moveToNext();if (!cursor.isClosed() cursor.close();cursor = null;db.close();return list;/* * 通过线路名称匹配模糊查询返回精确的线路名称 * * return List */public List getLineListByLineName(String lineName) List list = new ArrayList();BusLineInfo info =

57、 new BusLineInfo();SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DATABASE_PATH+ dbName, null);Cursor cursor = db.rawQuery(select distinct * from cnbusw where busw like % + lineName+ % order by shuzi, null);if (cursor.moveToFirst() int index_id = cursor.getColumnIndex(id);int index_busw = c

58、ursor.getColumnIndex(busw);int index_shijian = cursor.getColumnIndex(shijian);int index_zxdate = cursor.getColumnIndex(zxdate);int index_kind = cursor.getColumnIndex(kind);int index_gjgs = cursor.getColumnIndex(gjgs);int index_note = cursor.getColumnIndex(note);int index_piao = cursor.getColumnIndex

59、(piao);int index_shuzi = cursor.getColumnIndex(shuzi);do info = new BusLineInfo();info.setID(cursor.getInt(index_id);info.setBusw(cursor.getString(index_busw);info.setShiJian(cursor.getString(index_shijian);info.setZXDate(cursor.getString(index_zxdate);info.setKind(cursor.getString(index_kind);info.

60、setGjgs(cursor.getString(index_gjgs);info.setNote(cursor.getString(index_note);info.setPiao(cursor.getString(index_piao);info.setShuZi(cursor.getInt(index_shuzi);list.add(info); while (cursor.moveToNext();if (!cursor.isClosed() cursor.close();cursor = null;db.close();return list;public List getAllBR

温馨提示

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

评论

0/150

提交评论