zoukankan      html  css  js  c++  java
  • 软件工程基础-个人项目-地铁出行路线规划命令行程序

    北京地铁出行路线规划命令行程序

    需求分析

      1.实现一个地铁出行路线规划命令行程序

      2.设计自定义地铁文件,存储并读取地铁线路。

        支持采用参数 -map 作为标志,来获取对应的自定义地铁文件,例如: 

    java subway -map subway.txt

      3.输出特定地铁线路。

        支持采用参数 -a 来指定地铁线路,采用参数 -o 来输出到指定文件station.txt,例如:

    java subway -a 1号线 -map subway.txt -o station.txt

      4.根据起点终点站点,输出最短路线并输出。

        支持采用参数 -b 来指定出发地与目的地,例如:

    java subway -b 洪湖里 复兴路 -map subway.txt -o routine.txt

      5.对于错误的输入,在保证程序不报错的情况下,正确输出错误原因。

    存储方式

      考虑到读取文件易于编辑,直接采用最简单的存储方式,每行第一个字符串为线路名称,后面跟着的字符串为从起点至终点的每一个站点

    例如:

    1号线 刘园 西横堤 ... ... 双桥河
    ... ...              ... ...
    ... ...              ... ...
    ... ...              ... ...
    9号线 天津站 大王庄... ...东海路

    数据结构

      因为一般地铁线路图属于稀疏图,使用邻接表存储,因为涉及换乘,不同线路间还存在重合路径,两站之间的通路可能属于多个线路,故在邻接表中,除了存储该节点相连的节点外,还要存储该条边属于的地铁线路。

    算法设计

      较为简单的最短路算法,使用优先队列优化的dijkstra算法即可实现最短路径的规划,以经过站点为第一优先,换成站点为第二优先即可。对于每个站点,仅考虑其第一次出队,即可处理不同线路路线重合的问题。

      ps。。。看到题目中输出形式,我感觉问题很大啊,既然是地铁出行,首先上什么车都不输出的话,如果从一个地铁枢纽站出发,难道还要用户自己去找几号线吗。由此引申的问题就是,当不同线路之间路径有重合,从在重合路径上的站点出发,该上那条线路的问题,我觉得既然是地铁线路推荐,在经过站点相同的情况下,应该输出换乘最少的方案。

    可能出现的异常

      1.读取文件不存在或错误

      2.输入线路、站点不存在或者不存在地铁路线满足要求

      3.参数错误

    项目计划

    PSP 2.1Personal Software Process StagesTime
    Planning 计划  
      · Estimate   · 估计这个任务需要多少时间  1h
    Development 开发  
      · Analysis   · 需求分析 (包括学习新技术)  1h
      · Design Spec   · 生成设计文档  1h
      · Design Review   · 设计复审 (和同事审核设计文档)  0.5h
      · Coding Standard   · 代码规范 (为目前的开发制定合适的规范)  1.5h
      · Design   · 具体设计  3h
      · Coding   · 具体编码  3h
      · Code Review   · 代码复审  2h
      · Test   · 测试(自我测试,修改代码,提交修改)  3h
    Reporting 报告  
      · Test Report   · 测试报告  1h
      · Size Measurement   · 计算工作量  1h
      · Postmortem & Process Improvement Plan   · 事后总结, 并提出过程改进计划  1.5h
      合计  18.5h
  • 相关阅读:
    C连载20-转换说明中的异常
    Android连载30-SharedPreference存储
    搭建一个开源项目12-Kubernetes集群部署(下)以及elasticsearch部署
    JavaScript连载29-元素类型获取、节点CD
    从零开始学VUE之模板语法(计算属性)
    从零开始学VUE之模板语法(绑定属性)
    从零开始学VUE之模板语法(插值操作)
    从零开始学VUE之Vue的生命周期
    从零开始学VUE之Vue创建时可以传入的Option属性
    从零开始学VUE之Vuejs初体验(DEMO)
  • 原文地址:https://www.cnblogs.com/shysimon/p/11559850.html
Copyright © 2011-2022 走看看