1. 程式人生 > >軟件工程第三周結對編程

軟件工程第三周結對編程

文字 class 復習題 時間的流逝 bug common 小程序 支持 rgs

結對編程之四則運算


1、項目成員

連燕波:201521123081
曾飛遠:201521123080
隊員風采展示

技術分享圖片

結對編程碼雲地址:https://gitee.com/Yanboooooooo/software_engineering_201521123081


2、需求分析

隨著課余娛樂項目的增加,現在的小孩子在學習上變得越來越不自覺,需要老師、家長在背後催著才會做作業,因此需要實現一個計時功能,以時間的流逝來給孩子一些緊迫感。另外,在經過長期的運算訓練之後,如何才知道學生的運算水平是否有顯著提高呢?將做題過程進行計時可以解決這個問題,從花費時間的長短就可以看出是否取得進步。

為了讓這個四則運算自動生成器的使用人群跨越國界,就需要我們實現語言切換功能。不僅讓中國大陸的小孩可以簡單上手這個小程序,同時還能讓中國臺灣以及外國的小孩同樣可以使用。實現這樣一個小小的功能,就可以讓我們這個自動生成器的受眾面遍布世界各地,不受語言的障礙。

在原有代碼上的改進:
  Ⅰ改正一些錯誤的編碼和用法;
  Ⅱ修改部分代碼風格;
  Ⅲ修正復習題出現重復的BUG;
  Ⅳ修改了部分GUI界面;
Ⅴ發現正確率不正確的問題。


3、程序設計

基礎功能

1、計時功能,顯示並記錄使用者答題所花費的時間;
2、支持三種語言文字,中文簡體/中文繁體/英語,選擇多樣,可再改進;

擴展功能

3、記錄使用者錯誤題集,程序退出再啟動的時候,能將以前的對錯數量保存並在此基礎上增量計算;
4、對用戶輸入題數的內容設置了容錯功能,只可以輸入1~10之間的數字,輸入字母或者不在範圍內的數字將無法點擊確定按鈕;

高級功能

5、設置錯題集,實現了錯題復習功能,可以將用戶使用以來做錯的題目保存在文檔中,點擊“復習”按鈕,生成的題目將全部是之前用戶做錯的題目,達到用戶復習的目的。

思維導圖

技術分享圖片

技術分享圖片

代碼規範


Arithmetic類
astr            返回答案字符串
qstr            返回問題字符串
int_operation()        整數計算函數
fra_operation()        分數計算函數
common_divisor(int m,int n)
公約數計算函數
toString()        輸出函數

Frame類
hs            實例化History
hh            實例化QA_List
timer            實例化Work_Time
Time            計時器動態窗口
answer1~10        輸入窗口
Review            復習按鈕
question1~10        題目顯示標簽
Right_answer1~10    正確答案顯示標簽
Tip1~10         提示正確與否標簽
Time_cost         所花時間顯示標簽
Right_percent        正確率顯示標簽
Set_question         開始按鈕
jLabel5            歷史正確題數
jLabel7            歷史總題數
rn            單次正確題數
tot            單次總題數
Frame()            Frame構造函數
initComponents()    窗體顯示
xxxClicked(KeyEvent evt)    
點擊事件
KeyPressed(JLabel i,JLabel j,JLabel l,int x,JTextField k)
點擊事件批量處理函數
Hide()            使不需要的輸入窗口關閉
Tip(String answer,int i)提示對錯並計入

Histroy類
qstr            問題字符串
astr            答案字符串
str            答案+問題字符串(寫入文件)
str2            正確題數+總題數字符串(寫入文件)
tot            總題數
rn            正確題數
qstrlist        問題字符串列(讀入文件)
astrlist        答案字符串列(讀入文件)
scan(String qstr,String astr)
qstr+" "+astr
scan2(int tot,int rn)
tot+" "+rn
Histroy_create()    歷史文檔生成
Histroy_save()        存儲歷史題目與答案
Histroy_saveNum()    存儲歷史題目數目
Histroy_read()        讀入歷史題目與答案
History_num()        讀入歷史題目數目
QA_List類
i            加入列題目個數
Qusetion        問題字符串列
Answer            答案字符串列
QA_List()        QA_List構造函數

Test_Number類
i            顯示Test_Number窗體次數
l            語言轉化參數標識
Cancel_Button        取消按鈕
Sure_Button        確定按鈕
English            英文界面標簽
Simplified_Chinese    簡體中文界面標簽
Traditional_Chinese    繁體中文界面標簽
Number            所需題數
Test_Number()        Test_Number構造函數
initComponents()    Test_Number窗體顯示
xxxClicked(KeyEvent evt)    
點擊事件

Test類
main(String[] args)    
Work_Time類
x            00:00.x
y            00:y.00
z            z.00.00

局部變量和方法按照駝峰風格命名,類名采用Pascal風格。

PSP表格

PSP2.1 個人開發流程 預估耗費時間(min) 實際耗費時間(min)
Planning 計劃 15 13
Estimate 明確需求和其他相關因素,估計每個階段的時間成本 10 7
Development 開發 180 200
Analysis 需求分析(包括學習新技術) 30 30
Design Spec 生成設計文檔 10 5
Design Review 設計復審 5 7
Coding Standard 代碼規範 5 4
Design 具體設計 20 16
Coding 具體編碼 60 60
Code Review 代碼復審 10 5
Test 測試(自我測試、修改代碼、提交修改) 20 15
Reporting 報告 8 10
測試報告 5 5
計算工作量 5 5
提出過程改進計劃 5 3

單元測試

技術分享圖片

覆蓋率

技術分享圖片


4、部分代碼展示及其運行情況

使用工具繪制界面實現多種語言文字

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

計時器

技術分享圖片

技術分享圖片

問題及其答案產生

技術分享圖片

技術分享圖片

題目對錯判斷及答案

技術分享圖片

技術分享圖片


6、碼雲提交展示

技術分享圖片


5、小結

第一次使用結對編程的合作模式,並非認知中的,你寫這些內容,而我負責這些內容。但是通過這兩周的合作發現並非如此,在我負責某些版塊任務的時候,搭檔則在一旁指點,兩個人在開發中交流,在交流中學習、進步。並且明顯感覺到1+1>2!
另外,結對編程中,兩個人一直在進行角色互換,兩人都不會感到特別疲乏。極大改善了雙方的編程體驗。

軟件工程第三周結對編程