任务描述
一、语言和环境
- 实现语言
java
- 环境要求及开发工具
JDK、Eclipse
二、程序整体要求
- 划分功能模块,根据题目要求设置不同的类,在类中实现相应功能的管理
- 类的标识要清楚易懂,代码结构要层次分明,代码编辑思路要清晰、整洁。
- 要求Java代码书写、命名符合规范,属性所属数据类型要准确合理,在代码中添加必要的注释
- 程序运行效果参考效果图要求,文字大小、颜色也不做统一要求
- 结合演示效果,完成需求分析中的所有内容
- 将作业项目形成压缩文件后上传
三、需求分析:
1.整个项目由三个环节组成:
-表演菜单展示
-选择表演者进行表演
-选择是否继续观看表演
2.使用面向对象思想编程
对封装、继承和多态的使用
注意代码规范
注意循环使用
四、详细设计
1.抽象⽗类:
- 动物(Animal)
属性:昵称(name)、年龄(age)
抽象⽅法:描述喜好(love)
2. 接⼝
- 表演(IAct)
抽象⽅法:描述技能(skill)、描述表演(act)
说明: 每个表演者的表演信息是通过调⽤act()⽅法输出的
3. 实现类
- 棕熊(Bear)
继承⾃Animal实现IAct
- 狮⼦(Lion)
继承⾃Animal实现IAct
新增属性:颜⾊(color)、性别(sex)
- 猴⼦(Monkey)
继承⾃Animal实现IAct
新增属性:品种(Type)
- 鹦鹉(Parrot)
继承⾃Animal实现IAct 新增属性:品种(type)
- ⼩丑(Clown)
实现IAct
属性:名字(name)、艺龄(years)
新增⽅法:着装特点(dress)
五、实现代码
1.Animal.java
public abstract class Animal {
private String name;
private int age;
public abstract void love();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.Bear.java
public class Bear extends Animal implements IAct {
@Override
public void love() {
// TODO Auto-generated method stub
System.out.println("爱好:喜欢卖萌");
}
public void IAct() {
}
@Override
public void skill() {
// TODO Auto-generated method stub
System.out.println("技能:挽着花篮,打着雨伞,自立走秀");
}
@Override
public void act() {
// TODO Auto-generated method stub
}
}
3.Clown
public class Clown implements IAct {
private String name;
private int years;
@Override
public void skill() {
// TODO Auto-generated method stub
System.out.println("技能:脚踩高跷,进行杂技魔术表演");
}
@Override
public void act() {
// TODO Auto-generated method stub
}
public void dress() {
System.out.println("着装:身穿五彩服装,头上戴着彩色的帽子,脸上画着夸张的彩妆");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getYears() {
return years;
}
public void setYears(int years) {
this.years = years;
}
}
4.IAct.java(接口
public interface IAct {
public abstract void skill();
public abstract void act();
}
5.Lion.java
public class Lion extends Animal implements IAct {
private String color;
private String sex;
@Override
public void skill() {
// TODO Auto-generated method stub
System.out.println("技能:擅长钻火圈");
}
@Override
public void act() {
// TODO Auto-generated method stub
}
@Override
public void love() {
// TODO Auto-generated method stub
System.out.println("爱好:喜欢吃各种肉类");
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}public class Lion extends Animal implements IAct {
private String color;
private String sex;
@Override
public void skill() {
// TODO Auto-generated method stub
System.out.println("技能:擅长钻火圈");
}
@Override
public void act() {
// TODO Auto-generated method stub
}
@Override
public void love() {
// TODO Auto-generated method stub
System.out.println("爱好:喜欢吃各种肉类");
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
6.Monkey.java
public class Monkey extends Animal implements IAct {
private String Type;
@Override
public void skill() {
// TODO Auto-generated method stub
System.out.println("技能: 骑独轮车过独木桥");
}
@Override
public void act() {
// TODO Auto-generated method stub
}
@Override
public void love() {
// TODO Auto-generated method stub
System.out.println("爱好:喜欢模仿人的动作表情");
}
public String getType() {
return Type;
}
public void setType(String type) {
Type = type;
}
}
7.Parrot.java
public class Parrot extends Animal implements IAct {
private String type;
@Override
public void skill() {
// TODO Auto-generated method stub
System.out.println("技能:擅长模仿");
}
@Override
public void act() {
// TODO Auto-generated method stub
}
@Override
public void love() {
// TODO Auto-generated method stub
System.out.println("爱好:喜欢吃坚果和松子");
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
7.Test.java
import java.util.Scanner;
import com.imooc.circus.Bear;
import com.imooc.circus.Clown;
import com.imooc.circus.Lion;
import com.imooc.circus.Monkey;
import com.imooc.circus.Parrot;
public class Test5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int temp;
// 从键盘接收数据
Scanner sc = new Scanner(System.in);
do {
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、小丑 ************");
temp = sc.nextInt();
if (temp == 1) {
Bear bear = new Bear();
bear.setAge(1);
bear.setName("Bill");
System.out.println("表演者:" + bear.getName());
System.out.println("年龄:" + bear.getAge());
bear.skill();
bear.love();
System.out.println();
System.out.println("****是否继续观看(1/0)********");
while (true) {
//循环输入值,每输入一个数字都会有数据输出
temp = sc.nextInt();
if (temp == 0) {
System.out.println("***** 欢迎下次光临 ******");
/*
* break从大括号里退出(if里的大括号)
* 但是由于do-while停止的语句是temp==0,
* 所以最外层的do-while循环就停止了
*/
break;
} else if (temp == 1) {
break;
} else if (temp != 0 && temp != 1) {
System.out.println("** 输入信息不正确,请重新输入**");
System.out.println("******* 是否继续观看(1/0) ********");
}
// if(temp!=0&&temp!=1) {
// System.out.println("**输入信息不正确,请重新输入**");
// System.out.println("******** 是否继续观看(1/0) *********");
// break;
// }
}
} else if (temp == 2) {
Lion lion = new Lion();
lion.setAge(2);
lion.setName("Lain");
lion.setColor("灰色");
lion.setSex("公狮");
System.out.println("表演者:" + lion.getName());
System.out.println("年龄:" + lion.getAge());
System.out.println("性别:" + lion.getSex());
System.out.println("毛色:" + lion.getColor());
lion.skill();
lion.love();
System.out.println();
System.out.println("**********是否继续观看(1/0)*************");
while (true) {
//循环输入值,每输入一个数字都会有数据输出
temp = sc.nextInt();
if (temp == 0) {
System.out.println("***** 欢迎下次光临 ******");
/*
* break从大括号里退出(if里的大括号)
* 但是由于do-while停止的语句是temp==0,
* 所以最外层的do-while循环就停止了
*/
break;
} else if (temp == 1) {
break;
} else if (temp != 0 && temp != 1) {
System.out.println("** 输入信息不正确,请重新输入**");
System.out.println("******* 是否继续观看(1/0) ********");
}
// if(temp!=0&&temp!=1) {
// System.out.println("**输入信息不正确,请重新输入**");
// System.out.println("******** 是否继续观看(1/0) *********");
// break;
// }
}
} else if (temp == 3) {
Monkey monkey = new Monkey();
monkey.setName("Tom");
monkey.setAge(1);
monkey.setType("金丝猴");
System.out.println("表演者" + monkey.getName());
System.out.println("年龄:" + monkey.getAge() + "岁");
System.out.println("品种:" + monkey.getType());
monkey.skill();
monkey.love();
System.out.println();
System.out.println("**********是否继续观看(1/0)*************");
while (true) {
//循环输入值,每输入一个数字都会有数据输出
temp = sc.nextInt();
if (temp == 0) {
System.out.println("***** 欢迎下次光临 ******");
/*
* break从大括号里退出(if里的大括号)
* 但是由于do-while停止的语句是temp==0,
* 所以最外层的do-while循环就停止了
*/
break;
} else if (temp == 1) {
break;
} else if (temp != 0 && temp != 1) {
System.out.println("** 输入信息不正确,请重新输入**");
System.out.println("******* 是否继续观看(1/0) ********");
}
// if(temp!=0&&temp!=1) {
// System.out.println("**输入信息不正确,请重新输入**");
// System.out.println("******** 是否继续观看(1/0) *********");
// break;
// }
}
} else if (temp == 4) {
Parrot par = new Parrot();
par.setName("Rose");
par.setAge(1);
par.setType("鹦鹉");
System.out.println("表演者:" + par.getName());
System.out.println("年龄:" + par.getAge() + "岁");
System.out.println("品种:" + par.getType());
par.skill();
par.love();
System.out.println();
System.out.println("**********是否继续观看(1/0)*************");
// int temp4;
while (true) {
//循环输入值,每输入一个数字都会有数据输出
temp = sc.nextInt();
if (temp == 0) {
System.out.println("***** 欢迎下次光临 ******");
/*
* break从大括号里退出(if里的大括号)
* 但是由于do-while停止的语句是temp==0,
* 所以最外层的do-while循环就停止了
*/
break;
} else if (temp == 1) {
break;
} else if (temp != 0 && temp != 1) {
System.out.println("** 输入信息不正确,请重新输入**");
System.out.println("******* 是否继续观看(1/0) ********");
}
// if(temp!=0&&temp!=1) {
// System.out.println("**输入信息不正确,请重新输入**");
// System.out.println("******** 是否继续观看(1/0) *********");
// break;
// }
}
// System.out.println("**输入的信息不正确,请重新输入**");
// System.out.println("***** 是否继续观看(1/0) **********");
// continue;
} else if (temp == 5) {
Clown clo = new Clown();
clo.setName("Kahle");
clo.setYears(5);
System.out.println("表演者:" + clo.getName());
System.out.println("艺龄:" + clo.getYears() + "年");
clo.dress();
clo.skill();
System.out.println();
System.out.println("**********是否继续观看(1/0)*************");
while (true) {
//循环输入值,每输入一个数字都会有数据输出
temp = sc.nextInt();
if (temp == 0) {
System.out.println("***** 欢迎下次光临 ******");
/*
* break从大括号里退出(if里的大括号)
* 但是由于do-while停止的语句是temp==0,
* 所以最外层的do-while循环就停止了
*/
break;
} else if (temp == 1) {
break;
} else if (temp != 0 && temp != 1) {
System.out.println("** 输入信息不正确,请重新输入**");
System.out.println("******* 是否继续观看(1/0) ********");
}
// if(temp!=0&&temp!=1) {
// System.out.println("**输入信息不正确,请重新输入**");
// System.out.println("******** 是否继续观看(1/0) *********");
// break;
// }
}
}
} while (temp != 0);
}
}