天天看點

第五次作業:結對項目-四則運算 “軟體”之更新版

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

項目的github位址:https://github.com/ShumeiHe/FourArithmetic_android

結對同伴的學号:201606120102

結對同伴的姓名:萬玙

結對同伴的部落格位址:https://www.cnblogs.com/wan-y/p/9869394.html 

一、需求分析

基本要求:

  (1)   生成題目,單個題目最多不能超過4個運算符,操作數小于100;

  (2)   使用者可以輸入答案;

  (3)   若使用者輸入答案正确,則提示正确;若答案錯誤,則提示錯誤,并要提示正确答案是多少;

四個擴充方向:

  (4)   使用者在第一次答題時,需要使用者輸入使用者名,使用者下次啟動後,程式需要記住使用者前一次輸入的使用者名 ;

  (5)   使用者答題結束以後,程式可以顯示使用者答題所用的時間;

  (6)   使用者可以選擇出題的個數(最多不能超過5個題目),答題結束可以顯示使用者答錯的題目個數和答對的題目個數;

  (7)   程式可以出單個整數階乘的題目:如:4!=24。

二、同伴與我

  考慮到第四次作業中的需求已滿足該作業需求的(1)(2)無需進行大量修改。

  同伴需要完成的需求:(4)(5)

  我需要完成的需求:(3)(6)(7)

三、開發環境

  工具:Android Stdio

  語言:JAVA

四、功能設計

(1)   頁面布局:

  首頁面布局:輸入題目題數、是否存在階乘的選擇、是否存在負數的選擇;

  做題頁面布局:題目文本框(1個)、答案輸入框(5個)、改錯文本框(5個)、答案文本框(1個)、送出按鈕、答案按鈕。

(2)   題目數目的限制:隻能輸入不超過五道題的題數,如果輸出大于5與小于1則提示輸入錯誤;

(3)   題目輸出:根據輸入的題目個數輸出相應數目的題目;

(4)   是否存在階乘:是,則在最後一道題目中輸出一道階乘(随機産生一個1~10的整數);否,則隻輸入加減乘除四則運算;

(5)   答案的輸入與改錯:如果輸入的答案與正确答案相符,則在送出的時候,在相應題目後面輸出“√”,否則輸出“X”

(6)   正确答案的輸出:當送出時,答案按鈕會顯示,點選答案按鈕,在底部輸出正确答案。

五、詳細設計

(1)   使用者題目個數的輸入:如果使用者輸入的題目個數小于則提示“您輸入的題數小于1道請重新輸入!”,如果使用者輸入的額題目個數大于5則提示“您輸入的題數大于5道請重新輸入!”:  

//傳輸資料、題目個數、是否存在階乘。
    public void transferData(Intent intent){
        topicNum=et_topicnum.getText().toString().trim();
        if(0>=Integer.parseInt(topicNum)){
            Toast.makeText(TopicActivity.this,"您輸入的題數小于1道請重新輸入!",Toast.LENGTH_SHORT).show();
        }else if(Integer.parseInt(topicNum)>5){
            Toast.makeText(TopicActivity.this,"您輸入的題數大于5道請重新輸入!",Toast.LENGTH_SHORT).show();
        }else{
            intent.putExtra("topicNum",topicNum);
            intent.putExtra("factorial",factorial);
            startActivity(intent);
        }

    }
      

(2)   答案輸入框與改錯文本框個數的顯示:如果輸入題目個數為n,那麼答案輸入框與改錯線束框的顯示個數為n個,其餘則隐藏:

<!--在布局中隐藏編輯文本框-->
<android:visibility="gone"/>
      
//編輯文本框的顯示。
et_input_answer1.setVisibility(View.VISIBLE);        

(3)   送出按鈕的隐藏:點選一次送出按鈕後,送出按鈕不能再次點選:  

(4)   答案按妞的顯示:點選送出按鈕後,在送出按鈕左邊顯示答案按鈕:

