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

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

成员及其学号

毛卓(201521044152),林健(201521145048)

码云地址:

https://gitee.com/linbighandsome/events

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.小结感受:

我负责的部分是代码部分,将代码优化,包括加减乘除部分,还有递归整除,界面。因为之前比较迟才组队,周六才开始正式看代码,今天和队友形影不离五六个小时,才把作业做完,经过这次结对经验,发现两个人的效率的确比一人高,我们互相督促,不敢放松,很好的一次体验。

6.结对作业PSP:

代码要求

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

posted @ 2018-03-24 14:15  林健  阅读(194)  评论(0编辑  收藏  举报