APP下载

基于Android手机的西安市公交查询系统设计与实现

2018-09-19刘高辉林亚茹何坤城

计算机测量与控制 2018年9期
关键词:数据表站点客户端

刘高辉,袁 萌,林亚茹,何坤城

(西安理工大学自动化与信息学院,西安 710048)

0 引言

近年来,我国的公交查询系统迅速发展,不少城市都拥有了公交线路查询系统,网络上也可以下载到许多不同版本的公交查询软件[1]。但是,目前的公交查询系统存在其不足之处:

1)目前的公交查询系统不能向用户提供所查询路段的道路拥堵状况信息,这将不利于乘客有选择的乘车;2)目前西安的公交查询系统也不能给客户提供下一辆公交车的准确到达时间,造成用户盲目等待某辆公交车,造成对时间的大量浪费[2]。

针对当前存在的公交管理系统的不足,本文中提出并设计了一个基于安卓手机的公交查询系统,系统主体分为3个部分:模拟服务器、手机客户端、模拟车辆终端,通过各部分之间的配合,实现安卓手机客户端对指定线路公交车运行状态的查询,从而方便乘客选择乘车[3]。

本系统的成功开发,不仅能够实现用户对公交信息的查询,更重要的意义在于能够将人、车、路三者结合起来,通过车况来反映路况信息,再通过服务器将信息发布到手机客户端,从而达到方便乘客出行的目的。另外,本系统也可作为交通查询网络的雏形,可以想象,如果进一步开发,可能形成一个巨大的交通信息网络,这对于智能化交通以及提高公交管理水平都具有重要意义。

1 系统总体设计

1.1 系统主要功能模块

本公交查询系统主体分为3个部分:模拟服务器、手机客户端、车辆终端。图1是系统总体结构图。图中,系统模拟服务器是指一个运行在电脑上的一个Java应用程序,该应用后面维护着一个数据库,用来储存公交运行中的各种数据;手机客户端和模拟车辆终端都是运行在Android手机上的应用程序。

图1 系统总体结构图

1.2 系统功能描述

系统各部分功能描述如下:

模拟服务器功能:(1)增加和删除公交路线和行车线路;(2)接收并发布用户选定的线路上公交车传来的站点拥堵信息;(3)为用户发布选定线路上下一辆到达的公交车所处站点。

手机客户端功能:(1)调用百度地图按公交路线 (如“11”)查询行车线路;(2)查询下一辆到达的公交车所处站点;(3)从服务器上获取在选定线路上的公交传回的道路拥堵信息。

模拟车辆终端功能:(1)向服务器发送自身的运行方向及所处的位置;(2)实时地向服务器发送该车所在运行区间的拥堵状况。

系统总体功能基本是系统各部分功能的总和,是将系统各部分有机的结合在一起作为一个整体运行。系统的主要运行方式是:通过手机客户端和模拟车辆终端向模拟服务器发出的请求来驱动模拟服务器更新数据库以及反馈信息到客户端。

2 模拟服务器的设计

模拟服务器是整个系统的核心,系统的其它模块都要通过模拟服务器与别的部分产生联系。模拟服务器后台维护着一个子线程,该线程不断地接受来自手机客户端和模拟车辆终端传来的消息,并对数据库进行相应的更新或给手机客户端和模拟车辆终端反馈相应的信息。

2.1 模拟服务器结构组成

系统主界面是模拟服务器的中心界面,管理员通过登录界面登录到系统中就进入系统主界面,随即系统主界面开启了一个线程来处理来自模拟车辆终端和手机客户端的请求。在主界面中管理员可以选择完成“添加线路”、“修改线路”或者“删除线路”来执行相应的操作,执行的效果会实时更新到数据库里。

2.2 数据库的设计

模拟服务器后台连接着一个Access数据库,该数据库命名为bus,用来存储系统中所要用到的一些数据。需要说明的是,Java中有多种访问数据库的方法,本系统采用的是把JDBC转换成ODBC驱动器的方法,靠ODBC和数据库建立通信连接[4]。