/送出按鈕事件。
btn_submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                btn_answer.setVisibility(View.VISIBLE); //答案按鈕的顯示。
                Makking();
                int error=Integer.parseInt(topicNum)-score;
                Toast.makeText(DotopicActivity.this,"您答對"+score+"道題,答錯"+error+"道題",Toast.LENGTH_SHORT).show();
                Et_enable();
                btn_submit.setEnabled(false); //送出按鈕不可點選
            }
        });      

(5)   答案文本框的顯示:點選答案按鈕,正确答案在底部輸出:

(6)   答題結束,分别顯示正确與錯誤的題目個數:每答對一道題則加一,否則不加:

(7)   階乘運算:

//階乘運算。
    public static long getNFactorial(int n){
        if(n==0){
            return 1;
        }
        return n*getNFactorial(n-1);
    }
      

六、運作結果

 (1)使用者名登入:

    

第五次作業:結對項目-四則運算 “軟體”之更新版

 (2)大于五道題:

第五次作業:結對項目-四則運算 “軟體”之更新版

 (3)小于1道題:

第五次作業:結對項目-四則運算 “軟體”之更新版

 (4)輸入四道題目,有階乘:

第五次作業:結對項目-四則運算 “軟體”之更新版

 (5)做題頁面(四道題目,有階乘):

第五次作業:結對項目-四則運算 “軟體”之更新版
第五次作業:結對項目-四則運算 “軟體”之更新版

 (6)輸出答案:

第五次作業:結對項目-四則運算 “軟體”之更新版

 (7)輸入五道題,無階乘:

第五次作業:結對項目-四則運算 “軟體”之更新版

七、問題及解決辦法

  由于我選擇輸出最多不超過五道題的需求,是以當時的想法限制了我:即一次性顯示題目個數,并非顯示一道題做一道題然後再顯示一道題做一道題的想法。

  我完成了所有布局與一些需求的實作,是以修改布局是比較困難、繁雜的。

  我面臨的問題是:一次性顯示所有題目,那麼如何完成3)需求裡的若使用者輸入答案正确,則提示正确;若答案錯誤,則提示錯誤,并要提示正确答案是多少。

  我的了解是輸入一道但則提示一道題目的正确答案。

  我的解決方法是隻能等待使用者輸入所有的答案,送出後則輸出以“√”“X”的形式提示使用者哪道題正确,哪道題錯誤。同時添加一個送出後顯示答案的按鈕,點選答案按鈕則在底部顯示全部題目的正确答案。

  歸根結底,我的問題在于在需求分析的時候不夠明确清晰。整個軟體開發流程,我認為最重要的時需求分析,但是,當時我對需求不夠明确的時候,着急着手布局與編碼的行為上犯了一個大忌。

  一次性顯示題目僅限于該項目6)需求,即輸入不超過5道題的題目。如果輸入超過5道題,那麼該功能的擴充對于本項目來說比較棘手。

該項目的布局大緻如下:

第五次作業:結對項目-四則運算 “軟體”之更新版

  我的想法:如果超過5道題目,那麼該頁面上顯示超過5道題的題目嗎?不是,可以在另外一個頁面顯示剩餘的題目或者動态重新整理頁面。該想法同時适用于顯示一道題做一道題的功能。

  

第五次作業:結對項目-四則運算 “軟體”之更新版

   将經常修改的部分轉換為動态視圖: 

第五次作業:結對項目-四則運算 “軟體”之更新版

八、過程耗時估計統計表

PSP2.1 Personal Software Process Stages Time Senior Studen(h) Time(h)
Planning 計劃 2 1.5
Estimate 估計這個任務需要多少時間 20 25
Development 開發 6 7
Analysis 需求分析 1
Design Spec 生成設計文檔
Design Review 設計複審 0.5
Coding Standard 代碼規範
Design 具體設計 3
Coding 具體編碼 13 15
Code Review 代碼複審
Test 測試(自我測試,修改代碼,送出修改) 2.5
Reporting 報告
測試報告
計算工作量
并提出過程修改計劃

九、結對照片

第五次作業:結對項目-四則運算 “軟體”之更新版

繼續閱讀