1、数据库
数据库中存在两张表,一张是站点表,属性包括站点编号,站点名称,站点所属线路。第二张表是线路交点表,属性包括第一条线路,第二条线路,站点名称。
2、假设状况
查询分为三种情况。第一种,在同一条线路上的站点,其中包括起始站或终点站都是转乘点的情况;第二种,分布在两条线上的起始站和终点站,且起始站和终点站所在的线路存在交点;第三种情况,起始站和终点站在不同的两条线路上,且两点之间不存在交点,即需要第三条线作为中转。
3、设计
第一种情况中,得到查询输入的起始站和终点站,查询line表,在二者的所属线路相同的情况下,得到二者差值的绝对值即可得到站数,然后输出其中的站点名。
第二种情况中,得到查询输入的起始站和终点站,查询line表,得到二者的所属线路,然后查询线路交点表,将得到所属线路作为条件查询得到线路交点的中转站,然后再回到第一张表line中,以起始站属性和中转站定位与起始站线路相同的中转站,然后求出起始站到中转站的站点,再以终点站线路和中转站与终点站线路相同的中转站,求出中转站到终点站的站点名,最后合并到同一个list中即可。
第三种情况中,得到查询输入的起始站和终点站,查询line表,得到二者的所属线路,然后查询线路交点表,将得到的中点站作为条件查询,得到的值应当为空。在这种情况下,我们应该再次查询线路交点表,将得到的起始站线路作为第一条记录的一线路,将得到的终点站线路作为第二条记录的二线路,求满足第一条记录第二条线路等于第二条记录第一条线路的线路中间线路并记录。即
(1 a 2)
(2 b 3)
(2)
然后依旧在本张表中,以起始站线路作为第一线路,将中间线路作为终点线路,查询线路交点,得到第一个中转点;然后以第一个中转点为起始站,终点站做第二线路,查询线路交点,得到第二个中转点。然后在line表中,查询起始站到第一个中转站的中间站名;之后查询第一个中转站到第二个中转站的中间站名;最后查新第二个中转站到终点站的站名。最后将三部分放入同一个list中。
标签:起始,构思,查询,线路,地铁,交点,终点站,中转站 From: https://www.cnblogs.com/psh888/p/17212885.html