交通信息网上查询系统的设计与实现

交通信息网上查询系统的设计与实现[java毕业论文下载]

交通信息网上查询系统的设计与实现

摘  要

当前我国交通网上信息系统的发展处于一个较落后的水平,广大乘客可以获得信息的方式很少,通常依赖于火车飞机时刻表,而汽车只能到车站查询。为了解决这种问题,加快发展交通信息化,设计一个交通信息网上查询系统是具有一定实际应用意义的。在此背景下,本文基于ASP.NET设计开发了一套B/S结构的交通信息网上查询系统。本文中首先考虑了我国交通的现状和不同乘客的实际要求,分析了此系统应该具有的功能;其次对系统的主要功能模块进行了详细地描述,其中主要包括查询模块(包括按线路查询、按站点查询和按两站点查询)和管理更新模块(包括公交站点管理和公交线路管理,以及对管理员的管理),最后结合系统开发阶段和调试阶段发现的问题,提出了系统需要完善的地方,总结了开发此系统所取得的经验和体会。

 

关键词交通;ASP.NET;查询;B/S结构;数据库


The Design and Implementation of Online Traffic Information System

Abstract

Nowadays, the development of online traffic information system in China is relatively backward. The way in which most passengers can gain information is too little. So they're often dependent on the train or aircraft Schedules, however, which can only be inquired in the station. To solve this problem and speed up the development of transport information, designing an online traffic information query system is a practical application. In this context, this paper, based on ASP.NET development platform designs and develops a set of B/S structured online traffic information inquiry system.

The paper firstly considers our present traffic status and different requirements of passengers, analyses the required function of the system.

And then gives a detailed description of the main functional modules, mainly including the Query Module (including line inquiries, Inquiries by one or two sites) and the update & management module (including transit-site management, bus -line management and administrator management).

In the end, according to the problems found in the development and debugging phase, propose what the system should be improved and sum up the development experiences.

 

Key words: Transportation, ASP.NET, Inquiry, B/S, Data Base

 

目  录

论文总页数:24页

1 引言 1

1.1 课题背景 1

1.2 国内研究现状 1

1.3 本课题研究的意义 1

1.4 本课题的研究方法 1

1.5 本文所做工作 1

2 设计环境 2

2.1 计算机网络 2

2.2 系统运行环境 2

2.3 系统开发工具 2

2.4 开发工具介绍 2

2.4.1 Dreamweaver介绍 2

2.4.2 SQL2000介绍 2

3 设计理论依据 2

3.1 数据库技术 2

3.1.1 数据库的体系结构 3

3.1.2 数据库管理系统(DBMS) 3

3.2 ASP.NET语言介绍 4

3.2.1 Asp.net与asp的区别 4

3.2.2 ASP.NET的工作原理 5

3.3 B/S结构介绍 5

4 系统构架 7

4.1 系统概述 7

4.2 系统功能简述 7

5 数据库设计 8

5.1 概念设计 8

5.2 表的设计 10

6 各功能模块的详细说明 11

6.1 查询模块功能设计 11

6.1.1 直达查询 12

6.1.2 一次转乘查询 13

6.1.3 二次转乘查询 14

6.1.4 高级查询 15

6.1.5 城市查询 15

6.1.6 路线查询 15

6.2 后台管理模块功能设计 16

6.2.1 管理员信息管理 17

6.2.2 交通信息修改功能 17

6.2.3 城市信息修改功能 19

7 软件测试 21

结    论 21

参考文献 22

致    谢 23

声    明 24

 

 

引言

1.1  课题背景

交通信息网上查询,就是将各类交通班次的出发时间、经过城市、所需价格等相关信息放在WEB服务器中,并通过网络上的计算机终端通过特定的条件将其检索出来。随着国内经济的不断发展,交通条件的发展呈现出无法比拟的优势:数量上的海量化、繁多的种类、分布开放、时效性、高增值性等。目前类似的时刻表都只是列出了相关车次的信息,并不能按要求检索,还需要旅客自己在返回的信息中去比对和选择,而返回的信息可能是海量的,一个时刻表查询平台只提供一种交通工具,要考虑多种交通工具往往还需要查询几个平台。

1.2  国内研究现状

