【毕业设计】ASP.NET交通信息网上查询系统的设计与实现(源代码+论文+开题报告)

22 篇文章 3 订阅
5 篇文章 0 订阅
本文档详细介绍了交通信息查询系统的设计与实现,包括系统概述、功能模块、数据库设计和查询算法。系统提供普通查询、城市查询、班次查询和高级查询等功能,支持直达、一次转乘和二次转乘查询。后台管理模块则包含信息修改、添加和删除。系统通过广度优先搜索等算法处理查询,确保查询结果的正确性和时效性。
摘要由CSDN通过智能技术生成


目录

在这里插入图片描述

一、系统设计

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

1.2 系统功能简述

  1. 交通信息查询功能:

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

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

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

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

  1. 交通信息更新功能:

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

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

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

  1. 城市信息修改功能:

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

  1. 管理员信息管理功能:

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

在这里插入图片描述
1 数据库设计
1.1 概念设计
实体和属性的定义如下:

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

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

交通关系(线路编号,城市编号,交通关系编号,出发时间,到达时间,到
达顺序,价格1……价格15)

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

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

二、系统实现

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

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

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

在这里插入图片描述
根据查询的方法和种类不同,查询共分为6个部分:

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

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


select a.tid,b.gotime,a.gettime,b.stops as stopsb,a.stops asstopsa from
//将所有经过终点城市的车信息作为子集合
 (select * from bus wherecityid=(select cityid from ctxx where cityname=@ends))A,
//将所有经过起点城市的车的信息作为子集B
(select * from bus where cityid=(select cityid from ctxx wherecityname=@start))B
 where A.stops>B.stopsand a.tid=b.tid

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

1.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 wheretid in(select tid from bus where cityid=(select cityid from ctxx wherecityname=@start)))b,
//将所有经过终点城市的车的信息(主要查询到达城市)作为子集c
(select *  from bus wheretid in(select tid from bus where cityid=(select cityid from ctxx wherecityname=@ends)))c,
//将所有经过终点城市的交通信息作为子集d
(select *  from bus wherecityid=(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页面。

1.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.cityidfrom bus,
//将所有经过起点城市的交通信息作为子集a
(select *  from bus wherecityid=(select cityid from ctxx where cityname=@start))a,
//将所有经过起点城市的车的信息(主要查询到达城市)作为子集b
(select * from bus where tid in(select tid from bus wherecityid=(select cityid from ctxx where cityname=@start)))b,
//将所有经过终点城市的车的信息(主要查询到达城市)作为子集c
(select * from bus where tid in(select tid from bus wherecityid=(select cityid from ctxx where cityname=@ends)))c,
//将所有经过终点城市的交通信息作为子集d
(select *  from bus wherecityid=(select cityid from ctxx where cityname=@ends))d
//从起点城市能到达的所有城市
where A.stops  <B.stops and a.tid=b.tid and
//从终点城市能到达的所有城市
c.stops  < d.stops andc.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) andbus.stops='1'
//经过的4个城市各不相同。
and a.cityid<>b.cityid and a.cityid<>c.cityid anda.cityid<>d.cityid and b.cityid<>c.cityid andb.cityid<>d.cityid and c.cityid<>d.cityid 
若查询有结果,则利用dataset对象中的table属性将需要的信息保存下来,然后再根据其信息进行各交通工具和城市信息的查询和输出;若查询无结果,则执行输出:“现有条件查询不到符合要求的结果”并结束。

1.1.4 高级查询

通过高级查询的超连接,可以跳转到高级查询页面gjcx.aspx。在此页面,用户除了可以输入起点城市和终点城市以外,还可以根据自己的需要,选择性的输入需要限定的时间、价格等信息,如下图所示:
在这里插入图片描述
当用户在高级查询页面提交查询后,首先测试是否有从起点城市到达终点城市的交通路线,其SQL语句与直达查询相同。当查询到交通路线时,进行需要返回的相关信息查询并显示;若没有,则返回“无班次到达”的结果。在此页面中,在测试路线的SQL语句是在直达查询的SQL语句的基础上,整合了页面提交的限定条件,并根据条件查询和输出结果。

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

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

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

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

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

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

1.2 后台管理模块功能设计

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

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

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

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

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

源文件

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值