1. 程式人生 > >201571030318/201574010343《小學四則混合運算》結隊報告 馬麒

201571030318/201574010343《小學四則混合運算》結隊報告 馬麒

編輯 ade des rgs 效果 的人 格式 view eve

  • 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《小學四則混合運算》結隊報告 馬麒