重分相求:公交换乘查询解决方案 分不够再加 ( 积分: 300 )

  • 主题发起人 主题发起人 iloveqq
  • 开始时间 开始时间
I

iloveqq

Unregistered / Unconfirmed
GUEST, unregistred user!
求公交换乘查询解决方案,数据库结构为
ID
Name //线路名称
BusType //车辆类型 0:城区普线 1:城区专线 2:轨道列车 3:航空专线 4:郊区普线 5:郊区专线 6:旅游线路 7:通勤普线 8:小公共汽车线 9:远城区专线
courseType //线路类型 0:上下行 1:环线
starttoendTime //起点终点 线路开班下班时间
company //所属公司
price //价格
up //上行线路 例如 A,B,C,D,E,F,G
down //下行线路例如 G,F,E,D,C,B,A
UpdateTime //更新时间
 
依据你当前库设计的解决方案:
设某人从A地到B地
1、把有到A地的公交车选出来。
2、把有到B地的公交车选出来。
3、把1步骤和2步骤选出的公交车所经过的所有车站插入到临时库
4、对临时库同一车站进行分组查询,即可得到换乘的公交车。
 
希望能提供详细代码,谢谢
 
这个问题我也想知道一个算法~~~特别是需要转乘的怎么处理~~
留个地方等以后看~~
 
不必用临时表
dim objRs,strSql
Set objRs=Server.CreateObject("ADODB.RecordSet")
strSql="select c.checi, c.startstation, a.name as s_name, a.starttime, b.name as e_name, b.arrtime, c.to, "&_
"b.distance - a.distance as s_e_distance, b.costtime as costtime2,a.costtime as costtime1, c.traintype "&_
"from sinfo a, sinfo b, sinfo2 c "&" where a.name='"&trim(request("InputArea"))&"' and b.name='"&trim(request("InputArea1"))&_
"' and a.checi=b.checi and a.stationno<b.stationno and a.checi=c.checi order by len(c.checi), c.checi "
objRs.Open strSql,conn_qty,1,1

这是我用asp 做的火车换乘
好像复制错代码了, 我现在要上班, 以后有空再说!
例如 A- > F
那么要查询 有 A 的线路
有 F 的线路
如果他们有共同点的话, 那么就可以通过其公交站点进行换乘
 
建议你多建一张表, 就容易做好多
我怀疑你的数据库是弄ipiao的数据库, 他的数据结构就是那样的
多建一张线路与公交站点的表
id lineid UpOrDown station_seq StationName city
1 10001 0 1 金宝市场 1
2 10001 0 2 五小区 1
3 10001 0 3 竹山路 1
4 10001 0 4 府前路 1
5 10001 0 5 供销商厦 1
6 10001 0 6 武夷花园 1
7 10001 0 7 河定桥 1
8 10001 0 8 长城装饰城 1
9 10001 0 9 同曦鸣城(中新路) 1
10 10001 0 10 白龙广场 1
11 10001 0 11 21世纪现代城 1
12 10001 0 12 文化名园 1
13 10001 0 13 江南文枢苑 1
14 10001 0 14 印塘村 1
15 10001 0 15 河海大学(河海广场) 1
16 10001 0 16 水阁 1
17 10001 0 17 施家井 1
18 10001 0 18 东周路(东善桥道口) 1
19 10001 0 19 东善桥农贸市场 1
 
例如 A- > F
那么要查询 有 A 的线路
有 F 的线路
如果他们有共同点的话, 那么就可以通过其公交站点进行换乘
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这样的情况倒是简单~~换乘一次~~
但是如果他们没有共同点的话怎么办?就是要换乘2次以上~~这样就难办了
 
其实看一下SQL SERVER里的一个帮助里,在高级查找里有一个航空的查询及表设计,应该可以达到要求
 
我研究了一下~~还是采用深度遍历算法比较好,这样能更快的找出最优的线路来~~
但是如果用sql语句来实现,真是想不明白~~
以公交换乘次数为深度,然后根据公交的站点遍历~
 
to cqling
如果按照你的数据库,算法应该怎么做?1次、多次换乘的算法应该是怎么样的?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
681
import
I
后退
顶部