zoukankan      html  css  js  c++  java
  • 20165232 结对编程第二周总结

    20165232 2017-2018-2《Java程序设计》结对编程一 第一周总结

    结对对象

    20165219王彦博

    20165232何彦达

    需求分析

    实现一个程序,要求:

    1 支持整数运算

    2 支持多运算符运算

    3 支持分数运算,支持真分数运算

    扩展需求:

    1 处理生成题目并输出到文件

    2 完成题目后从文件读入并判题

    3 多语言支持:简体中文, 繁體中文, English

    4 生成题目去重

    设计思路

    这是一个需要支持复杂运算的程序,不同于简单的单运算符的四则运算,需要设计多个类来实现运算,比如加减乘除以及平方的运算。

    nml图(部分)

    第一周

    image

    第二周
    image

    代码进度

    整数计算类

    public class IntNumber {
        private int A;
    
        public int getA(){
            return A;
        }
    
        public IntNumber(int A){
            this.A = A;
        }
    
        public int add(IntNumber op1){
            int sum = A + op1.A;
            System.out.print(A + " + " + op1.A + "=");
            return sum;
        }
    
        public int subtract(IntNumber op1){
            int num = A - op1.A;
            System.out.print(A + " - " + op1.A + "=");
            return num;
        }
    
        public int multiply(IntNumber op1){
            int num = A * op1.A;
            System.out.print(A + " * " + op1.A + "=");
            return num;
        }
    
        public static IntNumber obj(){
            Random ran = new Random();
            return new IntNumber(ran.nextInt(20)-10);
        }
    
        public String divide(Score op1){
            System.out.print(op1.getNumerator() + " / " + op1.getDenominator() + "=");
            return op1.toString();
        }
    }
    

    分数类运算

    public class Score {
    	private int fenzi;//分子 
    	private int fenmu;//分母 
    	
    	public int getFenzi() {
    		return fenzi;
    	}
    	public void setFenzi(int fenzi) {
    		this.fenzi = fenzi;
    	}
    	public int getFenmu() {
    		return fenmu;
    	}
    	public void setFenmu(int fenmu) {
    		this.fenmu = fenmu;
    	}
    	public FenShu (){
    		
    	}
    	public FenShu (int molecular,int assignment){ 
    		fenzi=molecular; 
    		fenmu=assignment; 
    	} 
    		//两个分数相加 
    	public FenShu  add(FenShu  a,FenShu  b){ 
    		a.fenzi=a.fenzi*b.fenmu+b.fenzi*a.fenmu; 
    		a.fenmu=a.fenmu*b.fenmu; 
    		a=simplify(a);
    		return a;
    	} 
    	public FenShu  sub(FenShu  a,FenShu  b){
    		a.fenzi=a.fenzi*b.fenmu-b.fenzi*a.fenmu; 
    		a.fenmu=a.fenmu*b.fenmu; 
    		a=simplify(a);
    		return a;	
    	}
    	public FenShu  mul(FenShu  a,FenShu  b){
    		a.fenzi*=b.fenzi;
    		a.fenmu*=b.fenmu;
    		a=simplify(a);
    		return a;
    	}
    	public FenShu div(FenShu  a,FenShu  b){
    		a.fenzi*=b.fenmu;
    		a.fenmu=a.fenmu*b.fenzi;
    		a=simplify(a);
    		return a;
    	}	
    	//化简
    	public FenShu  simplify(FenShu  a){ 
    		int small;//记录相当小的数 
    		int big;//记录相对大的数 
    		if(a.fenzi>a.fenmu){ 
    		  small=a.fenmu; 
    		  big=a.fenzi; 
    		  }else{ 
    		    small=a.fenzi; 
    		    big=a.fenmu; 
    		} 
    		//得到相对小的数的所有约数 
    		List<Integer> list=new ArrayList<Integer>(); 
    		int maxCommonFactor = 1;
    		for(int i=2;i<=small/2;i++){ 
    		  if(small%i==0&&big%i==0){ 
    			  maxCommonFactor = i; 
    		   } 
    		} 
    		 a.fenzi /= maxCommonFactor;
    	     a.fenmu/=maxCommonFactor;
    		 
    		return a; 
    	} 
    	public FenShu StrToFrc(String str){//分数转为字符
    		FenShu a=new FenShu();
    		int x=Integer.valueOf(str);
    		a.fenmu=1;
    		a.fenzi=x;
    		return a;
    	}
    	public String FrcToStr(FenShu a){//字符转为分数
    		String str="";
    		if(a.fenzi==0) str=0+"";
    		else {
    			int x=a.fenzi;
                int y=a.fenmu;
                int flag=0;
                if(x<0) flag+=1;
                x=Math.abs(x);
                if(y<0)  flag+=1;
                y=Math.abs(y);
                if(flag==1) str+="-";
                if(x>=y){
                	int z=x/y;
                	int q=x%y;
                	if(q==0){
                		 str+=z+"";
                	}else str+=z+""+"'"+q+""+"/"+y+"";
                }else  str+=x+""+"/"+y+"";
    		}
    		return str;
    	}
    	
    
    }
    

    功能截图

    正常情况测试
    image

    边界情况测试
    image

    异常情况测试
    image

    结对感受

    经过两个周的结对编程,我认为四则运算在思路上看似简单,但是具体操作起来有许多的不足,首先分数类计算的代码是请教同学后完成,其次单元测试类的代码没有完成,并且不能支持多级运算。相信之后的结对学习中可以慢慢完善。

    结对互评

    王彦博同学在结对编程中给了我很大的帮助,有一些代码的问题我不是很清楚,王彦博同学都耐心为我解答。

    结对照片

  • 相关阅读:
    paymob QB冲值接口
    社区O2O的发展与未来
    Java版 家政服务 社区服务 家装服务平台 源码 有案例 可定制
    四步走,教你搭建一个接地气的家政平台
    devexpress 之 ChartControl
    不接入微信sdk,在APP中实现微信分享,支付
    Python 爬取妹子图(技术是无罪的)
    京东家具定制数据爬取
    土巴兔数据爬取
    菜鸡的Java笔记 图书馆
  • 原文地址:https://www.cnblogs.com/heyanda/p/8910500.html
Copyright © 2011-2022 走看看