結對項目-四則運算“軟件”之升級版
- 作業要求: https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213
- github地址:https://github.com/LiuQSong/learnning
- 同伴姓名學號+博客地址:劉慶松 201606120033 https://www.cnblogs.com/lqscmz/p/9845339.html
一、程序基本要求如下:
- 自動生成題目,單個題目最多不能超過4個運算符,操作數小於100。
- 用戶可以輸入答案
- 若用戶輸入答案正確,則提示正確;若答案錯誤,則提示錯誤,並要提示正確答案是多少。
二、擴展方向(8選4)
1、可以出表達式裏含有負整數(負整數最小不小於-100)的題目,且負數需要帶括號,用戶輸入的結果不用帶括號。如: 2*(-4) = -8
- 2、用戶答題結束以後,程序可以顯示用戶答題所用的時間
- 3、用戶可以選擇出題的個數(最多不能超過5個題目),答題結束可以顯示用戶答錯的題目個數和答對的題目個數
- 4、程序可以出單個整數階乘的題目:如:4!=24
三、時間記錄表
PSP2.1 |
Personal Software Process Stages |
Time Senior Student(h) |
Time(h) |
Planning |
計劃 |
1.5 |
1 |
· Estimate |
估計這個任務需要多少時間 |
16 |
18.1 |
Development |
開發 |
2 |
3 |
· Analysis |
需求分析 (包括學習新技術) |
1.5 |
3 |
· Design Spec |
生成設計文檔 |
0 |
0 |
· Design Review |
設計復審 |
0.2 |
0.3 |
· Coding Standard |
代碼規範 |
0.4 |
0.2 |
· Design |
具體設計 |
2 |
2.5 |
· Coding |
具體編碼 |
3 |
6 |
· Code Review |
代碼復審 |
1 |
0.8 |
· Test |
測試(自我測試,修改代碼,提交修改) |
0.5 |
0.5 |
Reporting |
報告 |
0 |
0 |
Test Report |
測試報告 |
0.2 |
0.2 |
·workload |
計算工作量 |
0.2 |
0.3 |
·correction |
並提出過程改進計劃 |
0.3 |
0.3 |
四、結對過程
1.結對成員
- 劉慶松:把在控制臺運行程序轉成簡單的可視化程序,程序可以出單個整數階乘的題目:如:4!=24功能,用戶可以選擇出題的個數(最多不能超過5個題目),答題結束可以顯示用戶答錯的題目個數和答對的題目個數功能
- 趙銘傑:對用戶開始進行答題進行計時處理,在最後結束答題後,會提示所用的總時間;對隨機生成的負數進行規範化處理,在負數的位置匹配括號。
2.開發環境
調試並編寫代碼
3. 結對照片
4. 部分代碼及運行截圖
窗口布局文件代碼(start.java)
JFrame frame = new Start(); frame.setTitle("四則運算"); frame.setSize(300, 200); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);
隨機生成數值和符號的核心代碼(start.java)
int sign1 = (int) (Math.random() * 3); //產生0-3的隨機數 int sign2 = (int) (Math.random() * 3); //產生0-3的隨機數 int x = -(int) (Math.random() * 99)+(int) (Math.random() * 99); int y = -(int) (Math.random() * 99)+(int) (Math.random() * 99); int z = -(int) (Math.random() * 99)+(int) (Math.random() * 99); int j = 1 + (int) (Math.random() * 9); int sign3 = 1 + (int) (Math.random() * 3); String result = "";
通過遞歸計算階乘的結果功能代碼(EasyOperation.java)
public int jiecheng(int number){ if (number <= 1) return 1; else return number * jiecheng(number - 1); } }
生成題目計算答案的功能代碼(EasyOperation.java)
public double count1(int x,int y,int z,int sign1,int sign2){ double result=0; if((sign1==0)&&(sign2==0)){ result=x+y+z; } if((sign1==0)&&(sign2==1)){ result=x+y-z; } if((sign1==0)&&(sign2==2)){ result=x+y*z; } if((sign1==0)&&(sign2==3)){ result=x+y/z; } if((sign1==1)&&(sign2==0)){ result=x-y+z; } if((sign1==1)&&(sign2==1)){ result=x-y-z; } if((sign1==1)&&(sign2==2)){ result=x-y*z; } if((sign1==1)&&(sign2==3)){ result=x-y/z; } if((sign1==2)&&(sign2==0)){ result=x*y+z; } if((sign1==2)&&(sign2==1)){ result=x*y-z; } if((sign1==2)&&(sign2==2)){ result=x*y*z; } if((sign1==2)&&(sign2==3)){ result=x*y/z; } if((sign1==3)&&(sign2==0)){ result=x/y+z; } if((sign1==3)&&(sign2==1)){ result=x/y-z; } if((sign1==3)&&(sign2==2)){ result=x/y*z; } if((sign1==3)&&(sign2==3)){ result=x/y/z; } String test =new DecimalFormat("0.0").format(result); result = Double.valueOf(test); return result; }
生成“題目“”的字符串功能代碼(EasyOperation.java)
public String count(int x,int y,int z,int sign1,int sign2){ String result=""; String sign3=""; String sign4=""; String x1 = String.valueOf(x); String y1 = String.valueOf(y); String z1 = String.valueOf(z); if(x<0)x1="("+x1+")"; if(y<0)y1="("+y1+")"; if(z<0)z1="("+z1+")"; switch(sign1){ case 0:sign3="+";break; case 1:sign3="-";break; case 2:sign3="x";break; case 3:sign3="/";break; default:sign3="+"; } switch(sign2){ case 0:sign4="+";break; case 1:sign4="-";break; case 2:sign4="x";break; case 3:sign4="/";break; default:sign4="+"; } result=x1+sign3+y1+sign4+z1; return result; }
運行界面截圖(start.java)
用戶答案判斷提示(EasyOperation.java)
統計用時提示(TimerCount.java)
提示用戶答題數已超過五題(start.java)
結對項目-四則運算“軟件”之升級版