第一次作业——subway
作业源程序代码:https://github.com/nrm1/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 |
· 具体编码 |
7h |
· Code Review |
· 代码复审 |
0h |
· Test |
· 测试(自我测试,修改代码,提交修改) |
9h |
Reporting |
报告 |
|
· Test Report |
· 测试报告 |
1h |
· Size Measurement |
· 计算工作量 |
0h |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
1h |
合计 |
21h |
2)改进程序
我花费了两个小时完成了程序的改进优化,在原先的搜索算法中,我只保证了搜索站数递增,却没有保障搜索已经过的站点就不会再次被搜索,导致搜索树上有很多冗余的分枝,后来通过增加一个判断站点是否已经增加过的方法对搜索时进行了剪枝,极大的提高了算法运行速度。
3)文件存储格式及理由
我采用的文件存储格式是L 路线名 地铁站名。L是为了区分路线名和地铁站名,L后紧跟的字符串为路线名。
4)程序正确性论证
本程序地图信息由文件读入后,又经过程序内部对线路的调整,和指定地图路线完全匹配,程序采用宽度优先搜索的方式,经多次实验验证,对各条路线均能产生正确的路线。符合作业要求。
5)学习与体悟
通过本次个人项目的编写,我个人的编写程序的能力有了很大的提高,但是,我同时也意识到了自己的能力的不足,希望通过今后课程的学习,能够有所突破,更近一步。不辜负老师,学长的期望。
6)性能分析图
7)测试用例
Subway -b 知春路 北京站
Subway -c 知春路 北京站
Subway -b 知春路 北京西站
Subway -c 知春路 北京西站
Subway -b 东直门 2号航站楼
Subway -b 2号航站楼 3号航站楼
Subway -b 北京站 沙河
Subway -c 北京站 沙河
Subway -b 前门 中关村
Subway -c 前门 中关村