通过互联网查询的资料来看,国内目前类似的系统比较多的是公交查询系统,而城际之间的交通查询系统并不过见,较多的仍然是以时刻表为基础的查询系统,其缺点在于不能根据特定条件进行检索,转乘查询也不支持,由于交通工具单一,一个系统只支持火车或飞机,加之服务与成本意识较为薄弱,使城际间的交通信息查询常常给旅客带来困绕。

1.3 本课题研究的意义

旅客是交通体系赖以生存和发展的根本,尊重旅客,以旅客的需求为中心,不只是一句口头上的空话,而要付诸行动。因此希望通过此次调查研究,设计出一个更适合旅客的交通信息查询系统,在有限的成本范围内提高旅客的满意度,在侧面完善我国的交通体制。并逐步形成一个完整的交通信息查询体制,方便以后旅客的查询和相关部门的统计。

1.4 本课题的研究方法

通过访问现有网上的火车时刻查询系统、公交查询系统等,做出分析报告,然后通过.net语言和SQL2000来进行开发。在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法,然后用这个流程进行本次开发。

1.5 本文所做工作

首先介绍了交通信息网上查询系统的开发环境以及选用的开发工具与数据库的关系,阐明了计算机互联网络的概念。并对数据库的体系结构、DBMS进行了介绍;从工作原理入手,介绍asp.net;并且介绍了B/S模式的概念、特点;用软件工程的方法分析交通信息网上查询系统,对整个系统进行了需求分析、功能模块划分,并通过ER图对数据库进行概念设计;对交通信息网上查询系统的具体设计,描述了查询、录入模块的实现过程。最后,在结束语的总结部分指出了系统的亮点以及不足之处,简单介绍了自己开发过程中的体会与心得:在摸索中实践,在实践中摸索。

设计环境

2.1 计算机网络

计算机网络是指将多台具有独立功能的计算机,通过通信线路和通信设备连接起来,在网络软件的支持下实现数据通信和资源共享的计算机系统。

计算机网络的规模有大有小,大的可以覆盖全球,小的仅局限于一个办公室。现在一般按照网络覆盖的地理范围将计算机网络分为三类:局域网(LAN)、城域网(MAN)、广域网(WAN)。

2.2 系统运行环境

该系统采用Browser/Server模式进行设计:在服务器上运行Web发布服务器、数据库程序,服务器操作系统为WindowsNT/2000/XP/2003 server,客户机操作为Windows9×/ NT/2000/XP/2003,其上运行浏览器程序,服务器和客户机可为同一设备。

2.3 系统开发工具

该系统采用.NET环境,运用Dreamweaver进行开发,数据库服务器为SQL2000,WEB发布服务器为Windows 2003 Server;客户端使用浏览器运行程序,整个系统调试成功。

2.4 开发工具介绍

2.4.1 Dreamweaver介绍

Dreamweaver是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器,它是第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页。

DREAMWEAVER特点:最佳的制作效率、网站管理、无可比拟的控制能力。

2.4.2 SQL2000介绍

SQL Server 2000 是Microsoft公司推出的SQL Server数据库管理系统的最新版本,该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点。可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。 

设计理论依据

3.1 数据库技术

数据库技术作为数据管理技术,是计算机软件领域的一个重要分支,产生于60年代末。现已形成相当规模的理论体系和实用技术。优秀的数据库设计是应用成功的基石。万万丈高楼平地起,数据库设计如同高楼的基石,是开发高品质应用的前提。

3.1.1 数据库的体系结构

数据的体系结构分成三级:内部级(Internal),概念级(Conceptual)和外部级(External)。这个三级结构有时也称为“三级模式结构”。

外部级:最接近用户,是单个用户所能看到的数据特性。单个用户使用的数据视图的描述称为“外模式”。

概念级:涉及到所有用户的数据定义、是全局的数据视图。全局视图的描述称为“概念模式”。

内部级:最接近于物理存储设备,涉及到实际数据存储的结构物理存储数据视图的描述称为“内模式”。

数据库的三级模式结构是数据的三个抽象级别。它把数据的具体组织留给DBMS去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储,这样就减轻了用户使用系统的负担。

