个人项目-地铁出行路线规划程序

项目地址:https://github.com/jisuozhao/subway


使用的文件格式:

beijing-subway.txt

一号线:苹果园,古城,八角游乐园,八宝山,玉泉路,五棵松,万寿路,公主坟,军事博物馆,木樨地,南礼士路,复兴门,西单,天安门西,天安门东,王府井,东单,建国门,永安里,国贸,大望路,四惠,四惠东

二号线(环线):……

……

[注]文件中的所有符号都是中文符号

采用这种格式的理由:

简结方便,易于修改。

以1号线的数据为例,冒号(:)前的数据是地铁线路名称,如果是环线则在线路后加一个括号,中间写上环线(如2号线),冒号后是线路上的各个站名,各个站之间用逗号隔开。

文件不需要显式的给出换乘信息,因为北京地铁的站名不会重复,输入数据后程序可以自动检索重名的站点,自动生成换乘信息,省去了人为标注换乘信息的麻烦。


项目概要:

1)开始实现程序之前的时间估计

PSP 2.1

Personal Software Process Stages

Time

Planning

计划

 

  · Estimate

  · 估计这个任务需要多少时间

1h

Development

开发

 

  · Analysis

  · 需求分析 (包括学习新技术)

 2h

  · Design Spec

  · 生成设计文档

 2h

  · Design Review

  · 设计复审 (和同事审核设计文档)

1h 

  · Coding Standard

  · 代码规范 (为目前的开发制定合适的规范)

 1h

  · Design

  · 具体设计

 8h

  · Coding

  · 具体编码

 8h

  · Code Review

  · 代码复审

 1h

  · Test

  · 测试(自我测试,修改代码,提交修改)

 4h

Reporting

报告

 

  · Test Report

  · 测试报告

 1h

  · Size Measurement

  · 计算工作量

 1h

  · Postmortem & Process Improvement Plan

  · 事后总结, 并提出过程改进计划

 1h

 

合计

 31h

2)实现完程序之后实际所用时间

PSP 2.1

Personal Software Process Stages

Time

Planning

计划

 

  · Estimate

  · 估计这个任务需要多少时间

 0.5h

Development

开发

 

  · Analysis

  · 需求分析 (包括学习新技术)

 3h

  · Design Spec

  · 生成设计文档

1h 

  · Design Review

  · 设计复审 (和同事审核设计文档)

 1h

  · Coding Standard

  · 代码规范 (为目前的开发制定合适的规范)

 1h

  · Design

  · 具体设计

 8h

  · Coding

  · 具体编码

 9h

  · Code Review

  · 代码复审

 1h

  · Test

  · 测试(自我测试,修改代码,提交修改)

 3h

Reporting

报告

 

  · Test Report

  · 测试报告

 0.5h

  · Size Measurement

  · 计算工作量

 0.5h

  · Postmortem & Process Improvement Plan

  · 事后总结, 并提出过程改进计划

 0.5h

 

合计

 29h

3)改进程序性能花了两小时

性能分析图

消耗最大的函数是class Map中的TransferRoute()函数

4)10个测试用例

subway.exe 地铁二号线

西直门

车公庄

阜成门

复兴门

长椿街

宣武门

和平门

前门

崇文门

北京站

建国门

朝阳门

东四十条

东直门

雍和宫

安定门

鼓楼大街

积水潭

subway.exe 地铁昌平线

西二旗

生命科学园

朱辛庄

巩华城

沙河

沙河高教园

南邵

subway.exe -b 西直门 西二旗

6

西直门

大钟寺

知春路

五道口

上地

西二旗

subway.exe -b 知春路 中关村

4

知春路

知春里

海淀黄庄换乘地铁四号线

中关村

subway.exe -b 苏庄 南邵

36

苏庄

良乡南关

良乡大学城西

良乡大学城

良乡大学城北

广阳城

篱笆房

长阳

稻田

大葆台

郭公庄换乘地铁九号线

丰台科技园

科怡路

丰台南路

丰台东大街

七里庄

六里桥

六里桥东

北京西站

军事博物馆

白堆子

白石桥南换乘地铁六号线

车公庄西

车公庄换乘地铁二号线

西直门换乘地铁十三号线

大钟寺

知春路

五道口

上地

西二旗换乘地铁昌平线

生命科学园

朱辛庄

巩华城

沙河

沙河高教园

南邵

subway.exe -b 国贸 南邵

21

国贸

永安里

建国门换乘地铁二号线

朝阳门换乘地铁六号线

东四

南锣鼓巷换乘地铁八号线

什刹海

鼓楼大街换乘地铁二号线

积水潭

西直门换乘地铁十三号线

大钟寺

知春路

五道口

上地

西二旗换乘地铁昌平线

生命科学园

朱辛庄

巩华城

沙河

沙河高教园

南邵

subway.exe -c 西直门 西二旗

6

西直门

大钟寺

知春路

五道口

上地

西二旗

subway.exe -c 知春路 中关村

4

知春路

知春里

海淀黄庄换乘地铁四号线

中关村

subway.exe -c 宣武门 宣武门

1

宣武门

subway.exe -c 苏庄 俸伯

48

苏庄

良乡南关

良乡大学城西

良乡大学城

良乡大学城北

广阳城

篱笆房

长阳

稻田

大葆台

郭公庄换乘地铁九号线

丰台科技园

科怡路

丰台南路

丰台东大街

七里庄

六里桥

六里桥东

北京西站

军事博物馆

白堆子

白石桥南

国家图书馆换乘地铁四号线

动物园

西直门换乘地铁十三号线

大钟寺

知春路

五道口

上地

西二旗

龙泽

回龙观

霍营

立水桥

北苑

望京西换乘地铁十五号线

望京

望京东

崔各庄

马泉营

孙河

国展

花梨坎

后沙峪

南法信

石门

顺义

俸伯

这里给出了10个比较典型的测试用例,涵盖了-b,-c,以及输出地铁线路,地铁线路包括输出普通线路和输出环线中的站点,-b,-c功能测试也包括了较近的路线以及需要换乘的远程路线,实际测试用例还有很多,基本将所有可能的情况都涵盖了。

5)通过本次项目我学习了C#的语法,宽度优先搜索算法,并且提升了自己的数据分析和整合能力。

posted @ 2016-09-18 11:45  吹散的蒲公英  阅读(539)  评论(1编辑  收藏  举报