首页 > 代码库 > 软件工程个人作业01

软件工程个人作业01

一、实验题目:加减乘除

二、程序设计思想:

  本程序共分为三大步:

  1、 定义两个类,一个是式子类,另一个是分数类,其中式子类中包含分数类的对象。

  2、 在主函数中,利用数组和查重函数,检验是否有重的式子,如果有则重新创建。在查重的时候,应该注意:加法和乘法中前后项相等也算式子相同。

  3、在输出最后式子的时候,利用了string类型的formcat函数,将式子实现了对齐排版输出,并且在输出的时候,逐级调用输出函数,整体式子调用个体式子,再调用分数的输出。

三、程序代码:

import java.util.Scanner;


public class jiajianchengchu 
{
    public static void main(String[] args)
    {
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入要生成的随机数个数:");
        int num=scanner.nextInt(),i;
        Shi[] shi=new Shi[num];
        System.out.print(String.format("%-6s","序号"));
        System.out.println(String.format("%-6s","算式"));
        for(i=0;i<num;i++)
        {
            shi[i]=new Shi();
            shi[i].chuangjian();
            chachong(i,shi);
            System.out.print(String.format("%-6s",i+1));
            shi[i].shuchu();
        }
    }
    
    static void chachong(int n,Shi[] x)
    {
        int i;
        for(i=0;i<n;i++)
        {
            if(x[n].equals(x[i]))
            {
                x[n].chuangjian();
                chachong(n,x);
                break;
            }
        }
    }
}

class Shi
{
    Fenshu a,c,value;
    int b;
    Shi()
    {
        a=new Fenshu();
        c=new Fenshu();
        value=new Fenshu();
    }
    void chuangjian()
    {
        a.chuangjian();
        b=(int)(Math.random()*4);
        c.chuangjian();
        while(c.zi==0&&b==3)
        {
            c.chuangjian();
        }
    }
    void shuchu()
    {
        if(b==0) System.out.println(String.format("%-20s",a.output()+"+"+c.output()+"="));
        if(b==1) System.out.println(String.format("%-20s",a.output()+"-"+c.output()+"="));
        if(b==2) System.out.println(String.format("%-20s",a.output()+"*"+c.output()+"="));
        if(b==3) System.out.println(String.format("%-20s",a.output()+"÷"+c.output()+"="));
    }
    
    boolean equals(Shi y)
    {
        if(a.equals(y.a)&&b==y.b&&c.equals(y.c)) return true;
        else if((b==0||b==2)&&a.equals(y.c)&&c.equals(y.a)) return true;
        else return false;
    }
}

class Fenshu
{
    int zi,mu;
    
    Fenshu()
    {
    }
    
    boolean equals(Fenshu x)
    {
        if(zi*x.mu==mu*x.zi) return true;
        return false;
    }
    
    void chuangjian()
    {
        zi=(int)(Math.random()*100);
        mu=(int)(Math.random()*100+1);
        while(zi>mu&&zi%mu!=0)
        {
            zi=(int)(Math.random()*100);
            mu=(int)(Math.random()*100+1);
        }
    }

    String output()
    {
        String out="";
        if(zi==0) out+=zi;
        else if(mu==1) out+=zi;
        else out="("+zi+"/"+mu+")";
        return out;
    }
}

 

四、程序结果截图:

技术分享技术分享

 

五、课堂未完成原因:在课上,实验完成的不完整,即有的功能未能实现,如:查重、运算时有真分数等等。综合分析原因如下:

       1、长时间未编程,导致编程时有的语句忘了。

       2、对于一个程序,未能合理地分成若干个小模块。

软件工程个人作业01