系统要求:
本系统分为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();
}
}
请于同一包下逐个分类使用
能力仍是初学,希望各位多多指教