20172308周亞傑html
可獨立使用(能實現本身編寫測試類單獨生成題目的功能)
可生成不一樣等級題目,相似於:
1級題目:2 + 5 = 、10 - 5 = 之類的兩個數,一個運算符的題目java
(2).題目運算(判題)
可獨立使用,實現中綴表達式轉爲後綴表達式並計算;判斷用戶答題正誤,並輸出正確結果數組
可獨立使用,實現分數算式的計算dom
可獨立使用,實現對自動生成表達式的去重:以下若生成:2 + 5 = & 5 + 2 = 爲同一題目學習
1.自動生成題目:這裏的題目的難度我是採用操做符的個數來定義的,根據操做符再產生操做符加一的數字(這裏暫時沒有編寫真分數的狀況),而後使用循環進行產生,而後以字符串形式輸出出來。測試
2.中綴轉後綴:這個代碼的編寫咱們兩個是交流後各自獨立完成的,我採用的是那個使用操做符優先級表生成二維數組,根據索引值進行判斷優先級,決定操做符是入棧仍是出棧,對於數字直接進行輸出,而後最後把棧裏所存的操做符再進行逐個輸出,完成後綴表達式的輸出。編碼
3.後綴求值:這裏是由寫一個方法:從左向右掃描後綴表達式,遇到操做數進棧,遇到操做符則彈出棧頂的兩個元素,將結果計算出來再壓進棧,最後棧內剩餘一個元素即爲最終答案設計
UML類圖的設計見下:
3d
package arithmetic; import java.util.Random; import java.util.ArrayList; public class Questions { ArrayList<Object> array = new ArrayList<Object>(); Random generator = new Random(); char [] newchar = {'+','-','*','/'}; protected int number; int NUM; public Questions() { number = 0 ; } public Object getQuestion(int num) { int num1 = num; while (num > 0) { int figure = (int) generator.nextInt(9) + 1; array.add(figure); number = (int) (Math.random() * 4); array.add(newchar[number]); num--; } String obj = ""; while (num < 2*num1) { obj += array.get(num); num++; } int other = (int) generator.nextInt(9)+1; array.add(other); obj+=other+"="; return obj; } }
package arithmetic; import java.util.Stack; public class test { private int number,num1,num2; private int value1,value2; private int index=0; private int[][] array = {{0,0,0,0,0}, {0,1,1,-1,-1}, {0,1,1,-1,-1}, {0,1,1,1,1}, {0,1,1,1,1}}; public String obj="2+1-2*2-2/1="; Stack stack = new Stack(); public test() { num1=0; num2=0; value1=0; value2=0; } public String getAnswer() { String result = ""; while (index<obj.length()-1) { char x = obj.charAt(index); if(x>='0'&&x<='9') result += x+" "; else { switch (x) { case '+': number = 1; break; case '-': number=2; break; case '*': number =3; break; case '/': number=4; break; } if(stack.empty()) { num1 = number; number = 0; } else { num2 = number; number=0; } if(array[num1][num2]<=0) { stack.push(x); value1 +=1; } else { result+=stack.pop(); stack.push(x); value1 +=1; value2 +=1; } } index++; } for(int y =0;y<value1-value2;y++) result += stack.pop(); return result; } }
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) |
---|---|---|
Planning | 計劃 | 60 |
Estimate | 估計這個任務須要多少時間 | 3 |
Development | 開發 2000 | 3000 |
Analysis | 需求分析 (包括學習新技術) | 350 |
Coding Standard | 代碼規範 (爲目前的開發制定合適的規範) | 60 |
Design UML | 設計項目UML類圖 | 60 |
Coding | 具體編碼 | 1500 |
Code Review | 代碼複審 | 30 |
Test 測試 | (自我測試,修改代碼,提交修改) | 300 |
Size Measurement 計算工做量(實際時間 ) | 2 | 2 |
Postmortem & Process Improvement Plan | 過後總結, 並提出過程改進計劃 | 30 |
合計 | 4395 |