一.需求分析
(1)自動生成10道100以內的2個操作數的四則運算算式(+ - * /)
(2)剔除重復算式。 2 + 3 = 和 2 + 3 = 是重復算式 2 + 3 = 和 3 + 2 = 不屬於重復算式
(3)題目數量可定制
(4)相關參數可控制
是否包含乘法和除法
操作數數值范圍可控(如操作數 在100以內 還是1000以內)
操作數是否含負數
(5)生成的運算題存儲到外部文件result.txt中
二.程序設計
主要流程圖:
四則運算Calculator類:
三.功能設計
基本功能
(1)自動生成小學生的四則運算,需要用隨機數生成數字
1.先實現隨機數相加
r1[i]=(int)(number3+Math.random()*(number4-number3));
r2[i]=(int)(number3+Math.random()*(number4-number3));
S1[i]=(r1[i]+r2[i]);
2.然后生成隨機運算符
建立了一個數組r3,將運算符存儲在數組r3中
static String[] r3={"+","-","*","/"};
3.能夠確保生成符號加減乘除計算
擴展功能
(1)自動生成100以內四則運算
(2)相關參數可以控制
(3)操作數數值范圍可控制
是否包括負數
是否包括乘法或者除法
(4)生成的運算題存儲到外部
四.代碼片段
1.選擇所需要的功能
while(true) { Scanner scan1=new Scanner(System.in); System.out.println("請輸入四則運算的選項:1:整數計算 2:退出"); //System.out.println(""); //使用choose來存儲從鍵盤輸入的數據
int choose=scan1.nextInt(); if(choose==1) { System.out.println("功能1:請輸入定制數量:"); Scanner scan2=new Scanner(System.in); int number=scan2.nextInt(); //是否有乘除法
System.out.println("功能2:是否有乘除:0.否 1.是"); int number2=scan2.nextInt(); //輸入數值范圍
System.out.println("功能3:輸入數值范圍:"); System.out.println("請輸入上界:"); int number3=scan2.nextInt(); System.out.println("請輸入下界:"); int number4=scan2.nextInt(); //加減有無負數
System.out.println("功能4:加減有無負數:0.否 1.是"); int number5=scan2.nextInt(); //除法有無余數
System.out.println("功能5:除法有無余數:0.否 1.是"); int number6=scan2.nextInt();
}
}
2.顯示結果
System.out.println("是否輸出定制結果?(1.輸出 其他: 不輸出)"); Scanner scan3=new Scanner(System.in); int judge1=scan3.nextInt(); if(judge1==1) { for(int i=0;i<number;i++) { System.out.println("第"+(i+1)+"個算式的結果為:"+S1[i]); } }
3.退出答題系統
if(choose==2) { System.out.println("您已退出自動出題系統"); System.exit(0); }
4.將結果保存在result.txt文件中
PrintStream as=new PrintStream("d:/result.txt"); //設置並初始化流對象,設置將要輸入的文件目錄和文件格式
System.setOut(as); //將流對象中數據輸出文件中
五.總結
設計四則運算算法,在運行無誤后,根據客戶需求逐一增加代碼功能,每增加一步進行測試,測試無誤后,寫下一個功能。
六.PSP
PSP2.1 |
任務內容 |
計划共完成需要的時間(min) |
實際完成需要的時間(min) |
Planning |
計划 |
10 |
20 |
· Estimate |
· 估計這個任務需要多少時間,並規划大致工作步驟 |
10 |
20 |
Development |
開發 |
820 |
1020 |
·· Analysis |
需求分析 (包括學習新技術) |
60 |
120 |
· Design Spec |
· 生成設計文檔 |
0 |
0 |
· Design Review |
· 設計復審 (和同事審核設計文檔) |
0 |
0 |
· Coding Standard |
代碼規范 (為目前的開發制定合適的規范) |
5 |
10 |
· Design |
具體設計 |
10 |
10 |
· Coding |
具體編碼 |
625 |
720 |
· Code Review |
· 代碼復審 |
60 |
80 |
· Test |
· 測試(自我測試,修改代碼,提交修改) |
60 |
80 |
Reporting |
報告 |
20 |
120 |
·· Test Report |
· 測試報告 |
0 |
0 |
· Size Measurement |
計算工作量 |
0 |
0 |
· Postmortem & Process Improvement Plan |
· 事后總結 ,並提出過程改進計划 |
20 |
120 |
七.分析
在本次實驗中,主要在代碼完成、調試中花了很多時間。我感覺一方面由於跨專業沒有接觸過編程語言,對於Java語法結構等知識方面都嚴重匱乏。另一方面還是對於軟件工程這門課理解有偏差。不過在同學的幫助下以及自己查找資料下完成了作業。