软件工程网络15结对编程1——四则运算优化

软件工程网络15结对编程1——四则运算优化

成员及其学号

毛卓(201521044152),林健(201521145048)

码云地址:

https://gitee.com/mxz0/software_engineering

coding:

1.需求分析

重构了老师给出的原代码中的第二个,原来的代码中各个函数写的非常详细,大部分都不需要更改,原代码包含了加减乘除运算,也支持分数运算,支持化简;我们写出测试代码,测试代码覆盖率,以及对代码进行单元测试,加强原函数的运算能力,实际上原代码里的最小公倍数函数没有用,然后改进一下她们的求最大公约数GCD(),她们本来用的是while循环来实现,注释上却写的是递归实现,递归函数里是不会用循环语句的,所以我们将该方法重构了一下,然后重新设计一下界面。

2.关系类图:

3.代码展示:

四则运算代码之加减:
    public void add(String s)//加法
    {
        String[] str=s.split("[+]");
        if(str[0].indexOf("/")>-1 || str[1].indexOf("/")>-1)//分数
        {
        	String[] str1=str[0].split("[/]");
        	String[] str2=str[1].split("[/]");
        	if(Integer.parseInt(str1[1]) != 0 && Integer.parseInt(str2[1]) != 0)//分母不为零
        	{
        		result =simplefraction(((Integer.parseInt(str1[0])*Integer.parseInt(str2[1]))+(Integer.parseInt(str2[0])*Integer.parseInt(str1[1]))),(Integer.parseInt(str1[1])*Integer.parseInt(str2[1])));      	
        	}else{
        		throw new IllegalArgumentException("Divisor cannot be zero!");//除数为零时抛出异常
        	}
        }
        else{//整数
 	       if( Integer.parseInt(str[0])<1000&&Integer.parseInt(str[1])<1000&&Integer.parseInt(str[0])>-1000&&Integer.parseInt(str[1])>-1000)
            {	           
 	    	   result = Integer.parseInt(str[0])+Integer.parseInt(str[1])+""; 
 	    	   }       	
        
       else{
    	   throw new IllegalArgumentException("overrun!");}//数值范围超出时抛出异常
       } 
        
    }
    
    public void substract(String s)//减法
    {
        String[] str=s.split("[-]");
        if(str[0].indexOf("/")>-1 || str[1].indexOf("/")>-1)//分数
        {
        	String[] str1=str[0].split("[/]");
        	String[] str2=str[1].split("[/]");
        	if(Integer.parseInt(str1[1]) != 0 && Integer.parseInt(str2[1]) != 0)//分母不为零
        	{
        		result =simplefraction(((Integer.parseInt(str1[0])*Integer.parseInt(str2[1]))-(Integer.parseInt(str2[0])*Integer.parseInt(str1[1]))),(Integer.parseInt(str1[1])*Integer.parseInt(str2[1])));    	
        	}else{
        		throw new IllegalArgumentException("Divisor cannot be zero!");//除数为零时抛出异常
        	}
        }
        else{//整数
       if( Integer.parseInt(str[0])<1000&&Integer.parseInt(str[1])<1000&&Integer.parseInt(str[0])>-1000&&Integer.parseInt(str[1])>-1000)
            {
    	   result = Integer.parseInt(str[0])-Integer.parseInt(str[1])+"";
    	   }       	
        
       else{
    	   throw new IllegalArgumentException("overrun!");}//数值范围超出时抛出异常
       }
    }
界面设计:
private static CalcFunction calcFunction=new CalcFunction();
    public static class CalFrame extends JFrame {
        private void init() {
            FlowLayout flc = new FlowLayout(FlowLayout.CENTER);
            this.setSize(new Dimension(300, 200));
            this.setLayout(flc);
            JPanel jp = new JPanel(flc);
            final JTextField num1 = new JTextField();
            num1.setColumns(10);
    
            final JTextField res = new JTextField();
            res.setColumns(5);

            jp.add(num1);
           
            jp.add(new JLabel("="));
            jp.add(res);
            this.add(jp);
            JButton jbt = new JButton("计算");
            jbt.addActionListener(new ActionListener() {
     
                @Override
                public void actionPerformed(ActionEvent arg0) {
            
                   String num=num1.getText().toString();
                    calcFunction.calc(num);
                   res.setText(calcFunction.getResult());
                  
                }
            });
            this.add(jbt);
        }
     
        public CalFrame() {
            init();
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
            this.setResizable(false);
            this.setLocationRelativeTo(null);
            this.setVisible(true);
        }

4.程序运行:

四则运算程序运行(含分数):

单元测试:

代码覆盖率:

5.小结感受:

通过这次结对编程,我体会到了团结协作的优越性,两个人分担工作量可以节省很多时间,而且双方可以互补对方的优缺点,我可以学到队友擅长的方面,队友也可以学到我擅长的方面,一起完成一个任务确实可以有1+1>2的效果!

6.结对作业PSP:

代码要求

要求必须增量式开发-提交到码云地址,码云上要能看到多次commit的记录,同时必须有两个人各自的commit记录。

posted @ 2018-03-23 19:47  毛卓  阅读(270)  评论(4编辑  收藏  举报