1. 程式人生 > >201571030320/201571030335《小學四則運算練習軟件》結對項目報告

201571030320/201571030335《小學四則運算練習軟件》結對項目報告

混合 ner 答題 jlabel 設計文檔 proc string ++ 總數

源碼在Github的倉庫主頁鏈接地址:https://github.com/mashifang(我的201571030320)

https://github.com/woaichimangguo(小夥伴的201571030335)

1. 需求分析

(1)由計算機從題庫文件中隨機選擇20道加減乘除混合算式,用戶輸入算式答案,程序檢查答案是否正確,每道題正確計5分,錯誤不計分,20道題測試結束後給出測試總分;

(2)題庫文件可采用實驗二的方式自動生成,也可以手工編輯生成,文本格式如下:

技術分享圖片

(3)程序為用戶提供三種進階四則運算練習功能選擇:百以內整數算式(必做)、帶括號算式、真分數算式練習;

(4)程序允許用戶進行多輪測試,提供用戶多輪測試分數柱狀圖,示例如下:

技術分享圖片

(5)程序記錄用戶答題結果,當程序退出再啟動的時候,可為用戶顯示最後一次測試的結果,並詢問用戶可否進行新一輪的測試;

(6)測試有計時功能,測試時動態顯示用戶開始答題後的消耗時間。

(7)程序人機交互界面是GUI界面(WEB頁面、APP頁面都可),界面支持中文簡體(必做)/中文繁體/英語,用戶可以進行語種選擇。

2. 核心功能代碼展示:

(1)、界面設計及相關功能實現

    public static void main(String[] args) {
        // TODO Auto-generated method stub
JFrame frame=new Self(); frame.setTitle("小學四則運算訓練小程序"); frame.setSize(300,200); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } public Self(){ setLayout(new GridLayout(3, 2,5,5)); addAnswer(); JPanel panel2
=new JPanel(); //panel2.setSize(10,100); panel2.add(new JLabel("請輸入答案:")); panel2.add(text); this.add(panel2); JButton buttonSubmit=new JButton("提交答案"); buttonSubmit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub int size=list.size(); int errorSum=size-rightSum; JFrame resultFrame=new JFrame(); resultFrame.setTitle("運算結果"); resultFrame.setSize(500,500); resultFrame.setLocationRelativeTo(null); resultFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); resultFrame.setVisible(true); JPanel panel=new JPanel(); Font font = new Font(Font.DIALOG, Font.PLAIN, 20); panel.add(new JLabel("做題總數: "+size+" "+"正確數:"+rightSum)); setLayout(new GridLayout(100, 1,5,5)); for(int i=0;i<size;i++){ panel.add(new JLabel(list.get(i))); } resultFrame.add(panel); }}); JButton buttonNext=new JButton("下一題"); buttonNext.addActionListener(new ActionListener() {//定義時間監聽器 public void actionPerformed(ActionEvent e) { String question=label.getText(); double result=Double.parseDouble(text.getText()); String ifRight=""; if(Her.result==result){ ifRight="正確"; rightSum++; }else{ ifRight="錯誤"; } String message=question+", "+"你的答案:"+result+", "+"正確答案: "+Her.result+", 狀態: "+ifRight; list.add(message); text.setText(""); String answer=Her.creat(); label.setText(answer); } }); JPanel panel3=new JPanel(); //button.setSize(10,10); panel3.add(buttonNext); panel3.add(buttonSubmit); add(panel3); }

3. 程序運行:程序運行時每個功能界面截圖。

技術分享圖片技術分享圖片技術分享圖片技術分享圖片技術分享圖片

4.兩人在討論、細化和編程時的結對照片

技術分享圖片

5.提供此次結對作業的PSP

PSP2.1

任務內容

計劃共完成需要的時間(h)

實際完成需要的時間(h)

Planning

計劃

15

17

· Estimate

· 估計這個任務需要多少時間,並規劃大致工作步驟

18

20

Development

開發

96

98

·· Analysis

需求分析 (包括學習新技術)

48

50

· Design Spec

· 生成設計文檔

24

26

· Design Review

· 設計復審 (和同事審核設計文檔)

18

20

· Coding Standard

代碼規範 (為目前的開發制定合適的規範)

12

16

· Design

具體設計

24

25

· Coding

具體編碼

36

21

· Code Review

· 代碼復審

7

9

· Test

· 測試(自我測試,修改代碼,提交修改)

13

21

Reporting

報告

9

6

·· Test Report

· 測試報告

3

2

· Size Measurement

計算工作量

2

1

· Postmortem & Process Improvement Plan

· 事後總結 ,並提出過程改進計劃

3

3

6. 請使用漢堡評價法給你的小夥伴一些點評。

通過這次結對項目合作,我發現我的小夥伴是一個細心嚴謹的人,雖然我們倆的Java編程基礎較薄弱,但在互相鼓勵,互相支持下,我們盡最大努力完成了這個項目。在項目完成過程中遇到問題,她嚴謹努力的態度使我們一次一次嘗試,一次一次發現錯誤,改正錯誤,解決問題,她的這些精神是我們這個項目不可或缺的助力劑。她思考問題邏輯很嚴謹,這是值得我學習的。希望在以後的學習生活中可以經常和她合作,學習她的優秀學習習慣。

7. 結對編程真的能夠帶來1+1>2的效果嗎?通過這次結對編程,請談談你的感受和體會。

結對編程真的能夠帶來1+1>2的效果嗎?答案是肯定的,一定能帶來。這次結對項目的合作,讓我體會到了在軟件設計過程中合作的重要性。就這次項目來說,一個人是可以完成的,但相比之下,兩人合作效率更高,設計出來的程序也更完美,兩人之間還可以優勢互補,通過一起討論、合作,達到互相學習、共同進步的目的。所以我認為合作在軟件設計中是必要的,在以後的學習生活中可以多多嘗試。雖然這次由於我們倆編程功底不足有些功能尚未實現,但我們在一點一點進步,我們會繼續一起努力的。

201571030320/201571030335《小學四則運算練習軟件》結對項目報告