個人作業1,實作一個自動生成國小四則運算題目的指令行程式
Deadline:##
2017-3-8 12:00AM,以部落格發表日期為準。
評分基準:##
- 按時交 - 有分,檢查的項目包括後文的四個方面
- 題目要求
- 個人軟體過程耗時估計與統計表
- 代碼送出
- 博文規範
- 晚交 - 0分
- 遲交兩周以上 - 倒扣本次作業分數
- 抄襲 - 倒扣本次作業分數
題目描述:##
看了大家對于本課程的目标和規劃,很多同學都希望能提高自己的實踐能力,沒有捷徑可走,就是練習、練習再練習!那麼就從第一個個人項目開始吧,用一周的時間完成一個基于控制台的四則運算程式,實作一個自動生成國小四則運算題目的指令行程式
從《建構之法》第一章的 “程式” 例子出發,像阿超那樣,花二十分鐘寫一個能自動生成國小四則運算題目的指令行 “軟體”,滿足以下需求:
- 除了整數以外,還要支援真分數的四則運算,真分數的運算,例如:1/6 + 1/8 = 7/24
- 運算符為 +, −, ×, ÷
- 并且要求能處理使用者的輸入,并判斷對錯,打分統計正确率。
- 要求能處理使用者輸入的真分數, 如 1/2, 5/12 等
-
使用 -n 參數控制生成題目的個數,例如執行下面指令将生成10個題目
Myapp.exe -n 10
個人軟體過程:##
- 在開始實作程式之前,了解下Personal Software Process Stages(http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html)
- 在開始實作程式之前,請使用以下PSP表格,在第3列填上自己對每個環節的估計時間(機關:分鐘).
- 在做每個環節的過程中,請在第4列填上對應環節的實際消耗時間(機關:分鐘).
-
在軟體開發中,掌握估計時間是一項重要的技能,請通過PSP表格做到
a.厘清開發的完整環節,争取在每個環節都有實際的工作,一開始邊界不清楚是正常的,但請嘗試按自己的了解去努力在對應環節做實際的工作。
b.預估每個環節的時間,并真實統計這些環節的耗時,在完成後輸出完整的PSP耗時估計表。
c.注意:該表格是給自己看的,不要僞造資料!
d.PSP模版表格如下,第3列和第4列分别對應第2列條目的估計時間和真實時間,模版表格裡的時間隻是示意。
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 計劃 | 8 | 6 |
· Estimate | 估計這個任務需要多少時間 | ||
Development | 開發 | 82 | 88 |
· Analysis | 需求分析 (包括學習新技術) | 10 | |
· Design Spec | 生成設計文檔 | 5 | |
· Design Review | 設計複審 | 4 | |
· Coding Standard | 代碼規範 | 3 | |
· Design | 具體設計 | 12 | |
· Coding | 具體編碼 | 36 | 21 |
· Code Review | 代碼複審 | 7 | 9 |
· Test | 測試(自我測試,修改代碼,送出修改) | 13 | |
Reporting | 報告 | ||
· | 測試報告 | 2 | |
計算工作量 | 1 | ||
并提出過程改進計劃 |
代碼送出:##
-
送出你的源代碼和可執行程式至你的coding.net位址
a.怎樣使用git送出代碼到coding.net? 參考,考驗你強大自學能力的時刻到了:
- http://rogerdudler.github.io/git-guide/index.zh.html
- http://www.cnblogs.com/hebau-may/p/6382743.html
- 項目的工程檔案,例如Eclipse的項目檔案
- 項目的源代碼
- 一些必要的配置
- 單獨建立一個public子目錄,存放編譯後的可執行程式,這不是标準的軟體釋出的做法,但是目前你這樣先送出可以。
- bin目錄
- obj目錄
- 可以在根目錄下建立一個.gitignore檔案,把需要忽略的檔案夾和檔案相對路徑逐行添加進去,這樣git 送出的時候就會忽略這些子目錄和子檔案。
- 博文的一開始需要寫明你注冊的 coding 位址
博文規範##
-
送出的部落格必須完整包含下面五個部分
a.需求分析,即使老師已經給出了題目,也要對題目的需求做分析,需求分析可以是自己的思考分析,也可以是找國小老師,學生甚至家長調查後挖掘出更細緻的需求,别小看這個過程,請真實的做這個過程。
b.功能設計,題目的需求,以及從真實調研裡獲得的需求後,要對程式做基本的功能設計,有同學會問:“不就是出題嘛,有啥好設計的?”,其實, 題目裡要求的隻是基本的要求,自己思考和調研會有超出題目要求的需求,甚至你有天才的設計,作出特色的功能。是以,功能會有:
- 基本功能
- 擴充功能
- 進階功能
c.設計實作,設計包括代碼如何組織,你會有哪些Java類,這些類分别負責什麼功能,他們之間的關系怎樣?你會設計哪些重要的函數,關鍵的函數是否需要畫出流程圖?
d.代碼說明,你一定花了最多時間在代碼的編寫與調試上,那麼,這個環節請把你的重要代碼展示出來,代碼的排版請做好。
e.測試運作,你的程式必須是可運作的,請展示你的程式運作的截圖,包括題目要求的所有需求,都有運作的截圖。說明你的程式确實完成了所有需求,如果有實作了擴充需求或者進階需求,也請大方秀出來。
- 展示PSP,這個環節重要的是讓自己看到自己的估計和實際消耗時間,哪個環節耗時最多,哪個環節估計失敗?為什麼?
- 小結。如果,如果所有的環節你都認真做了,那麼,此處你應該會有很多經驗願意與大家分享。