个人培训项目-环境搭建

北京地铁实例

预期计划

PSP 2.1 Personal Software Process Stages Time
Planning 计划 1h
Estimate 估计这个任务需要多少时间 2h
Development 开发 5h
Analysis ·需求分析 (包括学习新技术) 2-3h
Design Spec 生成设计文档 1h
Design Review 设计复审 (和同事审核设计文档) 1h
Coding Standard 代码规范 (为目前的开发制定合适的规范) 1h
Design 具体设计 1h
Coding 具体编码 2h
Code Review 代码复审 1h
Test 测试(自我测试,修改代码,提交修改) 2-3h
Reporting 报告 1h
Test Report 测试报告 1h
Size Measurement 计算工作量 1h
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 1h
合计 23-25h

需求分析

  1. 计算地铁线路最短路径
  2. 支持显示地铁线路与计算换乘的程序
  3. 查询指定地铁线经过的站点
  4. 最少的站数从出发点到达目的地

实现思路

  1. 为了输入及存储数据的方便采取json格式,并使用CJsonObejct作为json的支持库

  2. 异常情况

    1. 线路不存在
    2. 站点找不到
  3. 将地铁线路抽象为无向图,将问题转化为无向图上求最短路的问题

  4. 采用堆优化的Dijstra算法,可以预计是个稀疏图,时间复杂度\(O(VlogV)\),空间复杂度\(O(M+V)\)

  5. 测试点

    1. 无重复路径
    2. 保证站点在路径上

输入

  1. 用参数 -map 作为标志。程序启动时需要通过读取 -map 参数来获得对应的自定义地铁文件(命名为 subway.txt),从而得到地铁线路图的信息。
subway.exe -map subway.txt

//地图格式
{
    {
        "subway-line-name" : "一号线",
        "stations" : ["苹果园","古城"]
    },
    {
        "subway-line-name" : "二号线",
        "stations" : ["积水潭","鼓楼大街"]
    }
}
  1. 支持一个新的命令行参数 -a,它指定了用户希望查询的地铁线路。这样,在给定地铁线路时,你的程序就需要能够从线路的起始站点开始,依次输出该地铁线经过的所有站点,直到终点站。输出的文件我们使用 -o 命令行参数来指定。
subway.exe -a 1号线 -map subway.txt -o station.txt
//输出格式
{
    {
        "subway-line-name" : "一号线",
        "stations" : ["苹果园","古城"]
    },
}
  1. -b 参数加两个地铁站点名称分别作为出发与目的,比如用户希望知道 动物园 到白堆子 之间的最短路线是怎样的,他就可以使用如下命令让程序将结果写入 routine.txt 中
subway.exe -b 动物园 白堆子 -map subway.txt -o routine.txt
//输出格式
{
    {
        "subway-line-name" : "一号线",
        "stations" : ["苹果园","古城"],
        "number-of-stations" : "5"
    },
}

实际对应路线

posted @ 2019-09-18 22:23  31701069陈凯隆  阅读(241)  评论(0编辑  收藏  举报