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

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

number cas microsoft design valueof idt nio target 用戶輸入

  • 作業要求: 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)

技術分享圖片

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