201571030305、201571030306 《小學生四則運算結對項目》


小學四則運算結對項目

github地址:https://github.com/Suadea/https-github.com-Suadea

一、需求分析

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的效果嗎?通過這次結對編程,請談談你的感受和體會。
       我想答案是肯定的,三個臭皮匠頂一個諸葛亮,這就是團結的力量,一個人的編程設計往往會出現很多的問題,比如一些代碼上的漏洞和設計功能等考慮的不全面,一個人編程的時候遇到問題有時候會想很多查資料也會迷茫,有人給意見就要相對快了不少,有時候很簡單的錯誤也需要好久才能找見,遇到問題時解決問題的思路和時間會很大幅度的減少,經過兩個人的討論會對問題理解的更透徹,效率更高,所以說結對編程和團隊合作還是很有必要的。一個成功的項目后面往往有一個優秀的團隊。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com