第一次结对作业-地铁查询系统逻辑实现思路和设计思想

在地铁查询系统中,我们先理清一下逻辑思路和设计思想,这样有助于我们项目的开发:

首先看功能,我们核心的功能当然就是地铁查询,在搜索框中输入起始站和终点站,点击查询,能够得到:

历经的站点个数,两点间的最有效线路,换乘的站点特别标识出来。

 数据库设计:

1.方案一

我们需要两张数据表,一张基础表,一张换乘表,基础表中包括所有站点的信息,换乘表中包括换乘站的信息,换乘表由基础表生成,是动态的。

基础表的设计:

 进阶版:

基本逻辑:

1.得到从输入框中获得的信息:起始站和终点站

2.检查起始站和终点站是否在一条线路上:

  .1若两站在同一线路上,直接从数据库基础表中查询出两站的直接线路并输出。

  .2若两站不在同一线路,调用最短路径算法。

 2.方案二

我们可以换一种方式,我们只需要一张总表。这种表结构能给使用SQL语句递归实现查询提供方便,

我们需要一个自增的唯一id,站名,下一站名,线路名,方向,同时至少同一站要存两遍,对应正反两个方向。

 

 基本逻辑:

直接在数据库层面利用递归实现最短路径

 

实际上,核心算法其实是最短路径算法,又复习一下数据结构,发觉自己数据结构和算法需要再深入研究。

我们核心使用的算法可以选择迪杰斯特拉算法或者弗洛伊德算法,或者用最基础的广度优先搜索。

作者:冰稀饭Aurora

出处:https://www.cnblogs.com/rsy-bxf150/p/17216551.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   冰稀饭Aurora  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示