1. 程式人生 > >第一次作業簡單艱辛的歷程

第一次作業簡單艱辛的歷程

pub 一次 eth 測試結果 內容 出現 war rep github

快的並痛苦著

一、預估與實際

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

二、需求分析

  • 要根據實際情況,結合實際,並不是所有的小學一年級生水平都一樣,需要有一個範圍
  • 只有加減法
  • 不能有負數小數
  • 100以內的運算

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

  • 控制在一、二年級生能完成的水平內
  • 都是整數,不能有小數,因為小數點一年級還沒學哈哈
  • 不能出現負數
  • 數據範圍嚴格控制好,不要超綱

三、設計

1. 設計思路

  • 說明你如何設計這個程序
  • 用戶輸入的參數,需要判斷是否符合要求
  • 題目隨機生成,需要符合一二年級的算術規則
  • 不能產生負數
  • 範圍100以內
  • 運用隨機數random()
  • 文件的生成與寫入
  • 將題目和答案存入out.txt文件

比如:

  • 最重要的,判斷用戶輸入的數字是否符合規定,不符合的話,應該怎麽提示,這又應該怎麽控制
  • 用到比如Integer.parseInt,一開始很困難,通過借鑒請教別的同學的以及查閱資料掌握
  • 一二年級的數字範圍

2. 實現方案

  • 準備工作:先在Github上創建倉庫,克隆到本地.
  • 技術關鍵點:如何用命令行輸出參數

四、編碼

  • 沒有考慮到用戶輸入輸入的參數不是整數數字的
  • 開始有很多問題,比如不會生哼隨機數,不會寫入文件等等,通過復習和查閱資料弄清楚

1. 調試日誌

  • 一開始出現的大小bug簡直是天花亂墜,後來經過很漫長的分析修改,一步一步的來,終於稍微好點了(感覺現在自己的代碼還是有很多bug)- 。-
  • 算術題出現曉得一個數減去大的一個數理應是負數,但是小學一年級不會負數,所以需要換一下位置,用大的減去小的
  • 當輸入不是整數的時候,包括輸入英文等其他內容,需要提示重新輸入

2. 關鍵代碼

private static int n1,n2,x;    //定義三個靜態成員
private static String[] str1 ;
private static String sun;   //創建新對象字符串

public static void main(String args[]) throws FileNotFoundException, InterruptedException {
    // TODO Auto-generated method stub
    int i =Integer.valueOf(args[0]).intValue();   //題目
    int g =Integer.valueOf(args[1]).intValue();   //年級
    //輸出保存在文件中
    File file = new File("out6388.txt");
    PrintStream ps = new PrintStream(file);
    System.setOut(ps);
    choiceGrade(i, g);
    

3. 代碼規範

  • 有關縮進的問題,一定要符合規範,一個是整潔,一個是養成好習慣
  • 括號的問題,有的是(),有的是{}一定要區分清楚
  • 代碼的命名不規範向,這次寫的代碼命名就很不規範
  • 用不上的代碼直接註釋掉//

五、測試

  • 1.MathExam 輸入參數: 5 測試結果:生成符合數目的幾道一年級題目和答案 結果: 符合
  • 2.MathExam 輸入參數:5.2 測試結果:輸入有誤,請重新輸入 結果:符合
  • 3.MathExam 輸入參數:aaaaa 測試結果:輸入有誤,請重新輸入 結果:符合
  • 4.MathExam 輸入參數:0 測試結果:輸入有誤,請重新輸入 結果:符合

六、總結

  • 一開始體驗了什麽叫無頭蒼蠅一樣手足無措...
  • 是否使用了“軟件開發的基本策略:分而治之”,是否需要重構
  • “高質量的設計、規範的編碼以及有效的測試是保證軟件產品質量的三個重要方面”,你是否采用了相關的手段,是否需要重構
  • 一定要充分考慮到需求的重要性,比如當客戶沒有輸入預期值該怎麽處理等等
  • 當遇到不會的東西首先自己去查找學習並做好幾率,再不行就去問問同學老師,爭取自己獨立解決。
  • 先寫註釋再寫代碼思路會清晰很多很多!!

第一次作業簡單艱辛的歷程