《2022年2022年公交查询系统 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年公交查询系统 .pdf(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、公交车查询系统实验报告一、概述1、项目背景(1) 我国城市公交查询系统的现状我国城市公交查询系统的发展处于一个落后的水平, 广大乘客可以获得信息的方式很少 , 公交信息的完整性和准确性得不到保证, 而且还没有专门的机构负责信息的发布和管理。我国公交查询系统的现状特点如下: 乘客可以获得的公交信息很少, 而且方式主要是常规手段。我国乘客一般获得公交信息的方式局限于电话, 交通图 , 向熟人问讯等常规方式。 乘客可以获得的公交信息很少 , 除去线路 , 站点等基本信息以外, 有关班次 , 车辆到离站时间的信息基本上没有。乘客出行中获得信息困难, 基本上没有实时信息。 除去在杭州 , 上海等少数几个
2、城市, 乘客可以通过分布于城市中的若干电子站牌获得一些公交车辆的运营信息以外, 在其它城市“出行中”的乘客无法获得任何实时信息。在我国一些城市中 ,有不少装饰华美的公交站台, 但在这些站台上却找不到实用的城市交通图。缺乏专门的交通信息发布管理机构, 乘客获得的信息准确性得不到保证。 目前,我国大多数城市对于交通信息的发布没有专门的管理机构和规章制度。在城市交通信息服务需求小的情况下尚可应付。但随着城市交通信息服务需求的增长, 从事交通信息服务的人员和企业数量的增加, 需要有专门的管理机构和制度。当前的城市交通信息服务存在着混乱和低效的问题, 有些甚至是对乘客的误导。(2) 我国城市公交查询系统
3、的需求随着人民生活水平的提高和城市的发展, 平常人们出行的次数和范围都在增加,作为城市主动脉的公共交通承担着越来越繁重的运输任务也要与此相对应, 公交的线路数量和投入运营的车辆数量也在迅猛增加, 公交的服务时间延长,服务范围扩大。服务质量提高 , 对人们的吸引力也在增强。在油价上涨和能源短缺的今天, 人们的出行将越来越依赖公共交通。一般意义上 , 完整的出行问题是解决出发点到目的地的路径选优问题随着人们活动范围的扩大 , 乘公交出行往往也不可能一车到达, 乘客从某一起点 , 可能需要一次或多次换乘才能到达目的地。因此, 如何选择最优的出行路线 , 即如何换乘、 换乘几次,成为人们出行首要考虑的
4、问题。2、编写目的随着计算机技术的迅速发展, 推动了信息技术的广泛、 深入地应用到人们生活的各个领域并发挥着越来越重要的作用。计算机软件技术应用于信息管理是必然的趋势。作为计算机应用的一部分, 充分发挥计算机的优势, 将大量复杂的数据交给计算机来处理,有着人工管理所无法比拟的优点。如:查找方便、可靠性高、存储量大、 保密性好、寿命长、成本低等。 这些优点能够极大地提高信息管理的效率,是真正意义的合理利用资源,也是政府以及企事业管理科学化、正规化和世界接轨的重要条件。公交车作为现代城市生活中一种重要的交通工具,在现代城市生活中尤其重要,公交线路繁多, 数量也逐渐增多, 这样使得人们的出行很不方便
5、。在这样的背景下,我们决定做公交查询系统, 并以六安市公交数据为例, 设计了公交查询系统 ,验证了一些算法的可行性。该算法基于对经典的算法的学习和研究, 沿用其关于求最短路径的思想 , 并加以对换乘次数,站点范围限制等内容的深入研究而提出名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 22 页 - - - - - - - - - 的。在利用算法设计的公交查询系统中, 综合居民出行公交路线选择的问题,影响居民出行的多种因素 , 如换乘次数 , 出行时间 , 出行路程 , 出
6、行花费 , 出行舒适程度等调查结果 , 将算法应用于公交查询系统中, 形成该以最少换乘次数为第一目标, 最短出行时间为第二目标的公交线路查询解决方案。该方案能够在一定程度上解决人们出行公交路线选择的问题, 使公众的出行更加通畅、快捷、便利。3、软件定义根据实际的需求,公交查询系统是一个在对公交乘客出行心理特征进行分析的基础上,考虑了乘客选择公交线路决策的因素,建立了基于时间价值的公交线路选择合理的模型,是一款面向广大城市出行用户的基于WEB 的公交查询应用软件。此软件系统提供了站点换乘查询、公交线路查询、公交站点查询等功能。4、开发环境操作系统: Window XP SP3 数据库: MySq
7、l 5.0 开发平台: EditPlus 3.0 数据库管理工具: Navicat 8 CPU :AMD Athlon(tm) 64 X2 Dual 2.4GHz 内存: 2G 5、开发工具及技术简介PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PHP的特性包括:开放的源代码:所有的PHP源代码事实上都可以得到,PHP是免费的。 php的便捷性 : php十分便捷,学习简单。基于服务器端:由于PHP是运行在服务器端的脚本 , 可以运行在 UNIX 、LINUX 、WINDOWS下。嵌入HT
8、ML :因为 PHP可以嵌入 HTML 语言,所以学习起来并不困难。简单的语言:PHP坚持脚本语言为主,与 Java 和 C+ 不同。效率高: PHP 消耗相当少的系统资源。 图像处理:用 PHP动态创建图像。面向对像:在php4,php5 中,面向对象方面都有了很大的改进, 现在 php 完全可以用来开发大型商业程序。PHP 相对于其他语言,编辑简单,实用性强,更适合初学者。二、需求分析1、问题陈述通过对现实中的城市公交系统(六安市城市公交系统) 的考察, 得到第一手的资料。人们在面对选择众多的公交车以及公交线路的问题上的需要,公交查询系统主要解决的问题是人们在城市中不熟悉公交系统的问题。通
9、过调查得出: 设计一个公交查询系统需要解决人们对一个城市公交系统的整个的查询问题。如:站点换乘查询、公交线路查询、公交站点查询等功能。六安市公交站点(以1 路公交车为例)如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 22 页 - - - - - - - - - 2、功能需求要设计一个良好的公交查询系统,就必须首先明确该应用环境对系统的要求。城市公交查询系统是为了方便市民出行而设计的,因此,该系统需满足以下几方面需求:(1) 站点换乘查询功能:能面向普通市民, 通过
10、普通的浏览器提供按照站名查询的方式,给出起始站点至目的站点的换乘方案。(2) 公交线路查询功能:通过普通的浏览器提供按照线路名称查询的方式,给出该线路按顺序经过的所有站点名称。(3) 公交站点查询功能:通过普通的浏览器提供按照站点名称查询的方式,输出经过该站点的所有公交线路名称。结合上述需求对系统功能设计的要求分析以及对功能模块的划分,从而分析出数据库的数据项。3、E-R 模型图站点作为一个实体名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 22 页 - - - - -
11、- - - - 线路作为一个实体公交查询系统的基本E-R 图三、数据库逻辑设计1、关系表名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 22 页 - - - - - - - - - 2、表描述(1) 表 bus_Stop字段 StopID 为主键,存储站点的编号, 字段 StopName 用来存储站点的名称 ( 如:皖西学院本部 ) ,字段 FirstLetter字段用来存储站点的首写字母。(2) 表 bus_Route 字段 RouteID 为主键, 存储线路的编号,字
12、段 RouteName 用来存储线路的名称 ( 如:11 路( 上行) ,字段 RouteGenName 字段用来存储线路的根名称(如11 路)。(3) 表 bus_Stop_Route 字段 StopID、RouteID、sIndex 为主键,StopID 存储站点的编号, 字段 RouteID用来存储线路的编号, 字段 sIndex 字段用来存储站点在该线路中按顺序的编号。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 22 页 - - - - - - - - - 3
13、、存储过程(1) InquiryT0(站点换乘查询直达乘车方案要执行的一些对数据库的操作) create procedure InquiryT0(myStartStop varchar(32),myEndStop varchar(32) begin drop table if exists temp_nochange; create table temp_nochange select bs1.StopName as StartStop, bs2.StopName as EndStop, br.RouteName as Route, sr2.sIndex-sr1.sIndex as StopC
14、ount from bus_stop_route sr1, bus_stop_route sr2, bus_stop bs1, bus_stop bs2, bus_route br where sr1.RouteID=sr2.RouteID and sr1.sIndexsr2.sIndex and sr1.StopID=(select StopID from bus_stop where StopName=myStartStop) and sr2.StopID=(select StopID from bus_stop where StopName=myEndStop) and bs1.Stop
15、ID=sr1.StopID and bs2.StopID=sr2.StopID and br.RouteID=sr1.RouteID order by (sr2.sIndex-sr1.sIndex) asc; end (2) InquiryT1(站点换乘查询一次换乘乘车方案要执行的一些对数据库的操作) create procedure InquiryT1(myStartStop varchar(32),myEndStop varchar(32) begin drop table if exists temp_once_s1; drop table if exists temp_once; cr
16、eate temporary table temp_once_s1 select r1.StartStop as StartStop, r1.RouteID as Route1, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 22 页 - - - - - - - - - r1.EndStop as Switch, r2.RouteID as Route2, r2.EndStop as EndStop, r1.StopCount+r2.StopCount as StopC
17、ount from bus_RouteT0 r1, bus_RouteT0 r2 where r1.StartStop=(select StopID from bus_stop where StopName=myStartStop) and r1.EndStop=r2.StartStop and r2.EndStop=(select StopID from bus_stop where StopName=myEndStop); create table temp_once select bs1.StopName as StartStop, rt1.RouteName as Route1, bs
18、2.StopName as Switch, rt2.RouteName as Route2, bs3.StopName as EndStop, ts1.StopCount as StopCount from bus_stop bs1,bus_stop bs2,bus_stop bs3,bus_route rt1,bus_route rt2,temp_once_s1 ts1 where ts1.StartStop=bs1.StopID and ts1.Switch=bs2.StopID and ts1.EndStop=bs3.StopID and ts1.Route1=rt1.RouteID a
19、nd ts1.Route2=rt2.RouteID order by ts1.StopCount asc; end (3) InquiryT2(站点换乘查询两次换乘乘车方案要执行的一些对数据库的操作) create procedure InquiryT1(myStartStop varchar(32),myEndStop varchar(32) begin drop table if exists temp_R1; drop table if exists temp_R2; drop table if exists temp_R3; drop table if exists temp_twic
20、e_s1; drop table if exists temp_twice_s2; drop table if exists temp_twice; create temporary table temp_R1 select * from bus_GrouteT0 where 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 22 页 - - - - - - - - - StartStop =(select StopID from bus_stop where StopNa
21、me=myStartStop); create temporary table temp_R3 select * from bus_GrouteT0 where EndStop =(select StopID from bus_stop where StopName=myEndStop); create temporary table temp_twice_s1 select temp_R1.StartStop as StartStop, temp_R1.EndStop as Switch1, temp_R2.EndStop as Switch2, temp_R3.EndStop as End
22、Stop, (temp_R1.MinStopCount+temp_R2.MinStopCount+temp_R3.MinStopCount) as MinStopCount from temp_R1,bus_GrouteT0 temp_R2,temp_R3 where temp_R1.EndStop=temp_R2.StartStop and temp_R2.EndStop=temp_R3.StartStop; create temporary table temp_twice_s2 select ts1.StartStop as StartStop, br0.RouteID as Route
23、1, ts1.Switch1 as Switch1, br1.RouteID as Route2, ts1.Switch2 as Switch2, br2.RouteID as Route3, ts1.EndStop as EndStop, ts1.MinStopCount as MinStopCount from bus_routet0 br0,bus_routet0 br1,bus_routet0 br2,temp_twice_s1 ts1 where ts1.StartStop=br0.StartStop and ts1.Switch1=br0.EndStop and ts1.Switc
24、h1=br1.StartStop and ts1.Switch2=br1.EndStop and ts1.Switch2=br2.StartStop and ts1.EndStop=br2.EndStop; create table temp_twice select bs1.StopName as StartStop, r1.RouteName as Route1, bs2.StopName as Switch1, r2.RouteName as Route2, bs3.StopName as Switch2, r3.RouteName as Route3, bs4.StopName as
25、EndStop, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 22 页 - - - - - - - - - ts2.MinStopCount as StopCount from bus_stop bs1,bus_stop bs2,bus_stop bs3,bus_stop bs4,bus_route r1,bus_route r2,bus_route r3,temp_twice_s2 ts2 where ts2.StartStop=bs1.StopID and ts2
26、.Switch1=bs2.StopID and ts2.Switch2=bs3.StopID and ts2.EndStop=bs4.StopID and ts2.Route1=r1.RouteID and ts2.Route2=r2.RouteID and ts2.Route3=r3.RouteID order by ts2.MinStopCount asc; end 四、软件功能设计1、站点换乘查询输入起始站点和目的站点的名称,系统给出从起始站点到目的站点的乘车方案。例:查询从 皖西学院本部至 客运北站的乘车方案:公交车查询系统站点换乘查询公交线路查询公交站点查询公交车查询系统软件功能图名
27、师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 22 页 - - - - - - - - - 2、公交线路查询输入欲查询的公交线路名称,系统给出该线路按顺序经过的所有站点名称。例:查询 11 路车 经过的所有站点:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 22 页 - - - - - - - - - 3、公交站点查询输入欲查询的站点名称,系统给
28、出经过该站点的所有公交线路名称。例:查询经过九墩塘 的所有站点:五、界面设计1、站点换乘查询界面2、公交线路查询界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 22 页 - - - - - - - - - 3、公交站点查询界面六、结束语这次软件技术实验, 我们小组做的是 “公交查询系统”, 系统以整个六安市区的公交路线为数据来源, 实现了对六安市区公交系统的站点换乘查询、公交线路查询、公交站点查询等功能。以前我写程序时, 如果需要对数据库进行操作, 都是通过将数据库
29、查询语句传递给 PHP语言自带的函数对数据库进行操作,但是这次课程设计, 数据库存储了整个六安市区的公交线路,信息量比较大, 且需多次对数据库执行操作,所以执行效率需要被重点考虑, 由此我想到了使用存储过程。在运行存储过程前, 数据库已对其进行了语法和句法分析,并给出了优化执行方案。 这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。并且它还可以降低网络的通信量,这对于B/S 架构的系统来说同样很重要。 只是这点,就让我从这次课程设计中受益匪浅。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -
30、- - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 22 页 - - - - - - - - - 通过此次课程设计, 使我们加深了对数据库理论的理解和数据库系统实现的方法的应用以及软件工程知识的理解。掌握了数据库应用系统的设计与实现方法,提高了数据库应用系统的设计水平,以及分析问题和解决实际问题的能力。实验中我们进一步巩固了对数据模型,ER图的设计与实现,视图、索引等概念的掌握,加深了对范式的理解,熟练了对SQL语言应用。通过与指导老师的交流 , 接纳老师的意见对系统进行了反复测试与修改,让其更趋完善。 通过这个反复的过程, 使我在关系型数据库理论方
31、面有了崭新的认识和更深刻的体会,为以后的开发积累了更多的经验。七、参考文献【1】 数据库系统概论 (第四版) 王珊、萨师煊高等教育出版社, 2006.5. 【2】PHP 与 MySQL 程序设计 (第 3 版) W.Jason Gilmori 译者: 朱涛江 人民邮电出版社 2009.6 【3】公共交通线路网多条最短路径算法张国伍, 钱大琳 . 八、附:源代码1、config.php(功能说明: 存储一些在整个程序中要用到全局变量。 ) 2、conn.php( 功能说明:实现与数据库的连接。) 3、index.php(功能说明:程序首页,查询输入界面。) 六安公交查询系统 ?php requi
32、re conn.php; $query_all_path=select distinct(RouteGenName) from $table_Route; $info=mysql_query($query_all_path); while($it=mysql_fetch_array($info) echo .$itRouteGenName. ; ? 站点换乘 公交线路 公交站点 起点名称 终点名称 线路名称 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 22 页 -
33、- - - - - - - - 在输入框中直接输入线路名称。输入完成后,直接回车或点击按钮查询。 站点名称 在输入框中直接输入站点名称。输入完成后,直接回车或点击按钮查询。 4、searchss.php(功能说明: 站点换乘查询结果输出页面,输出起始站点之目的站点的乘车方案。) 站点换乘 _六安公交查询系统 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 22 页 - - - - - - - - - ?php require conn.php; $startStop=$
34、_GETstartstop; $endStop=$_GETendstop; $query_CallInquiryT0=call InquiryT0($startStop,$endStop); $query_CallInquiryT1=call InquiryT1($startStop,$endStop); $query_CallInquiryT2=call InquiryT2($startStop,$endStop); $query_nochange=select * from $table_nochange; $result=mysql_query($query_CallInquiryT0)
35、; $info=mysql_query($query_nochange); if ($it=mysql_fetch_array($info) echo 从 $startStop 到 $endStop 乘车方案: ; ? 起始站点 目的站点 乘坐路线 经过的站点数 ?php while ($it) echo ; echo .$itStartStop.; echo .$itEndStop.; echo .$itRoute.; echo .$itStopCount.; echo ; $it=mysql_fetch_array($info); else $query_once=select * fro
36、m $table_once; $result=mysql_query($query_CallInquiryT1); $info=mysql_query($query_once); if ($it=mysql_fetch_array($info) echo 从 $startStop 到 $endStop 需经过一次换乘 乘车方案: ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 22 页 - - - - - - - - - ? 起始站点 乘坐路线 1 中转站点 乘坐路
37、线 2 目的站点 经过的站点数 ?php while ($it) echo ; echo .$itStartStop.; echo .$itRoute1.; echo .$itSwitch.; echo .$itRoute2.; echo .$itEndStop.; echo .$itStopCount.; echo ; $it=mysql_fetch_array($info); else $query_twice=select * from $table_twice; $result=mysql_query($query_CallInquiryT2); $info=mysql_query($
38、query_twice); if ($it=mysql_fetch_array($info) echo 从 $startStop 到 $endStop 需经过两次换乘 乘车方案: ; ? 起始站点 乘坐路线 1 中转站点 1 乘坐路线 2 中转站点 2 乘坐路线 3 目的站点 经过的站点数 ?php while ($it) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 22 页 - - - - - - - - - echo ; echo .$itStartStop.;
39、 echo .$itRoute1.; echo .$itSwitch1.; echo .$itRoute2.; echo .$itSwitch2.; echo .$itRoute3.; echo .$itEndStop.; echo .$itStopCount.; echo ; $it=mysql_fetch_array($info); else ? 没有换乘方案 , 也许是以下原因的中一个: 您要查询的路线要转三次车以上 , 本站只提供两次转车 , 如有不便 , 请见谅 ! 没有输入准确的站点名称, 你可以从输入提示站点中选取站点来查询 5、searchpath.php(功能说明: 公交线路
40、查询结果输出页面,输出该线路按顺序经过的所有站点名称。) 公交线路 _六安公交查询系统 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 22 页 - - - - - - - - - ?php require conn.php; $path=$_GETpath; $query_RouteID=select RouteID from $table_Route where RouteGenName=$path order by RouteID asc; $info=mysql
41、_query($query_RouteID); if ($it=mysql_fetch_array($info) echo 查询结果 :; $pathUp=$itRouteID; $it=mysql_fetch_array($info); $pathDown=$itRouteID; $query_pathUp=select StopName from $table_Stop,$table_Stop_Route where $table_Stop_Route.RouteID=$pathUp and $table_Stop.StopID= $table_Stop_Route.StopID orde
42、r by sIndex asc; $info=mysql_query($query_pathUp); if ($it=mysql_fetch_array($info) echo $path.(上行):; echo ; echo $itStopName; while ($it=mysql_fetch_array($info) echo .$itStopName; echo ; $query_pathDown=select StopName from $table_Stop,$table_Stop_Route where $table_Stop_Route.RouteID=$pathDown an
43、d $table_Stop.StopID= $table_Stop_Route.StopID order by sIndex asc; $info=mysql_query($query_pathDown); if ($it=mysql_fetch_array($info) echo $path.(下行):; echo ; echo $itStopName; while ($it=mysql_fetch_array($info) echo .$itStopName; echo ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名
44、师精心整理 - - - - - - - 第 20 页,共 22 页 - - - - - - - - - else echo 搜索结果:没有 $path 这条线路 , 请输入准确线路 ! ; ? 6、searchstop.php(功能说明: 公交站点查询结果输出页面,输出经过该站点的所有公交线路名称。) 公交站点 _六安公交查询系统 ?php require conn.php; $stop=$_GETstop; $query_stop=select distinct(RouteGenName) from $table_Route,bus_Stop,$table_Stop_Route where
45、$table_Stop.StopName=$stop and $table_Stop.StopID=$table_Stop_Route.StopID and $table_Stop_Route.RouteID=$table_Route.RouteID; $info=mysql_query($query_stop); if ($it=mysql_fetch_array($info) echo 查询结果 :; echo 经过 .$stop. 的线路 : ; echo $itRouteGenName; while ($it=mysql_fetch_array($info) echo .$itRouteGenName; echo ; else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 22 页 - - - - - - - - - echo 搜索的结果如下 : 没有 $stop 这个站点 , 请输入准确站点 ! ; ? 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 22 页 - - - - - - - - -