《2022年JME公交查询系统设计方案与实现.docx》由会员分享,可在线阅读,更多相关《2022年JME公交查询系统设计方案与实现.docx(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品学习资源封面欢迎下载精品学习资源作者: PanHongliang仅供个人学习分类号: TP311.1 UDC:D10621-408-20075720-0密 级:公 开编 号: 2003215048成 都 信 息 工 程 学 院欢迎下载精品学习资源学 位 论 文基于 J2ME 的公交查询系统的设计与实现网络工程工学学士张仕斌(副教授)2007 年 06 月 10 日论 文 作 者 姓 名 :刘应嘉申 请 学 位 专 业 :申 请 学 位 类 别 :指导老师姓名(职 称):论 文 提 交 日 期 :欢迎下载精品学习资源基于 J2ME 的公交查询系统的设计与实现摘 要当今,人类社会已步入信息时代
2、,信息化革命给全部领域带来了前所未有的变革;电脑、手机等信息工具的普及,人们猎取信息变得更加完善、快捷;而随着信息技术的飞速进展,手机所隐匿的无限商机,正在被人们逐步挖掘, 它不再仅仅局限于通信这一单一功能,正在朝着手提电脑甚至更完善的方向进展;由于手机价廉物美,它已成为人们获得在生活工作上等各种信息服务的正确选择;在我国,随着城市化的快速进展,城市公交系统也随之快速扩大,且更加复杂化,找不到合适的乘车路线的事情经常发生;当前,复杂的公交系统使得用户往往处于困惑的状态,给出行带来诸多不便,而手机公交查询系统的选题也正是基于该背景;本系统通过对城市公交系统的调研,提出了基于站点优先级和邻接矩阵的
3、公交换乘算法和上下矩阵算法;以J2ME 作为开发工具,将其移植到用户手机上,借助于无线互联网,能为客户随时随地供应公交信息的查询;通过测试与分析,证明白该系统的可行性及有用价值;关键词:公交查询;站点优先级;公交换乘算法;手机;无线互联网欢迎下载精品学习资源Design and Implementation of City-bus Information InquirySystem Based on J2MEAbstractAtpresent, the human society marches into the informationtime ;the information revolut
4、ion has brought the unprecedented revolutionfor all domains. With the popularization of information tool as like Computer, handset and so on, obtaining the information is more and more perfectly and quickly. But along with the rapid development of information technology, the infinite opportunity tha
5、t the handset contains is being gradually excavated by the people,it no longer merely limits to this sole function of communication, is facing to the development of portable computer or even moreperfect aspect. As a result of the low-price and high-quality of the handset, it has become the best choi
6、ce thatthe people obtain each kind of information service in life.In our country, along with urbanized fast development, city bus system also rapidly expands, and even becomes more complex. So, finding city bus route becomes more difficult. Presently, the complex city bus system causes the condition
7、 which the users often are confused, whichbrings many inconvenient to people, buthandset citybus inquiry system is also based on this background. Firstly, the author investigates the city bus system, provides “the Algorithm based on the stand priority and the nextlinkingmatrix ”and “the Algorithmbas
8、ed onupward and downward matrix .”Secondly, these Algorithmsare transplanted to the handset by J2ME, which can provide the inquiry for city bus at any time and any where by the aid of to the wireless Internet. Finally, through testing and analyzing, it confirms this system is some feasibility and pr
9、actical value.Key words:CityBus Inquiry ; Stand Priority ; CityBus ExchangingAlgorithm ; Handset; Wireless Internet目 录论文总页数: 27 页1 引言 11.1 课题背景 11.2 国内外争论现状 11.3 本课题争论的意义21.4 本软件的开发方法2欢迎下载精品学习资源1.5 本文的主要工作 31.5.1 争论的主要内容 31.5.2 各章节的支配32 手机公交查询的需求分析和开发工具介绍32.1 用户的原始需求 32.2 手机公交查询系统功能模块及流程图42.3 开发工具介绍
10、 43 手机公交查询系统的设计 53.1 手机公交查询系统算法的设计53.1.1 直达的算法设计 53.1.2 一次换乘的算法设计53.1.3 二次换乘的算法设计53.2 手机公交查询数据库的设计63.2.1 数据库的规律设计 63.2.2 数据库的物理设计 74 手机公交查询系统功能详细实现84.1 服务器端的实现 94.1.1 基类( Base Class)的实现 94.1.2 帮忙类( Help Class)的实现 94.1.3 业务规律类( Logic Class )的实现 104.1.4 服务器对外接口(Servlet)的实现 134.2 WEB 端的实现 144.3 WAP 端的实
11、现 154.4 手机客户端的实现 174.4.1 客户端界面的实现 174.4.2 客户端工作原理 174.4.3 手机网络设置 195 手机公交查询系统测试与分析195.1 测试环境 195.2 运行与测试 195.3 测试结果 20结论 20参考文献 21致谢 22欢迎下载精品学习资源声明 23欢迎下载精品学习资源1 引言1.1 课题背景作为关系国计民生的社会公益事业,城市公共交通始终都是政府工作的重点;就武汉市而言,调研数据显示,武汉市乘客以公交方式出行的比例为23.36%,可见城市公交的重要性;但是从客观上说,公交硬件建设跟不上城市建设的步伐,是全国大城市特殊是特大城市都正在遭受的进展
12、瓶颈;也经常造成人们的出行不便;在我国,随着城市化的快速进展,市公交系统也随之快速扩大,且更加复杂化,找不到合适的乘车路线的事情经常发生;当前,复杂的公交系统使得用户往往处于困惑的状态,给出行带来诸多不便,在另一个方面,我国城市的手机普及率已经特殊高了,假如能把这两种情形结合起来,开发出一种基于手机的公交查询软件,将会给用户带来便利;1.2 国内外争论现状从有关的文献看 , 如今全世界可以支持 J2ME 的手持设备如今已经达到了七千五百万,有 34 个运营商在使用 J2ME 技术;传统手机在出厂之后,功能(通讯录、玩耍、商务应用)就已经固化,用户将无法删除无用的功能,同样也不能增加新的功能;即
13、使用户找到供应新功能的程序,也往往由于程序和手机平台无法兼容而不能使用;这成为了手机行业进展的瓶颈,而 JAVA 在移动终端领域的显现转变了这一局面; JAVA 以其可移植性,资源重用性,安全性,移动性以及强大的网络功能快速占据了全球手机市场,将来的手机出货将主要以 JAVA 手机为主;据美国高科技争论公司Strategies Unlimited 日前发表的 2.5G 和 3G 手机性能: 2002-2006 全球分析与市场推测的报告称,市场上Java 手机的数量估量将每年翻一番,到2006 年将从 2001 年的 1,910 万部增长到 5.53 亿部;硬件中加快集成 Java估量将进一步促
14、进Java在市场中的普及, J2ME 将成为事实上的标准;到 2006 年, Java手机估量将占全部手机出货量的83%;就国内来说, JAVA 是将来无线数据服务的主流方向,也开头接受基于开放应用平台的移动增值服务架构;从2003 年起,移动、联通均已开通无线JAVA 业务;JAVA 手机已经成为绝大多数用户选购手机时的必要考虑条件;在 J2ME 通信方面, MIDP1.0 支持 HTTP ,MIDP2.0 就增加了对 HTTPS、报文、 socket通信以及串口通信的支持;另外, MIDP2.0 仍支 持服务器 Push体系架构,这样,你的手机能够收到来自服务器的报警、消息或者广播,依据要
15、求启动手机上的应用程序进行操作;欢迎下载精品学习资源支持 Over-the-air OTA Provisioning 是 MIDP2.0 的一个重要的新特点,它使得用户能够动态地部署和更新移动设备上的应用程序;新版的MIDP 规范中规定了如何在移动设备上发觉、安装、更新和删除MIDlet 套件;同时,供应应用程序下载的服务供应商仍能够判定该MIDlet 套件是否能够运行在申请下载的设备上,并且从设备上猎取安装、更新和删除的信息;MIDP OTA provisioning 模型为移动服务供应商供应了单一、标准的部署MIDP 应用程序的途径;该模型已经被众多技术领先的移动设备制造商和服务供应商所接
16、受;J2ME 针对嵌入式和移动设备,供应了开发和运行应用程序的平台,随着新的规范的不断推出和众多制造商、软件开发商的支持,J2ME 正在飞速向前发展;JTWI 将保证 J2ME 应用程序在不同制造商的产品上的兼容性;今后J2ME 将借助 Web Services 的力气,真正成为企业级信息解决方案中不行或缺的一部分;1.3 本课题争论的意义在我国,随着城市化的快速进展,市公交系统也随之快速扩大,且更加复杂化,找不到合适的乘车路线的事情经常发生;当前,复杂的公交系统使得用户往往处于困惑的状态,给出行带来诸多不便,在另一个方面,我国城市的手机普及率已经特殊高了,假如能把这两种情形结合起来,开发出一
17、种基于手机的公交查询软件,将会给用户带来便利;基于以上缘由,本系统通过对城市公交系统的调研,提出了基于站点优先级和邻接矩阵的公交换乘算法和上下矩阵算法;以 J2ME 作为开发工具,将其移植到用户手机上,借助于无线互联网, 能为客户随时随地供应公交信息的查询;1.4 本软件的开发方法由于公交数据相对比较庞大和繁琐,同时设计换乘时对系统处理的性能要求也比较高,故本系统接受在服务器上进行运算,结果通过无线网络传输到客户端的形式进行开发;又由于当前绝大多数手机都支持 JAVA ,而 J2EE 和J2ME 由于同出一门,具备先天性无缝连接的优势,故本系统接受 J2ME 和J2EE结合的方式进行开发;通过
18、 J2ME 和 J2EE 技术的结合,接受 C/S 模式和 B/S 模式共同存在的方式,服务器端接受 Mysql+Tomcat/Weblogic,通过 Servlet 实现对外服务器通信, 同时前台开发出WEB 模块和 WAP 模块, WEB 模块接受 MVC模式,使用Struts 框架;手机客户端接受 J2ME 编程,使用线程技术实现和服务器的网络通信,并且在从服务器取得数据后自动断开连接,节约用户流量;欢迎下载精品学习资源1.5 本文的主要工作1.5.1 争论的主要内容本设计接受 B/S 和 C/S 结合的结构,综合运用以前所学的专业学问,设计开发一个功能较完善的基于手机的公交查询系统,详
19、细包括以下内容:(1) 争论并把握 TCP/IP 等传输协议、数据库操作等的基本原理;(2) 学习并把握 J2EE,J2ME等相关学问;(3) 以前面的争论为基础,编程实现服务器及手机客户端线路查询,按站查询,站站查询并且实现手机无线网络通信等功能;1.5.2 各章节的支配本文章详细介绍了该系统的分析和实现各个流程;在文章的引言中,主要介绍了该系统面临的背景,争论意义和开发方法等,使读者对本文有全面的明白;在接下来的其次章里,对系统的需求分析和与之对应的开发工具介绍;在第三章里,对系统开发涉及的算法进行了介绍和对数据库设计给出了详细的说明;第四章是系统功能详细实现的介绍其中包括了关键的编程技术
20、,功能的代码说明;第五章是对系统的测试和分析,包括代码测试和功能测试,并对测试分析总结;最终,是作者通过对本系统的争论和设计总结出的系统特点以及争论心得;2 手机公交查询的需求分析和开发工具介绍2.1 用户的原始需求作为关系国计民生的社会公益事业,城市公共交通始终都是政府工作的重点;就武汉市而言,调研结果中的另一个数据,武汉市乘客以公交方式出行的 比例为 23.36%,可见城市公交的重要性;但是从客观上说,公交硬件建设跟不上城市建设的步伐,是全国大城市特殊是特大城市都正在遭受的进展瓶颈;也 经常造成人们的出行不便;本系统通过对城市公交查询用户需求的调研,发觉用户在查找公交信息的时候一般只有 3
21、 种方式,即按线路进行查找,按站进行查找线路,按起点站和终点站查找乘坐方案;同时由于城市公交系统在规划的时候是以站作为单位进 行规划的,故经过站数的多少直接准备了公交线路的长短和时间;因此,在本系统的设计中提出以下方案:用户在使用本系统的时候,可以依据线路进行公交查询,或者按起点终点进行查询,系统自动依据换乘选择算法供应出正确换乘方案,该算法依据用户输入的站名,查找全部可以直达的方案,如无直达方案,就找出全部换乘方案并依据站点优先级进行排序,返回给用户线路最短的前 N 条的换乘信息,假如用户使用按站查询线路,系统也供应了确定的模糊查询,比如用户查询“百脑欢迎下载精品学习资源汇”,系统能自动辨认
22、出当地站点“磨子桥”;同时,用户在手机上可以通过 J2ME 手机客户端和 WAP 的方式进行查询,在电脑上可以通过拜望WEB 站点的方式进行查询;2.2 手机公交查询系统功能模块及流程图通过对需求分析的调研,得出了经过用户确认的手机公交查询系统的系统规律模型;依据手机公交查询系统的业务流程图,明确了整个系统的流程;(1) WEB 和 WAP 功能模块,如图 1 所示;图 1WEB 和 WAP 功能模块图图 2 手机客户端流程图(2) J2ME 手机客户端的系统流程图,如图 2 所示;用户查询流程分为查询内容选择、查询信息输入和信息接收 3 个步骤;从该流程图中可以看出,按起点终点查询是整个系统
23、最重要的一部分,也是本系统最能表达算法的一部分,经过对成都公交系统的观看和分析,本系统提出了一次换乘时接受基于站点优先级和邻接矩阵的公交换乘算法,假如第一次换乘没有可以换乘的方案,就接受上下矩阵算法,得出二次换乘信息,同时把得到的方案缓存到数据库中,下个用户查询相同起点终点时就直接从数据库中提取缓存信息,大大的节约了用户的时间和系统资源;2.3 开发工具介绍JAVA 语言是目前 Internet 上大型的 WEB 应用和手机程序开发时使用得最热门的编程语言,而目前国内销售的大多数手机都支持JAVA ,同时 J2ME 和J2EE 由于都是基于 JAVA 技术,可以进行无缝连接,所以本系统选用J2
24、ME 和J2EE 做为开发语言,同时在 WEB 端应用相关的 Struts 框架,并完成一个基于这 2 种技术结合的手机无线公交查询系统;本系统接受的开发工具为MySQL+Eclipse+Tomcat/Weblogic,MySQL 是一个广受 Linux 社区人们宠爱的半商业的数据库; MySQL 具有强大且简洁易用的特点,而且运行速度极快,能够处理企业数据库绝大多数的应用需求;Eclipse 是一个开放源代码的、基于Java 的可扩开放发平台;就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境;幸运的是,Eclipse 附带了一个标准的插件集,包括Java 开发工具( Ja
25、va Development Tools, JDT);Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它是Apache 软件基金会( Apache Software Foundation)的 Jakarta 工程中的一个核心工程,由Apache、Sun 和其他一些公司及个人共同开发而成;由于有了Sun 的参与和支欢迎下载精品学习资源持,最新的 Servlet 和 JSP规范总是能在 Tomcat中得到表达, Tomcat5支持最新的 Servlet 2.4 和 JSP 2.0规范;由于 Tomcat技术先进、性能稳固,而且免费,因而深受 Java 爱好者的宠爱并得到了部分软件开
26、发商的认可,成为目前比较流行的 Web应用服务器;3 手机公交查询系统的设计3.1 手机公交查询系统算法的设计3.1.1 直达的算法设计现有 A,B 两个公交站,通过数据库查询语句“ select * from businfo” 获得全部公交线路信息,再把每一路车的信息依次迭代出来,判定A 站和 B 站是否同时在该线路中,如结果为true,就可以直达,同时将直达方案存入一个集合 中,连续向下遍历,假如结果为false,就该车不能直达,连续向下遍历;3.1.2 一次换乘的算法设计一次换乘接受基于站点优先级和邻接矩阵的公交换乘算法,现在A,B 两个公交站,通过数据库查询语句查找出经过A 站的全部公
27、交车集合Collection1,再通过数据库查询语句查找出经过B 站的全部公交车集合Collection2, 判定Collection1 和 Collection2 是否有交集,如有,就得到一次换乘方案,存放在结果集合中;判定终止后,再依据经过站点总数对换乘方案进行排序,由于换乘结果往往数以百计,所以只取结果集的前N 条记录出现给用户;如判定终止后没有找到一次换乘的方案,就执行2 次换乘算法;一次换乘算法,如图 3 所示;图 3 一次换乘算法示意图图 4 二次换乘算法示意图3.1.3 二次换乘的算法设计二次换乘接受上下矩阵算法,现有A,B 两个公交站,先通过数据库查询语句和程序业务规律得到 A
28、 站能直达的全部站点,放在集合Collection1 中,再依据 A 站的方法找出 B 站能知道的全部站点,放在集合Collection2 中,再判定是否有公交车可以从Collection1 中的站点直达 Collection2 中的站点,假如,就将方案存放到结果集合中;至此为止,依据公交线路设计的理论,是确定可以找到二次换乘的方案的,故不再考虑3 次换乘方案;二次换乘算法,如图 4 所示;欢迎下载精品学习资源3.2 手机公交查询数据库的设计3.2.1 数据库的规律设计图 5 数据库主要 E-R 图精确明白与分析用户需求(包括数据与处理)是整个设计过程的基础;而依据用户需求设计合适的数据库以及
29、选择恰当的数据库以确保系统能高速稳固的运行就是数据库设计的根本目地;由于本系统涉及到大量数据的读取,并且对安全性要求不高,应选用占用系统资源较少并且速度相对较快的 MySQL 作为本系统的数据库;通过对用户需求的分析以及对系统本身应用背景的争论,可以看出本系统需要有以下数据支持:公交线路信息,公交站点信息,站点邻近标志信息,用户通知信息,同时考虑到节约系统资源,在用户进行完站站查询后仍会产生一个存放查询结果的缓存信息;由上述可以确认该算法所关系到的数据表;依据上述分析,可以得出公交信息模型的 E-R 图,如图 5 所示;公交信息相关数据库的数据字典,如表 1 所示;1.5是否上下行判定该公交车
30、是否有上下行2.公交站点信息公交站点相关信息2.1公交站名该站点的站名2.2邻近标志 1邻近标志 1 的名字2.3邻近标志 2邻近标志 2 的名字2.4邻近标志 3邻近标志 3 的名字2.5邻近标志 4邻近标志 4 的名字2.6邻近标志 5邻近标志 5 的名字2.7邻近标志 6邻近标志 6 的名字2.8邻近标志 7邻近标志 7 的名字表 1 公交信息相关的数据字典序号数 据 项 名 称数 据 项 内容1.公交线路信息公交线路的信息汇总1.1线路 ID公交线路的 ID1.2线路 NO公交线路的名称,如502A1.3经过站点公交线路经过的站点1.4收发车时间公交车的收发车时间欢迎下载精品学习资源2
31、.9 邻近标志 8邻近标志 8 的名字2.10 邻近标志 9邻近标志 9 的名字2.11 邻近标志 10邻近标志 10 的名字3. 站点邻近标志汇总站点邻近标志性建筑物或者地名的汇总3.1 标志 ID标志编号3.2 标志名称站点邻近标志性建筑物或者地段的名称3.2.2 数据库的物理设计(1) 公交线路信息表负责存放公交线路信息,考虑到部分公交车存在上行和下行不一样的情形,表中添加了是否上下行的字段,以供算法确认;如表2 所示;表 2 公交线路信息表公交线路信息表 businfo字段名注释Busid公交车的 idBusno公交车的车号stop1第 1 个站的站名stop2第 2 个站的站名sto
32、p50第 50 个站的站名Time公交车的发车收车时间Startend公交车的起点和终点Updown是否有上下行(2) 站点信息表负责存放站点相关信息,并且存放确定的四周标志建筑和地名的信息,以供算法进行模糊查询;如表 3 所示;表 3 站点信息表站点信息表 stopinfo字段名注释Stopname公交站站名near1邻近标志 1near2邻近标志 2near3邻近标志 3欢迎下载精品学习资源near4邻近标志4near5邻近标志5near6邻近标志6near7邻近标志7near8邻近标志8near9邻近标志9near10邻近标志10Stoppic臃余字段,为以后功能预先留出(3) 站点邻近
33、标志汇总表负责存放站点四周标志建筑或地名的汇总信息,本表为站点信息表的near集合自动生成;如表 4 所示;表 4 站点邻近标志汇总表站点邻近标志汇总表stopinfo字段名注释Id标志的 idNearname标志的名字(4) 用户公告表负责存放本系统的公告信息;如表5 所示;表 5 用户公告表用户公告表 notify字段名注释Id消息的 idContent消息内容Date消息发布日期(5) 查询统计表负责统计用户查询和下载量;如表6 所示;表 6 查询统计表查询统计表 jishuqi字段名注释IdidFangwen查询量Xiazai客户端下载量4 手机公交查询系统功能详细实现经过上面的描述,
34、已经明确了手机公交查询系统需要实现的功能以及如何欢迎下载精品学习资源去完成这些功能;下面将详细的阐述如何实现这些功能;4.1 服务器端的实现本系统遵照 J2EE 3、4 层结构 ,使用了 MVC 、AO 等设计模式 ,组织结构图如图 6 所示;图 6 系统组织结构图4.1.1 基类( Base Class)的实现接受 AO 模式,将数据库相关方法封装到一个基类中,由业务规律继承该基类;数据库连接( Connection)通过配置 WEB 服务器上的连接池,同时将数据源绑定到 JNDI,程序直接通过 JNDI Name 猎取,实现了数据源的可配置性和高度可移植性;猎取 JNDI Name 方法如
35、下:Javax.sql.DataSource ds = javax.sql.DataSource ctx.lookupdsName;/ 从数据源得到连接conn = ds.getConnection ;由于后面需要多次调用关闭数据库连接,故关闭连接封装到一个方法中, 详细实现如下:/ 关闭数据库连接public void closeResultSet rs,PreparedStatement ps,Connection con tryifrs.=nullrs.close;ifps.=nullps.close;ifcon.=nullcon.close ;catchException ee.pri
36、ntStackTrace ;4.1.2 帮忙类( Help Class)的实现帮忙类主要为业务类供应一些帮忙功能,尽量实现功能的分别和高度封装;同时为了加快运行速度,削减JVM 编译负担,接受 PreparedStatemen;t 部欢迎下载精品学习资源分方法如下:(1) 获得公交总数一般查找总数用 ”select count* from businfo ”,但这样由于是次序遍历,始终要遍历到最终一条,效率不高,此处使用sqlRst.last;使游标直接指向最终一条记录,再用 buscount = sqlRst.getRow;记录最终一条记录的行号,从而得到了总行数,比起前一个方法更快而且节约
37、系统资源;(2) 插入数据库缓存,使得下一个用户查询该方案时可以直接从数据库中猎取结果,从而大大的节约了用户时间和系统资源;实现方法如下:String sql=insertinto zhuanchengid,result1,result2,result3,result4 VALUES.,.,.,.,. ;ps1 = conn.prepareStatementsql ;ps1.setString1,start+end;ps1.setString2,result1 ;ps1.setString3,result2 ;ps1.setString4,result3 ;ps1.setString5,res
38、ult4 ;ps1.executeUpdate;用户查询时如数据库中已有缓存数据,就调用以下方法猎取缓存的换乘数据:String sql1=select * from zhuancheng where id=+start+end+;ps1 = conn.prepareStatementsql1 ;rs1 = ps1.executeQuery ;whilers1.next result1=rs1.getStringresult1 ;result2=rs1.getStringresult2 ;result3=rs1.getStringresult3 ;result4=rs1.getStringre
39、sult4 ;4.1.3 业务规律类( Logic Class)的实现(1) 查询公交线路该方法比较简洁,通过“ select * from businfo where busno=+busno”即可得到符合条件的公交车,同时返回用户需要的数据;(2) 按站查询经过的公交线路,步骤如下: 通过帮忙类判定用户输入的站名或者邻近标志名,并找到对应的公交站名; 通过 Sql 语句找到经过该站的公交车,存放在一个集合中并返回;欢迎下载精品学习资源(3) 按起点终点查找乘坐方案这是本系统中最复杂的一块,通过前面提到的基于站点优先级和邻接矩阵的公交换乘算法和上下矩阵算法来实现,详细实现方法如下:欢迎下载精
40、品学习资源 通过 start=tool.getbusstopstart;和终点的公交站名;end=tool.getbusstopend;来确定起点欢迎下载精品学习资源 检验站名是否存在,存在就连续往下,不存在就返回提示信息; 如站名存在,就尝试从数据库中取得直达缓存信息,如数据库中没有直达信息,就查找换乘信息; 如数据库中没有缓存,就开头查找有无直达线路,找到后把结果存入数据库; 假如没有直达方案,就开头查找1 次换乘方案,找到后依据经过站数排序,站数少的排前面,由于换乘方案过多,故只返回前几条;由于一次换乘结果可能成百上千 ,故只给用户前几条换乘方案进行选择 ,先将全部换乘方案按经过车站数进
41、行排序 ,再取前 4 条返回给用户;排序类为一个实现了Serializable 和 Comparable的工具类,详细排序方法在compareTo 方法中实现,通过compareToObject b来定义如何排序,代码如下:public int compareToObject bSortBean sort=SortBeanb ;return this.length-sort.length;换乘得到结果后放入Collection 中返回;最终把找到的结果集写入到数据库缓存中;tool.insertDBstart,end,zhuanchengresult0,zhuanchengresult1,zh
42、uanchengresult2,zhuanchengresult3;假如找不到一次换乘(这种情形特殊渺茫),而用户又特殊执着的要继续找公交车,就不得不使用二次换乘,算法在3.3 节已有说明,下面列出详细做法:第一查找出经过起点站和终点站的线路,再通过线路找到该站能直达的全部站点,以起点站为例:Collection stop1bus=findbusnobystopstop1 ;/经过 stop1的公交车Collection stop2bus=findbusnobystopstop2 ;/经过 stop2 的公交车Iterator itr=stop1bus.iterator ;欢迎下载精品学习资源
43、whileitr.hasNextIterator initr1=searchbuslineStringitr.next.iterator;whileinitr1.hasNextString stopname=Stringinitr1.next;map1.putstopname,rubbish ;这里使用 HashMap 的 KEY 作为存放站名的容器,由于从一个站台辐射出去的公交线路经过的站点往往有重复,而HashMap 在 KEY 重复的时候只是重新设置了 VALUE 值, KEY 值就无法重复插入,应选用 HashMap;在分别找到起点和终点能直达的站点集合后,就开头进行循环查找,开头检验
44、起点能直达的站点中是否有能直达终点能直达站点的站点,如有,就证明可以进行二次换乘;Iterator key1= map1.keySet.iterator ;Iterator key2= map2.keySet.iterator ;whilekey1.hasNextwhilekey2.hasNextifzhida.isEmptyString sop1=Stringkey1.next ;String sop2=Stringkey2.next ;zhida=zhidasop1,sop2 ;/ 内层 break if.zhida.isEmptySystem.out.println 找到中途换乘 +zhida.size ;break;/ 外层 break if.zhida.isEmptySystem.out.p