您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页基于Android的公交查询系统的设计与实现

基于Android的公交查询系统的设计与实现

来源:好走旅游网
基于Android的公交查询系统的设计与实现

关键词:Android 公交查询 公交信息

目 录

基于Android的公交查询系统的设计与实现 .......................................................................................................................................... I 目 录 ........................................................................................................................................................................................................... II 绪 论 ............................................................................................................................................................................................................. 1 1 Android操作系统基础 ........................................................................................................................................................................... 4

1.1 操作系统介绍 .............................................................................................................................................................................. 4

1.1.1 Android操作系统 ............................................................................................................................................................. 4 1.1.2 Android系统架构 ............................................................................................................................................................. 4 1.1.3 Android特点 ..................................................................................................................................................................... 6 1.2 环境搭建 ...................................................................................................................................................................................... 7

1.2.1 Jdk的安装和Java环境变量设置 .................................................................................................................................... 7 1.2.1 安装Eclipse ...................................................................................................................................................................... 8

2 相关技术简介 ......................................................................................................................................................................................... 9

2.1 Java语言 ...................................................................................................................................................................................... 9

2.1.1 Java语言简介 ................................................................................................................................................................. 10 2.1.2 Java技术平台 ................................................................................................................................................................. 10 2.2 Android四大基本组件简介 .......................................................................................................................................................11 2.3 Intent介绍 .................................................................................................................................................................................. 12 2.4 SQlite介绍 ................................................................................................................................................................................. 13 2.5 界面布局管理 ............................................................................................................................................................................ 13 3 需求分析 ............................................................................................................................................................................................... 16

3.1 可行性研究 ................................................................................................................................................................................ 16 3.2 系统的综合需求 ........................................................................................................................................................................ 17

3.2.1 系统需求调查 ................................................................................................................................................................. 17 3.2.2 数据库需求 ..................................................................................................................................................................... 17 3.2.3 性能需求 ......................................................................................................................................................................... 18

4 系统结构设计 ....................................................................................................................................................................................... 19

4.1 总体设计 .................................................................................................................................................................................... 20

4.1.1 设计原则 ......................................................................................................................................................................... 20 4.1.2 总体构架设计 ................................................................................................................................................................. 21 4.1.3 模块设计 ......................................................................................................................................................................... 22 4.2 详细设计 .................................................................................................................................................................................... 23

4.2.1 功能模块 ......................................................................................................................................................................... 23 4.2.2 人机界面设计 ................................................................................................................................................................. 26

5 公交查询系统的实现 ........................................................................................................................................................................... 28

5.1 换乘查询 .................................................................................................................................................................................... 28

5.1.1 流程图 ............................................................................................................................................................................. 28 5.1.2 运行效果及结果 ............................................................................................................................................................. 29 5.2 线路查询 .................................................................................................................................................................................... 31

5.2.1 流程图 ............................................................................................................................................................................. 32 5.2.2 运行效果及结果 ............................................................................................................................................................. 33 5.3 站点查询 .................................................................................................................................................................................... 35

5.3.1 流程图 ............................................................................................................................................................................. 36

II

5.3.2 运行效果及结果 ............................................................................................................................................................. 37

结 论 ........................................................................................................................................................................................................... 39 参考文献 ..................................................................................................................................................................................................... 41 附录一 部分关键源码 ............................................................................................................................................................................. 43

III

绪 论

在我国,跟随经济的快速的发展,及城市化快速的发展,公交系统跟着迅速扩的大,并且更复杂,未找到适合的乘车的路线经常发生。目前,复杂化公交系统使人们往往处于迷惑不清的状态,给出游带来很多不方便,但基于Android的公交查询系统的选题也是基于这个背景。以Android作为一个平台,能够帮助人们时时刻刻进行公交信息查询,与此同时跟随现在社会的发展,我们的生活向着电子化继续发展,经济化不断的发展,不能避免人们到一些城市去办事情。如果你对这个城市不熟悉,那么出门就会让人举步维艰。因此,要去开发公交查询系统便显得很有必要,可以说已经关系到城市的形象。因而公交查询系统会使出行更方便、高效率来安排各自的行程。

随着移动终端技术、移动通信技术、Internet技术及空间信息技术的高速发展[1],客户对所处的地点以及和地点相关的信息愿望需求实现已变可能。公交查询系统应运而生是上述技术的有机集成,它能够将Internet上大量的信息和地理位置信息的强大服务功能应用扩充到移动终端上[2],让用户所拥有位置的信息共享、信息发布、信息交换和信息获取提供了方便、便捷的技术路径。所以说,在移动终端的开发道路上,Android公交查询系统是一个里程碑。

Google开发了基于Linux平台Android这个手机的操作系统[3]。它不仅包含了应用程序工作需要的全部软件和用户界面、操作系统,并且所有以前阻挡移动产业创新的专有权的障碍都不存在。Google与开放性手机联盟一起合作开发了 Android,此联盟包括了摩托罗拉、中国移动、宏达电、 T-Mobile和高通以内的30多家无线技术应用的领军行业构成[4]。

1

Google经过和开发商、设备制造商、运营商和另外其他有关的组成更深的合伙人关系,志在借着开放式、建立标准化的手机移动软件平台[5],在移动这个产业里面形成开放式的一个生态系统。

