计算机毕业设计介绍:
二次转乘查询
在二次转乘查询中,可以查询到从起点城市出发到终点城市,其间要经过的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属性将需要的信息保存下来,然后再根据其信息进行各交通工具和城市信息的查询和输出;若查询无结果,则执行输出:“现有条件查询不到符合要求的结果”并结束。
〖资料来源:计算机毕业论文 www.xiaoniu168.com〗
第9页为计算机毕业论文部分......