结对编程

结对编程

小组成员:

黄宇星(软工一班 1759106 )

刘亚玲(软工一班 1759112)

程序耗时估计与统计表

任务

预估耗时(单位:min)

实际耗时(单位:min)

计划

10

7

需求分析

15

10

具体设计及复审

10

15

代码规范

3

2

具体编码

30

40

代码审核及测试

10

5

代码修改

15

9

报告

30

45

 

 

程序:

程序要求:1、两个运算符;

                  2、100以内的数字;

                 3、不需要写出答案。

代码:

【语言:java】

package 两个运算符;

import java.util.*;

public class Operation {

   public static void main(String[] args){

      Random rand = new Random();       //生成随机数

      for(int i = 0; i < 300; i++){     //300道题

        int num1 = (int)(rand.nextDouble() * 100); 

        int num2 = (int)(rand.nextDouble() * 100);  //定义两个运算数

        char ch = 0;

        switch(rand.nextInt(2)){      //两个运算符“+”,“-”

        case 0: ch = '+';

        System.out.println(num1 + "" + ch + num2 + "=" ) ;

        break;

        case 1: ch = '-';

         if(num1>num2)       //防止答案是负数

           System.out.println(num1 + "" + ch + num2 + "=");

           break;

        }

        }

 }

}

 

运行截图:

以两次运行结果为例,见下图,(由于篇幅的限制示意图中并未截取全部题目)

图一:                                                              图二:

                

程序改进:

新增程序要求:1、写出答案;

                         2、答案在1~100;

                         3、扩展为四则运算。

修改后代码:

package 四则运算;

import java.util.*;

public class Operation {

   public static void main(String[] args){

        Random rand = new Random();   //随机数生成;

        for(int i = 0; i < 300; i++){  //随机生成300道题目;

            int num1 = (int)(rand.nextDouble() * 100);

            int num2 = (int)(rand.nextDouble() * 100);   //定义两个运算数;

            double num3 = 0;

            char ch = 0;

            switch(rand.nextInt(4)){

                case 0: ch = '+';

                num3 = 1.0 * num1 + num2;

                if(num3<=100) {                  //限制答案在1~100以内

                  System.out.println(num1 + "" + ch + num2 + "="+ (int)num3 ) ;break;

            }

            if(num3>100)break;

           

                case 1: ch = '-';

                num3 = 1.0 * num1 - num2;

                if((num1>num2)&&(num3<=100))                  //防止答案是负数

               System.out.println(num1 + "" + ch + num2 + "="+ (int)num3);

               break;

              

                case 2: ch = '×';

                num3 = 1.0 * num1 * num2;

                if(num3<=100) {                  //限制答案在1~100以内

              System.out.println(num1 + "" + ch + num2 + "="+ (int)num3 ) ;break;

            }

            if(num3>100)break;

           

                case 3: ch = '÷';

                num3 = 1.0 * num1 / num2;

                while(num2 == 0){num2 = (int)(rand.nextDouble() * 100);}

                if((num3<=100)){                  //限制答案在1~100以内

                  if(((num3 - (int)num3) == 0)){

                        System.out.println(num1 + "" + ch + num2 + "=" + (int)num3);

                    }

                    else {

                        System.out.println(num1 + "" + ch + num2 + "=" + num3);

                    }

                  break;

            }

            if(num3>100)break;

            }    

           

            //四个运算符;

            num3 *= 100;

            num3 = Math.round(num3);

            num3 /= 100;

           

        }

 

    }

 

}

 

运行截图:

同样以两次运行结果为例,见下图,(由于篇幅的限制示意图中并未截取全部题目)

图一:                                                                                   图二:

                       

心得感悟:

    通过这一次的结对编程作业,我们两人对于合作和编程有了一些新的感悟。

合作:

         关于合作,我们一致认为在一次良好合作中,沟通、理解、团队意识甚至比能力更加重要。在这次的结对任务中,我们在编程之前首先进行了沟通,确定了我们所要使用的语言(java)、程序的功能,在第一次编程结束后,我们有根据编程过程中出现的问题及时展开商讨,对程序进行了优化。

         合作编程对于我们两个人来说是一次非常好的学习机会,我们在对方身上都学习到了不少,在合作中我俩都充分发挥了各自的长处。除此之外,我们也学会了倾听他人的合理建议、学会了质疑、更加会清楚的表达出自己。当遇到他人的质疑时,能控制好自己的情绪同时把自己的观点传达给对方也是一门学问。而经过这次的合作,我俩一致认为对方是一个很好的合作伙伴。

编程:

     通过结对编程这种新颖的方式,我们对编程也有了新的看法。事先对程序需求的合理分析会减少一些麻烦,虽然结对编程不如想象中的节省时间,但是确实比一个人编程的成果更为出色。另外,在任务分配上也马虎不得,合理的分配任务是维持团队和谐的基础,也是任务能否按时完成的关键,分配任务时要求小组两个同学都必须参与代码编写(核心工作)。如果有更多的机会进行合作,结对编程一定会比一个人编程的效率更高。

 

posted @ 2019-03-17 16:36  LRLRR  阅读(161)  评论(0编辑  收藏  举报