1. 程式人生 > >201574010343/201571030318《小學四則混合運算》結對項目報告

201574010343/201571030318《小學四則混合運算》結對項目報告

score ble 報告 bsp stand dialog 乘除 ava 規範

github代碼地址:https://github.com/zxt555/demo2/tree/master/src

一:需求分析

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

2.系統隨機產生一百以內的兩個數進行運算選擇加、減、乘、除運算。

3.系統隨機產生一百以內的兩個數進行運算。

4.練習時,用戶從鍵盤輸入結果,正確和錯誤均有提示,錯誤的話提示下會有正確的結果。

5. 根據實驗二的方式編輯生成,文本格式如下:

技術分享圖片

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

技術分享圖片

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

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

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

二、界面設計及相關功能實現

技術分享圖片

三. 核心功能代碼展示:

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了 ,一起做並解決問題。

201574010343/201571030318《小學四則混合運算》結對項目報告