1. 程式人生 > >20172305 結對編程項目-四則運算 第一周 階段總結

20172305 結對編程項目-四則運算 第一周 階段總結

表達式 string 計算機 planning mage 感覺 想法 develop tab

20172305 結對編程項目-四則運算 第一周 階段總結

結對編程的好麗友

  • 20172323 王禹涵:中綴轉後綴
  • 20172314 方藝雯:後綴表達式的計算
  • 20172305 譚鑫:中綴表達式的輸出

需求分析

  • 1.能隨機生成由使用者確定的任意多道四則運算題目

  • 2.題目的難度等級可以選擇,也可以選擇不做混合運算。

  • 3.題目運算實現中綴表達式轉為後綴表達式並計算。

  • 4.可以判斷正誤,並計算正確率。

  • 5.支持真分數的運算。

設計思路

無棧(方藝雯)

  • 首先要確定生成題目的數量,可以用一個循環,使用Scanner,循環次數由用戶輸入的數確定。
    • 算式的產生
    • 寫一個類實現整數的四則運算:定義兩個整數numerator和denominator,利用 int nextInt(4) 方法隨機輸出0123四個整數,分別代表進行加減乘除運算,然後根據隨機輸出實現的的運算符進行numerator和denominator的加減乘除運算。
    • 再寫一個類實現分數的四則運算:利用書上的第七章RationalNumber和RationalTester類可以實現。
    • 還需要判斷正誤的操作,並輸出成績和正確率。再寫一個類,將運算結果與用戶輸入的值比較,用if-else語句輸出“正確”或“錯誤”並利用“x++”統計正確題目個數,與題目總數相除即得正確率。
    • 這種方法只是最開始的簡單構思,並沒有實現要求的所有功能,比如“實現中綴表達式轉為後綴表達式並計算”,在老師講完有關棧的知識後進一步構思。

有棧(方藝雯)

  • 產生式子:首先,讓用戶選擇題目的難度等級,分別對應不同數量的數字進行運算,確定隨機產生的整數的個數,定義兩個整數numerator和denominator代表分子和分母。分數的產生利用書上第七章RationalNumber類和RationalTest類(也可以單獨調用該方法只進行分式的計算),然後調用函數StringTokenizer將分數作為一個String型的,然後同時調用產生分數和整數混合,然後用一個hasMoreTokens方法遍歷所有的數,遇到String型的提出,遇到整數型的則將其作為分子,分母為1,然後將這些數存入設立的棧1中(全為分數),然後另外設立一個棧2,利用 int nextInt(4) 方法隨機輸出0123四個整數(產生的數量為棧1 中數字數量減一),分別代表加減乘除運算符,將數存入棧中,然後先讀取棧1的一個數字,然後讀取棧2的一個運算符,然後繼續讀取棧1的,直到讀取完所有的數。然後再將這些數輸出,此時這些數都是String型的分數,返回出來字符串再用next循環,一個一個分開,分數在中綴轉後綴時,2/3為一個整體,轉成後綴,聲稱出來又是一串,分開後next出來一個分數,創建一個對象自定義以/為分隔符分開。得出結果,利用RationalNumber類的reduce和gcd方法化簡,結果為真分數的話會保留分數形式,假分數的話結果為整數。
  • 判斷正誤:將用戶輸入的數字與計算機的結果比較,輸出正誤。如果答案是分數,分別比較分子分母來判斷。
  • 統計正確率:用一個循環,當判斷正誤時為正確時,正確題數加一,最後總數與題目數相除可得。

UML類圖(譚鑫)

技術分享圖片

遇到的困難及解決辦法

  • UML類圖的編寫

  • 解決辦法:UML類圖算是編寫程序的一個藍圖吧,這部分是大家商討後,有我進行實現的,最開始沒有用到棧的問題很好想,所以UML類圖的編寫也很簡單,產生出我們組的UML類圖1.0版,但是通過分析和用到棧的問題,我們又產生出一個UML類圖2.0版,很不成熟,在編寫產生算數式子的類的同時,進行了第三次的修改,產生出UML類圖3.0版
    技術分享圖片
    技術分享圖片

  • 輸出式子的問題

  • 解決辦法:我們最先討論的以問題是進行運算符和數字的交替進行,通過輸入題目量進行在發那個發裏面自動生成題目,但是在編寫的過程中,我們覺得可以是題目量在產品代碼中進行重復,每個題目等級下面進行產生一個式子的循環即可。通過對一個算數式子的分析,一個式子裏面扣除等號,數字始終要比運算符多一個,所以,我們可以通過一個數配一個字符的方式進行循環,最後添加一個數以及等號就完成式子的整串輸出了。
  • 分式的問題

  • 解決辦法:對於分式,我剛開始的想法現在想想,如果那樣做的話,最後肯定會被扣分的,我想分式的表示形式和兩個整數的除法一樣,所以在輸出式子的時候,我們完全可以忽略分式的問題了。在偷偷看到別的組做的問題的時候,他們的除號用“÷”表示,所以分式的問題還得考慮。這樣的話就可以很清晰的分出是整數的運算和分式的運算,同時可以進行兩者的混合運算了。

結對評價

  • 王禹涵:王禹涵負責的是PSP表格的制定、代碼的規範性、以及最重要的對我提出的想法進行邊界性的分析,算是找不足吧!由於他負責編寫的是中綴轉後綴的問題,感覺比較難,所以在之前就沒有有太大的任務,能夠轉換為後綴的大問題解決就行。
  • 方藝雯:方藝雯負責的是需求分析,就是把我們腦中想法進行編寫輸出,同時也負責運算後綴表達式的計算,對我們的不成條理的問題進行串接,感覺也比較難。
  • 兩位同學都很給力,一直熬夜進行程序的構思,以及理解我先編出的輸出式子的代碼,和兩位同學進行合作編寫,是自己的榮幸,一起找出問題,一起解決問題。

PSP(王禹涵)

PSP2.1 Personal Software Process Stages 預估耗時(小時) 實際耗時(小時)
Planning 計劃 1 1
Estimate 估計這個任務需要多少時間 20
Development 開發 2 10
Analysis 需求分析 (包括學習新技術) 2 2
Design Spec 生成設計文檔 1 1
Design Review 設計復審 (和同事審核設計文檔) 0.5 2
Coding Standard 代碼規範 (為目前的開發制定合適的規範) 0.5 0.5
Design 具體設計 2
Coding 具體編碼 2
Code Review 代碼復審 1
Test 測試(自我測試,修改代碼,提交修改) 1
Reporting 報告 2
Test Report 測試報告 2
Size Measurement 計算工作量 1
Postmortem & Process Improvement Plan 事後總結, 並提出過程改進計劃 1

20172305 結對編程項目-四則運算 第一周 階段總結