腦殼疼的二次作業
211606319-林志強 211606321-劉傑
一、預估與實際
PSP2.1 | Personal Software Process Stages | 預估耗時(分鍾) | 實際耗時(分鍾) |
---|---|---|---|
Planning | 計划 | ||
• Estimate | • 估計這個任務需要多少時間 | 20 | 30 |
Development | 開發 | ||
• Analysis | • 需求分析 (包括學習新技術) | 600 | 679 |
• Design Spec | • 生成設計文檔 | 90 | 130 |
• Design Review | • 設計復審 | 30 | 50 |
• Coding Standard | • 代碼規范 (為目前的開發制定合適的規范) | 55 | 75 |
• Design | • 具體設計 | 25 | 35 |
• Coding | • 具體編碼 | 44 | 60 |
• Code Review | • 代碼復審 | 20 | 30 |
• Test | • 測試(自我測試,修改代碼,提交修改) | 15 | 30 |
Reporting | 報告 | ||
• Test Repor | • 測試報告 | 30 | 44 |
• Size Measurement | • 計算工作量 | 15 | 20 |
• Postmortem & Process Improvement Plan | • 事后總結, 並提出過程改進計划 | 30 | 45 |
合計 | 974 | 1228 |
二、需求分析
我通過網上查找的方式了解到,小學三年級數學有如下的幾個特點:
- 特點1:會筆算一位數除多位數的除法、兩位數乘兩位數的乘法,會進行相應的乘、除法估算和驗算。
- 特點2:會口算一位數除商是整十、整百、整千的數,整十、整百數乘整十數,兩位數乘整十、整百數(每位乘積不滿十)。
- 特點3:初步認識簡單的小數(小數部分不超過兩位),初步知道小數的含義,會讀、寫小數,初步認識小數的大小,會計算一位小數的加減法。
- 特點4:學會混合運算,學會使用小括號。
經過分析,我認為,這個程序應當:
- 使用的數字小於100。
- 不能出現倆位小數。
- 可以出現小括號
三、設計
1. 設計思路
- 這次作業要求為三年級學生設計一個出題器,首先數字要求小於100,有加減乘除和小括號多種運算符
- 由於添加了小括號,所以需要考慮運算優先級的問題,需要用到逆波蘭算法
- 逆波蘭算法的核心步驟就2個:1,將中綴表達式轉換為后綴表達式,例如輸入的原始表達式是 3 X(5+7) ,轉換得到 3 5 7 + X 2、根據后綴表達式,按照特定的計算規則得到最終結算結果
- 流程圖
2. 實現方案
- 准備工作:先在Github上創建倉庫,克隆到本地
- 先實現判斷用戶的年級,在獲取需要生成的題目的數量
- 實現四則運算,尤其注意運算符的優先級
- 將題目和答案輸出
1. 調試日志
- 無法出現括號。未解決。
- 出現負數。未解決。
- 小數。未解決。
2. 關鍵代碼
public class Operation {
private static int ADDITION=1;
private static int SUBTRACTION=1;
private static int MULTIPLICATION=2;
private static int DIVISION=2;
public static int getValue(String operation){
int result;
switch (operation){
case "+":
result=ADDITION;
break;
case "-":
result=SUBTRACTION;
break;
case "*":
result=MULTIPLICATION;
break;
case "/":
result=DIVISION;
break;
default:
result=0;
}
return result;
}
}
實現符號的優先級運算。
3. 代碼規范
請給出本次實驗使用的代碼規范:
- 第一條:方法名、參數名、成員變量、局部變量都統一使用 lowerCamelCase 風格,必須遵循駝峰形式。
- 第二條:類名使用UpperCamelCase風格。
- 第三條:避免變量的定義與上一層作用域的變量同名。
五、測試
測試序號 | 輸入參數grade n | 測試結果 |
---|---|---|
1 | 1 10 | 符合預期結果 |
2 | 2 20 | 符合預期結果 |
3 | 3 20 | 符合預期結果 |
4 | 3 30 | 符合預期結果 |
六、總結
- 結對作業需要倆人分配好工作,在實驗中才能事半功倍。
- 隨着作業難度的增加,在前期的准備工作就要做足。在需求分析,具體審計,思路上就要清晰明確。
- 倆個人在編程過程中盡量要保證一致節奏,否則會使雙方在測試上出現分歧。