日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

201571030310/201571030329《小学四则运算训练软件》结对项目报告

發(fā)布時間:2025/3/21 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 201571030310/201571030329《小学四则运算训练软件》结对项目报告 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.項目源碼。

Github地址:https://github.com/loadrove/SoftWareTest

.項目報告

1.需求分析:

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

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

? ? ?

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

? (4)程序允許用戶進行多輪測試,提供用戶多輪測試分?jǐn)?shù)柱狀圖,示例如下:

?

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

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

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

2.軟件設(shè)計:

? (1)設(shè)計流程圖: ?

? ? ? ? ? ? ? ?? ?? ?

?(2)設(shè)計類圖

? ? ? ? ? ? ? ? ?

? 1> ReadFile類是讀取所有文件,將生成的算式全部讀出來,以棧的形式放入數(shù)組內(nèi);

? 2> Fraction類是關(guān)于分?jǐn)?shù)的計算,分為真分?jǐn)?shù)和假分?jǐn)?shù);

? 3> Calculate類是百內(nèi)整數(shù)的加減乘除運算;

? 4> Textview就是顯示最終運算結(jié)果,以及顯示分?jǐn)?shù),計時等功能。

?

(3)核心代碼:

? 1>讀取生成的文件:

? ? ?? ? ? ? ? ??

2>分?jǐn)?shù)的運算:

