代碼鏈接:https://github.com/devilwjy/Code.Demo
需求分析:
1.程序可接收一個輸入參數n,然后隨機產生n道加減乘除練習題,每個數字在 0 和 100 之間,運算符在3個到5個之間。
2.每個練習題至少要包含2種運算符。
3.練習題在運算過程中不得出現負數與非整數,比如不能出 3/5+2=2.6,2-5+10=7等算式。
4.練習題生成好后,將學號與生成的n道練習題及其對應的正確答案輸出到文件“result.txt”中,不要輸出額外信息,文件目錄與程序目錄一致。
當程序接收的參數為4時,以下為輸出文件示例:
功能設計:
1.從鍵盤輸入一個數值,並生成相應數量的四則運算練習題。
2.數值的范圍為1到100,運算符的范圍是+,-,*,/。
3.數值的個數為3個,運算符的個數為2個。
4.運算過程中不得出現負數與非整數。
5.將學號、生成的四則運算練習題並及計算答案輸出到名為“Result.txt”的文檔中。
設計實現:
測試運行:
核心代碼:
以第一個運算符為“/”為例
1 //第一個運算符為“/” 2 else{ 3 if(data1%data2==0 && data2!=0)//判斷data1能否被data2整除,且除數data2不能為0 4 { 5 if(operator[num2]=="+")//乘除的優先級高於加減,所以可以順着往下計算 6 { 7 result=data1/data2+data3; 8 System.out.println(str+"="+result); 9 10 } 11 else if(operator[num2]=="-") 12 { 13 if(data1/data2>=data3)//判斷data1/data2的商是否大於data3 14 { 15 result=data1/data2-data3; 16 System.out.println(str+"="+result); 17 18 } 19 else{ 20 number++;//不符合條件就將表達式的個數加1,進行下一個表達式的計算 21 } 22 } 23 else if(operator[num2]=="*") 24 { 25 result=data1/data2*data3; 26 System.out.println(str+"="+result); 27 28 } 29 else{ 30 int result1=data1/data2; 31 if(result1%data3==0 && data3!=0)//判斷data1/data2的商能否整除data3,且data3不能為0 32 { 33 result=data1/data2/data3; 34 System.out.println(str+"="+result); 35 36 } 37 else{ 38 number++; 39 } 40 } 41 } 42 else{ 43 number++; 44 } 45 }
總結:
本次實驗我的實現過程很簡單,而且有很大的局限性,只能生成含有三個數、兩個運算符的四則運算練習題。一開始我的想法是將隨機生成的四則運算放在一個字符串里,根據逆波蘭式運算,將中綴表達式轉換成后綴表達式,然后存儲在棧中,但是最后沒能成功,只好用一種極為簡單的方式實現這個實驗。說來有些慚愧,有點投機取巧之嫌,不過我的編程能力很差,縱然仔細研究了網上博客中的代碼,還是寫不出想要實現的方法。雖然很遺憾,但我也只能做到這兒了,不能說問心無愧,只能表明以前用的功太少了,以后回盡力改正,養成良好的習慣。
PSP |
任務內容 |
計划完成需要的時間(min) |
實際完成需要的時間(min) |
Planning |
計划 |
10 |
12 |
Estimite |
估計任務所需時間,並規划大致工作步驟 |
10 |
15 |
Development |
開發 |
100 |
120 |
Analysis |
需求分析 (包括學習新技術) |
8 |
6 |
Design Spec |
生成設計文檔 |
6 |
5 |
Design Review |
設計復審(和同事審核設計文檔) |
6 |
5 |
Coding Standard |
代碼規范(為目前的開發指定合適的規范) |
5 |
5 |
Design |
具體設計 |
12 |
14 |
Coding |
具體編碼 |
40 |
46 |
Code Review |
代碼復審 |
12 |
15 |
Test |
測試(自我測試,修改代碼,提交修改) |
15 |
12 |
Reporting |
報告 |
12 |
10 |
Test Report |
測試報告 |
5 |
5 |
Size Measurement |
計算工作量 |
3 |
3 |
Postmortem & Process Improvement Plan |
事后總結,並提出過程改進計划 |
5 |
8 |