第三次作業:個人項目-小學四則運算
博客園:https://www.cnblogs.com/zpfs/
github倉庫:https://github.com/rg-zpf/rg-software
第一部分:要求
具體要求:任何編程語言都可以,命令行程序接受一個數字輸入,然後輸出相應數目的四則運算題目和答案。例如輸入數字是 30, 那就輸出 30 道題目和答案。 運算式子必須至少有兩個運算符,運算數字是在 100 之內的正整數,答案不能是負數。 如:23 - 3 * 4 = 11。
第二部分:設計
1.需求設計
①隨機產生題目
②題目中至少有二個以上的運算符
③提示用戶輸入題目數量
④判斷答案對錯,統計分數
⑤能出和真分數 (二分之一, 十二分之五,等)相關的練習題
2.功能設計
①根據用戶輸入題目數,循環n次,代表n道題目
②判斷對錯,答案與誤差之間相差0.1,如果大於0.1,則為錯誤
③答案不能出現負數,小於0,則跳轉重新出題
④count記錄答案正確數,便於統計分數
第三部分:代碼實現
①首先產生數字為100以內的四則運算,按照用戶輸入題目數n去循環輸出
②因為有一道題目中有兩個運算符,所以要判斷計算優先級問題。我的做法是把兩個運算符存入到一個字符數組中,如果第一個運算符ku[0]是“*”或“/”,那就直接運算,第二個雲算法只要判斷是什麽就也可以直接運算了;如果第一個運算符ku[0]不是“*”或“/”,就要判斷第二個運算符ku[1]是否為“*”或“/”,如果是,就先計算後面兩個數,然後在將後面計算結果與前面相加或者相減(因為前面肯定不是“*”或“/”,所以只有是“+”或“-”);如果不是,則式子中只有“+”和“-”的運算,只要判斷符號就可以順序計算了。
③答案與用戶結果之間的誤差為0.1,並要記錄正確結果數目count,再用(float)count/n*100輸出分數。
部分代碼:
Scanner input = new Scanner(System.in);
float result = input.nextFloat();
if(Math.abs(result-sum)<0.1){
System.out.println("恭喜你,計算正確,答案是:"+sum);
count=count+1;
}else{
System.out.println("很遺憾,計算錯誤,答案是:"+sum);
}
註:具體代碼,請到github上查看。
結果測試:
第四部分:存在問題
①不能夠產生分數
②代碼可優化
個人軟件過程耗時估計與統計表:
PSP2.1 | Personal Software Process Stages | Time Senior Student(h) | Time(h) |
Planning | 計劃 | 1 | 1 |
· Estimate | 估計這個任務需要多少時間 | 25 | 30 |
Development | 開發 | 1 | 1 |
· Analysis | 需求分析 (包括學習新技術) | 1 | 1 |
· Design Spec | 生成設計文檔 | 1 | 1 |
· Design Review | 設計復審 | 2 | 2 |
· Coding Standard | 代碼規範 | 5 | 5 |
· Design | 具體設計 | 1 | 1 |
· Coding | 具體編碼 | 5 | 8 |
· Code Review | 代碼復審 | 3 | 3 |
· Test | 測試(自我測試,修改代碼,提交修改) | 4 | 6 |
Reporting | 報告 | 2 | 2 |
· | 測試報告 | 0.5 | 0.5 |
· | 計算工作量 | 1 | 1 |
· | 並提出過程改進計劃 | 0.5 | 0.5 |
第三次作業:個人項目-小學四則運算