zoukankan      html  css  js  c++  java
  • 结对编程作业


    一. 项目成员
    冯鸣 201521123122 http://www.cnblogs.com/fenm/
    罗骏 201521123121 http://www.cnblogs.com/toonaive/
    项目开发的码云地址:https://gitee.com/fenm/jieduibiancheng


    二.需求分析
    针对现有代码的改进分析:
    1.修改了一些程序功能上的bug。在重复点击确认键是,计算的正确率有误。
    2.对界面进行了改进
    新开发功能的分析:
    1.增加了关于整数的乘方运算符


    三.程序设计
    关于整个程序的流程设计如图:


    单元测试

    码云项目上传

    代码覆盖率


    四.代码展示
    !已经是修改之后的代码了

    计时器

    private class MyRunable implements Runnable{
    	        private int hour = 0;
    	        private int min = 0;
    	        private int sec = 0;
    	        private NumberFormat format = NumberFormat.getInstance();
    	        private String nextSecond(){
    	            ++sec;
    	            if(sec == 60) {
    	                ++min;
    	                sec = 0;
    	            }
    	             
    	            if(min == 60) {
    	                ++hour;
    	                min = 0;
    	            }
    	            return currentTime();
    	        }
    	         
    	        private String currentTime(){
    	            return format.format(hour)+":"+format.format(min)+":"+format.format(sec);
    	        }
    

    关于整数的四则运算+乘方运算

    public main()//计算四则运算并输出
    	{
    		new Thread(myTimeRunable).start();
    		int n = 0;
    		MainFrame ma= new MainFrame();
            int m = (int)(Math.random()*n+1);//随机整数题目和分数题目的题量
            
    		try{
    			//调用初始化方法
    			jbInit();
    		}
    		catch(Exception exception){
    			exception.printStackTrace();
    		}
    	
    		try{
    			
    			n= Integer.parseInt(ma.number);
    			}catch(NumberFormatException e){
    				//利用消息对话框提示输入失败
    				JOptionPane.showMessageDialog(this,"输入错误!请重新输入");
    				}
    
            for(int j=0;j<(n-m);j++){//整数题目
               String ans;
               int an;
         	   int op=(int)(Math.random()*5+1);//随机选择计算符
         	   int num1=(int)(Math.random()*10+1);//随机两个整数
         	   int num2=(int)(Math.random()*10+1);
         		   if(op==1){//加法
         			 Question.add(num1+"+"+num2+"="); 
         	         Answer.add(num1+num2+"");
         		  }
         		   if(op==2){//减法,防止出现负数
         			   if(num1>num2){
         				 Question.add(num1+"-"+num2+"="); 
         				 Answer.add(num1-num2+"");
         			  }
         		   else{
         			  Question.add(num2+"-"+num1+"="); 
      				 Answer.add(num2-num1+"");
         		   }
         		   }
         		   if(op==3){//乘法
         			 Question.add(num1+"*"+num2+"="); 
      				 Answer.add(num1*num2+"");
         	}
         		   if(op==4){//除法
        			 Question.add(num1+"÷"+num2+"=");
         			 if(num1%num2==0){ 
          				Answer.add(num1/num2+"");
        			
         			 }else{
         				 int num3=GCD(num1,num2);
         				 num1=num1/num3;
         				 num2=num2/num3;
         				 String a = num1+"/"+num2;
          				 Answer.add(a+"");
         			 }
         		   }
         			 if(op==5) {//乘方
         				 Question.add(num1+"^"+num2+"=");
         				 Answer.add(Math.pow(num1,num2)+"");
         				 
         			 }
         		  }
    

    关于分数的运算

     for(int j=0;j<m;j++){//分数题目
        		   Scanner in = new Scanner(System.in);//真分数的计算
        		   int op=(int)(Math.random()*4+1);
        		   int[] f1 =createFraction();
        	       int[] f2 =createFraction();
        	       int j1=GCD(f1[0],f1[1]);
        	       f1[0]=f1[0]/j1;//化简分数
        	       f1[1]=f1[1]/j1;
        	       j1=GCD(f2[0],f2[1]);
        	       f2[0]=f2[0]/j1;
        	       f2[1]=f2[1]/j1;
        	       int gbs = LCM(f1[1],f2[1]);
        			  
            	 if(op==1){//加法
            		  Question.add("("+f1[0]+"/"+f1[1]+")+("+f2[0]+"/"+f2[1]+")="); 
        	          int num1=f1[0]*f2[1]+f2[0]*f1[1];
        	          int num2=f1[1]*f2[1];
        	          int num3=GCD(num1,num2);
        	          num1=num1/num3;
        	          num2=num2/num3;
        			  String a=new String();
        			  if(num1==num2)
        	            {
        	                a="1";
        	            }
        	            else
        	            {
        	            	a=num1+"/"+num2;
        	            }
        			  Answer.add(a+"");
        	           
        		  }
        		   if(op==2){//减法
        			   int num1=f1[0]*f2[1]-f2[0]*f1[1];
        			   if(num1>0){  //防止出现负数 
        				 Question.add("("+f1[0]+"/"+f1[1]+")-("+f2[0]+"/"+f2[1]+")="); 
        				 int num2=f1[1]*f2[1];
        				 String a=new String();
        				 if(num1==0)
        	                {
        	                    a="0";
        	                }
        	                else
        	                {
        	                int num3=Math.abs(GCD(num1,num2));
        		            num1=num1/num3;
        		            num2=num2/num3;
        	                if(num1==num2)
        	                {
        	                    a="1";
        	                }
        	                else
        	                {
        	                    a=num1+"/"+num2;
        	                }
        	                }
        				 Answer.add(a+"");
        		   }else{
        			   Question.add("("+f2[0]+"/"+f2[1]+")-("+f1[0]+"/"+f1[1]+")="); 
        			     int num11=f2[0]*f1[1]-f1[0]*f2[1];
        				 int num2=f1[1]*f2[1];
        				 String a=new String();
        				 if(num11==0)
        	                {
        	                    a="0";
        	                }
        	                else
        	                {
        	                int num3=Math.abs(GCD(num11,num2));
        		            num11=num11/num3;
        		            num2=num2/num3;
        	                if(num11==num2)
        	                {
        	                    a="1";
        	                }
        	                else
        	                {
        	                    a=num11+"/"+num2;
        	                }
        	                }
        				  Answer.add(a+"");
        		   }
        			  }
        		  if(op==3){//乘法
        			     Question.add("("+f1[0]+"/"+f1[1]+")*("+f2[0]+"/"+f2[1]+")="); 
        				 int num1= f1[0]*f2[0]; 
                         int num2 = f1[1]*f2[1];
        				 int num3=GCD(num1,num2);
        				 String a=new String();
        				 num1= num1/num3; 
                         num2 = num2/num3;
                      if(num1==num2)
        	                {
        	                    a="1";
        	                }
        	                else
        	                {
        	                    a=num1+"/"+num2;
        	                }
                         Answer.add(a+"");	
        			  }
        		  if(op==4){//除法
        			     Question.add("("+f1[0]+"/"+f1[1]+")÷("+f2[0]+"/"+f2[1]+")="); 
        				 int num1= f1[0]*f2[1]; 
        				 int num2 = f1[1]*f2[0];
        				 int num3=GCD(num1,num2);
        				 String a=new String();
        				 num1= num1/num3; 
                         num2 = num2/num3;
                         if(num1==num2)
        	                {
        	                    a="1";
        	                }
        	                else
        	                {
        	                    a=num1+"/"+num2;
        	                }
                         Answer.add(a+"");	
        		  }
            }
    

    关于系统界面

    
    public class Welcome extends JFrame implements ActionListener{
    		private static MainFrame dl;
    		
    		private static JButton b1,b2,b3,b4;
    			static JFrame j1=new JFrame();
    			
    			
    			public Welcome(){
    			dl=new MainFrame();	
    			JLabel l1=new JLabel("欢迎来到四则运算系统");
    			l1.setBounds(70, 40, 150, 40);
    			b1=new JButton("进入系统");
    			b2=new JButton("退出");
    			b1.setBounds(30, 120, 100, 20);
    			b2.setBounds(150, 120, 100, 20);
    			j1.setLayout(null);
    			b1.addActionListener(this);
    			b2.addActionListener(this);
    			j1.add(l1);
    			j1.add(b1);
    			j1.add(b2);
    			j1.setTitle("欢迎界面");
    			j1.setSize(300, 200);
    			j1.setLocationRelativeTo(null);
    			j1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			j1.setVisible(true);
     
    		}
    			
    			public static void main(String[] args)
    			{
    				Welcome h=new Welcome();
    			}
    			
    			public void actionPerformed(ActionEvent e)
    			{
    				if(e.getSource()==b1)
    				{
    					j1.dispose();
    				    dl.setVisible(true);
    				}
    			
    				//点击“系统”菜单下的“退出”菜单项
    				if(e.getSource()==b2)
    				{
    					System.exit(0);
    				}
    			
    			}
    			
    

    五. 程序运行


    六. psp



    七. 小结感受
    通过这次结对编程,深深感受到了1+1>2 的效果,俗话说,三个臭皮匠胜过一个诸葛亮,团队的力量比起个人来说还是大很多的,两个人一起编程,可以相互监督, 互相激励,避免懈怠情绪的出现,而且两人互相交流,商讨实现方式,遇到问题时,能够做到互补,大大提高了写代码的效率。

  • 相关阅读:
    学习Py——自己模拟写的一个Range功能
    心情随笔20180529
    记一次排查局网内的ARP包 “不存在的” MAC 地址及 “不存在的”IP 所发的ARP包
    最长反链
    浅谈矩阵树定理
    毒瘤dp 学校食堂
    P3565 由简单的树形dp 引入 长链刨分
    noi 2017 整数
    记人生的抉择
    2019 HL SC day10
  • 原文地址:https://www.cnblogs.com/fenm/p/8645279.html
Copyright © 2011-2022 走看看