一.前提
(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)擴充要求
- 使用者可以選擇出題的個數(最多不能超過5個題目),答題結束可以顯示使用者答錯的題目個數和答對的題目個數。
- 可以出表達式裡含有負整數(負整數最小不小于-100)的題目,且負數需要帶括号,使用者輸入的結果不用帶括号。如: 2*(-4) = -8
- 程式可以設定皮膚功能,可以改變界面的顔色即可。
- 程式可以出單個整數階乘的題目:如: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)項目分工不明确(如對題目的預處理,在前端随機挑選還是後端挑選分工沒有明确),有些功能實作出現了延期。
功能設計需要更加詳細具體指明實作方。