Java图形系统(类的继承相关)

Java图形系统(类的继承相关),第1张

Java图形系统(类的继承相关)

系统要求:
本系统分为6个类
主基类 shape
一级子类 cycle rectangle
二级子类 cube cylinder
用户 *** 作类 User
测试主类(main方法) test

要求实现功能:
通过User类的对象可以实现但不限于如下功能
0.显示系统菜单
1.创建图形,图形包括圆形,矩形,立方体,圆柱
2.对于各个图形均可求得面积与周长
3.可以浏览目前所有已经存在的图形与其信息
4.退出系统

主基类

shape类:

package System2;
public class shape {
	shape()
	{	
	}
     public double area()
     { return 0;
     }
     public double perimeter()
     {	 return 0;
     }
     public void show()
     {}
}
一级子类

cycle类

package System2;

public class cycle extends shape
{
   private double x,y,r;
   public cycle()
   {
	   super();
	   x=0;y=0;r=0;
   }
   public cycle(double a,double b,double c)
   {
	   this.x=a;
	   this.y=b;
	   this.r=c;
   }
   @Override
   public double area()
   {
	   return r*Math.PI*r;
   }
   @Override
   public double perimeter()
   {
	   return 2*Math.PI*r;
   }
   @Override
   public void show()
   {
	   System.out.println("是圆形:");
	   System.out.println("圆心:("+x+","+y+")  半径"+r);
   }
   public double getX() 
   {
	return x;
   }
   public void setX(double x) 
   {
	this.x = x;
   }
   public double getY()
  {
	return y;
   }
   public void setY(double y)
   {
	this.y = y;
   }
   public double getR() 
   {
	return r;
   }
   public void setR(double r) 
   {
	this.r = r;
   }
}

rectangle 类

package System2;

public class rectangle extends shape
{
    private double len,wid,x,y;
	public rectangle() 
	{
		super();
		len=0;wid=0;x=0;y=0;
	}
    public rectangle(double a,double b,double c,double d)
    {
    	this.len=a;
    	this.wid=b;
    	this.x=c;
    	this.y=d;
    }
    @Override
    public double area()
    {
 	   return len*wid;
    }
    @Override
    public double perimeter()
    {
 	   return 2*(len+wid);
    }
    @Override
    public void show()
    {
 	   System.out.println("是矩形:");
 	   System.out.println("中心位置:("+x+","+y+")  长"+len+"宽"+wid);
    }
	public double getLen() 
	{
		return len;
	}
	public void setLen(double len) 
	{
		this.len = len;
	}
	public double getWid() 
	{
		return wid;
	}
	public void setWid(double wid) 
	{
		this.wid = wid;
	}
	public double getX() 
	{
		return x;
	}
	public void setX(double x) 
	{
		this.x = x;
	}
	public double getY() 
	{
		return y;
	}
	public void setY(double y) 
	{
		this.y = y;
	} 
}
二级子类

cube 类

package System2;
//
public class cube extends rectangle 
{
    private double h;	
	public cube()
    {
		super();
		h=0;
	}
	public cube(double a,double b,double c,double d,double e)
	{
		super(a,b,c,d);
		this.h=e;
	}
	@Override
	public double area()
    {
	    return 2*(getLen()*h+getWid()*h+getLen()*getWid());
    }
    @Override
    public double perimeter()
    {
	   return 4*(getLen()+getWid()+h);
    }
    @Override
	public void show()
    {
	   System.out.println("是长方体:");
	   System.out.println("底面中心位置:"+getX()+","+getY()+"  长"+getLen()+" 宽"+getWid()+" 高为:"+h);
	}
}

cylinder 类

package System2;
public class cylinder extends cycle
{
	private double h;
	public cylinder()
	{
		super();
		h=0;
	}
	public cylinder(double a,double b,double c,double d) 
	{
		super(a,b,c);
		this.h=d;
	}
	@Override
	public double area()
	{
		return 2*(getR()*getR()*Math.PI)+2*Math.PI*getR()*h;
	}
    @Override
    public double perimeter()
    {
    	return 4*Math.PI*getR()+2*h;
    }
    @Override
    public void show()
    {
    	System.out.println("是一个圆柱");
    	System.out.println("地面圆的圆心:"+getX()+","+getY()+"  半径"+getR());
    	System.out.println("圆柱高:"+h);
    }
}
用户 *** 作类