被作为Google企业发展战略的重要部分,Android 要更进一步推广“每时各地为人们提供信息”[6]这个目标的实现。全世界使用众多的移动电话用户此时正使用不同的 Android 电话。Google目标于使移动通讯设备不用依靠于设备和平台。因为这个目的,Android 即将补充Google很久以来发展的移动战略:通过和全世界不同地方的移动运营商和手机制造商组成合伙人,开发不仅有用处并有吸引力的移动终端服务,并且想推广这类的产品。本文准备基于Android设计然后开发一个公交查询信息系统,再验证它的可行性[7]。就是能确定移动用户的位置,并能无时无刻提供和指定位置相关或这个位置空间的信息,因为它庞大的价值,于是在业界里面被高度的关 注。公交查询系统完整的使用了无线移动的灵活与便捷性,同时也体现绝大部分位置和信息相关联的事实,让GIS的应用踏入一个崭新的时代。

公交查询系统项目总体架构设计。建立公交信息数据库,通过公交查询操作查询数据库,得出公交方案,在Android设备上界面上显示具体的公交方案,并显示路线的起点和终点。对下面几个方面研究:

(1)“公交查询系统”手机的客户端项目总体架构设计。

(2)“交查查询系统”手机的客户端项目界面实现和设计。

2

(3)“公交查询系统”手机的客户端项目子功能设计和实现,此软件的主要功能包括了查询每条公交路线、公交查询得出公交方案、换乘查询等。

3

1 Android操作系统基础

1.1 操作系统介绍

1.1.1 Android操作系统

Android被翻译成中文后意思为“机器人”,但这个地方是2007年11月5日美国Google公司所发布的操作系统,一款基于Linux操作系统,不仅包含用户界面、应用软件、操作系统和中间件,Google公司把它称作正式源码开放的第一款手机系统。Android基于Linux内核,最开始是Google开发和发布,到后来其他的公司和Google公司组建了开放手机联盟,并且交给手机联盟去着手开发,还有其他的厂商也能自己去开发属于自己的系统。

1.1.2 Android系统架构

Android操作系统的架构如图1-1所示。Android基于Linux内核,Android可以按照功能划分,一共4层,有应用程序层、Linux内核层、应用程序框架层还有中间件层。Android每层都会为上层提供了接口,为下面一层来封装。

Linux内核层:

Android平台是在基于Linux上面运行的,内核层只是一种抽象层,在硬件层与手机软

4

件层这两层之间。内核早已为用户和开发者提供许多基本功能,那里面包括电源的管理、显示驱动、Wi-Fi的驱动和摄像头驱动等。

中间件层:

Android的中间件层有Android运行时和核心库,在它里面的核心数据库有SQLite数据库、显示系统管理、媒体框架、C库、FreeType、SSL、OpenGL、Webkit和SGL。

Android运行的时候包含运行时的虚拟机和核心库。Android里的每一个应用程序会有专用的虚拟机,并且这些虚拟机会在自己的进程中去运行。

应用程序框架层:

应用程序框架和开发者有直接关联,不仅给开发者提供很多接口。有内容提供者、资源管理器、包管理器、消息管理器、Window管理器、定位管理器、电话管理器、View系统、Acitvity管理器和电话管理器。

应用程序层:

Android这个系统里面内置了许多常用的应用程序,这些应用程序和开发者开发出来的没有太大区别,在本质上来说并列。用户能够选择使用。

5

图1-1 Android的系统架构

1.1.3 Android特点

Android这个系统是开发式的平台电脑和手机操作的系统,是Google早期开发的,到后来是开放联盟开发的[8]。它为我们提供了上层程序界面至底层操作系统的所有软件,用此平台的话不需要认得费用和授权许可,然而不用厂商可以凭借自己需求去拓展和修改这个平台[9]。

6

Android这个平台下面,除运行应用程序载体虚拟机外,全部的Android应用程序是几乎处于同一地位的。全部的应用程序都会在虚拟机上运行,虚拟机为我们提供了许多用于硬件资源和应用程序之间通信的API。Android这个平台打破了所有应用程序间的界限,在此平台下来开发应用程序的话,能够非常方便在应用程序间实现数据的共享。单个应用程序不仅能够用过API来访问各个系统所提供的功能,还能够经过申明自己自身功能为其他应用程序调用。

Android里面有非常多的工具和使用库,开发人员都可以它们,然后他们可以迅速创建应用程序。例如Google Map被Android进程进来,开发人员只需要通过简单的一行行代码就能迅速把地图的应用开发出来。

1.2 环境搭建

1.2.1 Jdk的安装和Java环境变量设置

Jdk是所有Java的核心,包含着一系列Java里面开发的东西,安装完后去配置一下下环境变量。Jdk可在在网上下载JDK。

Path变量如图1-2 所示,Path的属性已经存在了,还可以直接去编辑它。将Jdk文件下bin文件夹路径加入path,以及sdk中文件夹tools和platform-tools所在路径加入Path。把上面都配置完后,只要通过cmd运行这些命令:java -version,javac 后出现了返回的信息,那么设置就成功了。