3.1.2 数据库管理系统(DBMS

数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、查询、更新及各种控制,都是通过DBMS进行的。

在不同的计算机系统中,由于缺乏统一的标准,即使同种数据模型的DBMS,它们在用户接口、系统功能方面也常常是不相同的。

用户对数据库进行操作,是由DBMS把操作从应用程序带到外部级、概念级、再导向内部级,进而操作存储器中的数据。DBMS的主要目标,是使数据作为一种可管理的资源处理。

DBMS的主要功能为:

数据库定义功能:DBMS提供数据定义语言(DDL)定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映象,定义数据的完整性、安全控制等约束。因此,在DBMS中应包括DDL的编译程序。

数据库的操纵功能:DBMS提供数据操纵语言(DML)实现对数据库中数据的操作。基本的数据操作分成两类四种:检索(查询)、更新(插入、删除、修改)。

数据库的保护功能:数据库中的数据是信息社会的战略资源,对数据的保护是至关重要的大事。DBMS对数据库的保护主要通过四个方面实现:

数据库的恢复:在数据库被破坏或数据不正确时,系统有能力把数据库恢复到正确的状态。

数据库的并发控制:DBMS的并发控制子系统能防止错误发生,正确处理好多用户、多任务环境下的并发操作。

数据库的完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作。

数据库的安全性控制:防止未经授权的用户蓄谋或无意地存取数据库中的数据,以免数据的泄露、更改或破坏。

数据库的存储管理:把各种DML语句转换成低层的文件系统命令,起到数据的存储、检索和更新的作用。

数据库的维护功能:它有许多实用程序提供给数据库管理员:

数据装载程序

备份程序

文件重组织程序

性能监控程序

数据字典:数据库系统中存放三级结构定义的数据库称为数据字典(DD)。对数据库的操作都要通过访问DD才能实现,通常DD中还存放数据库运行时的统计信息。

3.2 ASP.NET语言介绍

3.2.1 Asp.net与asp的区别

1. 效率

Asp是一个脚本编程环境,只能用VBScript或者JavaScript这样的非模块化语言来编写。当ASP程序完成之后,在每次请求的时候解释执行。这就意味着它在使用其他语言编程写大量组件的时候会遇到困难,并且无法实现对操作系统的低层操作。ASP.NET则是建立在.NET Framework之上的,他可以使用Visual Basic、C++这样的模块化程序设计语言,并且它在第一次执行时进行编译,之后的执行不需要重新编译就可以直接运行,所以速度和效率比ASP提高很多。

2. 可重用性

在编写ASP应用程序的时候,ASP代码和HTML混合在一起。只要需要,就可以在任意的一个位置插入一段代码来实现特定的功能。这样方法表面上看起来很方便,但在实际的工作中会产生大量繁琐的页面,很难读懂,导致代码维护很困难。ASP.NET则可以实现代码和内容的完全分离,使得维护方便。

3. 代码量

ASP对所有要实现的功能均需要通过编写代码来实现。在ASP.NET中,程序员只要预先说明,ASP.NET就可以自动实现这样的功能。所以相对来说,要实现同样的功能,使用ASP.NET比使用ASP的代码量要少的多。

3.2.2 ASP.NET的工作原理

 

 
 

ASP.NET的工作原理是:首先,客户端浏览器有一个HTTP请求发送到Web服务器,要求访问一个Web网页。然后,Web服务器通过分析客户HTTP请求来定位所请求网页的位置。如果所请求的网页的文件名后缀是aspx,那么就把这个文件传诵aspnet_isapi.dll进行处理,由aspnet_isapi.dll把ASP.NET代码提交给CLR。如果以前没有执行过这个程序,那么就由CLR编译并执行,得到纯HTML结果;如果已经执行过这个程序,那么就直接执行编译好的程序并得到纯HTML结果。最后,把这些纯HTML结果传回到浏览器作为HTTP响应,浏览器收到这个响应之后,就可以显示Web网页。

 

图1 .NET的组成部分

3.3 B/S结构介绍

B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。

 

 
 

图2 B/S结构图

 

B/S结构采用星形拓扑结构建立企业内部通信网络或利用Internet虚拟专网(VPN)。前者的特点是安全、快捷、准确。后者则具有节省投资、跨地域广的优点。须视企业规模和地理分布确定。企业内部通过防火墙接入Internet,在整个网络采用TCP/IP协议。

B/S架构具备极大的优越性

1、 面向电子商务时代的技术

将来所有的应用系统几乎都在互联网或企业内部广域网上运行,发展电子商务成为企业不可避免的信息化道路。B/S架构的软件正是电子商务的基石,正是这类软件使得移动办公和分布式协同工作真正成为现实。无论在世界的那个角落,只需要一台可以联网的设备(计算机、PDA甚至手机)都可以方便地与客户联系和与他人协同工作。

2、 软件操作、维护和升级方式的革命

软件系统的改进和升级越来越频繁,B/S架构的产品在维护和升级方面具备显著的优势。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只对服务器进行,通过远程连接服务器,异地的运维人员甚至于可以做到远程维护和升级,这对人力、时间、费用的节省是相当惊人的。

所有的客户端只是浏览器,所有的操作都和上网浏览网页类似,使用者接受的培训也仅限于业务逻辑而无需将大量精力浪费学习软件操作上。

3、 系统整合

无论是办公自动化(OA)系统,人力资源(HR)系统,客户关系管理(CRM)系统,ERP等等,发展的趋势是不断融合。而采用统一的B/S结构开发的产品无论是现在还是将来都是最好的选择,它提供了真正意义上无缝地与其它系统进行整合的方案。

系统构架

4.1 系统概述

本系统是在全国城际交通路线基础上,将各交通信息进行整合查询的系统,是为了方便旅客了解各交通路线情况而开发设计的。本系统根据录入的数据,根据不同的要求,可以查询出各时段、班次、城市的交通信息。另外,要达到对不能直达的城市进行转乘查询的目的。功能范围有:按城市查询、按班次查询、普通查询、管理员对交通、城市、及管理员信息的管理。根据这些,构成了该系统。

4.2  系统功能简述

1) 交通信息查询功能:

