天天看點

【軟體工程實踐】結對項目-四則運算 “軟體”之更新版

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

githup位址是:https://github.com/cmhbaba/test20180912/blob/master/Main.java

結對對象部落格是:http://www.cnblogs.com/fshost/

結對同學:梁添鵬 201606120087

程式設計環境是:IntelliJ IDEA Community Edition 2017.2.3 x64

一、需求分析

從個人項目出發,将程式改裝成一個單機帶使用者界面(不是控制台)的程式,這個程式最基本要達到:

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

4個拓展方向:

  1、使用者答題結束以後,程式可以顯示使用者答題所用的時間

  2、程式可以出單個整數階乘的題目:如:4!=24

  3、程式可以設定皮膚功能,可以改變界面的顔色即可。

  4、使用者答題結束以後,程式可以顯示使用者答題所用的時間

本人負責的是:視窗的設計與制作、題目的輸出、答案的對比、按鈕點選時間、代碼整合。

結對對象做的是:皮膚功能,統計使用者所用時間,階乘功能

二、詳細設計

語言:java

由于之前我的是控制台輸出的,是以現在就要弄一個可視化視窗,用到了JFram類。并且要在架構上面設定布局,并且把元件添加上去。然後把随機出題的題目和答案分别裝進一個數組裡面儲存起來,後面再把數組的題目對應輸出在視窗上。至于答案,就要擷取到使用者在文本框裡面輸入的值,在與對應題目的答案對比,然後設定一個數,如果做對一道題這個數就加一,這樣就能記錄做正确的題目數。

詳細代碼我已經上傳到githup上面:

下面是部分代碼:

這個是新增的添加階乘的題目代碼:

public static  long factorial(int n){
        if (n==0){
            return 1;
        }
        else {
            long num=n * factorial(n-1);
            return num;
        }
    }
      

  

這個是點選确認按鈕,統計花費時間的代碼和統計正确題目的代碼:

在這裡統計花費時間,我們是在前面點選開始按鈕的時候,會擷取系統時間,然後點選确認之後就會送出答案并且統計,這時候就會在此擷取系統時間,與前一次相減,就獲得了所用的總共時間,再把時間顯示帶視窗上,

if (e.getSource()==endButton){
                    //點選确認按鈕做的事情
                    Long endTime=System.currentTimeMillis();
                    long timeout=(endTime-timec)/1000;
                    time.setText("總共花費的時間為"+timeout+"s");
                    d1=(int) Double.parseDouble(K1.getText());
                    d2=(int) Double.parseDouble(K2.getText());
                    d3=(int) Double.parseDouble(K3.getText());
                    d4=(int) Double.parseDouble(K4.getText());
                    d5=(int) Double.parseDouble(K5.getText());
                    int answerT=0,answerF=0;
                    if (d1==daan[0]){
                        K1.setText(String.valueOf(daan[0]));
                        answerT++;
                    }else{
                        answerF++;
                    }
                    if (d2==daan[1]){
                        K1.setText(String.valueOf(daan[1]));
                        answerT++;
                    }else{
                        answerF++;
                    }
                    if (d3==daan[2]){
                        K1.setText(String.valueOf(daan[2]));
                        answerT++;
                    }else{
                        answerF++;
                    }
                    if (d4==daan[3]){
                        K1.setText(String.valueOf(daan[3]));
                        answerT++;
                    }else{
                        answerF++;
                    }
                    if (d5==daan[4]){
                        K1.setText(String.valueOf(daan[4]));
                        answerT++;
                    }else{
                        answerF++;
                    }

                    K6.setText(String.valueOf(answerT));
                }
      

下面是改變窗體顔色的代碼:

視窗上有一個按鈕,點選就會改變窗體背景顔色。

if (e.getSource()==changButton){
                    //點選改變顔色按鈕事件
                    int color=new Random().nextInt(5);
                    switch (color){
                        case 0:{
                            p1.setBackground(Color.orange);
                            break;
                        }
                        case 1:{
                            p1.setBackground(Color.BLUE);
                            break;
                        }
                        case 2:{
                            p1.setBackground(Color.green);
                            break;
                        }
                        case 3:{
                            p1.setBackground(Color.yellow);
                            break;
                        }
                        case 4:{
                            p1.setBackground(Color.pink);
                            break;
                        }
                    }
                }
      

三、運作結果

【軟體工程實踐】結對項目-四則運算 “軟體”之更新版
【軟體工程實踐】結對項目-四則運算 “軟體”之更新版

四、總結

由于之前是在控制台輸出的,雖然之前做過可視化視窗的設計,但是由于太久沒做就忘記了,也是在網上找了很久的和查書才慢慢想起來怎麼做,一點點的做出來的,總體上沒什麼問題。

五、工作照片

【軟體工程實踐】結對項目-四則運算 “軟體”之更新版