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

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

成员及其学号

毛卓(201521044152),林健(201521145048)

码云地址:

https://gitee.com/linbighandsome/events

coding:

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

1109836-20180324135715945-1071821347.png

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.程序运行:
四则运算程序运行(含分数):

1109836-20180324132558059-451833670.jpg

1109836-20180324132604312-754323710.jpg

1109836-20180324132609397-1664202490.jpg

1109836-20180324132614577-1735178648.jpg

单元测试:

1109836-20180324132637263-415494234.jpg

代码覆盖率:

1109836-20180324132708264-144460329.jpg

1109836-20180324132719662-420655479.jpg

5.小结感受:

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

1109836-20180324140615377-1220606703.jpg

6.结对作业PSP:

1110001-20180324184100402-716367369.png

代码要求

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

转载于:https://www.cnblogs.com/Lin-Big-Handsome/p/8638803.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值