a) 普通查询:输入最简洁的查询方式,用户只需要输入出发城市和终点城市就可进行交通信息查询,查询结果为所有符合条件的公路、铁路及航空信息的综合显示。

b) 城市查询:输入想要了解的城市名称,即可查询出所有经过该城市的所有交通信息,以及相关的城市介绍。。

c) 班次查询:在知道班次的前提下,可以对该班次进行详细的查询。

d) 高级查询:用户可根据自己特定的条件,在系统上查询交通信息。如相关时间、价格等。

2) 交通信息更新功能:

a) 修改信息:在原有信息的基础上,对已改变的信息进行修改,以达到正确性和时效性。

b) 添加信息:当有新的交通信息出现后,需要及时正确的添加该信息,确保系统的时效性。

c) 删除信息:当某交通信息被废弃时,应及时的删除该信息,以免对查询的结果产生错误的影响和对数据库造成不必要的负担。

3) 城市信息修改功能:

城市的添加是在添加交通信息的时候自动添加的,故此功能里面只有修改城市信息、修改城市名称和删除城市的功能。当城市尚有交通工具抵达的时候,不可将该城市删除。

4) 管理员信息管理功能:

管理员登陆管理页面以后,可以根据需要,修改自己的个人资料,以方便初始管理员联系,也可修改自己的登陆密码。初始管理员除了可以修改自己的资料以外,还可以帮助其他管理员修改资料。当其他管理员遗失密码后,可由初始管理员将其密码改回。

 

 
 

以下为功能构成图和查询流程图。

 

 

 
 

图3 系统功能构成图

 

图4 查询流程图

数据库设计

5.1 概念设计

实体和属性的定义如下:

城市(城市编号,城市名称,城市介绍)

线路(线路编号,种类,车型,频率,班次)

交通关系(线路编号,城市编号,交通关系编号,出发时间,到达时间,到

 
 

达顺序,价格1……价格15)

 

 

 
 

图5 E-R图

 

 

 
 

图6 城市属性图

 

 

图7 路线属性图

 

 
 

图8 交通关系属性图

 

5.2 表的设计

数据库中建立了4张表,用于记录各项信息。

首先建立了管理员资料表users.dbf,用来存储管理员等登陆信息以及相关个人资料,具体字段如下:

表1 users表

字段名

关键字设置

数据类型

字段说明

ID

主关键字

Int

管理员编号

loginID

 

Varchar

登陆ID

Password

 

Varchar

登陆密码

Name

 

Varchar

名称

Sex

 

Varchar

性别

Email

 

Varchar

email

然后,建立了城市信息表ctxx.dbf,用来存储城市的相关信息,字段如下:

表2 ctxx表

字段名