7

图1-2 Path变量

1.2.1 安装Eclipse

先下载Eclipse。Eclipse是为Java和Android所开发的IDE。如图1-3 Eclipse工作目录所示,把下载的解压包解压以后,打开eclipse文件夹,打开的时候设置workplace,这

8

样环境就搭建好了。

图1-3 Eclipse工作目录

2 相关技术简介

2.1 Java语言

Sun Microsystems向人们推出的一种高级编程语言Java,JavaEE、JavaSE在Java技术这个领域已经发展成熟,同时也成为和C、NET共分天下的软件应用开发平台和技术。同

9

时也在Eclipse这个具有成熟而且完整的开发环境中运用到。

2.1.1 Java语言简介

Java能够在桌面上的开发应用程序,有关于商场算账的软件,还有银行里面的软件;还能够开发在网络上面的应用程序,比如网上非常流行的阿里巴巴,数码商城等都是借助Java开发。

Java是面向编程语言的对象,比较适合于分布式,它的计算环境是跨越平台之间的。Java有安全性、可靠性、可转移性、简单性、方便解释性、动态性的特性。

Java语言还有很多优点,Java能够从一个平台,到另一个平台。现在的Windows系统可以把现有的很多系统统一,但是服务器里面运用的操作系统有很多不同特性,包含Unix、Linux等在企业级中可以实现应用的系统。即使是桌面系统,出于安全和国家战略考虑,Linux将这种想法变成现实,在桌面系统的市场中将占据更多份额。

Java语言具有天然的健壮性在实现软件中。这也是Java语言根据自身的特性保证。使用java写的软件不可能出现系统崩溃的现象,正是企业级应用所要求的不可或缺的安全性要求。

2.1.2 Java技术平台

JavaSE中有Java语言中核心的类。比如网络上面的编程、接口的定义、输入和输出、

10

数据库之间的连接,在桌面软件的编程中运用很多。

JavaME是Java2的组成,和J2SE、J2EE同时在技术上面有称号。J2ME是Java在运行环境中,经过了很有高度的优化,主要在电子设备运用,也和消费服务有关。

JavaEE是种体系结构,不过他非常复杂,一般是在Java2平台中,对某些企业解决方案管理、开发软件和分布情况进行优化。最终目的是建造可以让企业的发开人员投放是长时间大幅度缩减的体系。

2.2 Android四大基本组件简介

Android的四大基本组件有广播接收器BroadcastReceiver、服务Service、活动Activity、内容提供者Content Provider。

广播接收器BroadcastReceive:你能够使用你的应用来对外面的事件过滤,比如接收感兴趣的外部事件,如数据网络可以使用的时候,或者有电话接入的时候,然后做出一些响应。广播接收器虽然没有用户的界面,但是,它们能够通过启动一个serice ,或者activity用来响应它们接收的信息,或这说用NotificationManager 来提醒用户。有很多种方式吸引用户注意力的通知──播放声音、震动、闪动背灯等[10]。普通来讲讲一个持久图标放在状态栏上,可以让用户从其中获得消息。

服务Service:每个Service 都有一段很长的生命周期,程序虽然没有用户界面,但是

11

能开发监控之类的程序[11]。有一个例子就是,一个媒体播放器正从播放列表里面播放不同歌曲。这个媒体播放器应用中包含多个activity,使用者能够选择歌曲再从其中播放歌曲。然而,重复播放音乐的功能没有相对应的activity,因为用户会觉得音乐还在能够播放,在导航到其它屏幕的时候。举得这个例子里面,媒体播放器的activity 将用Context.startService( )启动service,从而能够在后台持续音乐播放。此时,这个service 会在系统中一直执行,直到service 运行结束为止。

活动Activity:每个Activity一般来说是一个单独的屏幕在应用程序里面,它里面能显示些控件,还能够监听并且处理用户的事件,继而做出不同响应。Activity间使用Intent来通信。Intent 描述的结构当中,包含动作和动作对应的数据着两个非常重要的部分。

内容提供者Content Provider:android的平台上给予的Content Provider,其他程序可以获得这个应用程序的数据集。这类数据能够存储在某个SQLite数据库、文件系统、或者其他任何合理的方式,内容提供者在实现许多个应用程序的数据共享时才会被需要[12]。

2.3 Intent介绍

Intent是一种绑定机制,在运行的时候,用来连接应用程序的一个和另一外组件。一般来说应用是Android系统里面发出来的意愿,或者某种请求通过Intent,随后Android会查询每个组件里面声明的IntentFilter根据这个请求,运行被找到需要的组件。

Android四大组件都是用Intent激活的,Intent有传递不用的方式在不用类型组件里

12

面。这个系统需要激活一个Activity,能够使用调用Context.startActivity的方法。此方法需要传入Intent的参数,为了能用这个方法,全部的Activity类都需要在AndroidManifest.xml文件有相对应的“Activity”项。在依照Intent对目标的Activity对象描述的不同点,来和它传递信息,或者启动它匹配的Activity。

2.4 SQlite介绍

