此次的做業是用java來寫一個四則運算練習軟件,雖然已經在大一的時候學過Java這門課程,但我並無學的很好,甚至因爲在這半年裏沒有代碼的練習,忘記了不少基礎知識,因此這樣的做業對我來講有些困難。剛開始的時候不知道該如何讓下手,也致使寫做業的時間有些倉促,在看過先教做業的幾個同窗的代碼以後纔開始動手。在此感謝宇欣給個人幫助,她詳細給我解釋瞭如何運用java將簡單等式鏈接起來,如何運算,如何測試,還交給我若是增長括號的解決方法,雖然我沒有實現這個功能,可是在這次做業的完成過程當中,我學到了不少。java
一、軟件基本功能:git
程序可接收一個輸入參數n,而後隨機產生n道加減乘除(分別使用符號+-*÷來表示)練習題,每一個數字在 0 和 100 之間,運算符在3個到5個之間。算法
二、用戶需求:dom
爲了讓小學生獲得充分鍛鍊,每一個練習題至少要包含2種運算符。同時,因爲小學生沒有分數與負數的概念,你所出的練習題在運算過程當中不得出現負數與非整數,好比不能出 3÷5+2=2.6,2-5+10=7等算式。函數
三、基本要求:學習
練習題生成好後,將你的學號與生成的n道練習題及其對應的正確答案輸出到文件「result.txt」中,不要輸出額外信息,文件目錄與程序目錄一致。測試
總體思路:在這裏我採用的是宇欣教給個人方法,先用Math.random()生成兩個隨機數進行加減乘除的運算生成簡單式,因爲在運算過程當中要保證能整除和不出現負數,因此再用+或*鏈接幾個簡單式就能夠獲得有3-5個運算符的式子,而後利用棧來運算答案。代碼中共用到了四個函數,分別實現了:兩個數的四則運算題目、將運算符增長至3-5個、實現n個混合四則運算、計算答案。編碼
一、生成運算式spa
int x = (int) (Math.random() * 100);// 產生100之內的隨機數 int y = (int) (Math.random() * 100); int z = (int) (Math.random() * 4);// 產生整數0到3 if (z == 1) { if (x < y) { int temp = x; x = y; y = temp; } } if (z == 3) {// 若是是除法,保證能整除 y = (int) (Math.random() * 20) + 1; x = (int) (Math.random() * 6) * y; } String m = x + op[z] + y; if (op[z].equals("-") || op[z].equals("+")) { flag = 1; } return m;
二、產生3-5個運算符.net
String question = ""; for (int i = 0; i < p; i++) { if (i < p - 1) { String con = op1[(int) (Math.random() * 2)]; question += MakeQuestion1() + con; } else { question += MakeQuestion1(); } flag = 0; }
三、產生n個混合運算
for (int i = 0; i < n; i++) { MakeQuestion3(); if(ifsame==1||answer==1){ i--; ifsame=0; answer=0; } }
此次項目中遇到了一些小的問題,好比在剛開始運行的時候沒有注意到題目要求,須要保證整除,因而在計算一些除法問題時出現了錯誤,以及個人自學能力太差,不少地方都要向同窗請教,並且沒有看懂老師提供的調度場算法,但願老師在課上的時候能夠講解一下。完成這次做業的過程當中,也讓我意識到本身在時間分配上的不足,以及瞭解了一個項目的製做過程,學到了不少經驗,相信在下次的做業中,能夠作到更合理的時間分配,以及學習利用老師提供的資源。
PSP2.1 |
任務內容 |
計劃共完成須要的時間(min) |
實際完成須要的時間(min) |
Planning |
計劃 |
15 |
20
|
Estimate |
估計這個任務須要多少時間,並規劃大體工做步驟 |
10 |
8 |
Development |
開發 |
360 |
900 |
Analysis |
需求分析 (包括學習新技術) |
6 |
8 |
Design Spec |
生成設計文檔 |
0 |
0 |
Design Review |
設計複審 (和同事審覈設計文檔) |
30 |
20 |
Coding Standard |
代碼規範 (爲目前的開發制定合適的規範) |
10 |
8 |
Design |
具體設計 |
30 |
40 |
Coding |
具體編碼 |
300 |
360 |
Code Review |
代碼複審 |
30 |
15 |
Test |
測試(自我測試,修改代碼,提交修改) |
30 |
20 |
Reporting |
報告 |
60 |
90 |
Test Report |
測試報告 |
5 |
3 |
Size Measurement |
計算工做量 |
10 |
10 |
Postmortem & Process Improvement Plan |
過後總結, 並提出過程改進計劃 |
3 |
3 |