关键字

数据类型

字段说明

cityID

主关键字

Int

城市ID

Cityname

 

Varchar

城市名

Cityjs

 

Varchar

城市介绍

 

接下来,是交通工具信息表jtgjxx.dbf,用来存储交通工具的相关信息,字段如下:

表3 jtgjxx表

字段名

关键字

数据类型

字段说明

TID

主关键字

Int

交通工具ID

Zl

 

Varchar

种类

Bc

 

Varchar

班次

Cx

 

Varchar

型号

Pl

 

Varchar

频率

 

最后,建立了交通关系表bus.dbf,用来存储交通工具与城市的对应关系,字段如下:

 

表4 bus表

字段名

关键字

数据类型

字段说明

ID

主关键字

Int

交通关系ID

 TID

外关键字

Int

交通工具ID

cityID

外关键字

Int

城市ID

Stops

 

Int

到达顺序

Gettime

 

Datetime

到达时间

Gotime

 

Datetime

出发时间

C1

 

Varchar

到达第1个城市的价格

C2

 

Varchar

到达第2个城市的价格

C3

 

Varchar

到达第3个城市的价格

C4

 

Varchar

到达第4个城市的价格

C5

 

Varchar

到达第5个城市的价格

C6

 

Varchar

到达第6个城市的价格

C7

 

Varchar

到达第7个城市的价格

C8

 

Varchar

到达第8个城市的价格

C9

 

Varchar

到达第9个城市的价格

C10

 

Varchar

到达第10个城市的价格

C11

 

Varchar

到达第11个城市的价格

C12

 

Varchar

到达第12个城市的价格

C13

 

Varchar

到达第13个城市的价格

C14

 

Varchar

到达第14个城市的价格

C15

 

Varchar

到达第15个城市的价格

各功能模块的详细说明

6.1 查询模块功能设计

本模块机能是从数据库中,根据所要求的查询条件以及查询方法,在数据库中进行交通信息的查询和筛选,并以表格的方式表现出来。查询的总体思路为:

由于交通班次具有方向性,所以在交通关系表中特别设定了stops关键字,用来存放交通信息的到达顺序,并且在每次查询的时候都加入查询条件start.stops<end.stops,这样就能保证每条查询出的交通路线都具有正确的方向性,以及避免了交通路线重复的情况。而查询的总体思路是把城市作为结点,交通关系作为通路来构成连通的有向图,然后用广度优先的方法进行遍历为基础。为了提高查询效率,在构造查询的时候,又是以起点和终点的结点构造个子的最小生成树,通过查找其交叉结点或通路,我们就可以得到我们的查询结果。

 

 
 

在查询系统的主页面中,将要查询的信息输入文本,并选择方法提交以后,查询系统将输入的信息存入session变量中,并根据不同的查询方法和种类,跳转到不同的页面进行处理。查询主页面的主要输入页面如下:

 

图9 查询主界面

根据查询的方法和种类不同,查询共分为6个部分:

6.1.1 直达查询

在直达查询中,可以查询到从起点城市出发到终点城市,可以乘坐的交通工具基本信息,以及起点城市的出发时间、终点城市到达时间、其间该班次可能经过的城市的到达时间和出发时间。

通过查询总体思路的派生,直达查询的主要查询方法简化为以起点城市和终点城市作为结点,查询出连通该2个结点的通路,该通路即为我们需要查询的交通路线。当用户以直达查询提交以后,系统将会跳转到chaxun.aspx页面。在打开chaxun.aspx页面后,后台将用以存入session变量中的起点城市和终点城市来查询数据库,并测试有无符合条件的交通工具,其SQL语句为:

select a.tid,b.gotime,a.gettime,b.stops as stopsb,a.stops as stopsa from

//将所有经过终点城市的车信息作为子集合

 (select * from bus where cityid=(select cityid from ctxx where cityname=@ends))A,

//将所有经过起点城市的车的信息作为子集B

(select * from bus where cityid=(select cityid from ctxx where cityname=@start))B

 where A.stops>B.stops and a.tid=b.tid

当查询到交通路线时,进行需要返回的相关信息查询并显示;若没有,则返回“无班次到达”的结果,并输出超连接,可连接到chaxun2.aspx页面进行一次转乘查询。

6.1.2 一次转乘查询