SQLite属于一种轻型的数据库,运用了有关联的数据库系统管理,设计目标是种嵌入的款式,它运用到了很多镶嵌类的产品中,目前占用资源比较稀少,用于嵌入式设备里面,也许只用几百K的内存空间[13]。Android运用了集成SQLite数据库来运行它的应用程序。SQLite还有SQL92的标准,很多的命令都能在它上面运用,除了这个为了SQLite数据库的简化操作,Android一共很多自定义的方法。

SQLite由内核、附件、SQL编译器和后端组成。经过了SQLite的虚拟数据库引擎和虚拟机,扩展、修改和调试SQLite内核就显得很便捷了[13]。

SQLite对数据库类型的支持是和别的数据库最大的不同。可以在语句中用某列数据类型来创建一个表,而且能否能够将任何数据类型放进列中,有值想插入数据库那么SQLite会检查其类型[13]。类型和关联列不匹配的话,SQLite就会试着把这个值转换成这个列的类型,若不能转换该值会变成本身具有的类型储存下来。

2.5 界面布局管理

13

界面布局拥有对用户界面的表述,它定义界面中的结构、相互关系和所有元素。界面布局中有网格布局、表格布局、相对布局、绝对布局、线性布局、框架布局。这里只介绍常用的三中布局方式。

(1) 线性布局

线性布局(LinearLayout)是种非常重要的页面布局方式,线性布局中全部的子元素都会在水平方向或者垂直方向上按照顺序来排列[14]。如果是水平排列,那么每列仅仅含有一个界面元素;同样如果是垂直排列,那么每行仅仅含有一个界面元素。

(2) 相对布局

相对布局(RelativeLayout)是种是种非常灵活的界面布局方式,可以用过界面制定元素和其他元素的相对位置来确定所有元素在界面中的位置[14]。相对布局同线性布局有相同的优点,那就是可以最大限度来保证手机上面各种屏幕类型正确显示出界面的布局。

(3) 表格布局

表格布局(TableLayout)是种非常常用的界面布局方式,它让屏幕划分为几个表格,经特定的列和行能够将在表格中添加界面元素[14]。表格布局支持了嵌套的功能,能够将另外一个表格布局在前一个表格布局中放置,也能够将其他界面布局添加到表格布局中,比如相对布局和线性布局。

14

15

3 需求分析

着手去开发一个系统,首要的应该了解这个系统的需要做到关于哪些功能发开、还需要怎么使客户满意,另外还需收集要使用的系统数据资料,这样的话能够开发出使人满意的产品,同时也是软件获得成功的保证。 3.1 可行性研究

(1) 技术可行性

这个课题目的在于开发一个公交查询系统基于Android,在Android这个运行平台上完成系统的运行,Android的操作系统运行在Linux内核上。经过了数年的发展,Android上面的技术已经相当成熟了。在开发的时候Android SDK也向用户提供所需要的不同种类API接口和工具,许多开发者也尝试致力于Android的深入研究。课题能够运用Android语言下来解决,所以技术上可行。

(2) 经济可行性

社会的经济化已到达让全球瞩目的变化发展在改革开放以来,日常生活中人们也使用手机变得频繁。因为手机体积不大并且便于随身携带,同时也在不停的提升它的运行速度。这个课题将要开发的公交查询系统基于了Android的操作系统。在移动终端的市场里面Android也占有相当高的份额,鉴于市场开阔的前景前提,只需要使用Android系统的手机,那么用户都能够安装本系统。因此在经济上来看可行。

16

(3) 操作可行性

系统的操作方式在本课题中简单,让人一目了然,并且界面清晰。没有涉及到非常深层次的理论知识,并且拥有不错的人机交互界面,如果按照规范的系统指定的操作流程,用户能够很容易运行本系统,所以有操作可行性。

3.2 系统的综合需求

3.2.1 系统需求调查

人们对于出行的需求越来越大,公交系统的功能也在壮大。然而人们出行时对于交通线路的查询方式不是很多,这在某种程度上很矛盾。本课题目的在研究并且开发一个公交查询系统,离线条件下,能够对全部公交的路线进行查询。需要把整个城市的公交路线收集起来在设计的初期,然后进行相应的整理。随后将整个系统进行合理的划分,得到不同的功能模块,并且能够处理模块间和不同模块内的联系,以及数据库联系,定义不同模块结构。最后由对模块的设计实现整个系统的功能。

3.2.2 数据库需求

在信息管理系统中数据库有很重要的地位,数据库设计的好坏与否,会使得实现的效果和应用系统的效率产生不同影响。合理的数据库设计能够让数据储存效率提高,以此来保证数据的完整性[15]。

17

数据库技术的发展是经由传统的文件而来,依从网状模型、层次模型到关系模型。它可以说是数据管理的崭新技术,对于计算机科学是重要分支,能够指导开发者设计正确的数据库系统,数据库技术的出现大大的提升计算机发展应用的脚步。想有效设计让人们实用的数据库系统可以采用数据库技术的方法和原理。

设计我们的数据库的时候,需要注意数据的安全,要去保证数据安全性,禁止非法的用户访问建立的数据库,用来避免重要信息被泄露出去,不过有很多保护数据的方法,例如运用用户标识,访问控制以及密码和口令等。成功的数据库系统,具有用户的识别标志,每个合法的用户会拥有登录名和对应密码,进到数据库应用系统就要输入正确密码,否则无法进入,因此就保证了正规用户的权益。又为保证数据语义,需要进行完整约束对于数据库的数据,就是禁止用户输入不合法的数据。

