软件工程个人作业02

Posted 林.夕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程个人作业02相关的知识,希望对你有一定的参考价值。

软件工程个人作业02

                                                                                                                                                     组员:李锦

设计思想:每次的算法都会分很多种的情况,①将加减是否有正负(前面乘以-1 ②乘除是否有余数(先判断除法的余数是否为0,判断输出)③是否有无乘除法(在进行随机数产生的时候,先判断是否有乘除的运算,如果有,则在输出结果上有乘除法的输出,否则没有)④取值范围(在随机数的产生的时候先定义一个范围,对随机数的产生一定的范围影响。)⑤有无括号(进行有括号和无括号的分类的输出,有括号时进行静态数组的运算。)⑥可订制(在输出的时候,输入要输出的数量,在循环时使用这个循环。)

   源代码:            

package test2;
import java.util.*;
import java.util.ArrayList;
public class math {
    static int simplify(int x,int y)
    {
        //求最大的公约数
        int t,xx,yy,k=1;
        if(x>y){
            t=x;x=y;y=t;
          }
        for(int i=x;i>=2;i--){
            xx=x%i;yy=y%i;
            if(xx==0&&yy==0){
                k=i;
                break;
            }
        }
    return k;        
   }

//程序的开始 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int first1,first2, second1,second2,third1,third2,c,j,c2;
        String first3 = null,second3=null;
        //控制题目的个数
        Scanner in = new Scanner(System.in);
        System.out.println("请输入要定制的个数:");
        int number=in.nextInt();
        System.out.println("请输入生成数 的取值范围,数值大于0:");
        int range =in.nextInt();
        System.out.println("请输入是否产生括号(是1,否0):");
        int bracket =in.nextInt();
        if(bracket==0){
        System.out.println("是否有无负数(有1,没有0),请输入:");
        int negative=in.nextInt();
        System.out.println("请输入是否有乘除法,(有1,没有0),请输入:");
        int num =in.nextInt();
        if(num==1){
             System.out.println("除法有无余数,(如果1,没有0),请输入:");
             int remain =in.nextInt();
             }
        else
            System.out.println("不用判断除法有无余数!");
        for(int k=0;k<number;k++)
        {
            //随机数的生成
            first1=(int)(Math.random()*range);//定义第一个真分数的分子
            first2=(int)(Math.random()*(range-1)+1);//定义第一个真分数的分子,分母不能为零
            second1=(int)(Math.random()*range);//定义第二个真分数的分子
            second2=(int)(Math.random()*(range-1)+1);//定义第二个真分数的分母,分母不能为零
            third1=(int)(Math.random()*range);//定义整数时的第一个整数
            third2=(int)(Math.random()*range);//定义整数时的第一个整数
            j=(int)(Math.random()*2);//定义计算时的整数加减法或是真分数的加减法
            c=(int)(Math.random()*4);//定义加减乘除  
            c2=(int)(Math.random()*2);//定义只有加减法的时候
            //将分数化简
            int s1=simplify(first1,first2);//求最大公约数
            if(first1/s1!=0&&first2/s1!=1)
                first3="("+first1/s1+"/"+first2/s1+")";
            if(first1/s1==0||first2/s1==1)
                first3="("+first1/s1+")"; //化简
            int s2=simplify(second1,second2);//求最大公约数
            if(second1/s2!=0&&second2/s2!=1)
                second3="("+second1/s2+"/"+second2/s2+")";
            if(second1/s2==0||second2/s2==1)
                second3="("+second1/s2+")";//化简
         
            //计算
            if(j==0&&num==1){
                //有乘除的算法
                if(negative==0){
                if(c==0)
                  System.out.println(first3+" "+"+"+" "+second3+"=");
                  if(c==1)
                    System.out.println(first3+" "+"-"+" "+second3+"=");
                }
                if(negative==1){
                    if(c==0)
                        System.out.println("-"+first3+" "+"+"+" "+second3+"=");
                    if(c==1)
                      System.out.println("-"+first3+" "+"-"+" "+second3+"=");    
                }
                  if(c==2)
                    System.out.println(first3+" "+"*"+" "+second3+"=");
                  if(c==3)
                      
                    System.out.println(first3+" "+"/"+" "+second3+"=");
             }
            if(j==0&&num==0)
            {//没有乘除的算法
                if(c2==0)
                    System.out.println(first3+" "+"+"+" "+second3+"=");
                  if(c2==1){
                        if((first1/s1/first2/s2)>=(second1/s2/second2/s2))
                             System.out.println(first3+" "+"-"+" "+second3+"=");
                        else
                             System.out.println(second3+" "+"-"+" "+first3+"=");
                  }
            }
        if(j==1&&num==1){
                //有乘除的算法
                if(negative==0){
                if(c==0)
                    System.out.println(third1+" "+"+"+" "+third2+"=");
                  if(c==1)                      
                      System.out.println(third1+" "+"-"+" "+third2+"=");                     
                  }
                if(negative==1){
                    if(c==0)
                        System.out.println("-"+third1+" "+"+"+" "+third2+"=");
                      if(c==1)                      
                          System.out.println("-"+third1+" "+"-"+" "+third2+"="); 
                }
                  if(c==2)
                    System.out.println(third1+" "+"*"+" "+third2+"=");
                  if(c==3){
                 
                    //判断有无余数
                      int remain=0;
                      if(remain==0){
                        for(int a=0;;){
                            if(third2!=0){
                                if((third1)%(third2)!=0){
                                 third1=(int)(Math.random()*range);
                                 third2=(int)(Math.random()*range);
                                  }
                                 else
                                    break;
                            }
                          else{
                              third2=(int)(Math.random()*range);
                          }
                      }    
                    }
                      if(remain==1){
                          for(int b=0;;){
                              if(third2!=0){
                                  if((third1)%(third2)==0){
                                  third1=(int)(Math.random()*range);
                                  third2=(int)(Math.random()*range);
                                  }
                                  else
                                      break;
                              }
                              else
                                  third2=(int)(Math.random()*range);
                          }
                        }
                    System.out.println(third1+" "+"/"+" "+third2+"=");
                  }
             }
            if(j==1&&num==0)
            {//没有乘除的算法
                if(negative==0){
                    if(c2==0)
                        System.out.println(third1+" "+"+"+" "+third2+"=");
                      if(c2==1)                      
                          System.out.println(third1+" "+"-"+" "+third2+"=");                     
                      }
                if(negative==1){
                   if(c2==0)
                        System.out.println("-"+third1+" "+"+"+" "+third2+"=");
                     if(c2==1)                      
                          System.out.println("-"+third1+" "+"-"+" "+third2+"="); 
                    }
            }
        }
     }
    
    if(bracket==1){
        int sjs,zfg;
        int s;
        System.out.println("请输入数字数组个数:");
        int m=in.nextInt();
        System.out.println("请输入字符数组个数:");
        int t=in.nextInt();       
        int ssz[]=new int[m];   //数字数组
        char operate[]={‘+‘,‘-‘,‘*‘,‘/‘};
        char f[]=new char[t];  //字符数组
        for(int p=0;p<number;p++){
            sjs=(int)(Math.random()*10+3);//随机生成数字的个数(3-10)
            zfg=sjs-1;//字符个数等于随机数减一
            for( s=0;s<sjs;s++){
                ssz[s]=(int)(Math.random()*range);//随机生成数
            }
            for(s=0;s<zfg;s++){
                int nu=(int)(Math.random()*3);  //产生0-3的随机数来判断字符的+,-,*,/
                f[s]=operate[nu];
            }
            f[zfg]=‘=‘;
            if(zfg%2==0){
                //字符个数为偶数,从第二个数开始输出括号
                System.out.print(ssz[0]);
                System.out.print(f[0]);
                for(s=1;s<zfg;s++){
                    System.out.print("(");
                    System.out.print(ssz[s]);
                    System.out.print(f[s]);
                    System.out.print(ssz[s+1]);
                    System.out.print(")");
                    System.out.print(f[s+1]);
                    s=s+1;
                }System.out.println();
            }
            else{
                for(s=0;s<zfg;s++){
                    System.out.print("(");
                    System.out.print(ssz[s]);
                    System.out.print(f[s]);
                    System.out.print(ssz[s+1]);
                    System.out.print(")");
                    System.out.print(f[s+1]);
                    s=s+1;
                }System.out.println();
            }
        }
    }    
  }
}