在一次转乘查询中,可以查询到从起点城市出发到终点城市,其间要经过的一个城市,以及要乘坐的2个交通工具的基本信息和中转城市的到达时间以及出发时间。

通过查询总体思路的派生,一次转乘查询的主要查询方法简化为以起点城市和终点城市作为结点,分别查询出连通该2个结点的通路,然后在这些通路的基础上,查找他们交汇的结点,此时,这些结点就为我们一次转乘的中转城市,而分别连通起点和终点结点的通路即为我们需要查询的交通路线。当用户以一次转乘查询提交或者在直达查询后通过超连接跳转到chaxun2.aspx页面。在chaxun2.aspx中,后台首先测试其中转城市是否存在,其SQL语句为:

select cityid,cityname from ctxx where cityid in

// 将所有经过起点城市的交通信息作为子集a

(select b.cityid from (select *  from bus where cityid=(select cityid from ctxx where cityname=@start))a,

//将所有经过起点城市的车的信息(主要查询到达城市)作为子集b

(select *  from bus where tid in(select tid from bus where cityid=(select cityid from ctxx where cityname=@start)))b,

//将所有经过终点城市的车的信息(主要查询到达城市)作为子集c

(select *  from bus where tid in(select tid from bus where cityid=(select cityid from ctxx where cityname=@ends)))c,

//将所有经过终点城市的交通信息作为子集d

(select *  from bus where cityid=(select cityid from ctxx where cityname=@ends))d

//起点和终点能到达的城市中相同的城市

where A.stops  < B.stops and a.tid=b.tid and c.stops  < d.stops and c.tid=d.tid and b.cityid=c.cityid) 

若存在,则首先查询出中转城市名,即我们查询出通路的交叉结点,用dataset对象的table属性将返回结果保存起来。然后利用for循环,每次循环首先输出起点到中转城市的交通信息,然后再输出中转城市到终点城市的交通信息。

否则返回“无班次到达”的结果,并输出超连接,转到2转查询的chaxun3.aspx页面。

6.1.3   二次转乘查询

在二次转乘查询中,可以查询到从起点城市出发到终点城市,其间要经过的2个城市,以及要乘坐的3个交通工具的基本信息和中转城市的到达时间以及出发时间。

通过查询总体思路的派生,二次转乘查询的主要查询方法简化为以起点城市和终点城市作为结点,分别查询出连通该2个结点的所有通路。再利用集合的方法,将连通起点城市结点的通路连通的所有城市设为集合A,将连通终点城市结点的通路连通的所有城市设为集合B,这样,我们就只需要将集合A的城市作为起点结点,将集合B的城市作为终结点,进行直达查询算法,若查询有结果,就表示我们二次转乘查询成功。为了不让我们的查询结果中出现循环的现象,在查询条件中还需要加上所有的中转城市与起点和终点城市不相同的条件。

进入chaxun3.aspx页面后,还是进行查询结果测试,其SQL语句为:

select a.cityid, b.tid,b.cityid,bus.tid ,c.cityid,c.tid,d.cityid from bus,

//将所有经过起点城市的交通信息作为子集a

(select *  from bus where cityid=(select cityid from ctxx where cityname=@start))a,

//将所有经过起点城市的车的信息(主要查询到达城市)作为子集b

(select * from bus where tid in(select tid from bus where cityid=(select cityid from ctxx where cityname=@start)))b,

//将所有经过终点城市的车的信息(主要查询到达城市)作为子集c

(select * from bus where tid in(select tid from bus where cityid=(select cityid from ctxx where cityname=@ends)))c,

//将所有经过终点城市的交通信息作为子集d

(select *  from bus where cityid=(select cityid from ctxx where cityname=@ends))d

//从起点城市能到达的所有城市

where A.stops  < B.stops and a.tid=b.tid and

//从终点城市能到达的所有城市

c.stops  < d.stops and c.tid=d.tid

//在子集合b和子集c中有交通关系存在

and bus.tid in (select bus.tid from bus where cityid=b.cityid) and bus.tid in (select bus.tid from bus where cityid=c.cityid) and bus.stops='1'

//经过的4个城市各不相同。