设计应用软件的时候,需要按软件工程的设计方法,从概念设计、问题定义、编码、总体设计、软件实现、运行、调试和维护这些生命周期,每一阶段在前面基础上设计,每一个阶段有对应资料。

设计数据库系统再了解用户的需求,以及现有需求和或许增加的。数据库设计包含数据库逻辑设计,概念设计,需要分析三个步骤。

3.2.3 性能需求

保证系统的能够更可靠,非常稳定,有长时间,高的工作效率的运行,系统及时的处

18

理,以及准确程度的确也是系统的必要功能保障。开发和设计中彻底为系统承受的工作量多少考虑,让系统处理能力和响应满足企业处理信息的需求。

公交查询系统里面的查询共轭能在系统功能和性能上来说举足轻重。因系统数据的来源很多,它的准确性对于公交查询系统的成败有决定性作用。开发系统过程中,保证系统准确性也需要使用一定的方式。

系统开发的时候或多或少考虑它的扩充性。比如网络上面用户查询的数据会时不时更新,这样系统拥有足够手段来扩充以及调整。实现这个的话,对于这个开放系统只需要符合其中的规定,向其中加入,或者减少系统的模块,来调整并且改变其中的硬件。经过软件修改、替换做到系统升级与更新。

本系统直接面向用户,然而用户可能对于计算机不是很熟悉。我们就需要让系统提供很好的用户接口,方便的人机交互界面。不过实现上述这点,我们需要在系统中运用用户熟悉的语言,以及运用中文语言的信息界面,对于用户在实用软件的时候,可能出现的功能运用的问题,让用户用更少的时间来了解系统的运行过程。

公交查询系统的响应速度,是用秒在作为单位的,做到实时的要求来反馈信息。系统的分析根据用户不会由于速度问题影响工作效率的原则,将数据量从秒为单位到以分钟作为单位的不同划分。

4 系统结构设计

19

在软件的设计实现中系统设计显得很重要,它是软件设计的基础,因为不仅影响了系统的成本和性能在一定程度上,还直接的影响用户对产品的满意程度,所以系统设计里面,我们需要了解系统内的各个参数。

4.1 总体设计

4.1.1 设计原则

(1) 安全性原则

系统设计在实现的时候需要符合安全性原则,需要验证用户的合法身份,然后拒绝合法用户所做的不合法操作,要禁止不合法用户进行操作。这样才能够保障系统的安全性。

(2) 实用性原则

被涉及的系统能够解决实际问题是实用性原则的主要体现,也是全部的系统设计最主要最基础的原则,或多或少关系到系统的成败与否。课题研究的是基于Android的公交查询系统,能够为用户提供不同公交线路的选择,用户能够通过本系统获得需要的换乘方案、线路信息和站点信息。

(3) 可靠性原则

系统里面的可靠性有立足的地方,如果使用的系统经常出现故障,那么要求就不合格,

20

用户不能满意。如果系统经常出现故障在运行时,那样就应该提示我们如何去操作。

(4) 操作简单

系统设计也应该注意操作流程简单的问题,用户使用系统不一定每个人都很熟悉其功能,每个人也不一定对操作过程很熟。因此不应有太过于复杂的操作出现在设计中,当用户输入的信息后,系统就会有提示信息;当用户输入的信息有错误,也要有信息提示来;当没有找到满足条件的结果时,系统会弹出对话框来提示用户。

4.1.2 总体构架设计

公交查询系统项目总体架构设计如图4-1所示,建立公交信息数据库,通过公交查询操作查询数据库,得出公交方案,在Android设备上界面上显示具体的公交方案,并显示路线的起点和终点。

21

公交信息数据库公交查询操作查询数据库, 得出公交方案装备Android平台的移动设备方案路径显示 图4-1 公交查询系统项目总体架构

4.1.3 模块设计

系统的功能模块图如图4-2。将整个系统按功能来进行划分,先分成数个小的功能模块,再进行模块化设计将系统,每一个功能模块实现一个子功能,接着全部的模块再集合起来构成整个系统。有针对性的对每一个功能模块设计,相对功能模块,这样能够使系统的设计进程更快。同样每个功能模块存在一个接口,用户通过直接调用接口就能实现相应的功能。

22

图4-2 系统功能模块

4.2 详细设计

4.2.1 功能模块

系统进行设计的时候,复杂程度对于系统上来说很重要,系统的功能一般是分开的,于是按功能对系统进行功能模块的划分,能够让系统变得很清晰。每个模块功能只需分步骤实现。每个模块可以直接调用给定的特定接口,这是可以顺利完系统成的保证。

(1) 换乘查询模块

23

换乘查询模块:接受用户输入的两个站点名,对数据进行检索,从起始站点到终点的方案列举出来,在显示窗口显示。

换乘查询实现的功能如图4-3所示:

换乘查询获取信息P1获取站点站点信息准确站点站点P2换乘处理站点线路换乘信息换乘显示D1站点信息D2线路信息 图4-3 换乘查询功能

