結對編程項目-四則運算(第二周)


需求分析(描述自己對需求的理解,以及后續擴展的可能性)

1.代碼要滿足加減乘除的運算,包含括號,支持真分數

2.對象選擇生成四則運算題目的數量

3.手動輸入結果

4.題目要可以驗證結果正確與否並統計正確率

5.要輸出文件

6.可以支持多運算符

7.將程序的過程寫入文件

8.最好使用棧的方式,中綴轉后綴

9.對象可以選擇題目運算符的數量決定題目的難度

設計思路

1.先將代碼的結構構建好,即先寫輸出題目的數量

2.通過for循環設計隨機出現的題型,包括真分數題型

3.編寫不同類型的題型並檢驗

4.編寫題目出現后的輸入及對應的語句,最后調用NumberFormat類統計正確的概率

5.通過BufferedWriter的類寫入名字為LX的txt文件,建立一個棧,把每次循環生成的題目壓入棧內

6.測試

7.編寫一個中綴轉后綴的類並編寫測試代碼使用,最后加入主代碼中

實現過程中的關鍵代碼解釋

   BufferedWriter bw = new BufferedWriter(new FileWriter("LX.txt"));
        ArrayList<String> list = new ArrayList<String>();

建立棧,把for循環生成的題目使用 list.add("題目" + (i + 1)+":");壓入

        for(String i:list){
                bw.write(i);
                bw.newLine();
            }
            bw.close();

把每次壓入棧內的內容通過迭代器寫入文件,並添加空行,最后關閉。

測試方法

通過輸入數量決定生成題目的數量,並且題型隨機,最后統計正確率,並且檢查生成的txt文件是否包含了對應的四則運算題目。

運行過程截圖



代碼托管

遇到的困難及解決方法

1.關於如何將程序運行結果寫入txt文件的問題

解決過程:我先翻閱了教材上IO流的代碼,里面只教了如何通過循環寫入多行代碼,便舍棄。於是我通過網上搜索,找到了一段代碼

     BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        System.out.print("請輸入你要保存的字符:");
//讀取一個文本行
        String str=br.readLine();
//創建一個新的File對象
        File f=new File("testio.txt");
//創建一個新的文件testio.txt
        FileOutputStream fos=new FileOutputStream("testio.txt");
        //寫到文本
        fos.write(str.getBytes());
        //關閉輸出流
        fos.close();

通過實踐發現這種方式每次寫入一行內容都要生成一個fos,相比書上的方法較為簡單,但仍有麻煩之處。不過為我后來的代碼提供了思路,這里不得不提一下張旭升和王彪同學,在張旭升和王彪同學幫助下,幫我梳理了代碼結構,並提出了迭代器和棧的方法解決該問題,再次感謝。

對結對的小伙伴做出評價(重點指出需要改進的地方)

這次我和小伙伴齊力鋒同學有了明確分工,我負責完善四則運算的代碼和分數類及其測試,齊力鋒則時寫中綴轉后綴的類和自動生成題目的類。在第一周我們設計了不用棧的方式來進行四則運算,第二周我們則另外做了一個可以用棧方式的四則運算,所以我們用了兩種方法來完成這個題目。我認為齊力鋒同學的設計思路很有邏輯性,並且自己總結並做了中綴轉后綴的類,很厲害。我認為我們都需要更多地動手實踐,只有多做才能多學嘛。

對於搭檔代碼的理解

關於搭檔的中綴轉后綴,通過深入學習,有了自己的理解。他利用了調度場算法,先建立一個堆棧,存儲暫時還不需要處理的運算符,根據運算符級別的高低決定順序,例如,先掃描級別較高的運算符,若遇見括號則先壓入,直到掃描到右括號再把左括號之后的所有彈出。

PSP記錄

Personal Software Process Stages 預估耗時(分鍾) 實際耗時(分鍾)
計划 60 60
估計這個任務需要多少時間 360 720
生成設計文檔 5 5
設計復審 (和同事審核設計文檔) 5 5
開發 30 30
需求分析 20 10
具體編碼 240 360
測試 20 30
測試報告 60 30
事后總結, 並提出過程改進計划 20 10


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM