201571030318/201574010343《小學四則混合運算》結隊報告 馬麒
- GitHub源碼地址:https://github.com/xuexibuhaoderen/SoftWareTest
- 需求分析
1. 由計算機從題庫文件中隨機選擇20道加減乘除混合算式,用戶輸入算式答案,程序檢查答案是否正確,每道題正確計5分,錯誤不計分,20道題測試結束後給出測試總分;
2. 題庫文件可采用實驗二的方式自動生成,也可以手工編輯生成,文本格式如下:
(3)程序為用戶提供三種進階四則運算練習功能選擇:百以內整數算式(必做)、帶括號算式、真分數算式練習;
(4)程序允許用戶進行多輪測試,提供用戶多輪測試分數柱狀圖,示例如下:
(5)程序記錄用戶答題結果,當程序退出再啟動的時候,可為用戶顯示最後一次測試的結果,並詢問用戶可否進行新一輪的測試;
(6)測試有計時功能,測試時動態顯示用戶開始答題後的消耗時間。
(7)程序人機交互界面是GUI界面(WEB頁面、APP頁面都可),界面支持中文簡體(必做)/中文繁體/英語,用戶可以進行語種選擇。
二. 核心功能代碼展示:
(1)、界面設計及相關功能實現
三. 程序運行:程序運行時每個功能界面截圖。
import java.io.*; import javax.swing.*; import javax.swing.event.*; import java.awt.event.*; import java.awt.*; import java.util.*;public class xiti5_5 extends JFrame implements ActionListener,ItemListener{ String str[]=new String[7],s; FileReader file; BufferedReader in; JButton restart=new JButton("重新練習"); JButton next=new JButton("下一題目"); JButton finish=new JButton("交卷"); JCheckBox option[]=new JCheckBox[4]; JLabel score=new JLabel("20 剩余時間: 120s"); JTextField question=new JTextField(10); int account=0; int n= 0; xiti5_5(){ for(int i=0;i<4;i++){ option[i]=new JCheckBox(); option[i].addItemListener(this); } restart.addActionListener(this); next.addActionListener(this); finish.addActionListener(this); try{ file=new FileReader("D:\\result.txt"); in=new BufferedReader(file); }catch(IOException e){} Box boxV=Box.createVerticalBox(); JPanel p1=new JPanel(); JPanel p2=new JPanel(); JPanel p3=new JPanel(); JPanel p4=new JPanel(); p1.setLayout(new FlowLayout(FlowLayout.CENTER)); p1.add(new JLabel("題目 :10+72+6="));p1.add(question); p2.setLayout(new FlowLayout(FlowLayout.CENTER)); p2.add(new JButton("確定")); p3.setLayout(new FlowLayout(FlowLayout.CENTER)); p3.add(new JLabel("您的得分:"));p3.add(score); p4.setLayout(new FlowLayout(FlowLayout.CENTER)); p4.add(restart);p4.add(next);p4.add(finish); boxV.add(p1);boxV.add(p2);boxV.add(p3);boxV.add(p4); Container con=getContentPane(); con.add(boxV); this.setSize(800,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.validate(); reading(); } public void reading(){ int i=0; try{ s=in.readLine().trim(); if(!(s.startsWith("end"))){ StringTokenizer tokenizer=new StringTokenizer(s,"#"); while(tokenizer.hasMoreTokens()){ str[i]=tokenizer.nextToken(); i++; } question.setText(str[0]); for(int j=1;j<=4;j++){ option[j-1].setLabel(str[j]); } } else if(s.startsWith("end")){ question.setText("考試結束,點擊交卷按鈕查看得分。"); next.setEnabled(false); in.close();file.close(); } }catch(Exception exp){question.setText("無試題文件");} } public void actionPerformed(ActionEvent e){ if(e.getSource()==restart){ account=0; next.setEnabled(true); score.setText(account+"分"); try{ file=new FileReader("D:\\java.txt"); in=new BufferedReader(file); }catch(IOException ee){} reading(); } if(e.getSource()==next){ reading(); for(int j=0;j<4;j++){ option[j].setEnabled(true); option[j].setSelected(false); } } if(e.getSource()==finish){ int n=JOptionPane.showConfirmDialog(null,"交卷以後將不能再修改,確實要交卷嗎?", "確認對話框",JOptionPane.YES_NO_OPTION); if(n==JOptionPane.YES_OPTION){ for(int i=0;i<4;i++){ option[i].setEnabled(false); } score.setText(account*10+"分"); restart.setEnabled(false); next.setEnabled(false); finish.setEnabled(false); } } } public void itemStateChanged1(ItemEvent e) { for(int j=0;j<4;j++){ if(option[j].getLabel().equals(str[5])&&option[j].isSelected()){ account++; } } if(n==JOptionPane.YES_OPTION){ for(int i=0;i<4;i++){ option[i].setEnabled(false); } score.setText(account*10+"分"); restart.setEnabled(false); next.setEnabled(false); finish.setEnabled(false); } } public void itemStateChanged(ItemEvent e) { for(int j=0;j<4;j++){ if(option[j].getLabel().equals(str[5])&&option[j].isSelected()){ account++; } } } public static void main(String args[]){ xiti5_5 ET=new xiti5_5(); } }
四,實驗功能及夥伴圖片:
五.提供此次結對作業的PSP。
PSP2.1 |
任務內容 |
計劃共完成需要的時間(h) |
實際完成需要的時間(h) |
Planning |
計劃 |
16 |
17 |
· Estimate |
· 估計這個任務需要多少時間,並規劃大致工作步驟 |
19 |
20 |
Development |
開發 |
96 |
99 |
·· Analysis |
需求分析 (包括學習新技術) |
47 |
50 |
· Design Spec |
· 生成設計文檔 |
24 |
27 |
· Design Review |
· 設計復審 (和同事審核設計文檔) |
18 |
21 |
· Coding Standard |
代碼規範 (為目前的開發制定合適的規範) |
15 |
16 |
· Design |
具體設計 |
23 |
25 |
· Coding |
具體編碼 |
36 |
23 |
· Code Review |
· 代碼復審 |
7 |
8 |
· Test |
· 測試(自我測試,修改代碼,提交修改) |
13 |
21 |
Reporting |
報告 |
9 |
8 |
·· Test Report |
· 測試報告 |
3 |
2 |
· Size Measurement |
計算工作量 |
2 |
1 |
· Postmortem & Process Improvement Plan |
· 事後總結 ,並提出過程改進計劃 |
3 |
3
|
六:夥伴的評價
通過本次實驗趙希濤同學積極配合,共同克服困難,他是一個是一個細心嚴謹的人,雖然Java底子弱,但我們還是不畏困難共同完成了任務,做出來後成就感很強。
七. 結對編程真的能夠帶來1+1>2的效果嗎?通過這次結對編程,請談談你的感受和體會。
答:這是肯定的,以前一個做錯誤很多,而且自己是個粗心大意的人,這次和同伴一起不僅實驗中的錯誤減少,而且大大的提高了實驗效率,過程中很高心,愉快的的完成了任務。兩人之間還可以優勢互補,通過一起討論、合作,達到互相學習、共同進步的目的,更加增強了我們的團結意識,提高了學習興趣和主動性。
201571030318/201574010343《小學四則混合運算》結隊報告 馬麒