天天看點

國小生快樂刷題

學無止境

一、預估與實際

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

二、需求分析

我通過百度搜尋的方式了解到,國小一年級數學有如下的幾個特點:

  • 特點1 國小1年級的加減法數字一般不會超過20,不會有小數
  • 特點2 國小1年級減法不會有小減大出現負數答案

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

  • 使用的數字小于21且大于0的整數
  • 被減數不能小于減數

三、設計

1. 設計思路

說明你如何設計這個程式

比如:

  • 這個程式有1個類,在main方法中直接通過構造函數調用
  • Math.random是可以生成随機數的關鍵
  • 要将字元串轉換為位元組流來存入txt文本
  • 找到一些輸入錯誤的bug

2. 實作方案

寫出具體實作的步驟

  • 準備工作:先在Github上建立倉庫,克隆到本地...
  • 技術關鍵點:Math.random, byte,File的應用

四、編碼

  • 用args數組來實作從指令行中接收參數,否則不能直接輸入參數運作
  • 用byte把字元串轉換為位元組流
  • 用Math.random進行随機數的生成

1. 調試日志

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

  • 字元串無法寫入到txt文本,用byte轉出位元組流寫入
  • 數組越界,擴大數組
  • 無法用指令行直接傳參,用args數組解決

2. 關鍵代碼

/*

** Create or reuse a zero-terminated string, first checking in the

** cache (using the string address as a key). The cache can contain

** only zero-terminated strings, so it is safe to use 'strcmp' to

** check hits.

*/

    c[0] = Integer.parseInt(args[0]);
	    c[1] = Integer.parseInt(args[1]);
		String[] timu=new String[c[0]+1];	// 建立數組存入題目
		String[] daan=new String[c[0]+1];
		String huanhang="\r\n";    // windows的換行,在cmd運作友善觀看
		File file = new File("out.txt");
        FileOutputStream u = new FileOutputStream("out.txt");
		if(!file.exists()) {
			file.createNewFile();
		}    // 建立out.txt文本
}
		if(c[1]==1) {
		for(i=1;i<=c[0];i++) {
			fuhao=(int)(Math.random()*2);
			if(fuhao==0) {
			 a=(int)(Math.random()*21);   
	         b=(int)(Math.random()*21);
	         int answer=a+b;
	         System.out.println("("+i+")"+a+"+"+b+"=");
	         timu[i-1]="("+i+")"+a+"+"+b+"=";
	         daan[i-1]="("+i+")"+a+"+"+b+"="+answer;
	         byte[] ti =timu[i-1].getBytes();	// 将字元串轉換為位元組流為了寫入txt檔案
	         byte[] da =daan[i-1].getBytes();
	         byte[] h=huanhang.getBytes();
	         u.write(ti);	// 将轉換好的位元組流寫入txt
	         u.write(h);
}

           

3. 代碼規範

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

  • 如果有異常進行手動處理,不抛出,并人工檢查代碼是否符合規範
  • 左大括号前不換行。

    左大括号後換行。

    右大括号前換行。

    右大括号後還有 else 等代碼則不換行;表示終止的右大括号後必須換行。

  • 采用4個空格縮進,禁止使用tab字元

五、測試

測試輸入:java MathExam6374 5000 1測試結果:請輸入1-400之間的題目數,否則題目重複,請重新輸入 預期結果:符合測試

測試輸入:java MathExam6374 -1 1 測試結果:輸入的題目數請大于1,請重新輸入 預期結果:符合測試

測試輸入:java MathExam6374 10 3 測試結果:本程式僅支援1年級和2年級,請重新輸入 預期結果:符合測試

測試輸入:java MathExam6374 100 2 測試結果:請輸入1-81之間的題目數,否則題目重複,請重新輸入 預期結果:符合測試

六、總結

由于自己大一大二有些混水摸魚,比較懶惰,現在寫代碼才感覺到力不從心,大三想改變一點,沒放棄不斷查資料,向别人求教,去花更多的時間完成别人很快能解決的問題,但我要堅持下去,不懂就問,慢慢進步

  • 并沒有看“軟體開發的基本政策:分而治之”
  • 勉強完成代碼才看到規範,以後要注意,從規範化做起。
上一篇: 展示部落格
下一篇: 測試與優化