1. 程式人生 > >小學生四則運算結對項目

小學生四則運算結對項目

以及 bool 需求分析 reporting 界面 nic 設置 auto jpanel

GitHub地址:https://github.com/jiyx/operation-four.git
一、需求分析

1、需求分析

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

分,20道題測試結束後給出測試總分;

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

技術分享圖片

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

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

技術分享圖片

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

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

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

二、核心代碼

class Num{                              //定義數字類
     private int a;
         public Num()
     {
         this.a = (int)(Math.random()*10000);
     }
     
     public Num(int i)
     {
         this.a = (int
)(Math.random()*4)+1; } public int get_num() { return this.a; } public int num_sum(Num B) { return this.a + B.a; } public int num_dec(Num B) { return this.a - B.a; } public int num_c(Num B) {
return this.a * B.a; } public int num_chu(Num B) { return this.a / B.a; } public void flash() { this.a = (int)(Math.random()*100); } public void flash_t() { this.a = (int)(Math.random()*4)+1; } public boolean pd(int i) { if(this.a == i) return true; else return false; } }
public class jiedui {
        private static Num a = new Num();  //a,b
        private static Num b = new Num();
        private static Num c = new Num(1);
        private static int q = 0;
        private static String p;
        private static JFrame frame = new JFrame("簡單四則運算");
        private static JLabel label1 = new JLabel("A");
        private static JLabel label2 = new JLabel("*");
        private static JLabel label3 = new JLabel("B");
        private static JLabel label4 = new JLabel(" "+"="+" ");
        private static JLabel label5 = new JLabel("結果");
        private static JButton button = new JButton("查看");
        private static JButton bt1 = new JButton("下一題");
        private static JButton bt2 = new JButton("退出");
        private static JTextField text = new JTextField(5);
        private static JPanel pane = new JPanel();  
        
        public static void main(String[] args) {
            pane.setBorder(BorderFactory.createEmptyBorder(20,60,20,60));
            pane.setLayout(new GridLayout(0,5));  //設置布局
            pane.add(label1);
            pane.add(label2);
            pane.add(label3);
            pane.add(label4);
            pane.add(text);
            pane.add(label5);
            pane.add(button);
            pane.add(bt1);
            pane.add(bt2);

            if(c.pd(1)) 
            {
                p = "+";
                q = a.num_sum(b);
            }
            if(c.pd(2))
            {
                p = "-";
                q = a.num_dec(b);
            }
            if(c.pd(3))
            {
                p = "*";
                q = a.num_c(b);
            }
            if(c.pd(4))
            {
                p = "/";
                q = a.num_chu(b);
            }
             
            frame.getContentPane().add(pane,BorderLayout.CENTER);
            button.setMnemonic(KeyEvent.VK_I);
             
            button.addActionListener(new ActionListener(){  //鼠標單擊事件
                public void actionPerformed(ActionEvent e){
                    if(q == Integer.parseInt(text.getText().trim()))
                        label5.setText("正確!");
                    else
                        label5.setText("錯誤!");
                    
                }
            });
            
            bt1.setMnemonic(KeyEvent.VK_H);
            bt1.addActionListener(new ActionListener(){  //鼠標單擊事件
                public void actionPerformed(ActionEvent e){
                    a.flash();
                    b.flash();
                    c.flash_t();
                    if(c.pd(1)) 
                    {
                        p = "+";
                        q = a.num_sum(b);
                    }
                    if(c.pd(2))
                    {
                        p = "-";
                        q = a.num_dec(b);
                    }
                    if(c.pd(3))
                    {
                        p = "*";
                        q = a.num_c(b);
                    }
                    if(c.pd(4))
                    {
                        p = "/";
                        q = a.num_chu(b);
                    }
                    label1.setText(" "+a.get_num()+" ");
                    label2.setText(p);
                    label3.setText(" "+b.get_num()+" ");
                    text.setText(" ");
                    label5.setText("結果");
                }
            });
            
            bt2.setMnemonic(KeyEvent.VK_T);
            bt2.addActionListener(new ActionListener(){  //鼠標單擊事件
                public void actionPerformed(ActionEvent e){
                    System.exit(0);
                    
                }
            });
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack();
            label1.setText(" "+a.get_num()+" ");
            label2.setText(p);
            label3.setText(" "+b.get_num()+" ");
            
            frame.setVisible(true);
        }

三、運行過程

技術分享圖片

技術分享圖片

四、結對過程

技術分享圖片

五、psp

PSP2.1任務內容計劃完成的時間(min)實際完成需要的時間(min)
PLanning 計劃 60 100
Estimate 估計這個任務需要多少時間,並規劃大致工作步驟 60 60
Developmet 開發 480 700
Analysis 需求分析(包括學習新技術) 30 50
Design Spec 生成設計文檔 10 25
Design Revie 設計復審(和同事審核設計文檔) 30 35
Coding Standard 代碼規範 20 30
Design 具體設計 60 80
Coding 具體編碼 300 350
Code Review 代碼復審 30 360
Test 測試(自我測試,修改代碼,提交修改) 20 30
Reporting 報告 30 35
Test Report 測試報告 20 20
Size Measurement 計算工作量 5 5
Postmortem & Process Improvement Plan 事後總結,並提出過程改機計劃 30 35

六、請使用漢堡評價法給你的小夥伴一些點評

  我的結對小夥伴是個有想法的人,盡管這次我們遇到太多的問題,但總歸比一個人的效果要好,兩個人一起合作討論交流,思路開闊,容易發現一個人發現不了的錯誤,也可以及時改正錯誤,還可以增加團隊合作意識,相信這對以後的訓練很有幫助。(由於我倆編程比較差差了,沒有實現全部的需求。盡我們最大的努力,也只能做到這了)遇到不會的問題就要去學習,一口吃不了個胖子,所幸我們能夠一起努力,一起進步。

七、 結對編程真的能夠帶來1+1>2的效果嗎?通過這次結對編程,請談談你的感受和體會。
一根筷子容易折,一把筷子難折斷,我想這就是群體的力量,一個人的編程設計往往會出現很多的問題,比如一些代碼上的漏洞和設計功能等考慮的不全面,一個人編程的時候遇到問題有時候會卡好長時間,有時候很簡單的錯誤也需要好久才能找見,但是結對編程的時候這種問題出現次數比較少,遇到問題時解決問題的思路和時間會很大幅度的減少,經過兩個人的討論會對問題理解的更透徹,效率更高,所以說結對編程和團隊合作還是很有必要的。一個成功的項目後面往往有一個優秀的團隊。

小學生四則運算結對項目