结队编程项目——四则运算
生活随笔
收集整理的這篇文章主要介紹了
结队编程项目——四则运算
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、項目與分析
項目功能
自動生成小學(xué)四則運算題目(加、減、乘、除)并統(tǒng)計正確率
- 支持整數(shù)
- 支持多運算符(比如生成包含100個運算符的題目)
- 支持真分?jǐn)?shù)
分析
- 生成整數(shù)與真分?jǐn)?shù):實現(xiàn)了生成真分?jǐn)?shù)即可利用分?jǐn)?shù)的約分機制使其生成整數(shù)。
- 生成四則運算:最初想的方法是四則運算的生成可利用加減乘除的符號分別與數(shù)字1、2、3、4相對應(yīng),隨機生成四個數(shù)字再利用switch多分支語法即可生成相應(yīng)符號。但在后來的實踐過程中發(fā)現(xiàn)這種方法并不能很好的實現(xiàn),因為讀取字符串的時候最好直接能讀取符號和數(shù)字,避免二者交叉,所以采取了先在一個數(shù)組中定義好四個符號,然后在生成算式的時候,利用rand產(chǎn)生隨機數(shù),然后指向數(shù)組中不同位置的符號,即可生成
支持多運算符:運算符的數(shù)量是通過源代碼來決定的,可根據(jù)修改源代碼來更改生成運算符的個數(shù)。
二、設(shè)計思路
代碼應(yīng)該包含四個方面:可產(chǎn)生隨機分?jǐn)?shù)、可產(chǎn)生字符串(即算術(shù)題)、可計算產(chǎn)生的字符串、可對分?jǐn)?shù)進(jìn)行約分與加減乘除操作。- 產(chǎn)生隨機分?jǐn)?shù),在主函數(shù)中先隨機產(chǎn)生兩個整數(shù),再在一個類中進(jìn)行約分,因此我們設(shè)置了Rational類。
- 產(chǎn)生字符串,有了分?jǐn)?shù),我們只需要再找個符號就可以了,我們在主函數(shù)中利用分析中生成四則運算的思路利用rand產(chǎn)生了符號,最后在輸出的時候設(shè)置固定的括號位置,最后一個算式就誕生了。
計算產(chǎn)生的字符串,我們把輸出的字符串再讀入到電腦中,利用老師給的思路,構(gòu)建一個計算器,分別利用數(shù)字棧和符號棧來讀字符串,根據(jù)運算符的先后順序執(zhí)行了彈棧,即遇到加號先存,遇到右括號則執(zhí)行之前的算式,遇到乘除則彈出棧頂兩個數(shù)字進(jìn)行運算。
UML類圖
三、關(guān)鍵代碼
題目生成
for(int i=1;i<=n;i++) {System.out.println("題目"+i+":");// calculator.a=read.nextLine();a = rand.nextInt(100);b = rand.nextInt(100);c = rand.nextInt(100);calculator1.a = "("+a+""+ch[rand.nextInt(ch.length)]+ b+""+")"+ch[rand.nextInt(ch.length)]+c+"";約分
double numerator = 1 ; //分子double denominator = 1; //分母void setNumerator(double a) { //設(shè)置分子double c=f(Math.abs(a),denominator); //計算最大公約數(shù)numerator = a/c;//約分if(numerator<0&&denominator<0) { //分子分母負(fù)數(shù)情況numerator = -numerator;denominator = -denominator;}}void setDenominator(double b) { //設(shè)置分母double c=f(numerator,Math.abs(b)); //計算最大公約數(shù)denominator = b/c;if(numerator<0&&denominator<0) {numerator = -numerator;denominator = -denominator;}}
四、遇到的困難及解決辦法
- 問題1:如何解決讀取算式的問題
- 解決方法:將算式放入字符串變量中,再用數(shù)組訪問的方法挨個訪問
五、功能展示
六、對小伙伴文航的評價:
做項目最重要的不是積極,熱情,而是能夠一直積極,熱情,在最初的興奮退卻后,只有堅持不懈,才能成功,而小謝就是這樣的人,我相信,我們在這一學(xué)期的結(jié)對之中都能夠收獲頗豐。
七、PSP圖
| Planning | 計劃 | 20 | 30 |
| · Estimate | · 估計這個任務(wù)需要多少時間 | 30 | 30 |
| Development | 開發(fā) | 300 | 200 |
| · Analysis | · 需求分析 (包括學(xué)習(xí)新技術(shù)) | 300 | 100 |
| · Design Spec | · 生成設(shè)計文檔 | 30 | 20 |
| · Design Review | · 設(shè)計復(fù)審 (和同事審核設(shè)計文檔) | 30 | 20 |
| · Coding Standard | · 代碼規(guī)范 (為目前的開發(fā)制定合適的規(guī)范) | 30 | 30 |
| · Design | · 具體設(shè)計 | 180 | 90 |
| · Coding | · 具體編碼 | 100 | 120 |
| · Code Review | · 代碼復(fù)審 | 60 | 40 |
| · Test | · 測試(自我測試,修改代碼,提交修改) | 30 | 40 |
| Reporting | 報告 | 60 | 60 |
| · Test Report | · 測試報告 | 60 | 60 |
| · Size Measurement | · 計算工作量 | 30 | 20 |
| · Postmortem & Process Improvement Plan | · 事后總結(jié), 并提出過程改進(jìn)計劃 | 60 | 40 |
| 合計 | 1320 | 900 |
轉(zhuǎn)載于:https://www.cnblogs.com/wxhblogs/p/10657262.html
總結(jié)
以上是生活随笔為你收集整理的结队编程项目——四则运算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Centos jdk
- 下一篇: jQuery使用():Deferred有