and a.cityid<>b.cityid and a.cityid<>c.cityid and a.cityid<>d.cityid and b.cityid<>c.cityid and b.cityid<>d.cityid and c.cityid<>d.cityid 。

    若查询有结果,则利用dataset对象中的table属性将需要的信息保存下来,然后再根据其信息进行各交通工具和城市信息的查询和输出;若查询无结果,则执行输出:“现有条件查询不到符合要求的结果”并结束。

6.1.4 高级查询

 

 
 

通过高级查询的超连接,可以跳转到高级查询页面gjcx.aspx。在此页面,用户除了可以输入起点城市和终点城市以外,还可以根据自己的需要,选择性的输入需要限定的时间、价格等信息,如下图所示:

 

图10 高级查询

当用户在高级查询页面提交查询后,首先测试是否有从起点城市到达终点城市的交通路线,其SQL语句与直达查询相同。当查询到交通路线时,进行需要返回的相关信息查询并显示;若没有,则返回“无班次到达”的结果。在此页面中,在测试路线的SQL语句是在直达查询的SQL语句的基础上,整合了页面提交的限定条件,并根据条件查询和输出结果。

6.1.5 城市查询

在主页面中,还有城市查询的功能,其主要功能是查询所有抵达该城市的交通路线的基本信息及该交通路线以后可以抵达的城市、另外还有城市简介。

在跳转到城市查询city.aspx页面后,后台程序会调用session变量中的城市名进行是否有交通路线连通的测试,其SQL语句为:

select * from jtgjxx where tid in ( select tid from bus where cityid=(select cityid from ctxx where cityname=@city)) 

若没有,则输出:“尚无该城市信息”;若有,则首先在ctxx.dbf中查询出该城市的简介,然后输出,最后查询交通路线的相关信息,依次输出。

6.1.6 路线查询

在主页面中,还有城市查询的功能,其主要功能是查询指定交通路线的信息,输出信息包括种类、班次、车型、频率、经过城市名、在该城市的出发时间以及抵达该城市的时间。

在路线查询line.aspx中,其功能比较简单,多数与city.aspx的功能相似,只是查询的数据表和输出内容差异,故在此不多做介绍了。

6.2 后台管理模块功能设计

 

 
 

在需要对系统进行后台管理时,首先需要进行管理员身份登陆,其页面如下:

 

图11 管理员登陆

在登陆页面login.aspx中,登陆首先触发后台程序,在users.dbf中查询对应loginID的密码,然后将用户输入的密码用MD5加密后,与之对面,相同则通过登陆,将相关信息保存到session变量中,以便通过以后页面的验证,然后跳转到admin.aspx页面,否则登陆失败。

 

 
 

登陆以后,系统进入admin.aspx页面,界面如下:

 

图12 管理主界面

如上所示,admin.aspx是一个由3个页面所组成个框架,顶部为admin_top.aspx,主要显示当前系统时间和登陆ID;左侧为admin_left.aspx,全部由超连接组成,为跳转到其他功能页面所准备;右下方最大的为main.aspx,用于提醒管理员未添加完整的信息,也是框架中用来显示其他功能页面的区域。

在所有的后台页面中,后台程序都会先判断session中是否含有登陆信息,若没有则跳转到login.aspx。

在左侧的注销功能中,首先跳转到cancellogin.aspx页面,该页面的后台程序将清空session中与登陆有关的所有变量,然后跳转到login.aspx页面。

6.2.1 管理员信息管理

管理员信息管理由修改个人资料和管理员管理组成。而管理员管理需要初始管理员身份,一般管理员无法对其操作。

1、 修改个人资料

进入修改个人资料chggrzl.aspx页面,首先利用session变量中的登陆信息查询users.dbf表,再用dataset对象将登陆管理员的相关信息输出,然后利用文本框录入信息对其进行修改。

2、 管理员管理

 

 
 

在管理员管理glygl.aspx页面中,后台程序除了判断登陆条件以外,还指定了登陆ID必须为admin,且所有的函数都含有此判断,其目的是防止一般管理员越权操作。管理员管理界面如下:

 

图13 管理员管理界面

在此页面中,首先是调用datagrid控件输出所有管理员信息,并用其控件的编辑功能对其需要的项目进行修改,而密码在修改后会通过MD5加密后再存入数据库。下方有添加和删除管理员的项目。

交通信息网上查询系统的设计与实现[点击下载]

如需要全部源码,联系QQ:2812491287如需要全部源码,联系QQ:2812491287

评论