根据需求,本系统中建立了五张数据表来存储数据,他们分别是:busLine、busLocation、stationLocation、station-StateGo和stationStateBack。需要说明的是,因为实际中全国公交线路过多,公交站点数更是难以计数,如果要全部录入,势必造成工作量过大。因此,本系统在设计时将重点放在各功能的实现上,只选取了西安市以‘1’开头的部分线路作为样本来验证本系统的功能。

下面分别对这些数据表进行详细介绍。

2.2.1 数据表busLine的设计

数据表busLine的作用是按顺序存储各公交线路上的站点信息,供用户在已知公交线路的情况下查询该条线路上的站点序列,设计为每条线路可以存储70个公交站点。busLine中各字段说明如表1。

表1 数据表busLine各字段说明

需要说明的是,如果公交线路上的的站点数不足70站,则将不存在的站点名设为“xx”,表示不存在该站点。查询数据表busLine可以获取线路上的站点信息。

2.2.2 数据表busLocation的设计

数据表busLocation用来存储每条公交线路上每辆公交车所在的站间区间以及运行方向信息,设计为每条公交线路上可以运行50辆公交车,其各字段如表2所示。

表2 数据表busLocation各字段说明

busLocation表,可以得到所查询线路上所有公交车的位置信息。再结合每辆公交车的运行方向和乘客所在站点信息,就能计算出下一辆到达的公交车还有几站到达。

2.2.3 数据表busStateBack的设计

数据表busStateBack用来存储每条公交线路返程上每个站间区间的交通状态,其各字段说明如表3所示。

表3 数据表busStateGo各字段说明

数据表busStateBack中的信息是根据车辆终端发回的道路状态信息进行实时更新的。每个站间的交通状态有五种可选取值:state、state1、state2、state3和 state4。其中,state为默认状态,当未收到来自车辆终端的更新该区间状态的信息时,默认为state;state1表示“交通畅通”;state2表示“轻度拥堵”;state3表示“重度拥堵”;state4表示“发生事故”。

2.2.4 数据表busStateGo的设计

busStateGo表和busStateBack表的结构相同,各字段表示的意义也一样,只不过是把“返程方向”改成“往程方向”而已,此处不再赘述。

2.2.5 数据表stationLocation的设计

数据表stationLocation的作用是存储站点的百度地图经纬度坐标,它的各字段说明如表4所示。有了此坐标表就能实现地址解析,将公交站名转化成对应的地理坐标,进而实现在百度地图上绘制公交线路的功能[5,6]。数据表stationLocation存储了西安的所有公交站点,所以理论上所有公交线路都能解析成一个地理坐标链。

表4 数据表stationLocation各字段说明

2.3 模拟服务器运行流程图

2.3.1 系统总体运行流程图

模拟服务器的总体运行流程图如图2所示。

图2 模拟服务器的总体运行流程图

如图2所示,系统运行后,首先进入登录页面,提示用户输入用户名和密码。当用户登录的时候,为了增加安全性,使用MD5加密。系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。如果输入的用户名和密码与数据库中储存的用户名和密码相同,则登录成功,进入系统主界面;否则,报错并提示用户重新登录。登录成功后,系统会开启子线程来处理来自手机客户端和模拟车辆终端的请求,管理员可以选择“添加线路”、“删除线路”以及“修改线路”等功能,分别执行不同的操作。

2.3.2 后台子线程运行流程图

系统后台子线程的运行流程图如图3所示。

图3 后台子线程运行流程图

从图3可以看出,子线程开启后,系统一直循环会检测是否接到手机客户端或模拟车辆终端发来的请求,若没有接到,则继续检测;若接到请求,根据信息的类型进行不同处理。如果是模拟车辆终端上传的路况信息,就更新数据库中对应线路相应区间的交通状况信息;如果是手机客户端查询信息,进一步判断要查询信息的类型,然后在数据库中进行查找并返回查询结果。

2.4 数据通信格式

