作業五—結對項目-四則運算 “軟件”之升級版
作業要求來自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2232
GitHub遠程倉庫的地址:https://github.com/zzj79/1234zzj
一、需求分析
基本要求:
- 生成題目,單個題目最多不能超過4個運算符,操作數小於100。
- 用戶可以輸入答案
- 若用戶輸入答案正確,則提示正確;若答案錯誤,則提示錯誤,並要提示正確答案是多少。
8個可擴展方向:
- 程序可以出帶括號的正整數四則運算,支持分數,除法保留兩位小數,如:(1/3+1)*2 = 2.67,特別註意:這裏是2.67而非2.66,或保持分數形式:8/3
- 可以出表達式裏含有負整數(負整數最小不小於-100)的題目,且負數需要帶括號,用戶輸入的結果不用帶括號。如: 2*(-4) = -8
- 用戶答題結束以後,程序可以顯示用戶答題所用的時間
- 用戶可以選擇出題的個數(最多不能超過5個題目),答題結束可以顯示用戶答錯的題目個數和答對的題目個數
- 用戶在第一次答題時,需要用戶輸入用戶名,用戶下次啟動後,程序需要記住用戶前一次輸入的用戶名
- 程序可以出單個整數階乘的題目:如:4!=24
- 程序可以設置答題時間,時間設置為整數,單位為秒,最大不能超過120秒,若超過了答題時間未答題,則提示:時間已到,不能答題。
- 程序可以設置皮膚功能,可以改變界面的顏色即可。
二、功能設計
public class computer extends JFrame
{
computer()
{
super("簡易計算器");
Font f=new Font("黑體",30,30);
JTextField jt1=new JTextField(null);
JTextField jt2=new JTextField(null);
jt1.setFont(f);
jt2.setFont(f);
jt1.setHorizontalAlignment(JTextField.RIGHT);
jt2.setHorizontalAlignment(JTextField.RIGHT);
Container c=getContentPane();
c.setLayout(new FlowLayout(FlowLayout.LEFT,5,5));
c.add(jt1);
c.add(jt2);
jt1.setPreferredSize(new Dimension(370,70));
jt2.setPreferredSize(new Dimension(370,75));
jt1.setEditable(false);jt2.setEditable(false);
JButton jb[]=new JButton[16];
for(int j=0;j<16;j++)
{
jb[j]=new JButton();
jb[j].setBackground(Color.WHITE);
jb[j].setFocusable(false);
jb[j].setPreferredSize(new Dimension(90,90));
jb[j].setFont(f);
c.add(jb[j]);
}
this.setResizable(false);
//再定義一個計算類calculation.java:
public class calculation {
calculation(){};
boolean is_operator(char ch)
{
if(ch==‘+‘||ch==‘-‘||ch==‘*‘||ch==‘/‘)return true;
else return false;
}
static int result(String s)
{
String ch[]={"+","-","*","/"};
int i=0;int index;
while(s.indexOf(ch[i])==-1&&i<4){i++;}
if(i==4)return -1;
else index=s.indexOf(ch[i]);
String s1=s.substring(0, index);
String s2=s.substring(index+1, s.length());
if(i==0)return Integer.parseInt(s1)+Integer.parseInt(s2);
if(i==1)return Integer.parseInt(s1)-Integer.parseInt(s2);
if(i==2)return Integer.parseInt(s1)*Integer.parseInt(s2);
if(i==3&&Integer.parseInt(s2)!=0)return Integer.parseInt(s1)/Integer.parseInt(s2);
else if(i==3&&Integer.parseInt(s2)==0){throw new ArithmeticException();}
return -1;
}
}
三、過程耗時估計與時間統計表
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 計劃 | 8 | 6 |
· Estimate | 估計這個任務需要多少時間 | 12 | 10 |
Development | 開發 | 60 | 40 |
· Analysis | 需求分析 (包括學習新技術) | 8 | 10 |
· Design Spec | 生成設計文檔 | 0 | 0 |
· Design Review | 設計復審 | 3 | 5 |
· Coding Standard | 代碼規範 | 4 | 3 |
· Design | 具體設計 | 10 | 13 |
· Coding | 具體編碼 | 35 | 25 |
· Code Review | 代碼復審 | 10 | 9 |
· Test | 測試(自我測試,修改代碼,提交修改) | 10 | 20 |
Reporting | 報告 | 9 | 6 |
· | 測試報告 | 0 | 0 |
· | 計算工作量 | 5 | 2 |
· | 並提出過程改進計劃 | 0 | 0 |
四、總結
效率還可以,一開始我們各自提出了自己的想法,然後商量取舍問題,就開始進行編程。在整個過程中,都積極參與。
作業五—結對項目-四則運算 “軟件”之升級版