User 类

package System2;
import java.util.*;
public class User 
{
	Scanner cin=new Scanner(System.in);
	shape s[]=new shape[100];
	double a[]=new double[5];
	int size=-1;
	public User() 
	{}
	public void menu()
	{
     System.out.println("*****图形类对象的管理*****");
   	 System.out.println("---------------------");
   	 System.out.println("1.创建一个圆");
   	 System.out.println("2.创建一个矩形");
   	 System.out.println("3.创建一个长方体");
   	 System.out.println("4.创建一个圆柱体");
   	 System.out.println("5.显示已经创建的图形");
   	 System.out.println("6.求各图形面积之和");
   	 System.out.println("7.退出系统");
   	 System.out.println("---------------------");
	}
    public void creat_cycle()
    {
      System.out.println("创建一个圆形,请输入圆心  和 半径");
  	  for(int i=0;i<3;i++)
  	  {
  		  a[i]=cin.nextDouble();
  	  }
  	  cycle c=new cycle(a[0],a[1],a[2]);
  	  s[++size]=c;
  	  s[size].show();
  	  System.out.println("创建完毕");
    }
    public void creat_rectangle()
    {
      System.out.println("创建一个矩形,请输入中心  和 长与宽");
   	  for(int i=0;i<4;i++)
   	  {
   		  a[i]=cin.nextDouble();
   	  }
   	  rectangle r=new rectangle(a[0],a[1],a[2],a[3]);
   	  s[++size]=r;
   	  s[size].show();
   	  System.out.println("创建完毕");
    }
    public void creat_cube()
    {
    	 System.out.println("创建一个长方体,请输入底面中心  和 长与宽和长方体的高");
   	  for(int i=0;i<5;i++)
   	  {
   		  a[i]=cin.nextDouble();
   	  }
   	  cube cu=new cube(a[0],a[1],a[2],a[3],a[4]);
   	  s[++size]=cu;
   	  s[size].show();
   	  System.out.println("创建完毕");
    }
    public void creat_cylinder()
    {
    	  System.out.println("创建一个圆柱,请输入底面圆心  和 半径还有高");
    	  for(int i=0;i<4;i++)
    	  {
    		  a[i]=cin.nextDouble();
    	  }
          cylinder cy=new cylinder(a[0],a[1],a[2],a[3]);
          s[++size]=cy;
          s[size].show();
    	  System.out.println("创建完毕");
    }
    public void show_shape()
    {
    	 if(size==-1)
   		  System.out.println("尚未创建图形!");
        for(int i=0;i<=size;i++)
        {
       	 System.out.print("第"+(i+1)+"个图形");
       	 s[i].show();
        }
    }
    public void col_area()
    {
    	 double sum=0;
   	  for(int i=0;i<=size;i++)
   	  {
   		  System.out.print("第"+(i+1)+"个图形的面积为: "+s[i].area());
   		  sum+=s[i].area();
   	  }
   	  System.out.print("总面积为:"+sum);
    }
    
}
测试主类(main方法)
package System2;
import java.util.*;
public class test 
{
	public static void main(String[] args)
	{
		     Scanner cin=new Scanner(System.in);
		     User u=new User();
		     u.menu();
	    	 int chose=1;
	    	 while(chose!=7)
	    	 {
	    		 chose=cin.nextInt();
        	     switch(chose)
        	     {
        	      case 1:
        	    	  u.creat_cycle();
        	    	  break;
        	      case 2:
        	          u.creat_rectangle();
        	    	  break;
        	      case 3:
                      u.creat_cube();
        	    	  break;
        	      case 4:
        	    	  u.creat_cylinder();
        	    	  break;
        	      case 5:
        	    	  u.show_shape();
        	    	  break;
        	      case 6:
        	    	  u.col_area();
        	    	  break;
        	      case 7:
        	    	  System.out.println("已退出系统,欢迎下次使用");
        	    	  break;
        	      default:
        	         System.out.println("错误输入,请输入1-7之间的整数");
        	     }
	    	 }
	    	 cin.close();
	}
}

请于同一包下逐个分类使用

能力仍是初学,希望各位多多指教

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5482112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存