public int getNumerator() { return c; } public int getDinominator() { return d; } public void selfTrim() { int maxCommon=commonDivisor(c,d); //求出兩個數(shù)的最大公約數(shù)。 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) //兩個分?jǐn)?shù)相乘。 { 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不能做除數(shù)!"); System.exit(0); } Fraction result=new Fraction(c,d);return result.multiply(new Fraction(f2.getDinominator(),f2.getNumerator()));} //計算2個數(shù)的最大公約數(shù)。按絕對值計算。

?

?

?

3>整數(shù)的計算:

private static Stack<String> count(Stack<String> result,boolean isF,int i) {if(!isF) {switch(i) {case 1:String str1=Integer.parseInt(result.pop())+Integer.parseInt(result.pop())+"";result.push(str1);break;case 2:String str2=-Integer.parseInt(result.pop())+Integer.parseInt(result.pop())+"";result.push(str2);break;case 3:String str3=Integer.parseInt(result.pop())*Integer.parseInt(result.pop())+"";result.push(str3);break;case 4:int x=Integer.parseInt(result.pop());String str4=Integer.parseInt(result.pop())/x+"";result.push(str4);break;}}else {switch(i) {case 1:if(fraction!=null) {int x1=Integer.parseInt(result.pop());int x2=Integer.parseInt(result.pop());Fraction f1=new Fraction(x2,x1);fraction=fraction.plus(f1);}else {int x1=Integer.parseInt(result.pop());int x2=Integer.parseInt(result.pop());Fraction f1=new Fraction(x2,x1);int y1=Integer.parseInt(result.pop());int y2=Integer.parseInt(result.pop());Fraction f2=new Fraction(y2,y1);fraction=f1.plus(f2);}break;case 2:if(fraction!=null) {int x1=Integer.parseInt(result.pop());int x2=Integer.parseInt(result.pop());Fraction f1=new Fraction(x2,x1);fraction=fraction.minus(f1);}else {int x1=Integer.parseInt(result.pop());int x2=Integer.parseInt(result.pop());Fraction f1=new Fraction(x2,x1);int y1=Integer.parseInt(result.pop());int y2=Integer.parseInt(result.pop());Fraction f2=new Fraction(y2,y1);}break;case 3:if(fraction!=null) {int x1=Integer.parseInt(result.pop());int x2=Integer.parseInt(result.pop());Fraction f1=new Fraction(x2,x1);fraction=fraction.multiply(f1);}else {int x1=Integer.parseInt(result.pop());int x2=Integer.parseInt(result.pop());Fraction f1=new Fraction(x2,x1);int y1=Integer.parseInt(result.pop());int y2=Integer.parseInt(result.pop());Fraction f2=new Fraction(y2,y1);fraction=f1.multiply(f2);}break;case 4:if(fraction!=null) {int x1=Integer.parseInt(result.pop());int x2=Integer.parseInt(result.pop());Fraction f1=new Fraction(x2,x1);fraction=fraction.divide(f1);}else {int x1=Integer.parseInt(result.pop());int x2=Integer.parseInt(result.pop());Fraction f1=new Fraction(x2,x1);int y1=Integer.parseInt(result.pop());int y2=Integer.parseInt(result.pop());Fraction f2=new Fraction(y2,y1);fraction=f2.divide(f1);}break;}}return result;}private static Stack<String> toNumberStack(Stack<String> s){Stack<String>numbers=new Stack<String>();for(int i=0;i<s.size();i++) {if(!s.get(i).equals("+")&&!s.get(i).equals("-")&&!s.get(i).equals("*")&&!s.get(i).equals("/")&&!s.get(i).equals("÷")) {System.out.print(s.get(i)+",");numbers.push(s.get(i));}}return numbers;}

?(4)運行結(jié)果:? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ?? ? ??? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

?測試結(jié)果統(tǒng)計:

? ?(5)本次設(shè)計的PSP:

PSP2.1

任務(wù)內(nèi)容

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

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

Planning

計劃

9

14

Estimate

估計這個任務(wù)需要多少時間,并規(guī)劃大致工作步驟

0.5

1.5

Development

開發(fā)

9

10.5

Analysis

?需求分析 (包括學(xué)習(xí)新技術(shù))

1

0.5

?Design Spec

生成設(shè)計文檔

0.5

0.5

Design Review

設(shè)計復(fù)審?(和同事審核設(shè)計文檔)

0.5

0.5

Coding Standard

?代碼規(guī)范?(為目前的開發(fā)制定合適的規(guī)范)

0.5

0.5

?Design

? 具體設(shè)計

1

1

Coding

具體編碼

4

6

Code Review

代碼復(fù)審

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

·? 事后總結(jié)?,并提出過程改進計劃

0.5

0.5

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

?

??

? ? ?和我合作的小伙伴是一個思維能力很強的人,并且也很有想法,他的編程能力很強。在項目規(guī)劃設(shè)計前期,我原本的計劃是用Java設(shè)計一個面向?qū)ο蟮挠脩艚缑?#xff0c;他提出了他的想法,他想用上學(xué)期所學(xué)的安卓開發(fā)技術(shù)來做一個APP用戶界面,我們通過討論,覺得他的方法可行,并且比用Eclipse中開發(fā)設(shè)計要簡單許多,通過使用他的策略,使得項目開發(fā)節(jié)省了很多時間。和他合作開發(fā)這個小項目的過程中,我提高了很多,改變了我的一些原來的軟件設(shè)計思路。兩個人通過努力,基本上實現(xiàn)了老師的項目要求,合作的也很愉快,期待能在以后的項目開發(fā)中繼續(xù)能和他合作。

(7)結(jié)對編程真的能夠帶來1+1>2的效果嗎?通過這次結(jié)對編程,請談?wù)勀愕母惺芎腕w會。

? ? ? 結(jié)對編程真的能夠帶來1+1>2的效果,這是值得肯定的。在本次實驗項目開發(fā)中,我倆分工合作,我主要負責(zé)題目的運算和分?jǐn)?shù)統(tǒng)計,和我的伙伴他主要開發(fā)設(shè)計用戶界面,以及計時器等;我們兩個人合作完成項目,能夠互相發(fā)現(xiàn)編程中存在的問題與不足,共同思考遇到的難題,兩個人的思考能夠把問題考慮的更加全面,也能讓算法更優(yōu),這些都是一個人無法做到的。我也在此次開發(fā)編程中發(fā)現(xiàn)自己的代碼比較亂,條理不是很清晰,這些是我的不足,我應(yīng)該要向伙伴多學(xué)習(xí)和請教,使得我的代碼更加完美,讓自己的能力得到提高。我也確確實實感受到了團隊合作的力量有很大的潛力。

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/yhy618/p/8690059.html

總結(jié)

以上是生活随笔為你收集整理的201571030310/201571030329《小学四则运算训练软件》结对项目报告的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。