第一次结对作业-地铁查询系统逻辑实现思路和设计思想
在地铁查询系统中,我们先理清一下逻辑思路和设计思想,这样有助于我们项目的开发:
首先看功能,我们核心的功能当然就是地铁查询,在搜索框中输入起始站和终点站,点击查询,能够得到:
历经的站点个数,两点间的最有效线路,换乘的站点特别标识出来。
数据库设计:
1.方案一
我们需要两张数据表,一张基础表,一张换乘表,基础表中包括所有站点的信息,换乘表中包括换乘站的信息,换乘表由基础表生成,是动态的。
基础表的设计:
进阶版:
基本逻辑:
1.得到从输入框中获得的信息:起始站和终点站
2.检查起始站和终点站是否在一条线路上:
.1若两站在同一线路上,直接从数据库基础表中查询出两站的直接线路并输出。
.2若两站不在同一线路,调用最短路径算法。
2.方案二
我们可以换一种方式,我们只需要一张总表。这种表结构能给使用SQL语句递归实现查询提供方便,
我们需要一个自增的唯一id,站名,下一站名,线路名,方向,同时至少同一站要存两遍,对应正反两个方向。
基本逻辑:
直接在数据库层面利用递归实现最短路径
实际上,核心算法其实是最短路径算法,又复习一下数据结构,发觉自己数据结构和算法需要再深入研究。
我们核心使用的算法可以选择迪杰斯特拉算法或者弗洛伊德算法,或者用最基础的广度优先搜索。