地铁规划项目需求理解和设计思路

地铁规划项目需求理解和设计思路

需求理解

  • 将地铁线路保存成一个可读入,简洁明了的文本
  • 程序能正确读入这个文件,并获取地铁线路信息
  • 程序能正确处理输入的命令行
  • 地铁能正确输出指定地铁线经过的站点
  • 程序能正确输出两个站点间的最短路径
  • 程序要有健壮性,能通过各类性能测试
  • 按要求编写博客,详细说明花费时间,代码,各个模块和测试用例

    设计思路

    文本格式

    1号线 刘园 西横堤 果酒厂 本溪路 勤俭道.....

    2号线 曹庄 卞兴 荠园西道 咸阳路......

    3号线 小淀 丰产河 华北集团......

按照每条线路的站点顺序,依次保存,不考虑换乘的情况和站点重复出现的问题

程序设计

因为考虑到对C语言的熟悉程度和想运用最短路径算法Dijkstra算法,所以决定采用C++语言来编程

读入文本和初始化

依次读入每个站点,并利用map表,为每个站点分配一个id号。在依次读入每个站点的时候,将后一个站点和前一个站点的距离设置为1,用数组dis保存,即dis[1][2]=1,即每个相邻站点间的距离都为1,不相邻站点间的距离为正无穷大。

指定地铁线路查询

在读取文本的时候,就在way数组里面保存进每条地铁线路的每个站点,比如一号线的第一个站点就是way[1][1];这样在查询地铁线路的时候,输入几号线就是way[几],再去map表里面查询出来名字,输出。

查询两站点间的最短路径

利用Dijkstra算法,不断更新path[]数组和统计路径长度。最后去map表里面查询,然后按照线路输出。

原文地址:https://www.cnblogs.com/luolingjie/p/11559700.html

时间: 2024-08-28 14:13:11

地铁规划项目需求理解和设计思路的相关文章

对RESTful Web API的理解与设计思路

距离上一篇关于Web API的文章(如何实现RESTful Web API的身份验证)有好些时间了,在那篇文章中提到的方法是非常简单而有效的,我在实际的项目中就这么用了,代码经过一段时间的磨合,已经很稳定了,所以我打算写篇总结,并在最近这段时间里提供一个ASP.net Web API的综合例子. 对四个HTTP方法的理解 众所周知,HTTP有四个方法,GET.POST.PUT和DELETE,分别对应数据库的SELECT.INSERT.UPDATE和DELETE,一般的教程说到这里也就Over了,

北京地铁规划项目总结

一.项目介绍 实现一个帮助进行地铁出行路线规划的命令行程序. github链接:https://github.com/blakeyoungc/subway 主要需求:1.地铁线路图信息的导入     2.查询指定地铁线经过的站点 3.计算从出发到目的站点之间的最短(经过的站点数最少)路线,并输出经过的站点的个数和路径(包括出发与目的站点). 采用https://map.bjsubway.com/上的北京地铁线路图:  二.需求实现 主要模块介绍: 序号 模块名 功能 对应java类 1 主模块(

北京地铁规划项目总结报告

本项目已上传Github: 问题重述: 任务: 实现一个帮助进行地铁出行线路规划的命令行程序 实现加载地铁线路信息 实现查询指定地铁线路信息 实现从指定出发地到目的地的最短路径查询 设计: 采用语言:java GitHub链接:https://github.com/xixihaha54/subway 主要模块介绍: 序号 模块名 功能 对应java类 1 主模块(subway) 对输入参数的控制 Subway.java 2 文件输入输出模块 txt文件的读写 DataBuilder.java 3

天津地铁出行线路规划项目需求分析与设计思路分析

天津地铁出行线路规划项目需求分析与设计思路分析 项目概要 以下是天津地铁线路总图,本项目的受众可以通过本软件,获得天津市地铁出行最便捷,最快速的线路推荐. 需求分析 实现一个帮助进行地铁出行路线规划的命令行程序. 支持地铁线路的更改,站点更改.取消与添加,以及线路的局部封闭. 支持查询线路的所有站点. 支持查询到某终止站点的途径最少站点的路线. 数据存储结构分析 由于单一的线路表与站点表是无法表示如此复杂的地铁线路情况的. 有多个前驱的站点如:,以及有多个后继的站点如:,这种情况无法只通过这两个

项目需求确认工作思路

项目需求确认工作思路 就信息化建设项目而言,需求调研完成,就需准备进行需求确认工作,那么需求确认工作该如何开展. 一.做好需求确认的准备工作 准备: (1)需求调研报告:详细描述需求单位的项目需求: (2)需求清单文件:详细描述每一条需求,以及对需求的答复: (3)针对需求调研报告和需求清单文件已经向需求单位做完了需求描述性确认和需求范围确认工作. 需求描述性确认:需求调研报告和需求清单文件是否准确表达了需求单位的意思. 需求范围确认:在需求描述确认工作完成后,需内部审核划定了需求范围后,再与需

关于项目模块间交互的一个设计思路

1.背景 某API项目,项目天然地按业务分为了不同的包,那么每个包都独立处理自己的业务逻辑,独立接管数据源,独立地向外部提供数据,彼此基本互不通信. 不过,随着需求的增多和业务的堆积,项目的复杂度越来越大,但是每个独立模块却又不足以独立出去成为一个单独的项目,而模块间又因业务需要开始发生交互的时候,问题来了. 2.问题描述 由于模块间的数据交互,按照Spring的套路,是可以直接把容器接管的对象注入到你需要的地方去的,那么一旦你开始问其他模块要数据,开始要命了.如上图,如果模块3问模块2和模块4

文件系统及fsck设计思路理解

文件系统及Fsck设计思路理解 魏星 Fsck是实现对文件系统的修复功能(fs check).理解fsck需要掌握Linux文件系统设计原理.fsck设计原理和fsck实现的步骤. 一.Linux文件系统设计原理 1.文件系统基本概念 基本概念:super block.inode.目录文件.普通文件 a.super block 超级块存储文件系统的相关信息,包括文件系统的格式,inode/block的总数.使用量.剩余量等信息.没有superblock就没有这个filesystem了. 他主要记

第一次个人项目【词频统计】——需求分析,代码规范,设计思路

需求分析 由于程序需要在Windows平台和Linux平台都能运行,因此对代码的可移植性有一定的要求 由于需要对文件夹进行遍历,因此数据量相对较大,需要选择合适的数据结构,在此项目中,树和哈希表都是可供选择的数据结构 由于对字符串的处理很多,因此需要选择一种合适的字符串表达方式,char* or string? 代码规范 核心要求:用代码做到"卒章显志"的作用,代码能说清楚的事情就不要用注释,注释仅提示思路或者注意事项.因此变量名和函数名的设置尤为关键,比如函数名isSamePhras

[三]java8 函数式编程Stream 概念深入理解 Stream 运行原理 Stream设计思路

Stream的概念定义   官方文档是永远的圣经~ 表格内容来自https://docs.oracle.com/javase/8/docs/api/   Package java.util.stream  一节部分原文内容的翻译 int sum = widgets.stream() .filter(b -> b.getColor() == RED) .mapToInt(b -> b.getWeight()) .sum(); 流操作被划分为中间和终端操作,并组合成流管道. 一条Stream管道由