获取用户输入的起点和终点,开始检索;

查询数据库,通过站点信息,寻找线路信息,经过换乘处理,得到起点到终点的换乘方案。

(2) 站点查询模块

站点查询模块:接受用户输入的站点名,将对数据进行检索,把所有经过这个站点的公交线路列举出来,并在显示窗口显示。

24

站点查询实现的功能如图4-4所示:

图4-4 站点查询功能

获取用户输入的站点名,检索站点;

查询数据库,通过对站点信息的处理,寻找线路信息,将通过该站点的所有公交线路找出来。

(3) 线路查询模块

线路查询模块:接受用户输入的公交号,对数据进行检索,将这个公交号经过的所有站点以及线路段描述信息在显示窗口显示。

线路查询实现的功能如图4-5所示:

25

图4-5 线路查询功能

获取用户输入的公交,检索线路,搜索线路信息;

查询数据库,经过线路处理,寻找站点信息,将公交经过的所有站点罗列出来。

4.2.2 人机界面设计

对于每一个软件来说,拥有良好的人机界面是软件所需的。存在很大的难度在人机界面的设计上,设计者的设计经验起到很大决定性作用。通过设计出让人满意的系统界面,会增加用户的满意,也会增加客户的使用量。

(1) 系统界面

进入软件后,可看到公交查询系统的数个城市。运用了ListView控件,它是一种关于列表的视图,把相关的信息供用户进行选择。随机点击一个城市后,可进入相应的查询界面。三个总体界面运用了TabWidget控件,用户能够切换不同的标签,再查看每个标签里面的内

26

容。

(2) 换乘查询界面

进入该界面后,用户输入所在起点,和所要到达的终点,点击查找就能显示不同的换乘方案,选择其中一种方案会在结果中显示用户乘车的路线和换乘的公交。该界面运用了自动提示AutoCompleteTextView控件,它是用来完成输入一个字符串时自动弹出下拉菜单,选择你想要的结果。

(3) 线路查询界面

进入该界面后,用户输入需要查询的公交线路,点击查找,就会显示相关的公交编号,选择其中一条公交线路,就在结果中显示该线路的所有站点。该界面也运用了AutoCompleteTextView控件。

(4) 站点查询界面

进入该界面后,用户输入想到达的站点,点击查找,就会显示和站点有关的公交线路,选择其中的一条线路,结果中就会显示通过该站点的线路信息。该界面也运用了AutoCompleteTextView控件。

27

5 公交查询系统的实现

5.1 换乘查询

换乘查询实现的功能:

(1) 用户输入起始终点,再判断站点名是否正确;

(2) 提示两个站点相关的所有站点,用户可以进行选择;

(3) 显示两个站点之间的换乘方案并且显示;

(4) 用户选择其中的一个换乘方案时给出线路信息结果。

5.1.1 流程图

换乘查询流程图如图5-1所示。

28

开始输入始终站点提示信息站点都不为空N提示信息YN站点名都正确Y列出相关站点不在同一区域NYN不可直达Y找出直达路线找出换乘方案显示信息显示乘车方案结束 图5-1 换乘查询流程图

5.1.2 运行效果及结果

(1) 打开软件,换乘查询界面如图5-2所示。

29

图5-2 换乘查询界面

(2) 输入起点和终点,会提示换乘方案如图5-3 换乘查询方案所示。

30

图5-3 换乘查询方案

(3) 得到结果如图5-4 换乘查询结果所示。

图5-4 换乘查询结果

进入该界面后,用户输入所在起点,和所要到达的终点,点击查找就能显示不同的换乘方案,选择其中一种方案会在结果中显示用户乘车的路线和换乘的公交。该界面运用了自动提示AutoCompleteTextView控件,它是用来完成输入一个字符串时自动弹出下拉菜单,选择你想要的结果。

5.2 线路查询

线路查询实现的功能:

31

(1) 用户根据输入的线路名,判断是否正确;

(2) 后查询数据库把和线路相关的所有公交线路列举出来;

(3) 选择一条公交线路将条线路上的所有站点和这条线路的起终时间罗列出来;

(4) 在显示界面显示结果;

5.2.1 流程图

线路查询流程图如图5-5所示。

32

开始输入线路提示信息提示信息不为空NYN线路名正确Y列出相关线路找出确定线路上的所有站点显示站点结束 图5-5 线路查询流程图

5.2.2 运行效果及结果

(1) 线路查询界面如图5-6所示。

33

图5-6 线路查界面

(2) 输入用户所查询的公交线路,会提示线路方案如图5-7 线路查询方案所示。

图5-7 线路查询方案

34

(3) 查询得到结果显示如图5-8 线路查询结果所示。

图5-8 线路查询结果

进入该界面后,用户输入需要查询的公交线路,点击查找,就会显示相关的公交编号,选择其中一条公交线路,就在结果中显示该线路的所有站点。该界面也运用了AutoCompleteTextView控件,输入一个字符串时自动弹出下拉菜单,选择你想要的结果。

5.3 站点查询

站点查询实现的功能:

35

(1) 用户根据输入的站点名,判断站点名是否正确;

