当前位置: 首页 > news >正文

软件工程网络15结对编程作业

1.链接

结对成员:

201521123025林振斌 http://www.cnblogs.com/myfist
201521123030周汉麟 http://www.cnblogs.com/lamfinethinkyou/
码云链接:
201521123025 https://gitee.com/mayunlzb/software_engineering
201521123030 https://gitee.com/iamfinethinkyou/pair_programming__four_operations
类图
1109884-20180325182744451-1196988927.png

2.功能改进与扩展

1.需求分析:针对现有代码的改进分析,新开发功能的分析

  • 实现简单的加减乘除算术出题运算,增添更多功能。
    发现原代码问题:分数加法无法计算正确,除法部分功能出错。

添加功能:添加乘方运算和开根号运算

1109884-20180325182752534-2131193755.png

核心代码展示

if(s.indexOf("^")>-1){ 
            int i=s.indexOf("^");            
            if(s.indexOf("^",i+1)==i+1){           
                throw new IllegalArgumentException("Input error! Don't like 1^^1");//格式错误时抛出异常
               }else{
                   pow(s);
               } 
        }
        if(s.indexOf("√")>-1){
            int i=s.indexOf("√");            
            if(s.indexOf("{",i+1)==i+1){           
                throw new IllegalArgumentException("Input error! Don't like 1√√1");//格式错误时抛出异常
               }else{
                   sqrt(s);
               } 
        }

public void sqrt(String s)       //开根
    {   int i1=s.indexOf("√")+1;
        String str=s.substring(i1);      
        if(Integer.parseInt(str)>=0)         
                {
                 double a=Integer.parseInt(str);            
                 result = Math.sqrt(a) +"";                 
                  }                     
            else{
               throw new IllegalArgumentException("overrun!");//数值范围超出时抛出异常
            }         
        
    }
    
    public void pow(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)//分母不为零
            {
                int a1=Integer.parseInt(str1[0]);
                int a2=Integer.parseInt(str1[1]);
                int b=Integer.parseInt(str[1]);
                double r1=Math.pow(a1, b);
                double r2=Math.pow(a2, b);
                result =simplefraction((int)r1,(int)r2);
            }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)
         
                 {int a=Integer.parseInt(str[0]);
                  int b=Integer.parseInt(str[1]);                
                  result = Math.pow(a,b) +"";
                 
                  }                     
            else{
               throw new IllegalArgumentException("overrun!");//数值范围超出时抛出异常
            }         
       }
    }    

运行截图

1109884-20180325183608907-550456538.png

JUnit单元测试

1109884-20180325183120350-25216442.png
1109884-20180325183633254-2120752133.png
1109884-20180325183641691-2046661560.png
1109884-20180325183655365-1124461060.png
1109884-20180325183729876-511658351.png
1109884-20180325183736230-1852309544.png

3.在两人合作的过程中, 请看下面的内容

满足代码风格规范和代码设计规范(参考书第4章4.1-4.3内容)http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html
请重视这点,在开发时两个人要有口头上的沟通:“好的,我们一起在开发中遵守一起认可的编码规范”,按照编码标准和规范进行分模块编码。
工具:
checkstyle http://blog.csdn.net/maritimesun/article/details/7668718
Findbugs
PMD
当然,你也可以修改这份代码规范,前提是你要知道该规范的内容意义。关于这个,Google 也提供有一份在线文档,可供参考:https://google.github.io/styleguide/javaguide.html
请根据构建之法书上编码规范里提到的那些要点整理一份你们在结对编程时使用的代码规范,把你们约定的编码规范文档也提交到git
参考:http://drysaltery.com/2015/06/15/Rainy-Days/

码云提交

1109884-20180325193101506-335381483.png

1109884-20180325195126096-1391261177.png

小结:

结对编程真的能够带来1+1>2的效果。我和我的结对队友都是水平差不多,编程能力较差,所以对平时编程作业都是不大上心。此次结对编程让两个人一起编程,这就有了动力,毕竟这样就不是一个人在战斗了。另外,以前在编程的时候都是想一步是一步,结果到最后什么都没做好,那这次就有结对队友在旁边一起讨论,有什么想法可以先提出再讨论是否可行,所以更有效率。
1109884-20180325205008372-581749074.png

转载于:https://www.cnblogs.com/myfist/p/8645887.html

相关文章:

  • FZU OJ:2230 翻翻棋
  • 说说网络通信模型
  • Rust 和Erlang的对比
  • 继续吐槽在net下没有合适的Disk Cache之使用EhCache
  • 默认形参值
  • 第39级台阶 每步1个或2个台阶 有多少种上法
  • 元素拖放
  • 一、python与pycharm的安装
  • BZOJ4071 洛谷3644 UOJ112:[APIO2015]巴邻旁之桥——题解
  • xtrabackup 在线主从搭建
  • css3实现渐变
  • 泼出去的“邮件”U-Mail邮件系统替你收回
  • 1036. [ZJOI2008]树的统计【树链剖分】
  • Koa2 之文件上传下载
  • BZOJ1010:[HNOI2008]玩具装箱TOY(斜率优化DP)
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Facebook AccountKit 接入的坑点
  • input的行数自动增减
  • Java 23种设计模式 之单例模式 7种实现方式
  • Phpstorm怎样批量删除空行?
  • SpriteKit 技巧之添加背景图片
  • 从PHP迁移至Golang - 基础篇
  • 蓝海存储开关机注意事项总结
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 移动端唤起键盘时取消position:fixed定位
  • 最近的计划
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #define,static,const,三种常量的区别
  • #预处理和函数的对比以及条件编译
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二十四)Flask之flask-session组件
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (图)IntelliTrace Tools 跟踪云端程序
  • (五)IO流之ByteArrayInput/OutputStream
  • (已解决)什么是vue导航守卫
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)linux下的时间函数使用
  • .net framework profiles /.net framework 配置
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • ?php echo ?,?php echo Hello world!;?
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [Android]RecyclerView添加HeaderView出现宽度问题
  • [codevs1288] 埃及分数
  • [CSS]中子元素在父元素中居中
  • [C语言]——柔性数组
  • [go 反射] 进阶
  • [Grafana]ES数据源Alert告警发送
  • [hdu 1247]Hat’s Words [Trie 图]
  • [linux c]linux do_div() 函数用法
  • [Linux]进程创建➕进程终止
  • [Luogu 3958] NOIP2017 D2T1 奶酪