截止時間2016.09.17,12:00。
圖 1 北京地鐵線路
任務:實現一個幫助進行地鐵出行路線規划的命令行程序。
要求:
1. 使用Visual Studio Community 2015進行開發,采用C++或者C#語言實現,可以使用.Net Framework,運行環境為64-bit Windows 10。
2. 提交的代碼要求經過Code Quality Analysis工具的分析並消除所有的警告。Code Quality Analysis工具的用法參見:
http://msdn.microsoft.com/en-us/library/dd264897.aspx
3. 請使用性能分析工具來找出代碼中的性能瓶頸並進行改進。
4. 寫出至少10個測試用例確保你的程序能夠正確處理各種情況。
5. 使用Github來管理源代碼和測試用例。
作業提交:
- 在個人博客上發布項目源代碼的Github鏈接,以便助教下載,助教將會在測試環境中檢查程序的正確性。
- 正確的程序會再進行性能測試,根據性能的好壞進行評分;不正確的程序沒有性能的分數。
- 撰寫一個博客,要求參見博客作業要求。
需求:
1. 把圖1中的所有地鐵線路、站點和換乘信息等用一個文本文件(假設名字叫 beijing-subway.txt)的形式保存起來,應保存的信息應包括地鐵線路名稱、各個地鐵站點的名稱以及車站換乘信息,使得應用程序可以通過讀取這個文件,就能掌握關於北京地鐵線路的所有信息。請設計一種文件格式用於保存信息並方便應用程序讀取,並說明你采取這種格式的理由。 為了簡單起見,所有暫緩開通的站點都認定為已經開通。
2. 實現一個命令行程序(不妨叫 subway.exe),這個程序啟動時會讀取beijing-subway.txt中的信息,然后等待用戶的輸入,用戶可以輸入地鐵線路的名稱,然后程序就輸出此地鐵線路的所有站點名稱(按某一方向順序輸出即可)。輸出站點名稱后,程序再次進入等待狀態。每一線路的起始站點如下:
地鐵線路名稱 |
起始站點 |
地鐵一號線 |
蘋果園 |
地鐵二號線 |
積水潭 |
地鐵四號線 |
安河橋北 |
地鐵五號線 |
宋家庄 |
地鐵六號線 |
海淀五路居 |
地鐵七號線 |
北京西站 |
地鐵八號線 |
朱辛庄 |
地鐵九號線 |
郭公庄 |
地鐵十號線 |
巴溝 |
地鐵十三號線 |
西直門 |
地鐵十四號線東段 |
善各庄 |
地鐵十四號線西段 |
張郭庄 |
地鐵十五號線 |
俸伯 |
地鐵八通線 |
四惠 |
地鐵昌平線 |
南邵 |
地鐵亦庄線 |
宋家庄 |
地鐵房山線 |
蘇庄 |
地鐵機場線 |
東直門 |
3. 程序在讀取beijing-subway.txt中信息時,不僅能夠處理格式正確的文件,還能夠處理各種異常的情況。
4. 在命令行中以-b參數加兩個地鐵站點名稱執行程序時,例如
subway.exe -b station1 station2
將計算從第一個站點station1到第二個站點station2的最短(經過的站點數最少)路線,並返回經過的站點的個數和路徑,如果有換乘,請列出換乘的線路。輸出格式如下:
4
知春路
知春里
海淀黃庄換乘地鐵四號線
中關村
5. 在命令行中以-c參數加兩個地鐵站點名稱執行程序時,例如
subway.exe -c station1 station2
將計算從第一個站點station1到第二個站點station2的換乘最少的最短路線,並返回經過的站點的個數和路徑,如果有換乘,請列出換乘的線路。輸出格式同上。
附加題:
擴展命令行程序,使其以-a參數加一個地鐵站點名稱執行程序時,例如
subway.exe –a station
將計算從站點station出發,最快(經過的站點數最少,若一個站點經過多次需重復計算)地遍歷地鐵的所有車站並回到起點的路線,要求
a. 換乘不出地鐵系統,即不能從一個地鐵口走到路面,然后從另一個站進去;
b. 只用經過一次,就算經過車站。
程序輸出總共經過多少站,以及經過的站名。舉例來說,假如地鐵系統只有知春路和西土城兩個站,從知春路站出發,那么這個程序應該輸出:
3
知春路
西土城
知春路
博客撰寫要求:
發表在你的個人博客上,也可以同時轉發到你的團隊博客上來增加你們團隊博客的人氣。具體要求如下:
1)在開始實現程序之前,使用下述PSP表格記錄下你估計將在程序的各個模塊的開發上耗費的時間。
2)在你實現完程序之后,使用下述PSP表格記錄下你在程序的各個模塊上實際花費的時間。
3)記錄你在改進程序性能上花費了多少時間,描述你改進的思路,並展示一張性能分析的圖(由VS 2015的性能分析工具自動生成),並展示你程序中消耗最大的函數。
4)共享你對程序進行測試的至少10個測試用例,以及說明為什么你能確定你的程序是正確的。
5)說明你在個人項目中學到了什么。
PSP 2.1 |
Personal Software Process Stages |
Time |
Planning |
計划 |
|
· Estimate |
· 估計這個任務需要多少時間 |
|
Development |
開發 |
|
· Analysis |
· 需求分析 (包括學習新技術) |
|
· Design Spec |
· 生成設計文檔 |
|
· Design Review |
· 設計復審 (和同事審核設計文檔) |
|
· Coding Standard |
· 代碼規范 (為目前的開發制定合適的規范) |
|
· Design |
· 具體設計 |
|
· Coding |
· 具體編碼 |
|
· Code Review |
· 代碼復審 |
|
· Test |
· 測試(自我測試,修改代碼,提交修改) |
|
Reporting |
報告 |
|
· Test Report |
· 測試報告 |
|
· Size Measurement |
· 計算工作量 |
|
· Postmortem & Process Improvement Plan |
· 事后總結, 並提出過程改進計划 |
|
合計 |
|