(2) 查询数据库,将和用户所查找站点相关的所有线路列举出来;

(3) 选择任意一条经过该站点的线路将该它的所有站点罗列出来;

(4) 在显示界面显示结果。

5.3.1 流程图

站点查询流程图如图5-9所示。

开始输入站点提示信息提示信息不为空NYN站点名正确Y列出相关站点找出通过该站点的所有线路显示线路结束 36

图5-9 站点查询流程图

5.3.2 运行效果及结果

(1) 站点查询界面如图5-10所示。

图5-10 站点查询界面

(2) 输入用户所查询的站点,会提示站点方案如图5-11 站点查询方案所示。

37

图5-11 站点查询方案

(3) 查询得到结果显示如图5-12 站点查询结果所示。

38

图5-12 站点查询结果

进入该界面后,用户输入想到达的站点,点击查找,就会显示和站点有关的公交线路,选择其中的一条线路,结果中就会显示通过该站点的线路信息。该界面也运用了AutoCompleteTextView控件,输入一个字符串时自动弹出下拉菜单,选择你想要的结果。

结 论

本次的毕业设计论文是关于公交查询系统,能为用户实现查询公交线路信息,是手机上软件的查询工具。

经过查找资料得到课题的设计分析、界面设计、数据库的设计,以及代码的编写和一步步调试程序,本系统完成了换乘查询功能、线路查询功能、线路查询功能。

换乘查询的功能是知道起点和终点,然后得出两站点的换乘方案。详细可实现的功能为:用户输入所在起点,和所要到达的终点,点击查找就能显示不同的换乘方案,选择其中一种方案会在结果中显示用户乘车的路线和换乘的公交。

站点查询的功能是,告诉用户经过所查找站点所有的公交号。详细可实现的功能为:用户输入想到达的站点,点击查找会显示和站点有关的线路,选择其中的一条线路,结果中就会显示通过该站点的线路信息。

39

线路查询的功能是根据公交号得知公交的线路。详细可实现功能为:用户输入想知道的公交线路,点击查找就会显示相关的公交号,选择其中一条公交线路会在结果中显示该线路的所有站点。

系统能够基本实现关键的功能,但是觉得一些不足的地方还有待提高:

(1) 系统的界面还略显粗糙,还能够更美观。

(2) 系统是离线状态下的查询,不能够随时更新。

(3) 在时间允许的情况下,有能力能够加入地图的结合显示功能。

40

参考文献

[1] 王向辉,张国印,赖明珠.Android应用程序开发(第二版),北京:清华大学出

版社.2012.

[2] 韩超.Android经典应用程序开发.北京:电子工业出版社.2012.

[3] 舒贤华.基于android平台的手机web地图服务设计.大连海事大学.2009.

[4] 陈晓东.公交线路最优选择设计.科技经济市场.2008.

[5] 邹明霞.基于Web的公交查询系统的设计与实现.华中科技大学.2008.

[6] Ed Burnette.Hello,Android,American,ISBN-10:1-934356-17-4,2009.

[7] Chaudhuri A,Naldurg P,Rajamani S. A type system for data-flow integrity on

Windows Vista [J]. In PLAS’08:Programming Languages and Analysis for Security,

pages–100. ACM,2008.

41

[8] Enck W,Ongtang M,cDaniel P. Understanding Android security . IEEE Security & Privacy Magazine,7(1):10–17, 2009.

[9] Flanagan C,Leino K.R.M,Lillibridge M. Extended static checking for Java . In

PLDI’02:Programming Language Design and Implementation,pages 234–245.

ACM,2002.

[10] Necula G.C. Proof-carrying code . In POPL’97:Principles of Programming Langauges,

pages 106–119. ACM,1997.

[11] Rai R.V. Soot:A Java bytecode optimization framework .Master’s thesis,McGill

University,2000.

[12] Cox,John B.Public transport trends-Efficiency and cquity

considerations.Roa and

Transport rescarch,:16(3):P41-55,

42

[13] Swicegood ,Travis. Programming Node.js,Pragmatic Bookshelf,2012.

[14] Woychowsky, Edmond. Ajax, Prentice Hall PTR, 2011,P94-113.

[15] Castledine,EarlSharkie,Craig.JQuery:Novice to Ninja,Baker&Taylor

Books,2010.

附录一 部分关键源码

Traffic.java

