1. 程式人生 > >作業五—結對項目-四則運算 “軟件”之升級版

作業五—結對項目-四則運算 “軟件”之升級版

選擇 自己 測試報告 get art 可擴展 hub 生成 結束

作業要求來自https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2232

GitHub遠程倉庫的地址:https://github.com/zzj79/1234zzj

一、需求分析

基本要求:

  • 生成題目,單個題目最多不能超過4個運算符,操作數小於100。
  • 用戶可以輸入答案
  • 若用戶輸入答案正確,則提示正確;若答案錯誤,則提示錯誤,並要提示正確答案是多少。

8個可擴展方向: 

  1. 程序可以出帶括號的正整數四則運算,支持分數,除法保留兩位小數,如:(1/3+1)*2 = 2.67,特別註意:這裏是2.67而非2.66,或保持分數形式:8/3
  2. 可以出表達式裏含有負整數(負整數最小不小於-100)的題目,且負數需要帶括號,用戶輸入的結果不用帶括號。如: 2*(-4) = -8
  3. 用戶答題結束以後,程序可以顯示用戶答題所用的時間
  4. 用戶可以選擇出題的個數(最多不能超過5個題目),答題結束可以顯示用戶答錯的題目個數和答對的題目個數
  5. 用戶在第一次答題時,需要用戶輸入用戶名,用戶下次啟動後,程序需要記住用戶前一次輸入的用戶名
  6. 程序可以出單個整數階乘的題目:如:4!=24
  7. 程序可以設置答題時間,時間設置為整數,單位為秒,最大不能超過120秒,若超過了答題時間未答題,則提示:時間已到,不能答題。
  8. 程序可以設置皮膚功能,可以改變界面的顏色即可。

二、功能設計


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

四、總結

效率還可以,一開始我們各自提出了自己的想法,然後商量取舍問題,就開始進行編程。在整個過程中,都積極參與。

技術分享圖片

作業五—結對項目-四則運算 “軟件”之升級版