作业源程序代码:https://github.com/R-81/subway
作业程序使用说明:通过输入命令参数求解路线(仅支持-b,-c),根据参数得出路线后,程序不会结束,此时可输入地铁路线名(例如地铁一号线)输出此路线上所有车站名。
1)各模块开发需要消耗的时间
Personal Software Process Stages |
Time |
|
Planning |
计划 |
|
· Estimate |
· 估计这个任务需要多少时间 |
15h |
Development |
开发 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
1h |
· Design Spec |
· 生成设计文档 |
0h |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0h |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
0h |
· Design |
· 具体设计 |
2h |
· Coding |
· 具体编码 |
8h |
· Code Review |
· 代码复审 |
0h |
· Test |
· 测试(自我测试,修改代码,提交修改) |
8h |
Reporting |
报告 |
|
· Test Report |
· 测试报告 |
1h |
· Size Measurement |
· 计算工作量 |
0h |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
1h |
合计 |
21h |
2)改进程序
对于-c的路径索索进行了一次改进,具体表现为将搜索过的线路进行标记,在下一次搜索的时候省去搜索这些被标记的线路,能够减少大量的多余搜索,但是在多个线路上的换乘车站依旧能够得到有效搜索。
3)文件存储格式及理由
我采用的文件存储格式是Line 路线名 地铁站名。Line是为了区分路线名和地铁站名,Line后紧跟的字符串为路线名。对于环线路线,需要在该线路站名最后加上重复的起点,达到连接成环的效果。
4)程序正确性论证
程序从文件读取线路信息和站点信息,通过处理后存入合适的数据结构中,通过参数的不同,选择以广度优先搜索为主要算法,不同的搜索方式进行路径搜索。经过多次测试和改正后,能达到作业要求效果。
5)学习与体悟
感觉这次由于自己在书写代码前没能做好充分的思考,导致在测试阶段重复修改了很多次,浪费了不少时间,下次应该在设计阶段考虑得更周密一点,这样反而会节省出来时间。
6)性能分析图
7)测试用例
-c 苹果园 2号航站楼
-b 苹果园 2号航站楼
-c 2号航站楼 苹果园
-b 2号航站楼 苹果园
-b 知春路 北京西站
-c 知春路 北京西站
-b 四惠 高碑店
-b 四惠 四惠东
地铁一号线
地铁八通线