public class Traffic extends TabActivity{

/** Called when the activity is first created. */

TabHost.TabSpec tab4;

String mFile;

ProgressDialog mDialog;

static {AdManager.init(\"4ef94353630d245b\", \"1fc8b2d8877c7eee\", 30, false, \"1.0\");

43

}

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mFile = this.getIntent().getStringExtra(Globals.FILENAME);

setTitle(getIntent().getStringExtra(Globals.Title));

tabHost = getTabHost();

LayoutInflater.from(this).inflate(R.layout.tab,

tabHost.getTabContentView(), true);

tabHost.addTab(tabHost.newTabSpec(\"tab1\").setIndicator(

this.getString(R.string.interchage)).setContent(R.id.tab1));

tabHost.addTab(tabHost.newTabSpec(\"tab2\").setIndicator(

44

this.getString(R.string.line)).setContent(R.id.tab2));

tabHost.addTab(tabHost.newTabSpec(\"tab3\").setIndicator(

this.getString(R.string.station)).setContent(R.id.tab3));

tab4 = tabHost.newTabSpec(\"tab4\").setIndicator(

this.getString(R.string.result)).setContent(R.id.tab4);

tabHost.addTab(tab4);

interSearchButton = (ImageButton) findViewById(R.id.tab1_b1);

interSearchButton.setOnClickListener(mGoListener);

lineSearchButton = (ImageButton) findViewById(R.id.tab2_b1);

lineSearchButton.setOnClickListener(mGoListener);

stationSearchButton = (ImageButton) findViewById(R.id.tab3_b1);

stationSearchButton.setOnClickListener(mGoListener);

45

start = (EditText) findViewById(R.id.tab1_et1);

end = (EditText) findViewById(R.id.tab1_et2);

line = (EditText) findViewById(R.id.tab2_et1);

station = (EditText) findViewById(R.id.tab3_et1);

mDialog = CreateDialog();

mDialog.show();

m = new Model(this, mFile);

Thread t = new Thread(m);

t.start();

}

protected ProgressDialog CreateDialog() {

ProgressDialog dialog = new ProgressDialog(this);

46

dialog

.setMessage(this.getResources().getString(

R.string.pregress_diag));

dialog.setIndeterminate(true);

dialog.setCancelable(false);

return dialog;

}

MainActivity.java

public class MainActivity extends ListActivity {

private ArrayList directoryEntries = new ArrayList();

TextView tv;

private DataDownloader downloader = null;

47

private File currentDirectory;

private ProgressDialog mDialog;

final Hashtable mFileName = new Hashtable();

private void initFileNameMap() {

mFileName.put(\"shanghai\", this.getResources().getString(R.string.shanghai));

mFileName.put(\"beijing\", this.getResources().getString(R.string.beijing));

mFileName.put(\"guangzhou\", this.getResources().getString(R.string.guangzhou));

mFileName.put(\"shenzhen\", this.getResources().getString(R.string.shenzhen));

mFileName.put(\"chengdu\", this.getResources().getString(R.string.chengdu));

mFileName.put(\"fuzhou\", this.getResources().getString(R.string.fuzhou));

mFileName.put(\"hefei\", this.getResources().getString(R.string.hefei));

mFileName.put(\"wuhan\", this.getResources().getString(R.string.wuhan));

48

mFileName.put(\"zhixiashi\", this.getResources().getString(R.string.zhixiashi));

}

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

initFileNameMap();

unzip();

// browseToRoot();

}

protected void OnPause() {

super.onPause();

if (downloader != null) {

49

synchronized (downloader) {

downloader.setStatusField(null);

}}}

protected void OnResume() {

super.onResume();

if (downloader != null) {

synchronized (downloader) {

downloader.setStatusField(tv);

}}}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

boolean result = true;

50

if (keyCode == KeyEvent.KEYCODE_BACK) {

if(currentDirectory.getName().equals(\"busline\")) {

finish();

} else {

browseTo(currentDirectory.getParentFile(),0);

}}

return result;

}

/*** move the file in asset to directory /sdcard/busline*/

private void unzip() {

Log.v(Globals.TAG, \"start unzip file or download file\");

tv = new TextView(this);

51

class CallBack implements Runnable {

public MainActivity mParent;

public void run() {

if (mParent.downloader == null)

mParent.downloader = new DataDownloader(mParent, tv);}}

CallBack cb = new CallBack();

cb.mParent = this;

this.runOnUiThread(cb);

mDialog = CreateDialog();

mDialog.show();}

protected ProgressDialog CreateDialog() {

ProgressDialog dialog = new ProgressDialog(this);

52

dialog

.setMessage(this.getResources().getString(

R.string.pregress_diag));

dialog.setIndeterminate(true);

dialog.setCancelable(false);

return dialog;

}

private void browseTo(final File aDirectory, final long id) {

if (aDirectory.isDirectory()) {

this.currentDirectory = aDirectory;

fill(aDirectory.listFiles());

} else {

53

DialogInterface.OnClickListener DialogInterface.OnClickListener() {

okButtonListener = new

// @Override

public void onClick(DialogInterface arg0, int arg1) {

try {InputStream checkFile = null;

try {

Intent in = new Intent(MainActivity.this,

Traffic.class);

in.putExtra(Globals.FILENAME, aDirectory.getPath());

in.putExtra(Globals.Title, directoryEntries.get((int)id).mChineseName);

MainActivity.this.startActivity(in);

} catch (Exception e) {

Context context=getApplicationContext();

CharSequence text = MainActivity.this

.getResources().getString(

R.string.diag_err);

int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text,duration);

toast.show();

};

} catch (Exception e) {

e.printStackTrace();

}}

};

55

DialogInterface.OnClickListener DialogInterface.OnClickListener() {

cancelButtonListener = new

// @Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

};

AlertDialog ad = new AlertDialog.Builder(this).setMessage(

R.string.diag_msg).setPositiveButton(android.R.string.ok,

okButtonListener).setNegativeButton(

android.R.string.cancel, cancelButtonListener).create();

ad.show();

56

}}

57

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务