第1次作業
需求分析
1、控制運算表達式題目數量,控制題目中數值的大小
2、題目中存在分數形式要進行約分
3、運算符個數不能超過3個
4、不能出現重復題目,即兩個運算表達式的計算步驟不能完全相同
5、程序同時支持計算生成的每道題目,並對結果進行約分
6、對用戶所做答案進行判斷,並且輸出正確答案或錯誤答案
功能設計
基本功能
1、根據控制臺輸入的數字隨機生成指定運算元個數和算式數目的運算符
2、重復題目查詢
3、基本的四則運算功能
4、式子中的分數和最終計算結果均約分到最簡
設計實現
環境
windows10+java
程序結構設計
生成問題和答案的txt文件
功能測試
控制臺操作運算數的最大值、式子的運算元個數、生成的式子的個數
生成相應運算數最大值、運算元個數、式子個數存入文件questions.txt
相應的答案存入answer.txt
控制臺輸入答案,並檢查正確與否,輸出正確的數目和錯誤的數目,並輸出相應的做正確的題號和錯誤的題號
查重測試
不是重復式子,查重函數的返回值為false
重復的式子,查重函數的返回值為true
後面在循環生成表達式時,只要實例化這個查重類,判斷式子重復與否再在其中選擇兩個式子的其中一個生成即可
難點解析
查重
思路:無論表達式多長,都能分解成數次二元運算,因此把每次二元運算的兩個操作數和二元運算的結果存入一個字符串即可,可以在後綴表達式計算過程中用一個空字符串來記錄
如 5*(3-2)
轉成字符串為 231 155
當遇到4+5 5+4 或者4*5 5*4類似的情況時,只要控制存入字符串的順序,先存入值較小的數,再存入值較大的數,最後存入二元運算的結果
PSP記錄表
總結
在這次項目中回顧了數據結構順序棧的知識
需求全部實現,但是代碼結構設計得不是很合理,經常邊寫邊測試免得自己寫亂
由於這學期忙著復習基礎知識和數據結構知識參加宣講會,想早點找到實習,因此沒有多花時間優化代碼結構
第1次作業