1、預估與實際
Planning |
計劃 |
|
|
• Estimate |
• 估計這個任務須要多少時間 |
180 |
200 |
Development |
開發 |
|
|
• Analysis |
• 需求分析 (包括學習新技術) |
10 |
10 |
• Design Spec |
• 生成設計文檔 |
5 |
5 |
• Design Review |
• 設計複審 |
5 |
5 |
• Coding Standard |
• 代碼規範 (爲目前的開發制定合適的規範) |
10 |
10 |
• Design |
• 具體設計 |
10 |
10 |
• Coding |
• 具體編碼 |
60 |
60 |
• Code Review |
• 代碼複審 |
5 |
5 |
• Test |
• 測試(自我測試,修改代碼,提交修改) |
30 |
30 |
Reporting |
報告 |
30 |
30 |
• Test Repor |
• 測試報告 |
30 |
30 |
• Size Measurement |
• 計算工做量 |
|
|
• Postmortem & Process Improvement Plan |
• 過後總結, 並提出過程改進計劃 |
5 |
5 |
|
|
合計 |
200 |
2、需求分析
- 特色1
- 通過分析,我認爲,這個程序應當:
- 一年級使用20之內的數字進行加減法,而且結果須要小於等於20大於等於0。
- 二年級使用乘法表上的乘法做爲題目,除法則是100之內的數除以一個個位數,而且答案也應該爲個位數。
3、設計
1. 設計思路
說明你如何設計這個程序算法
- 這個程序須要有三個函數,一個一年級函數,一個二年級函數,一個輸出文件函數。
- 使用主函數調用一年級函數或二年級函數,函數計算完成以後調用輸出文件函數進行輸出
- 算法的關鍵是
- 1.使用數組保存隨機出的數值,符號,答案
- 2.一年級函數中,須要判斷兩數相加或相減是否小於等於20大於等於0,若是不是使用 i--並使用continue結束當前循環,使當前數值做廢。
- 3.二年級函數中,除法須要將答案做爲被除的數,第一個隨機數值或第二個隨機數值做爲除數,以保證符合需求,並減小時間浪費。
2. 實現方案
- 準備工做:先在Github上建立倉庫,克隆到本地...
- 技術關鍵點:輸入數值驗證,使用while無限循環,若是數值正確使用break脫離循環。 使用二維數組保存隨機出的數值。
4、編碼
- 首先隨機三個數值,a,b,m,m爲符號限制隨機數只能爲1,2,1表明加法2表明減法,在二年級則是乘除。
- 一年級先隨機abm,而後根據m的數決定加減,計算出ans答案,而後驗證ans是否小於而是,若是不小於20則continue,將這次數據做廢,而後將a b m ans存入一個二維數組,二維數組第一個數表明題目,第第二個數0 2表明運算的兩個數,1表明符合,3表明答案。
- 二年級先隨機abm,若是m爲1,使用乘法,將a m b ans依次存入二維數組中,若是m爲2,則是除法此時將ans 與 a做爲運算數值,b做爲答案。
- 輸出的時候先將二維數組的0 1 2 輸出出去,做爲題目,而後將0 1 2 3 輸出,做爲答案。
1. 調試日誌
- 第一次調試,發現全部結果都是0,發現是放在for循環數組的第一個數寫成n了。
- 第二次調試,發現一年級ans不符合標準,使用if,剔除不符合標準的數值
- 第三次調試,發現二年級ans不符合標準,除法使用ans 與 a做爲運算數值
- 第四次調試,發現沒有處理異常的能力,是用while循環,檢測輸入數值是否在規定數值內,若是符合使用break跳出循環,若是不符合則繼續循環。
2. 關鍵代碼
for(int i = 0; i < n; i++) {
int a = (int) (Math.random()*20);
int b = (int) (Math.random()*20);
int ans = 0;
int mark = (int) (Math.random()*2+1);
String strMark = null;
if(mark == 1) {
ans = a+b;
strMark = "+";
}else {
ans = a-b;
strMark = "-";
}
if(ans >= 20 || ans < 0) {
i--;
continue;
}
str[i][0] = String.valueOf(a);
str[i][1] = strMark;
str[i][2] = String.valueOf(b);
str[i][3] = String.valueOf(ans);
}
- 將答案大於20的數值剔除掉,將符合需求的數值存入二維數組中
3. 代碼規範
- 第一條:不容許任何魔法值(即未經預先定義的常量)直接出如今代碼中。
- 第二條:大括號的使用約定。若是是大括號內爲空,則簡介地寫成{}便可,不須要換行;若是是非空代碼塊則:左大括號前不換行。左大括號後換行。右大括號前換行。右大括號後還有 else 等代碼則不換行;表示終止的右大括號後必須換行。
- 第三條:左小括號和字符之間不出現空格;一樣的,有小括號和字符之間也不出現空格。
- 第四條:在 if/else/for/while/do 語句中必須使用大括號。
- 第五條:任何二目、三木運算符的左右兩邊都須要加一個空格。
- 第六條:單行字符數限制不超過120個,超出須要換行,換行時遵循以下原則:第二行相對第一行縮進 4 個空格,從第三行開始,再也不繼續縮進,參考示例。運算符與下文一塊兒換行。方法調用的點符號與下文一塊兒換行。方法調用時,多個參數,須要換行時,在逗號後進行。
5、測試
6、總結
- 本次做業先將問題簡化,先在主函數裏寫出隨機一個加減法的函數,而後寫出一個二維數組進行儲存,而後寫出一個輸出函數。而後將一年級函數與輸出函數從主函數中分開,分爲單獨的函數,而後再寫一個二年級函數,將一年級函數複製過去,在判斷符號處進行修改。而後測試程序是否可以正常運行。測試成功後,在處理異常輸入數據。