1. 程式人生 > >小學計算題一次大滿足

小學計算題一次大滿足

rem 運算 lan 產品 合計 sig 運行程序 個數 進行

海量小學計算題

一、預估與實際

PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
Planning 計劃 120 300
? Estimate ? 估計這個任務需要多少時間 600 1460
Development 開發
? Analysis ? 需求分析 (包括學習新技術) 120 300
? Design Spec ? 生成設計文檔 30 60
? Design Review ? 設計復審 20 30
? Coding Standard ? 代碼規範 (為目前的開發制定合適的規範) 20 30
? Design ? 具體設計 30 60
? Coding ? 具體編碼 150 400
? Code Review ? 代碼復審 60 250
? Test ? 測試(自我測試,修改代碼,提交修改) 60 200
Reporting 報告 20 60
? Test Repor ? 測試報告 20 20
? Size Measurement ? 計算工作量 20 20
? Postmortem & Process Improvement Plan ? 事後總結, 並提出過程改進計劃 20 30
合計 1760

二、需求分析

我通過百度查詢小學一年級題庫的方式了解到,小學一年級數學有如下的幾個特點:

  • 特點1:答案和題目裏的數值均小於100
  • 特點2:答案和題目裏的數值均為正整數
  • 特點3:一般是兩個數值之間的運算

經過分析,我認為,這個程序應當:

  • 產生的計算題是兩個數之間的運算
  • 參與運算的兩個數和結果均為正整數
  • 參與運算的兩個數和結果均小於100

三、設計

1. 設計思路

說明你如何設計這個程序

比如:

  • 這個程序有1個類,1個函數。
  • 關鍵函數的流程是:讀取命令行中的參數並根據參數決定如何運行,若正常運行創建文本文件,分類產生計算題並將數值及符號保存,打印計算題至屏幕和文本
  • 算法的關鍵是:分類運行輸出計算題並打印至屏幕和文本

2. 實現方案

寫出具體實現的步驟

比如:

  • 準備工作:先在Github上創建倉庫,克隆到本地...
  • 技術關鍵點:分類算法,輸出至文本

四、編碼

請說明你如何按照設計思路進行編碼,並記錄你在開發中遇到的問題,與解決過程

1. 調試日誌

記錄編碼調試的日誌,請記錄下開發過程中的 debug 歷程

比如:

  • 給args【】分配了空間,args【】強轉int拋異常,無法運行程序,取消給args【】分配的空間。
  • if語句後跟兩個語句且有循環語句沒有用大括號括起來,程序不報異常並死循環。
  • 輸出計算題時語句放在了flag變量++的前面,輸出題目答案為上一題答案。

2. 關鍵代碼

        if(y==1)//一年級
        {
            number = (int)Math.ceil((r.nextDouble()*2.0));b[m]=number;//通過隨機數選擇符號
        for(;;){
            number = (int)Math.floor((r.nextDouble()*100.0));a[m]=number;
            number = (int)Math.floor((r.nextDouble()*100.0));c[m]=number;
            if(b[m]==1)if(a[m]+c[m]<100){fh="+";break;}
            if(b[m]==2)if(a[m]-c[m]>=0){fh="-";break;}
        }//循環取參與運算的數值直到滿足運算條件退出循環並記錄符號便於之後輸出
        }
        if(y==2)//二年級
        {number = (int)Math.ceil((r.nextDouble()*2.0));//通過隨機數選擇符號
        b[m]=number+2;
            for(;;){
                number = (int)Math.ceil((r.nextDouble()*50.0));a[m]=number;
                number = (int)Math.ceil((r.nextDouble()*20.0));c[m]=number;
                if(b[m]==3)if(a[m]*c[m]<100){fh="*";break;}
                if(b[m]==4)if(a[m]%c[m]==0&&a[m]>=c[m]){fh="/";break;}
        }//循環取參與運算的數值直到滿足運算條件退出循環並記錄符號便於之後輸出
        }

3. 代碼規範

請給出本次實驗使用的代碼規範:

  • 第一條:手動處理異常不拋出
  • 第二條:合理進行代碼註釋
  • 第三條:不浪費空間
  • 第四條:及時結束進程

並人工檢查代碼是否符合規範

五、測試

  • 輸入-1,1;輸出:題目數輸入錯誤,請輸入1~9999
  • 輸入1000000,2;輸出:題目數輸入過大,請輸入1~9999
  • 輸入0,6;輸出:題目數輸入錯誤,請輸入1~9999 年級輸入錯誤,請輸入1或者2
  • 輸入10,-1;輸出:年級輸入錯誤,請輸入1或者2

六、總結

請總結過程中的教訓和經驗,思考

  • 是否使用了“軟件開發的基本策略:分而治之”,是否需要重構

    是,需要。

  • “高質量的設計、規範的編碼以及有效的測試是保證軟件產品質量的三個重要方面”,你是否采用了相關的手段,是否需要重構

    是,需要。

小學計算題一次大滿足