1.需求分析
根据个人项目简介,软件的需求有以下三个:
需求1:
实现一个支持显示地铁线路与计算换乘的程序。之后,用户可以通过命令行启动这个程序。程序在启动时,会读取不同命令对应的命令行参数。对于地铁线路信息图,我们约定它采用参数 -map 作为标志。程序启动时需要通过读取 -map 参数来获得对应的自定义地铁文件(命名为 subway.txt),从而得到地铁线路图的信息。
需求2:
实现基础的查询操作。比如说,用户希望查询指定地铁线经过的站点。这样,在应用程序需要支持一个新的命令行参数 -a,它指定了用户希望查询的地铁线路。这样,在给定地铁线路时,你的程序就需要能够从线路的起始站点开始,依次输出该地铁线经过的所有站点,直到终点站。输出的文件我们使用 -o 命令行参数来指定。
需求3:
实现一个计算任意两个站点间最短路径(经过的站点数最少)的程序,并输出经过的站点的个数和路径(包括出发站,目的站与换乘线路)。如果用户希望坐地铁,他希望能通过最少的站数从出发点到达目的地,这样就可以在命令行中以 -b 参数加两个地铁站点名称分别作为出发与目的,比如用户希望知道 洪湖里 到复兴路 之间的最短路线是怎样的,他就可以使用如下命令让程序将结果写入 routine.txt 中:subway.exe -b 洪湖里 复兴路 -map subway.txt -o routine.txt。
2.实现方法分析
需求1:
这项需求似乎是要我们把一张地铁线路图转换为文本格式的表格。也就是说,我们要将地铁线路信息等用文本文件的形式保存起来,应保存的信息应包括地铁线路名称、各个地铁站点的名称以及车站换乘信息,使得应用程序可以通过读取这个文件,就能掌握关于地铁线路的所有信息。这其中涉及的技术包括图片读取、自动分析、信息保存与转换,我完全不知道如何实现计算机自动将图片转换为文本文件,所以我默认本程序只使用一张地铁图,并且此步骤已经由人工完成。最后的结果应该像这样:
序号 |
线路 |
站点名 |
是否为换乘站 |
001 |
1 |
刘园 |
0 |
002 |
1 |
西横堤 |
0 |
003 |
1 |
果酒厂 |
0 |
将所有站点输入subway.txt后,就可以将它导入程序实现各种计算。
需求2:
就路线查询为例,只需读入用户输入的路线编号并与表格中的所有线路比较,输出站点名即可。
需求3:
运行举例:
输入:
subway.exe -b 洪湖里 复兴路 -map subway.txt -o routine.txt
输出:
3 //共经过3站
洪湖里
西站 //在该站换乘
6号线
复兴路
从地铁设计规划的角度考虑,换乘路线应该会导致乘坐经过的站点变多。
对于终点站,首先查出它所在的路线。接下来有两种情况:起点站与它在同一路线,或起点站与它不在同一路线;对于第二种情况,可以确定终点站与起点站一定都在路线1、6或9上。
对于单个站点存在两个方向,可以首先对起点站进行两个方向的遍历。
3.PSP
PSP 2.1 |
Personal Software Process Stages |
Time/h |
Planning |
计划 |
|
· Estimate |
· 估计这个任务需要多少时间 |
∞ |
Development |
开发 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
1 |
· Design Spec |
· 生成设计文档 |
1 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
1 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
1 |
· Design |
· 具体设计 |
10 |
· Coding |
· 具体编码 |
200 |
· Code Review |
· 代码复审 |
1 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
1 |
Reporting |
报告 |
|
· Test Report |
· 测试报告 |
2 |
· Size Measurement |
· 计算工作量 |
1 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
|
31701056
杨峥