天天看點

結對項目-四則運算 “軟體”之更新版

一.前提

(1)作業來源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213

(2)GitHub位址:https://github.com/P-and-A/learningGit/tree/master/arthematic

(3)調試環境:IntelliJ IDEA ,CHORME浏覽器,Tomcat8.5.28

二.作業要求

(1)基本要求

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

(2)擴充要求

  1. 使用者可以選擇出題的個數(最多不能超過5個題目),答題結束可以顯示使用者答錯的題目個數和答對的題目個數。
  2. 可以出表達式裡含有負整數(負整數最小不小于-100)的題目,且負數需要帶括号,使用者輸入的結果不用帶括号。如: 2*(-4) = -8
  3. 程式可以設定皮膚功能,可以改變界面的顔色即可。
  4. 程式可以出單個整數階乘的題目:如:4!=24。

(3)結對成員

   姓名:廖超凡 學号:201606120044 部落格園位址:https://www.cnblogs.com/grate/

       姓名:梁秋華 學号:201606120036 部落格園位址:https://home.cnblogs.com/u/liangqiuhua/

三.時間估算

        結對項目軟體過程耗時估計表與統計表

       (時間機關:小時)

PSP2.1 個人軟體實作階段 預計時間 實際時間
Planning 計劃 10 16
· Estimate 估計這個任務需要多少時間 17
Development 開發
· Analysis 需求分析 (包括學習新技術) 0.5
· Design Spec 生成設計文檔
· Design Review 設計複審 0.2
· Coding Standard 代碼規範 0.1
· Design 具體設計
· Coding 具體編碼 1
· Code Review 代碼複審
· Test 測試(自我測試,修改代碼,送出修改)
Reporting 報告
· 測試報告
計算工作量
并提出過程改進計劃

五.工作詳情

    (一)工作:

    廖超凡:          架設伺服器、資料庫錄入題目、設計實作擷取題目及答案的Api接口、協助前端設計互動邏輯。

    梁秋華:          設計前端的界面設計部分、按鍵、按鈕、測試輸入答案

    (二) 部分功能代碼介紹:

  後端:

    (1)處理請求

1     @RequestMapping(value = "get_questions/{num}")
2     @ResponseBody
3     public String getAllQuestion(@PathVariable("num")int num){
4         return iQuestionService.getAllQuestion(num);
5     }      

    

  (2)随機選取題目并傳回Json資料

1 public String getAllQuestion(int num){
 2         List<Question> questionList = questionMapper.getAllQuestion();
 3         List<Question> selectList = new ArrayList<>();
 4         Set<Integer> selected = new HashSet<>();
 5         int size = questionList.size();
 6         for(int i=0;i<num;){
 7             Random random = new Random();
 8             int randomNum = random.nextInt(size);
 9             if(selected.add(randomNum)){
10                 selectList.add(questionList.get(randomNum));
11                 i++;
12             }
13         }
14         return ToJsonUtil.getToJsonUtil().objectToJson(selectList);
15     }      

  前端:

    (1)題目選擇顯示功能:可以通過下拉框來選擇題目顯示的數目,此處可以從後端伺服器資料庫中獲得題目,并更新頁面狀态

1                   get:function(){
 2                         //發送get請求
 3                         var num = $('#itemNum').val();
 4                         this.ischeck = false; //重新整理批改狀态
 5                         this.$http.get('get_questions/'+this.selected).then(function(res){
 6                             this.msg=res.body;
 7                         },function(){
 8                             console.log('請求失敗');
 9                         });
10 //                        頁面初始化
11                         $.each( $('[data-index]'), function(index,item){
12                             var a = item.children;
13                             a[1].value="";
14                             if(a[2].style.visibility="visible"){
15                                 a[2].style.visibility="hidden";
16                             }
17                         });
18                     },      

    (三)運作與測試結果

結對項目-四則運算 “軟體”之更新版

                         圖1.回答并統計成績

結對項目-四則運算 “軟體”之更新版

                   圖2.有正誤扣分提示

結對項目-四則運算 “軟體”之更新版

                     圖3.選擇題目數量并列印

結對項目-四則運算 “軟體”之更新版

                   圖4.換膚功能示範

  (四)結對照片

結對項目-四則運算 “軟體”之更新版

六.收獲與感悟

  (一)遇到的問題及解決方案

    技術方面:

      (1)Tomcat運作時,項目中有些類出現ClassNotFound。

        通過搜尋引擎查找相似的問題,發現問題出現使用idea建構Maven項目,将項目打包到Tomcat時,相關Jar包并沒有加到Tomcat運作環境的Web子產品中,導緻某些類出現ClassNotFound,通過idea的Project Structure設定後,在Tomcat的部署環境中出現相關Jar包。

    合作方面:

      (1)有些需要邊學邊做,兩人合作出現項目進度不好把控,容易出現延期。

        如果項目趕工期的話,盡量采用雙方熟悉的技術,避免耽誤項目的完工。不趕工期的話,以做促學,可以有效提高技術水準,缺點是卡殼時會耽誤進度。

      (2)項目分工不明确(如對題目的預處理,在前端随機挑選還是後端挑選分工沒有明确),有些功能實作出現了延期。

        功能設計需要更加詳細具體指明實作方。