从上面的系统总体结构图可以看出,模拟服务器是整个公交管理系统的核心,是将这个系统联系在一起的中心节点。手机客户端,模拟车辆终端都必须先与模拟服务器接线联系才能实现与数据库的交互。下面介绍一下,手机客户端以及模拟车辆终端和模拟通信的格式,系统中所有通信格式说明见表5。

表5 通信格式说明

由表5可以看出:客户端向模拟服务器发出的请求可以分为两类,一类是查询类请求,另一类是更新类请求。查询类请求要求服务器返回客户端所要查询的内容,更新类请求只是通知服务器更新数据信息,不需要服务器返回任何内容。实际上客户端和服务器通信的核心还是客户端与数据库的交互:即客户端查询数据库中的信息,并更新数据库中的信息。

3 模拟车辆终端和手机客户端的设计与实现

本论文中的模拟车辆终端和手机客户端均是基于Android平台开发的应用程序。其中模拟车辆终端用来模拟运行中的公交车辆,在运行过程中能向服务中心发送当前位置信息和所在站间区间的交通拥堵状况信息[78]。手机客户端是向用户发布的公交查询软件,通过该软件用户不仅可以清晰地看到所查询线路上的交通状况,还可以知道最近一辆公交车到达这里还有几站路。用户可以根据这些信息选择乘车方案从而优化出行,提高公交效率。

3.1 模拟车辆终端和手机客户端组成

模拟车辆终端包括“登录界面”、“选择线路”、“站点选择”、“状态发布”4个功能模块。

手机客户端包括“登录界面”、 “线路和站点选择”、“线路状态发布”、“地图显示”4个功能模块。

3.2 模拟车辆终端和手机客户端运行流程图

模拟车辆终端和手机客户端运行流程图分别如图4和图5所示。

用户在使用模拟车辆终端向服务器上传车辆信息时,先通过“选路选择”和“选择站点”选定车辆所在位置,然后选择车辆运行方向和当前的交通状况,点击“发布”按钮即可。

使用手机客户端向服务器查询车辆信息时,输入要查询公交车的线路、自己当前所在站点和目的地点信息,点击“查询”。手机客户端接收服务器返回的数据后,在“地图显示”和“线路状态显示”页面上显示查询的线路以及下辆公交车还有几站到达,两个界面之间可以通过滑屏操作进行切换。

3.3 模拟车辆终端和手机客户端运行效果图

3.3.1 模拟车辆终端运行效果图

如图6所示,子图 (a)为模拟车辆终端“登录界面”运行效果图;子图 (b)为模拟车辆终端“线路选择”功能运行效果图;子图 (c)为模拟车辆终端“站点选择”功能运行效果图;子图 (d)为模拟车辆终端“状态发布”功能运行效果图。

3.3.2 手机客户端运行效果图

如图7所示,子图 (a)为手机客户端“登录界面”运行效果图;子图 (b)为手机客户端“线路和站点选择”功能运行效果图;子图 (c)为手机客户端“地图显示”功能运行效果图;子图 (d)为手机客户端“线路状态显示”功能运行效果图。

图6 模拟车辆终端运行效果图

图7 手机客户端运行效果图

4 结语

未来的交通必将向着智能化和方便人们生活的方向发展,优化的公交管理系统和便携实用的交通查询软件成为交通水平提高的必然需求[9]。

交通管理系统也将会向高度智能化的方向发展,形成一个车辆、乘客和服务中心交互网络[10]。届时每辆公交车也将参与提供实时路况信息,乘客不仅能在客户端查询线路,还能获取到每条线路上更多的动态信息,从而将交通的诸多要素联动起来,优化乘客出行,提高公交效率,具有一定的推广价值。

本文中设计的系统可以作为公交车辆、服务中心、用户终端交互系统的雏形。如果能进一步研究和发展,结合现阶段先进的公交管理技术,必将会使现在的公交管理水平达到一个新的更高的水平[11]。

猜你喜欢

数据表站点客户端
基于VBA 的教务数据平台研究
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表
基于Web站点的SQL注入分析与防范
积极开展远程教育示范站点评比活动
怕被人认出
媒体客户端的发展策略与推广模式