日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

一.項目源碼。

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

.項目報告

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個數的最大公約數。按絕對值計算。

?

?

?

3>整數的計算:

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)運行結果:? ? ? ? ? ? ? ? ? ? ? ? ? ??

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

?測試結果統計:

? ?(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)請使用漢堡評價法給你的小伙伴一些點評。

?

??

? ? ?和我合作的小伙伴是一個思維能力很強的人,并且也很有想法,他的編程能力很強。在項目規劃設計前期,我原本的計劃是用Java設計一個面向對象的用戶界面,他提出了他的想法,他想用上學期所學的安卓開發技術來做一個APP用戶界面,我們通過討論,覺得他的方法可行,并且比用Eclipse中開發設計要簡單許多,通過使用他的策略,使得項目開發節省了很多時間。和他合作開發這個小項目的過程中,我提高了很多,改變了我的一些原來的軟件設計思路。兩個人通過努力,基本上實現了老師的項目要求,合作的也很愉快,期待能在以后的項目開發中繼續能和他合作。

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

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

?

?

?

?

轉載于:https://www.cnblogs.com/yhy618/p/8690059.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。