2017-2018-2 1723 『Java程序設計』課程 結對編程練習_四則運算
阿新 • • 發佈:2018-05-02
sta 小數 tokenize 成員 方法 技術分享 變化 sp2 ann
2017-2018-2 1723 『Java程序設計』課程 結對編程練習_四則運算
組內成員
- 20172327 馬瑞蕃
- 20172320 李聞洲
- 20172317 蔣子行
需求分析
- 自動生成題目
- 可獨立使用(能實現自己編寫測試類單獨生成題目的功能)
- 可生成不同等級題目
- 不同等級的題目應該指的是不同難度的題目,意味著題目的復雜程度隨著等級的上升而上升
- 題目運算(判題)
- 可獨立使用
- 實現中綴表達式轉為後綴表達式並計算
- 自動生成的題目要先轉為後綴表達式,並計算這個後綴表達式
- 判斷用戶答題正誤,並輸出正確結果
- 應該要對用戶的答案支持分數形式的輸入
- 支持真分數
- 可獨立使用
- 實現分數算式的計算
- 生成的題目裏可以有真分數的出現,用戶的答案輸入也要支持分數的輸入
- 題目去重(擴展需求,加分項)
- 可獨立使用
- 實現對自動生成表達式的去重
設計思路(大致)
如何實現隨機生成題目
首先生成的是中綴表達式的題目,然後每一級的題目都會在復雜程度上有變化。
比如一級題目就是最簡單的兩個操作數和一個運算符類型的:x#y(#代表隨機的一個運算符)
二級題目就是三個操作數加兩個運算符,並且還有可能會生成真分數作為操作數:x#y#z;生成真分數的條件由一個隨機數是否滿足某個條件決定
三級題目類似二級題目,但是加上了括號,不過為了防止隨機生成括號會導致諸如“)1+2(”之類的問題,括號的位置是固定的:(x#y)#z;後期也許會試試隨機生成不同的固定位置的括號
如何實現題目運算
利用棧來實現將中綴表達式轉為後綴表達式,然後再用後綴表達式來計算出值
- 此處遇到的尚未解決的問題:
- 用後綴表達式來計算出結果的時候有可能會出現一個問題,根據老師給的方法,可能會出現遇“/”號退棧計算結果是一個小數,這個小數再入棧估計會出現問題
如何實現“支持真分數”
支持真分數有兩個情況:題目中出現真分數,和支持用戶的輸入是真分數
對於題目中出現真分數:
- 因為“/”會混淆,不知道究竟是分數的那一橫還是除號,因此一個打算是把分數用括號括起來作為一個整體來處理,比如(1/2)就是分數二分之一,而1/2就是一除以二。不過另外一種處理方式是用上下倆點中間一橫的那個符號作為除號,而“/”就作為分數的那一橫,以此來區分開來,不過尚未最終決定
- 真分數的生成就是書上例7.4的RationalNumber類改編而來的
對於答案兼容真分數的使用: - 首先由於可能會有13/2之類的情況出現,所以這裏說是答案兼容分數的使用更好一些
- 暫時的思路是在輸入那地方做手腳,可能要用StringTokenizer來先判斷你的輸入是否是分數表達式,若為是,則計算此分數表達式(也許有更簡單的方法)
相關過程截圖
由於還沒有完全弄好,所以這些代碼在後期可能會有巨大的變化,所以僅供參考
UML圖
嗯,很亂,反正後面會改
對隊裏其他人的評價
我覺得OK
PSP
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) | |
---|---|---|---|---|
Planning | 計劃 | 60 | 60 | |
Estimate | 估計這個任務需要多少時間 | 100 | 100 | |
Development | 開發 | 800 | ||
Analysis | 需求分析 (包括學習新技術) | 100 | ||
Coding Standard | 代碼規範 (為目前的開發制定合適的規範) | 30 | ||
Design UML | 設計項目UML類圖 | 50 | ||
Coding | 具體編碼 | 30 | ||
Code Review | 代碼復審 | 50 | ||
Test | 測試(自我測試,修改代碼,提交修改) | 30 | ||
Size Measurement | 計算工作量(實際時間 ) | 30 | ||
Postmortem & Process Improvement Plan | 事後總結, 並提出過程改進計劃 | 30 | ||
合計 | 1240 |
本周總結
這周過去了,思路依舊不清晰,遇到了很多棘手的問題
我可能不太適合做編程這一行的,學不了學不了
2017-2018-2 1723 『Java程序設計』課程 結對編程練習_四則運算