1. 程式人生 > >201571030310/201571030329《小學四則運算訓練軟件》結對項目報告

201571030310/201571030329《小學四則運算訓練軟件》結對項目報告

porting 檢查 感受 font 人的 ima muti 積極 --

一.項目源碼。

Github地址:https://github.com/lucky6991/SoftWareTest/tree/master/SoftWareTest3

二.項目報告。

1.需求分析:

(1)由計算機從題庫文件中隨機選擇20道加減乘除混合算式,用戶輸入算式答案,程序檢查答案是否正確,每道題正確計5分,錯誤不 計分,20道題測試結束後給出測試總分;

(2)題庫文件可采用實驗二的方式自動生成,也可以手工編輯生成,文本格式如下:

技術分享圖片

(3)程序為用戶提供三種進階四則運算練習功能選擇:百以內整數算式(必做)、帶括號算式、真分數算式練習;

(4)程序允許用戶進行多輪測試,提供用戶多輪測試分數柱狀圖,示例如下:

技術分享圖片

(5)程序記錄用戶答題結果,當程序退出再啟動的時候,可為用戶顯示最後一次測試的結果,並詢問用戶可否進行新一輪的測試;

(6)測試有計時功能,測試時動態顯示用戶開始答題後的消耗時間。

(7)程序人機交互界面是GUI界面(WEB頁面、APP頁面都可),界面支持中文簡體。

2.軟件設計:

(1)設計流程圖:

技術分享圖片

(2)設計類圖

技術分享圖片

1> ReadFile類是讀取所有文件,將生成的算式全部讀出來,以棧的形式放入數組內;

2> Fraction類是關於分數的計算,分為真分數和假分數;

3> Calculate類是百內整數的加減乘除運算;

4> Textview就是顯示最終運算結果,以及顯示分數,計時等功能。

(3)核心代碼:

1>讀取生成的文件:

技術分享圖片

2>分數的運算:

public int getNumerator()  
        {  
            return c;  
        }  
        public int getDinominator()  
        {  
            return d;  
        }  
      
        public void selfTrim()  
        {  
            int maxCommon=commonDivisor(c,d);       //求出兩個數的最大公約數。  
            c=c/maxCommon;                  //分式為最簡。  
            d=d/maxCommon;  
            //整理正負號。  
            if((c>0&&d<0)||(c<0&&d<0))  
            {  
                c=-c;  
                d=-d;  
            }  
        }  
      
        public String toString()                        //重寫tostring().  
        {  
            if(c==0||d==1)                          //分母為1 直接輸出分子.  
            {  
                return Integer.toString(c);  
            }  
            return Integer.toString(c)+"/"+Integer.toString(d);     //輸出c/d.  
        }  
        //----- plus  
        public Fraction minus(Fraction f2)  
        {  
            int newNumerator=c*f2.getDinominator()-d*f2.getNumerator();  
            int newDinominator=d*f2.getDinominator();  
      
            int maxCommon=commonDivisor(newNumerator,newDinominator);  
            return new Fraction(newNumerator/maxCommon,newDinominator/maxCommon);  
        }  
        //---- minus  
        public Fraction plus(Fraction f2)  
        {  
            int newNumerator=c*f2.getDinominator()+d*f2.getNumerator();  
            int newDinominator=d*f2.getDinominator();  
      
            int maxCommon=commonDivisor(newNumerator,newDinominator);  
            return new Fraction(newNumerator/maxCommon,newDinominator/maxCommon);  
        }  
        
        
        //----- mutiply  
        public  Fraction multiply(Fraction f2)                  //兩個分數相乘。  
        {  
            int newNumerator=c*f2.getNumerator();  
            int newDinominator=d*f2.getDinominator();  
      
            int maxCommon=commonDivisor(newNumerator,newDinominator);  
            return new Fraction(newNumerator/maxCommon,newDinominator/maxCommon);  
        }  
          
        //-----  divide  
        public Fraction divide(Fraction f2)  
        {  
            if(f2.getNumerator()==0)  
            {  
                System.out.println("0不能做除數!");  
                System.exit(0);  
            }  
            Fraction result=new Fraction(c,d);
            return result.multiply(new Fraction(f2.getDinominator(),f2.getNumerator()));
        }  
      
        //計算2個數的最大公約數。按絕對值計算。  

(4)運行結果:

技術分享圖片 技術分享圖片

測試結果統計:

技術分享圖片

(5)本次設計的PSP:

PSP2.1

任務內容

計劃共完成需要的時間(天)

實際完成需要的時間(天)

Planning

計劃

9

14

Estimate

估計這個任務需要多少時間,並規劃大致工作步驟

0.5

1.5

Development

開發

9

10.5

Analysis

需求分析 (包括學習新技術)

1

0.5

Design Spec

生成設計文檔

0.5

0.5

Design Review

設計復審 (和同事審核設計文檔)

0.5

0.5

Coding Standard

代碼規範 (為目前的開發制定合適的規範)

0.5

0.5

Design

具體設計

1

1

Coding

具體編碼

4

6

Code Review

代碼復審

1

1

Test

測試(自我測試,修改代碼,提交修改)

0.5

0.5

Reporting

報告

1.5

1.25

Test Report

· 測試報告

0.5

0.5

Size Measurement

計算工作量

0.5

0.25

Postmortem & Process Improvement Plan

· 事後總結 ,並提出過程改進計劃

0.5

0.5

(6)請使用漢堡評價法給你的小夥伴一些點評。

技術分享圖片

我的小夥伴很認真,對待每一件事都有一個積極的態度,能很積極主動的和我交流意見,提出他的想法與觀點,在本次項目開發中他主要負責計算器和分數統計,能夠很認真的做開發,對我設計界面開發和計時器的設計提出了很多建議,我倆做了充分的交流和研究,最終分析利弊,用更完善的方式完成了這次的作業,我們互相刪減代碼中的冗余部分;和他合作我感覺到很越快,我們的合作很成功,我也期待下次和他繼續合作開發項目。在此過程中我們也遇到很多問題,但是我們都沒有推卸責任,而是積極探討、一起解決,解決問題後兩個人就特別激動。

(7)結對編程真的能夠帶來1+1>2的效果嗎?通過這次結對編程,請談談你的感受和體會。

通過本次項目,我體會到結對編程真的能夠帶來1+1>2的效果,本次項目的規模相比於上一次大了不少。所以結隊編程的好處也就是提高了編碼和效率,減輕了工作量;也能夠更好地了解他人的想法和思路,對於自己做程序開發也是有很大的積極作用,而且當自己一個人遇到困難的時候,很容易輕易放棄。兩個人一起編程,就會感覺不到編程的枯燥與乏味,反而是很輕松,能彼此討論自己想法的過程。

201571030310/201571030329《小學四則運算訓練軟件》結對項目報告