北京地铁线路规划

北京地铁线路规划


任务


  个人项目的主要任务就是通过地铁出行的人能够通过该软件很快找到最快到达目的地的出行线路规划。

项目需求

  • 用户根据-map参数来获得所有北京地铁线路信息
java subway -map subway.txt
  那么这里的重点就在于如何存储这个subway.txt文件了,首先我们还是看一张北京地铁1号线的图
![](https://img2018.cnblogs.com/blog/1806411/201909/1806411-20190922113916097-1876119492.jpg)
这里比较容易想到的每条线路存储方式就是
> 1: 苹果园 古城 八角游乐园 ...
> 2: 积水潭 鼓楼大街 安定门 ...

  其中1表示1号线,2表示2号线,但是在从图中可以看到打圈的站点,这些站点打圈的表示是可以中转的站台,
这里比较麻烦的就是如何在txt中标明哪个站可以转乘,并且可以转乘几号线,
这里参考了一个同学的博文,他在可以换乘的站台后用(#+数字)的形式来标明该站台可以换成几号线,
如果该站台可以换成多条线路,只要继续在后面加(#+数字)即可,使用#可以在读取文件的时候很容易区分哪个站台可以换乘,
且在数字之间用#分隔,也不会使数字之间混淆
  那么存储在txt中的存储格式就变成了这个样子
>1: 苹果园 古城 八角游乐园 ...
>2: 积水潭 鼓楼大街#8 安定门 ...
  • 用户通过-a+几号线参数来获得某条线路经过的所有站点信息
java subway -a 1号线 -map subway.txt -o station.txt
  其中把获得的线路信息输出在station的txt文件中供用户参考
  其中输出样式为
>2号线:积水潭 -> 鼓楼大街(可换乘8号线)-> 安定门 -> ...
  • 用户通过-b+起始站点名称+终止站点名称参数来获得一条线路来从指定出发点到达目的地(这条线路要求经过最少的站数)
java subway -b 积水潭 安华桥 -map subway.txt -o routine.txt
  这里我认为先用Dijkstra算法把每个站点到其他的任意一个站点的最短线路规划信息先存储在一个txt文件中,然后把该文件放在某个服务器上,
这样每个用户在要求获得某两个站点之间线路规划的时候就直接从服务器中读取该文件并输出相应的线路信息,
这样就不用每一次在用户要求规划线路的时候都去运行一遍算法,大大节省了用户的时间。
当然,这里的输出格式与上面一个需求的输出格式相同
>1: 积水潭 -> 鼓楼大街 -> 换成8号线 -> 安华桥
>2: 积水潭 -> 鼓楼大街 -> ...  

  之所以这里有'1:' , '2:'这种标志,是因为可能在经过站数相同的情况下有多条线路,这时候就由用户进行选择,毕竟不同的用户可能次要需求也不一样,有些人喜欢换乘最少,但也有些人希望是时间最快到达,这里留给用户自行选择

结语

  这次个人项目的站点信息非常多,所以可选的线路出行就会非常多,种类会非常复杂,现在先不考虑各种输入错误,到时候进行统一的输入错误处理吧,程序的测试输入样例也得慢慢想,而且在测试的时候结果的准确性可能还得自己去手动计算是否是符合要求的且是站数最少的,当两个站点相隔比较远的时候这时候人为的去计算还是相当复杂。
参考了这篇博客

原文地址:https://www.cnblogs.com/nicochou/p/11566808.html

时间: 2024-08-02 14:03:38

北京地铁线路规划的相关文章

个人项目--北京地铁线路规划(已完成)

一.任务: 实现一个帮助进行北京地铁出行路线规划的命令行程序. 二.需求分析及实现 需求1 在程序启动时,自动获取到地图信息 需要实现一个支持自动加载subway.txt 文件的程序 需求2 查询指定地铁线经过的站点 在应用程序上,需要支持一个新的命令行参数  -a ,指定用户希望查询的地铁线路. 在给定地铁线路时,程序需要从线路的起始站点开始,依次输出该地铁线经过的所有站点,直到终点站.输出的文件使用-o参数来指定. 一个调用应用程序的示例如下: java subway -a 1号线 -map

个人项目——北京地铁线路规划

一.前言 现实和理想的差距总是那么大,在过程中碰到的坑比预期的还多(说那么多,其实就是自己菜),过程中复习了淡忘已久的许多算法和数据结构,一边深刻的体会着自己是多菜,一边也体会到了自身一点点微小的进步,大概. 二.项目简介 实现北京地铁查询功能 附上一张北京地铁的图: 三.项目地址 https://github.com/fireworks-EX/MetroLinePlanning 四.需求分析 1.确定储存及读取地铁线路数据文件的格式 2.支持用户输入的地铁线路的查询 3.提供用户指定两站点间的

北京地铁出行规划

一.Github代码链接     repo 二.程序基本功能描述 1.获得北京地铁单条线路所有站点信息 java SubwayStart -a 线路名称 -map 地铁线路文件.txt-o 输出文件.txt 或者 java SubwayStart -a 线路名称(直接显示) -map 地铁线路文件.txt 2.获得两个站点间最短线路 java SubwayStart -b 起始站点 目的站点 -map 地铁线路文件.txt -o 输出文件.txt 或者 java SubwayStart -b 起

北京地铁线路规划系统

北京地铁线路规划系统 项目概况 本次项目是以邻接表的形式来存储图,通过Folyd算法算出任意两点之间的路线图并以数字的形式来代替站点名称存储在dist1.txt文件中并保存在本地.等用户通过输入各种命令,再从本地读入subway.txt文件或者dist1.txt文件进行相应输出. java图实现 首先创建Vertex类(存储每个点的信息) private String verName; private Vertex nextNode = null; private int verId; priv

个人项目关于北京地铁线路出行线路规划

一  问题重述 1.实现地铁线路的加载 2.实现查询指定线路所有站点(包括换乘信息) 3.实现查询指定两个站点间的最短路径 二  功能设计 1.实现地铁线路的加载 -map subway.txt //将存储在subway.txt文件里的地铁线路进行读取 2.实现查询指定线路所有站点 -a 地铁线路名称 -map subway.txt -o station.txt //读取subway.txt文件信息后,通过输入的地铁线路名称,将指定地铁线路的所有站点写入station.txt文件 3.实现查询指

北京地铁线路规划程序

程序说明: 这个项目是记录地铁线路并且加以计算,所以储存线路是其中的关键部分. 经过慎重的思考以及选择,最后决定采用链表的形式储存整个地图,因为地图的站点分布不均匀,采用邻接矩阵很不合适无法对齐,这样的方式也比邻接链表要方便. 最终的储存结构中,每个站点都有一个单独的station对象,并且储存了相关的信息,站与站之间按照线路排列,每一条线路的起点被专门放在一个数组里面方便访问. 问题地址:http://www.cnblogs.com/jiel/p/5852591.html 输入文件说明: 保存

最短路径(图论-北京地铁线路查询)

目录 1 int main(){ 2 3 printf("北京地铁乘坐线路查询系统\n"); 4 /*---------------------------------------------------*/ 5 6 /*---------------------------------------------------*/ 7 freopen("bgstations.txt","r",stdin); 8 int LINE; /*地铁总线数*/

个人项目——地铁线路规划

个人项目-地铁线路规划系统 GitHub项目地址:https://github.com/ye1014239226/Subway1.git 问题描述 1.输入地铁线路的名字,显示该线路上的站点信息 2.输入起末站的站点名字,输出最优的换乘路线(经过站点数量最少) 解决思路 1.收集北京地铁的线路信息,存入txt文件中,并导入到设计的数据存储方式中去 2.读入数据并且构建地铁线路图的数据结构 3.使用迪杰斯特拉算法求最短的换乘路径 4.测试 解决过程 1.数据存储 txt的存储形式如下 线路名 站点

地铁线路规划

一.预期计划 1.选择合适的文件储存地铁路线的信息. 2.设计关于地铁信息的IO程序. 3.用户可以查询地铁信息. 4.可以推荐输入站点之间的最短路径. 5.代码复审已经性能测试. 二.需求分析 1.将地铁的具体信息储存在文件中,包括站点名称.线路名称等,要确定文件的格式,保证文件能够方便读取. 2.用户输入指定线路或者起始站和终点站,系统要给出相应的推荐线路,列出途径的站点. 3.提供查询功能,输入线路名称后系统输出这条线路上的全部站点. 三.设计思路 1.最关键的算法是查找最短路径,即在图中