截图

技术分享

技术分享

                                 周活动总结表

        姓名:苏月                           日期 2016/3/18

 

听课

编写代码

阅读课本

准备考试

 

 

日总计

周日

 

 

 

 

 

 

 

周一

100分钟

0

0

 

 

 

100

周二

 

57

10

 

 

 

67

周三

 

10

10

 

 

 

20

周四

 

60

30

 

 

 

90

周五

 

90

0

 

 

 

90

周六

 

0

0

 

 

 

0

周总计

100分钟

217

40

 

 

 

357

  

 

                              时间记录日志

          学生:苏月                   日期:2016/3/18

          教师:王建民                 课程:软件工程

日期

开始时间

结束时间

中断时间

净时间

活动

备注

C

U

3/14

8:00

9:50

10

100

上课

课间

 

 

3/15

1600

1800

30

90

编程序

吃饭

 

 

3/16

1520

1700

30

70

编程序

聊程序

 

 

3/17

2100

2330

30+10

110

写程序写进度条

吃饭,休息

 

 

 

 

3/18

1630

1800

0

90

编程序,写进度条,写总结

吃饭,看电视,聊天

 

 

2000

2330

50

160

3/19

837

1100

40

117

写总结

聊天,洗脸

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                   缺陷记录日志

          学生:苏月                      日期:2016/3/18

          教员:王建民                    程序号:四则运算2

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

3/14

1

 

讨论

实现

1小时

 

描述:在讨论中不知道怎样实现重复的内容和加括号的部分。

3/15

2

 

编程

编译

30分钟

 

描述:输出不了同个数的算法

3/17

3

 

设计

编译

1小时

 

描述:在除法的时候漏掉了分母为0的问题

3/18

4

 

编程

编译

50分钟

 

描述:出现了数组越界的现象

 

个人总结:

         在每次的写代码中,①都应该学会一定的分块(就是讲一个特别大项目的按着一定的功能将代码分为好几块来写)否则的话,就会像这次一样,出现很大的混乱情况②而且在每一步的实现中,都应该有很清楚的整理思路③在改错的过程中,我们应该明确错误在那。为什么会错误,这样改错才不会手忙脚乱。③一定要锻炼自己的耐心,这样才能够更加有耐心的去写代码

以上是关于软件工程个人作业02的主要内容,如果未能解决你的问题,请参考以下文章

软件工程个人作业02

软件工程个人作业02

软件工程个人作业02

软件工程个人作业02

软件工程个人作业02

软件工程个人作业02