




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件下载http:/ Android 的公交查询系统的设计与实现摘 要: 随着经济的快速发展,城市的公交系统也变得越来越庞大,并且线路网变得更加交错复杂,对于一般的出行者来说,选择一条适合自己的出行路线变得很困难。手机伴随着电子产品的快速发展,智能化水平变得越来越高,操作起来更加的方便。Android 系统在手机市场中也占有接近一半的份额。本课题旨在设计并实现一款基于Android 的公交查询系统,系统运行于 Android 平台,主要采用 Java 语言编写,数据库使用 Android 自带的轻型数据库 SQLite。系统主要实现的功能有线路查询、站点查询和换乘查询等。 关键词: 公交查询;
2、Android;SQLite Design and Implementation of the Public Transport Query System Based on AndroidAbstract: With the rapid development of the economy ,the system of the public transport has became more expanded and more complicated.It is difficult to find the right route for the travel by bus.Fortunatel
3、y,the mobile phone industry also develops very fast.Our mobile phones become more intelligentize,which is more comvenient for the users to use the phones.Android System is used in nearly half of the mobile phones sold in the market.The goal of this task is to design and achieve a public transport qu
4、ery system based on Android.The system runs on the Android platform,mainly uses the Java language.And the database of the system is the Android bringing light SQLite database .The main achievement of function are line query, site query and Transfer query, etc.Keywords: Bus inquiries;Android;SQLite I
5、目目 录录 第第 1 章章 绪论绪论.11.1 课题简介.11.2 设计背景.11.3 课题研究现状.11.3.1 国外研究现状.11.3.2 国内研究现状.11.4 本文研究内容及主要贡献.2第第 2 章章 关键技术关键技术.32.1 平台相关内容介绍.32.1.1 Android操作系统简介.32.1.2 Android的系统架构.32.2 换乘技术介绍.32.3 本章小结.4第第 3 章章 需求分析需求分析.53.1 可行性研究.53.1.1 技术可行性.53.1.2 经济可行性.53.1.3 操作可行性.53.2 系统的综合需求.53.2.1 系统需求调查.53.2.2 功能需求.53
6、.2.3 性能需求.53.3 系统流程图.53.4 数据流图.63.4.1线路查询的数据流图.63.4.2 站点查询的数据流图.73.4.3换乘查询的数据流图.73.5 数据字典.73.6 开发环境.83.7 本章小结.8第第 4 章章 系统设计系统设计.94.1 总体设计.94.1.1 设计原则.94.1.2 模块设计.94.2 数据库设计.94.2.1 数据库的E-R图.104.2.2 城市路线表.10II4.2.3 区域表.114.3 详细设计.114.3.1 功能模块.114.3.2 人机界面设计.114.4 本章小结.13第第 5 章章 系统实现系统实现.145.1 线路查询.145
7、.1.1 流程图.145.1.2 核心代码.145.2 站点查询.175.2.1 流程图.175.2.2 核心代码.175.3 换乘查询.195.3.1 流程图.205.3.2 核心代码.205.4 软件运行环境.245.5 本章小结.24第第 6 章章 总结与展望总结与展望.256.1 总结.256.2 展望.25毕业设计体会毕业设计体会.26致谢致谢.27参考文献参考文献.28英文翻译资料英文翻译资料.291第第 1 章章 绪论绪论1.1 课题简介课题简介 一个城市公共交通的能力,在一定程度上反映了这个城市的经济发展水平。高水平的公共交通能力,也能够促使城市化水平的发展,越来越庞大的城市公
8、交系统不仅覆盖面广,而且很经济,对于城市居民来说,乘坐公交车仍是最佳之择。在现有的公共交通条件下,设计合理的公交出行路径有助于人们确定出发时间、出发线路和换乘方案等1。然而对于大部分出行者来说,对一个城市的道路状况并不是很清楚,往往不能够选择最适合自己的出行路线。本课题旨在开发一款离线的基于 Android 的城市公交查询系统,能够对城市公交系统进行线路查询、公交站点查询和换乘查询,能够方便且智能的给出理想的出行路线,且具有一定的选择性。给乘客提供一个良好的乘车方案出行,以节约乘车时间,缩短到达目的地的乘坐距离,减少乘坐的票款成本,才是提高公交服务水平最值得关注的问题之一2。 1.2 设计背景
9、设计背景Android 是一种现今流行的操作系统,操作系统内核是基于 Linux 的,它的特点包括自由和开放源代码,主要使用在手机等移动设备。Android 采用了 Linux 作为自己的内核,采用了独特的优化的 Dalvik 虚拟机,并且携带特有的地图模块、XML 布局方案简单快捷,拥有轻量级的数据库 SQLite、高效优化的 2D 和 3D 图形库,还有丰富的多媒体技术等。现在 Android 系统占有手机系统的一半份额,也是深受手机等移动终端用户喜爱的一款操作系统。很多开发者加入了 Android 这个大家庭,使得基于 Android的软件种类越来越丰富,功能越来越趋于智能化。1.3 课
10、题研究现状课题研究现状1.3.1 国外研究现状国外研究现状在国外公交查询系统的研究拥有较高的水平。他们通过向用户提供及时的准确的信息,使更多的出行者在出行时选择乘坐公共交通工具。这也成为公共交通的发展迅速的重要因素之一。国外的公交查询有如下特点: (1)为出行者提供方便又快捷的咨询服务。 (2)将全球定位技术巧妙运用在公交查询系统中。 (3)在公共场合,使用电子触摸屏技术。 (4)将公交查询系统与因特网相结合。 (5)使用 google 等电子地图。 现在,许多地方的城市交通查询系统还借助了全球定位和地理信息系统,为车辆提供全天置、速度和信息管理等服务3。欧洲一些国家,近年来研究取得了较好的效
11、果。通过改善包括信息服务在内的公交服务,从而对解决城市交通问题,取得了明显的社会经济效益4。1.3.2 国内研究现状国内研究现状与国外的研究状况相比,我们国家的公共交通事业起步时间较晚,发展速度也较慢,公交查询系统的智能化水平也相对较低,绝大部分城市仍然使用老套的运营管理体制。乘客能够获取的信息很少,获取的方式种类也不多。不能够保证公交路线信息2和站点信息的数据完整性和准确性,我国公交系统研究状况如下:(1)乘客获取的关于乘车的信息量很少,而且获取的方式也很简单,基本上是通过公交站点附近的公交路线指示地图获得,或者向当地居民询问。(2)公交的查询方式大多数是基于网络、基于 Web 的。在一些没
12、有网络的地方,根本无法使用。(3)我国的公交查询系统的研究起步晚,研究水平不高,知道现在仍然处于初级阶段。现在的查询系统,大多数只能够提供线路查询、站点查询和换乘查询,对一个城市的比较出名的风景名胜、旅游景区等,没有给出一些简介,也没有相应的查询功能。1.4 本文研究内容及主要贡献本文研究内容及主要贡献本文研究的课题是开发并实现一款基于 Android 的离线的城市公交查询系统,对于人们的日常生活的出行来说,是一款很有实用价值的系统,主要实现的功能有:线路查询、站点查询和换乘查询。系统的核心部分为换乘查询,采用邻接矩阵的方法来存储相关数据,继而实现换乘思想。第 1 章 绪论:该章节简单介绍本课
13、题的研究的意义、设计背景和课题研究背景。第 2 章 关键技术:该章节主要对本课题的所使用的关键技术进行详细介绍,其中包括平台语言 Android 的技术介绍和课题核心思想换乘技术的介绍。第 3 章 需求分析:该章节主要对系统的各种需求包括可行性分析进行解析,并通过系统流程图,数据流图和数据字典加以说明,最后对系统的开发环境进行相关介绍第 4 章 系统设计:该章节对系统的设计进行分批次分段落介绍,主要包括总体设计、数据库设计和详细设计三大部分。第 5 章 系统实现:该章节从系统的编码、实现以及测试来进行介绍,其中在给出程序流程图的基础上,再以具体的各功能模块的关键代码来实现,并给出各部分模块的实
14、现效果。第 6 章 总结与展望:本章节主要总结了该系统自设计初期至设计结束尚且存在的不足,并对完善系统提出展望。3第第 2 章章 关键技术关键技术对于一个系统而言,从系统的最初始设计到最后系统的完成,实现系统时所要用到的关键技术都是最重要的,只有真正的掌握系统所需要的关键技术,才能在系统的设计和实现中做到游刃有余,也才能将一个系统做出我们想要的结果。关键技术是一款系统永恒的灵魂。2.1 平台相关内容介绍平台相关内容介绍2.1.1 Android 操作系统简介操作系统简介Android 翻译成中文的意思是“机器人”,但这里它是美国 Google 公司在 2007 年11 月 5 日发布的操作系统
15、,它是基于 Linux 的操作系统,它包含操作系统、用户界面、中间件和应用软件,Google 公司称其为第一款真正源码开放的手机系统。Android 的系统内核是基于 Linux 内核的,最初由 Google 开发并发布,后来 Google 公司与其他公司一起组建了开放手机联盟,并交由手机联盟开发,其他厂商也可以自行开发自己的系统。2.1.2 Android 的系统架构的系统架构 如图 2.1 所示的是 Android 操作系统的架构。Android 是基于 Linux 的,把Android 按照功能划分分为 4 层,从下往上分别是 Linux 内核层、中间件层、应用程序框架层还有应用程序层。
16、Android 的每一层都为上层提供接口,为下层进行封装。 Linux 内核层: Android 平台是运行在 Linux 之上的,内核层是一个抽象层,在手机软件层与硬件层之间。内核已经为开发者和用户提供了多项基本功能,其中包括显示的驱动、摄像头的驱动、Wi-Fi 的驱动和电源的管理等。 中间件层: Android 运行时和核心库都属于 Android 的中间件层,其中核心库包括显示系统管理、媒体框架、SQLite 数据库、OpenGL、FreeType、Webkit、SGL、SSL 和 C 库。Android 运行时包含运行时核心库和 Dalvik 虚拟机。在 Android 中,应用程序都
17、有自己专用的 Dalvik 虚拟机,而且都在自己的进程中运行。 应用程序框架层: 应用程序框架是与开发者最直接相关的,为开发者提供了很多的接口。包括包管理器、Acitvity 管理器、Window 管理器、电话管理器、内容提供者、资源管理器、View 系统、定位管理器和消息管理器。 应用程序层: 一些常用的应用程序,Android 系统本身已经内置了,当然这些应用程序并不和开发人员自己开发的应用程序有太大的区别,本质上是并列的。用户可以选择使用。2.2 换乘技术介绍换乘技术介绍本课题开发的是公交查询系统,它的核心模块是换乘查询。换乘方案的选择是换乘查询的核心,是基于最小的换乘代价的。那么在设计
18、换乘方案的时候,在直达的情况下不考虑换乘,一次换乘可以到达的情况下不考虑二次换乘。另外需要注意的是随着公交系统的不断完善,现在大中城市的公交系统中,任何两个站点之间都可以通过一次换乘来实现。换乘模块分两种情况,一是可以直达的情况不需要转车,二是需要4换乘。下面着重介绍换乘的情况。 (1)直达:搜索出经过起点 A 的所有线路集合记作 LA 和经过终点 B 的所有线路集合记作 LB。一一比较 LA 与 LB 中的元素,查看是否有相同的元素,如果存在则表明两站点有相同的公交路线经过,表明站点 A 和站点 B 之间是直达的。 (2)换乘:如果不存在直达的线路,则生成邻接矩阵 A,将 LA 中的每一个元
19、素和 LB 中的每一个元素进行匹配,查看这两条线路是否存在相同的站点,如果存在相同的站点则邻接矩阵 A 中的相应元素记为 1,否则记为 0 说明两条线路不相交;生成邻接矩阵 A 后,检索 A 中的所有元素,如果元素为 1,则站点 A 和站点 B 之间可以换乘到达5。图 2.1 Android 的系统架构2.3 本章小结本章小结本章节主要对涉及本课题研究的主要关键技术进行详细的理论知识分析与介绍。包括对 Android 系统的一些简单的介绍、系统分析和对换乘模块核心思想的理论实现进行相信介绍。5第第 3 章章 需求分析需求分析开发一款系统,首先应该明白这款系统的开发需要做到哪些功能、需要满足怎样
20、的一些用户还有收集系统要使用的一些数据资料,只有这样,才能开发出令人满意的产品,也必将是软件去得成功的保证。3.1 可行性研究可行性研究3.1.1 技术可行性技术可行性本课题旨在开发一款基于 Android 的城市公交查询系统,使用 Android 作为系统的运行平台,Android 是运行在 Linux 内核上的操作系统。Android 经过多年的发展,技术也已经相当成熟。Android SDK 提供了开发时必需的工具和各种 API 接口,也有很多开发者致力于 Android 的研究。可以使用 Android 语言解决本课题,因此技术上是可行的。3.1.2 经济可行性经济可行性改革开放以来社
21、会经济取得令世界瞩目的发展,手机也逐步走进人们日常生活。由于手机体积较小且便于携带,运行速度也在不断的得以提升。本课题所开发的城市公交查询系统是基于 Android 操作系统的。Android 在移动终端市场中占有相当高的份额,市场前景开阔,只要使用 Android 系统的手机用户皆可以安装本系统。所以,在经济上是可行的。3.1.3 操作可行性操作可行性本课题研究的系统操作方式简单明了,界面清晰。拥有良好的人机交互界面,并不涉及较深层次的理论知识,只要按照系统指定的操作流程走,都可以很轻松使用本系统,因此在操作上是可行的。3.2 系统的综合需求系统的综合需求3.2.1 系统需求调查系统需求调查
22、人们出行的需求不断增大,公交系统也在壮大。但满足人们对出行路线进行相应查询的方式却不多,这在一定程度上是矛盾的。本课题旨在研究开发一款离线的公交查询系统,可以对城市的所有公交路线进行查询。在课题设计初期需对整个城市的公交路线进行收集,并进行相应的整理。3.2.2 功能需求功能需求本系统分为三大模块,分别为线路查询模块、站点查询模块和换乘查询模块。线路查询将实现对用户所输入的路线名进行查询,并显示这条路线上的所有站点,以及对线路的一些描述信息。站点查询将实现对用户所输入的具体站点进行站点查询,并列出所有通过该站点的所有线路名。换乘查询将实现对用户随机输入的两个站点,给出具体的乘车方案。3.2.3
23、 性能需求性能需求一般市面上销售的 Android 手机都可以运行本系统。63.3 系统流程图系统流程图系统流程图顾名思义是整个系统的整体的流动情况,系统流程图简单明了的说明了这个系统可以实现什么样的功能,每个功能将会以什么样的形式呈现。每个功能之间是否存在一定的联系也可以通过系统流程图一眼看出来。系统流程图是对整个系统功能调用的一个简单地介绍。城市公交查询系统的系统流程图如图 3.1城市公交查询系统线路查询站点查询换乘查询输入线路名输入站点名输入始终站点判断线路名是否正确判读站点是否正确判断始终站点是否正确查询线路上的站点查询经过这个站点是线路两个站点的换乘显示站点显示路线显示换乘方案选择线
24、路中的某一个站点选择某一条路线选择某一种换乘方案YYYNNN线路反向反向换乘显示详细的换乘方案反向图 3.1 系统流程图3.4 数据流图数据流图数据流图是系统的逻辑功能的图形表示,是数据流向的一种直观表现,可以通过数据流图看出系统中所要使用到的数据在每个功能模块中的流动情况。从一个业务中流进流出的数据发生了哪些变化,对数据做了哪些处理。设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体地实现这些功能,所以它也是软件设计的很好的出发点6。本系统所需要是数据流有线路名、站点名等。其数据流图如下:3.4.1 线路查询的数据流图线路查询的数据流图 线路查询的数据流图如图 3.27
25、线路查询D1 线路信息结果显示获取信息线路名线路名线路名站点D2 站点信息线路名站点P1检索线路P2线路处理图 3.2 线路查询的数据流图3.4.2 站点查询的数据流图站点查询的数据流图 站点查询的数据流图如图 3.3 站点查询D1 站点线路显示站点信息站点信息准确站点站点名所有线路D2 线路信息站点名所有路线P2处理站点P1检索站点图 3.3 站点查询的数据流图3.4.3 换乘查询的数据流图换乘查询的数据流图 换乘查询的数据流图如图 3.4换乘查询D1 站点信息换乘显示站点信息站点信息准确站点名站点换乘信息D2 区域信息站点区域P1获取站点P2换乘处理D3 路线信息站点线路图 3.4 换乘查
26、询的数据流图3.5 数据字典数据字典数据字典是系统的数据的信息集合,是用来对数据流图中的使用到的数据进行解释的。如果其他开发者对数据流图中使用到的数据元素不了解,不明白这些数据表达什么意思,那么就可以通过数据字典了解它的用途。数据字典和数据流图是相辅相成的。以下是本课题的数据字典:名称:线路名 总编号:1-001别名:线路查询信息 编 号:0018描述:标示线路,对用户输入的路线名进行线路查询数据流来源:用户输入数据流去向:数据库输出数据流:在线路查询模块显示名称:站点名 总编号:1-002别名:站点查询信息 编 号:002描述:对站点进行查询数据流来源:用户输入数据流去向:数据库输出数据流:
27、在站点查询模块显示名称:换乘方案 总编号:1-003别名: 编 号:003描述:对用户输入的始末站点进行匹配换乘方案输出数据流:在换乘查询模块显示图 3.5 数据字典3.6 开发环境开发环境本课题以在 Windows 平台上,搭建 Android 为开发环境。Google 公司提供了完善的 Android SDK 开发包,并通过 Java 语言来进行开发。Android SDK(Software Development Kit)软件开发包包含 Android 操作系统、Android 仿真器(AVD)、Eclipse 集成开发环境、Android 开发工具(Android Developmen
28、t Tools,ADT)、函数库、应用程序平台(Platform) API 和范例程序7。开发环境要求如下:Windows XP(32 位) 、Windows 7(32 位或 64 位)。内存:512MB 以上。硬盘:剩余 2GB 空间以上。CPU:P4 2.0GHZ 以上。显示器分辨率:1024 768 以上。3.7 本章小结本章小结本章节主要对系统进行需求分析,其中设计到可行性分析,在系统软件的开发初期,可行性分析是很有必要的,它解决了这个系统是否可以开发,是否值得开发。那么需求分析则准确的回答了开发这款系统我们必须要做什么,必要要实现怎么的功能。本章节对各种需求分析进行介绍,并结合系统流
29、程图、每个功能模块的数据流图以及数据字典进行直观的展现。最后对系统的开发环境进行简单的介绍。9第第 4 章章 系统设计系统设计系统设计在软件的设计实现中特别重要,是软件设计的基础,在一定程度上影响着系统的性能和成本。也直接影响着用户对产品的满意程度,在系统设计中,需要对系统的各个参数进行了解。4.1 总体设计总体设计通过总体设计,应该明白系统该怎么去实现,为实现目标系统应该做哪些工作。对实现系统的不同的方案进行筛选,最终确定哪一种方案为最佳方案。在总体设计中,需要对组成系统的物理元素进行划分。4.1.1 设计原则设计原则 (1)实用性原则 实用性原则主要体现的是所涉及的系统能够解决实际问题,是
30、所有应用系统设计最基础的最主要的原则,直接关系到系统的成败8。本课题研究的是基于 Android 的离线公交查询系统,可以全天候为人们提供公交线路的选择,用户可以使用本系统获取想要的线路信息、站点信息和换乘方案。 (2)可靠性原则 可靠性是系统设计的立足点,若设计的系统故障频繁,就不能够满足用户的要求9。如果系统运行时经常出现故障,那么就应该有友好的交互界面,提示用户该怎么去操作。 (3)安全性原则 系统在设计实现时一定要遵循安全性原则,应该对用户的合法身份有一定的验证,应该拒绝合法用户的不合法操作,也要杜绝不合法用户对系统的操作。这有这样才能保障系统的安全性。 (4)易于更新和维护 系统的设
31、计,能够实现有关空间数据和属性数据的实时更新和维护10。 (5)操作简单 简单的操作流程也是系统设计时应当注意的问题,使用系统的用户不可能每个人都会很熟悉系统的功能,不可能每个人对系统的操作过程都很熟悉。因此系统的设计不应当有太复杂的操作,应该对用户接口做精心设计,做到用户一看就知道这个是做什么用的,将会实现什么功能。用户输入信息时,系统会给出提示信息;当用户输入信息有误时,有信息提示;当没有查到满足条件的结果时会弹出对话框进行提示11。4.1.2 模块设计模块设计将整个系统按照系统的功能进行划分,分成几个小的功能模块,将系统进行模块化设计,每个模块实现一个子功能,把所有的模块再集合在一起构成
32、整个系统。对每一个功能模块进行有针对性的设计,每个功能模块都相对独立,这样可以加快系统的设计进程。每个功能模块都有一个接口,直接调用接口就可以实现相应的功能。系统的功能模块图如图 4.14.2 数据库设计数据库设计顾名思义数据库是存储数据的仓库,在一个系统的设计中,数据库设计显得尤为重要,数据库设计的好坏直接影响着一个系统的后期维护工作的工作量。在对数据库10进行设计时,应该遵循数据库设计的一些原则。数据库是长期存储数据的集合,本课题共有一个数据库两个表。公交查询系统线路查询站点查询换乘查询线路查询线路反向查询具体站点查询站点查询具体线路查询换乘方案反向换乘方案具体方案查询图 4.1 系统的功
33、能模块4.2.1 数据库的数据库的 E-R 图图 数据库的 E-R 图如图 4.2经过路线站点路线名始末时间所属区域站点名mn区域号区域所属1区域站点n区域名 图 4.2 E-R 图4.2.2 城市路线表城市路线表 城市路线表 xuzhou 如表 4.1表 4.1 xuzhou 字段名说明类型长度是否主键允许空lname线路名varchar6是否labale返乘表识int 否否stations路径text否否describe线路描述text否否114.2.3 区域表区域表 区域表 quyu 如表 4.2表 4.2 quyu字段名说明类型长度是否主键允许空num区域号int是否quname区域名
34、text 否否qu区域站点text否否4.3 详细设计详细设计4.3.1 功能模块功能模块在对系统进行设计时,一个系统的复杂程度在一定程度上来说是很大的,但系统的功能往往也是分开的,对系统按功能进行功能模块的划分,可以使系统变得清晰。分步骤实现各个功能。每个功能模块只需给定特定的接口就可以直接调用,这也是系统可以顺利完成的保证。(1)线路查询模块线路查询模块:接受用户输入的线路名,检索线路名是否为空,如果不空提供相关线路名供用户选择,在选择正确的线路名后,对数据库进行检索,将这条路线上的所有站点以及线路段描述信息在显示窗口显示。(2)站点查询模块站点查询模块:接受用户输入的站点名,判断站点名是
35、否正确,列出相关站点以供用户选择。在选择正确站点后,将对数据进行数据库检索,把所有经过这个站点的线路信息列举出来,并在显示窗口显示。(3)换乘查询模块换乘查询模块:接受用户输入的始末站点,并对站点名进行判断,将正确的站点进行算法运算,并最终给出换乘方案。4.3.2 人机界面设计人机界面设计 对于任意一款系统或者软件来说,拥有良好的人机界面都是很重要的。人机界面的设计也存在很大的难度,很大程度上取决于设计者的设计经验。设计者除了要对软件的每一个控件做最完美的设计外,还要拥有一定的美工能力,这样设计出来的系统才会拥有让人满意的界面,也会增加用户的满意度。 (1)欢迎界面图 4.3 欢迎界面12 (
36、2)线路查询主界面图 4.4 线路查询(3)站点查询主界面图 4.5 站点查询 (4)换乘查询主界面图 4.6 换乘查询134.4 本章小结本章小结本章节主要对系统的总体设计进行介绍,涉及三大部分分别为总体设计、数据库设计和详细设计。其中总体设计从系统的设计原则和模块设计出发进行介绍。数据库设计在系统的设计实现中尤为重要,本课题数据库共有两个表。详细设计主要介绍了系统的各大功能模块将要实现的功能和人机界面的设计。14第第 5 章章 系统实现系统实现 5.1 线路查询线路查询线路查询实现的功能: (1)获取用户输入的线路名,判断是否正确; (2)查询数据库将于此线路相关的所有线路列举出来; (3
37、)查询数据库,将这条线路上的所有站点和这条线路的起终时间罗列出来; (4)在线路显示界面显示; (5)用户在显示界面选择任一个站点,可以查看通过该站点的所有线路。5.1.1 流程图流程图线路查询流程图如图 5.1开始输入线路不为空线路名正确列出相关线路找出确定线路上的所有站点显示站点结束YYNN提示信息提示信息图 5.1 线路查询流程图5.1.2 核心代码核心代码 列举所有相关的路线列举所有相关的路线 AlertDialog.Builder builder= new AlertDialog.Builder(LineActivity.this);/声明并定义AlertDialog.
38、Builder 对象 builder.setTitle(选择路线);/为对话框设置标题15 ArrayAdapter adapter=new ArrayAdapter (this,android.R.layout.simple_expandable_list_item_1,getMyData(); builder.setAdapter(adapter, new DialogInterface.OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) /对 adapter中的元素进行监听/ T
39、ODO Auto-generated method stub lname = linenamewhich; Intent intent=new Intent();/创建Intent 对象 Bundle bundle = new Bundle(); bundle.putString(lname,lname);intent.putExtras(bundle);intent.setClass(LineActivity.this, LineshowActivity.class); startActivity(intent);); dialog=builder.create();public List
40、getMyData()/创建List对象,并向其添加数据 int i=0; String line; int j= linename.length; List mylist = new ArrayList();/添加List对象,并向其添加数据 while(ij) line = linenamei; i+; mylist.add(line); return mylist; 运行效果图如图5.2图5.2 路线选择运行效果图 显示线路上的所有站点显示线路上的所有站点 mylayout = (LinearLayout) this.findViewById(R.id.lineshow_l
41、inearlayout);/获取LinearLayout对象 mylistview = new ListView(this);/创建ListView对象16 /创建SimpleAdapter对象,第三个参数为每一行的布局资源文件,第四个参数为HashMap中的关键字,第五个参数为listrow.xml中的idSimpleAdapter adapter = new SimpleAdapter(this,getMyData(),R.layout.listrow,new Stringnum,station,describe,new intR.id.listnum,R.id.listitem1,R.i
42、d.listitem2); mylistview.setAdapter(adapter);/为列表添加适配器 mylayout.addView(mylistview,listviewparam);/将 mylistview 添加到 mylayout 上,布局参数为listviewparam public ListMap getMyData()/获取列表项显示数据 String stations = temp.split(,);int i = 0;String station = ;int j= stations.length; Map map= new HashMap(); while(ij)
43、 station=stationsi; map= new HashMap(); i+; map.put(num, i+ ); map.put(station,station); / map.put(describe,describe);mylist.add(map); return mylist;运行效果如图 5.317图5.3 线路显示运行效果图5.2 站点查询站点查询站点查询实现的功能:(1)获取用户输入的站点名,判断站点名是否正确;(2)查询数据库,将与此站点相关的所有站点列举出来;(3)查询数据库,将通过该站点的所有线路找出来;(4)在显示界面显示;(5)用户在显示界面选择一条线路将可
44、以查看通过该线路的所有站点。5.2.1 流程图流程图站点查询流程图如图 5.4开始输入站点不为空站点名正确列出相关站点找出通过该站点的所有线路显示线路结束YYNN提示信息提示信息图 5.4 站点查询流程图5.2.2 核心代码核心代码 列举所有与该站点相关的站点列举所有与该站点相关的站点AlertDialog.Builder builder = new AlertDialog.Builder(StationActivity.this);builder.setTitle(选择站点);ArrayAdapter adapter = new ArrayAdapter(this, andro
45、id.R.layout.simple_expandable_list_item_1, getMyData();18dialog = builder.create();public List getMyData() int i = 0;String sta;int j = stationresult.length;List mylist = new ArrayList();/ 添加List对象,并向其添加数据while (i j) sta = stationresulti;i+;mylist.add(sta);return mylist;public String getDifferentSta
46、tions(String str)Set set = new HashSet();/声明定义set变量for(int i =0; istr.length;i+)if(!set.contains(stri.trim() /如果set中不含有这个元素则添加set.add(stri.trim();String stations = set.toString();stations = (String) stations.substring(1, stations.indexOf();System.out.println(stations);String result =stations.split(,
47、);return result;运行效果如图 5.5图 5.5 站点选择运行效果图 显示通过这个站点的所有路线显示通过这个站点的所有路线 mylayout = (LinearLayout)this.findViewById(R.id.stationshow_linearlayout);/获取布局资源中的LinearLayout mylistview = new ListView(this);/创建ListView对象 SimpleAdapter adapter = new SimpleAdapter(this,getMyData(),R.layout.listrow,new St
48、ringnum,lname,describe,new intR.id.listnum,R.id.listitem1,R.id.listitem2);19 cursor.close(); mylistview.setAdapter(adapter); mylayout.addView(mylistview,listviewparam);public ListMap getMyData() int i=1; Map map= new HashMap(); while( cursor.moveToNext() String lname=cursor.getString(0); String desc
49、ribe=cursor.getString(3); System.out.println(lname+lname); System.out.println(describe+describe); map= new HashMap(); /map.put(num, i+ );map.put(lname,lname);map.put(describe,describe);mylist.add(map);i+; return mylist;运行效果如图 5.6图 5.6 站点显示运行效果图5.3 换乘查询换乘查询换乘查询实现的功能: (1)获取用户输入的始末站点,判断站点是否正确; (2)分别列出两
50、个与两个站点相关的所有站点,供用户选择;20 (3)给出两个站点之间的换乘方案并显示; (4)用户选择某一换乘方案时给出详细的线路信息。5.3.1 流程图流程图 换乘查询流程图如图 5.7开始输入始终站点站点都不为空站点名都正确列出相关站点找出直达路线显示乘车方案结束YYNN不在同一区域显示信息不可直达找出换乘方案YYNN提示信息提示信息图 5.7 换乘查询流程图5.3.2 核心代码核心代码 列举所有与该站点相关的站点列举所有与该站点相关的站点 列举所有站点的算法和运行效果与以上站点查询的相同,这里不再累加诉述。 换乘方案换乘方案(1)直达 int step=0;2
51、1 flag=new intgetLineNum(stationbegin,stationend); for(int i =0;iLbegin.length;i+)for(int j= 0;jLend.length;j+)if(Lbegini.equals(Lendj) int num = getTransfernum(Lbegini);fangan=fangan+Lbegini+,;transfernum = transfernum +共+String.valueOf(num)+站+,;transferstyle=transferstyle+直达+,;flagstep=num;step+;运
52、行效果如图 5.8图 5.8 直达方案效果图 (2)一次换乘 alllinkcount=0;for(int i=0;iLbegin.length;i+)for(int j=0;j0)Aij=linkcount;/若存在交点,则邻接矩阵的元素等于交点的个数 alllinkcount=alllinkcount+linkcount;/记录所有的交点elseAij=0;22flag= new intalllinkcount;/flag 存放线路的所有交点,一共有alllinkcount种换乘方案tralinkstation = new Stringalllinkcount;/换乘中的中间站点int s
53、tep=0;for(int i =0;iLbegin.length ;i+)for(int j=0;j=1) stas=getlinkstation(Lbegini,Lendj);/两条线路存在的交点数for(int k=0;kstas.length;k+) String sta = stask; int num1=getnum(Lbegini,stationbegin,sta);/起始站点与交点站点之间有多少站 int num2=getnum(Lendj,stationend,sta);/终点站点与交点站点之间有多少站 int num=num1+num2; flagstep=num; tra
54、linkstationstep=sta.trim(); fangan=fangan+Lbegini+Lendj+,; transfernum= transfernum+共+num+站+,; transferstyle=transferstyle+换乘一次(+sta+换乘)+,; step+; 运行效果如图 5.9 图 5.9 换乘方案效果图(3)区域内换乘 alllinkcount=0;stop:for(int i=0;iLbegin.length ;i+)for(int j=0;jLend.length ;j+)23boolean s=false;String Sta1=getstation
55、byline(Lbegini);/取得这条路线上的所有站点String Sta2=getstationbyline(Lendj);for(int m=0;mSta1.length ;m+)for(int n=0;n0)nobus=false;运行效果图如图 5.10图 5.10 区域内换乘方案效果图(4)对列表中的元素进行监听 mylistview.setOnItemClickListener(new OnItemClickListener()/对LIstView中的元素设置监听器Overridepublic void onItemClick(AdapterView arg0, View ar
56、g1,int arg2, long arg3) String sty=mylist.get(arg2).get(trastyle).toString();String fa=mylist.get(arg2).get(trafangan).toString();24int i=sty.indexOf();int j=sty.indexOf(换乘);if(i=0&j=0)String stationmid=sty.substring(i+1, j);stationmid.trim();String lnames=fa.split();String lnameone=lnames0.trim
57、();String lnametwo=lnames1.trim();String stations=lnameone,stationbegin.trim(),stationmid.trim(),stationend.trim(),lnametwoString detail=;for(int k=0;kstations.length;k+)detail=detail+stationsk+,;System.out.println(stationsk);Intent intent = new Intent();Bundle bundle = new Bundle();bundle.putString
58、Array(detail, stations);intent.putExtras(bundle);intent.setClass(TransfershowActivity.this,TransferdetailshowActivity.class);startActivity(intent););对换乘路线的详细显示如图 5.11图 5.11 换乘详情效果图5.4 软件运行环境软件运行环境Android 手机平台。265.5 本章小结本章小结本章节主要对实现系统的代码、各功能模块的流程图和运行结果进行详细介绍。其中代码部分只给出了核心代码。27第第 6 章章 总结与展望总结与展望6.1 总结总
59、结进入 21 世纪以来,电子产品更新换代的步伐不断加快,尤其最近几年,手机行业发生翻天覆地的技术革新,无论是硬件还是软件都取得了长足的发展,特别在手机等移动终端的操作系统上,由原来的独霸手机系统塞班到现在几大系统供用户选择,自Android 发布以来,Android 由其开放源码的特性也取得了了不起的发展,在手机系统中占有接近一半的份额。伴随着经济的发展,城市化水平不断提高,城市公交系统越来越庞大越来越复杂,选择出行路线渐渐变得困难,公交查询系统的开发以当前流行的 Android 系统作为运行平台,可以满足人们日常出行路线的选择要求,其主要实现以下功能: (1)线路查询:实现对用户所需乘车路线
60、的查询,并对整条路线进行显示; (2)站点查询:对某一个具体的站点,实现将通过该站点的所有路线的进行显示; (3)换乘查询:对于一些不清楚的站点或者路线,用户根本不知道该如何从一个站点到达另一个站点,换乘查询便可以很方便的为用户列举出所有的乘车方案。6.2 展望展望系统基本可以实现所有关键功能,但在一些地方还有待提高: (1)系统界面还显粗糙,在以后我会把界面做的更加完美; (2)系统是一款离线的软件,在系统更新上还存在一些问题; (3)系统现在仅限徐州市区,以后将会逐步完善其他城市的公交路线。28毕业设计体会毕业设计体会29致谢致谢参考文献参考文献1 陈晓东,公交线路最优选择设计,科技经济市场,2008 年,第 2 期,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酶免法和胶体金法对丙肝抗体的检测结果比较分析
- 循证护理跌倒预防
- “光储一体”绿色营业厅初步设计方案
- 脑梗死术后饮食护理
- 自觉预防校园贷
- 2025年会计职称考试《初级会计实务》错题复盘强化实战试题
- 2025年软件设计师专业考试模拟试卷:移动应用开发技术试题
- 2025年一建《机电工程管理与实务》考试质量控制与验收题库解题技巧
- 2025年专升本艺术概论考试模拟卷(艺术鉴赏能力测评与提升试题)
- 2025年小学语文毕业升学考试全真模拟卷(文学名著阅读)-名著阅读与历史知识
- 应用文写作-第四章公务文书(请示报告)课件
- Premiere-视频剪辑操作-课件
- PDCA降低I类切口感染发生率
- 麻醉药理学阿片类镇痛药PPT
- 新湘版小学科学四年级下册教案(全册)
- 食品生产企业落实主体责任培训
- 药铺微信宣传方案
- 宿舍楼消防火灾应急疏散预案与宿舍消防安全管理制度
- 外研版(一起)英语二年级下册 Module4Unit2 What’s he doing 教案
- 《红楼梦》专题(文化)
- 三级妇幼保健院评审标准实施细则(保健院正确发展方向)
评论
0/150
提交评论