黑马程序员技术交流社区

标题: 公交查询系统直达乘车路线查询算法分享 [打印本页]

作者: 彭思    时间: 2013-2-28 01:08
标题: 公交查询系统直达乘车路线查询算法分享
1. 公交车路线信息在数据库中的存储方式
显然,如果在数据库中简单的使用表bus_route(路线名,路线经过的站点,费用)来保存公交车路线的线路信息,则很难使用查询语句实现乘车线路查询,因此,应该对线路的信息进行处理后再保存到数据库中,笔者使用的方法是用站点-路线关系表stop_route(站点,路线名,站点在路线中的位置)来存储公交车路线,例如,如果有以下3条路线
R1:  S1->S2->S3->S4->S5
R2:  S6->S7->S2->S8
R3:  S8->S9->S10
则对应的站点-路线关系表stop_route
Stop
Route
Position
S1
R1
1
S2
R1
2
S3
R1
3
S4
R1
4
S5
R1
5
S6
R2
1
S7
R2
2
S2
R2
3
S8
R2
4
S8
R3
1
S9
R3
2
S10
R3
3
注:Stop为站点名,Route为路线名,Position为站点在路线中的位置
2.直达乘车路线查询算法
基于表stop_route可以很方便实现直达乘车路线的查询,以下是用于查询直达乘车路线的存储过程InquiryT0
create proc InquiryT0(@StartStop varchar(32),@EndStop varchar(32))
as
begin
        select
                sr1.Stop as 启始站点,
                sr2.Stop as 目的站点,
                sr1.Route as 乘坐线路,
                sr2.Position-sr1.Position as 经过的站点数
        from
                stop_route sr1,
                stop_route sr2
        where
                sr1.Route=sr2.Route
                and sr1.Position<sr2.Position
                and sr1.Stop=@StartStop
                and sr2.Stop=@EndStop
end




作者: 许庭洲    时间: 2013-2-28 08:29
值得学习ing!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2