201571030320/201571030335《小學四則運算練習軟件》結對項目報告
源碼在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 stubJFrame 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《小學四則運算練習軟件》結對項目報告