#动物园管理
有猫,鸭子,鱼等动物,他们有一个共同的父类–Animal,共同的属性是动物的名字,父类中有一个抽象方法。
2个接口,一个是获得腿的条数,一个是Swim。
一个管理类,用来进行增删改查操作。
一个测试类,调用管理类中的方法,有一个完整的界面。
代码重构:https://blog.csdn.net/FBB360JAVA/article/details/105627691
###Animal类
package zoo;
public abstract class Animal {
private String name;
public Animal(String name) {
super();
this.setName(name);
}
public Animal() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract void shout();
}
###Cat类
package zoo;
public class Cat extends Animal implements ILeg{
private int legNum = 4;
@Override
public void shout() {
// TODO Auto-generated method stub
System.out.println("我是猫类的,喵喵喵---");
}
@Override
public int getLegNum() {
// TODO Auto-generated method stub
return legNum;
}
public Cat() {
super();
// TODO Auto-generated constructor stub
}
public Cat(String name,int legNum) {
super(name);
// TODO Auto-generated constructor stub
this.setLegNum(legNum);
}
public void setLegNum(int legNum) {
if(legNum == 4) {
this.legNum = legNum;
}else {
System.out.println("猫的腿只能是4条!");
this.legNum = 4;
}
}
}
###Duck类
package zoo;
public class Duck extends Animal implements ILeg {
private int legNum = 2;
@Override
public void shout() {
// TODO Auto-generated method stub
System.out.println("我是鸭子类的,嘎嘎嘎----");
}
@Override
public int getLegNum() {
// TODO Auto-generated method stub
return legNum;
}
public void setLegNum(int legNum) {
if(legNum == 2) {
this.legNum = legNum;
}else {
System.out.println("鸭子只能是2条腿。");
this.legNum = 2;
}
}
public Duck() {
super();
// TODO Auto-generated constructor stub
}
public Duck(String name,int legNum) {
super(name);
this.setLegNum(legNum);
// TODO Auto-generated constructor stub
}
}
###Fish类
package zoo;
public class Fish extends Animal implements Swim {
@Override
public void shout() {
// TODO Auto-generated method stub
System.out.println("我是一条鱼,鱼鱼鱼哈哈");
}
@Override
public void swim() {
// TODO Auto-generated method stub
System.out.println("我能在水里游");
}
public Fish() {
super();
// TODO Auto-generated constructor stub
}
public Fish(String name) {
super(name);
// TODO Auto-generated constructor stub
}
}
###Snake类
package zoo;
public class Snake extends Animal {
@Override
public void shout() {
// TODO Auto-generated method stub
System.out.println("我是蛇类的,嘶嘶嘶嘶嘶嘶");
}
public Snake() {
super();
// TODO Auto-generated constructor stub
}
public Snake(String name) {
super(name);
// TODO Auto-generated constructor stub
}
}
###ILeg接口
package zoo;
/**
* 获得腿的条数的接口
*
* @author Feng 2018年2月5日上午8:58:47
*/
public interface ILeg {
public int getLegNum();
}
###Swim接口
package zoo;
/**
* 一个会游泳的接口。
*
* @author Feng 2018年2月4日下午11:07:08
*/
public interface Swim {
public void swim();
}
###ZooManager类
package zoo;
import java.util.Scanner;
/**
* 对zoo进行操作。查找,为操作做铺垫。
*
* @author Feng 2018年2月3日下午5:39:17
*/
public class ZooManager {
// 对象数组
Animal[] animals = new Animal[10];
static Scanner input = new Scanner(System.in);
/**
* 用构造方法初始化操作
*/
public ZooManager() {
animals[0] = new Cat("汤姆猫", 4);
animals[1] = new Duck("大黄鸭鸭", 2);
animals[2] = new Snake("赖皮蛇");
animals[3] = new Fish("泡泡");
}
/**
* 四个查看的方法。
*/
public void seeCat() {// 看貓。
for (int i = 0; i < animals.length; i++) {
if (animals[i] != null && animals[i] instanceof Cat) {// 查看貓
ILeg leg = new Cat();
System.out.print(animals[i].getName() + "\t" + leg.getLegNum() + "\t");
animals[i].shout();
}
}
}
public void seeFish() {// 看鱼
for (int i = 0; i < animals.length; i++) {
if (animals[i] != null && animals[i] instanceof Fish) {// 查看鱼
System.out.print(animals[i].getName() + "\t");
animals[i].shout();
}
}
}
public void seeDuck() {// 看鸭子
for (int i = 0; i < animals.length; i++) {
if (animals[i] != null && animals[i] instanceof Duck) {// 查看鴨子
ILeg leg = new Duck();
System.out.print(animals[i].getName() + "\t" + leg.getLegNum() + "\t");
animals[i].shout();
}
}
}
public void seeSnake() {// 看蛇
for (int i = 0; i < animals.length; i++) {
if (animals[i] != null && animals[i] instanceof Snake) {// 查看蛇
System.out.print(animals[i].getName() + "\t" + "\t");
animals[i].shout();
}
}
}
/**
* 判断 数组是不是已经满了。当满了时,就返回false,表示不能添加了。
*/
public boolean isOut() {
if (animals[animals.length - 1] != null) {
System.out.println("动物已经添加满了,不能再继续添加了。");
return false;
} else {
return true;
}
}
/**
* 找猫,鸭子,蛇,鱼的方法,返回值是这个要操作的动物的下标。
*
* @return
*/
public int seekCat() {// 找猫
System.out.println("请输入你要操作的猫的名字:");
String name = input.next();
for (int i = 0; i < animals.length; i++) {
if (animals[i] != null) {
if (animals[i].getName().equals(name) && animals[i] instanceof Cat) {
return i;
} else {
continue;
}
}
System.out.println("找不到猫");
return -1;
}
System.out.println("找不到猫");
return -1;
}
public int seekDuck() {// 找鸭子
System.out.println("请输入你要操作的鸭子的名字:");
String name = input.next();
for (int i = 0; i < animals.length; i++) {
if (animals[i] != null) {
if (animals[i].getName().equals(name) && animals[i] instanceof Duck) {
return i;
} else {
continue;
}
}
System.out.println("找不到鸭子");
return -1;
}
System.out.println("找不到鸭子");
return -1;
}
public int seekSnake() {// 找蛇
System.out.println("请输入你要操作的蛇的名字:");
String name = input.next();
for (int i = 0; i < animals.length; i++) {
if (animals[i] != null) {
if (animals[i].getName().equals(name) && animals[i] instanceof Snake) {
return i;
} else {
continue;
}
}
System.out.println("找不到蛇");
return -1;
}
System.out.println("找不到蛇");
return -1;
}
public int seekFish() {// 找鱼
System.out.println("请输入你要操作的鱼的名字:");
String name = input.next();
for (int i = 0; i < animals.length; i++) {
if (animals[i] != null) {
if (animals[i].getName().equals(name) && animals[i] instanceof Fish) {
return i;
} else {
continue;
}
}
System.out.println("找不到鱼");
return -1;
}
System.out.println("找不到鱼");
return -1;
}
/**
* 添加的方法,有加猫,蛇,鱼,鸭子。
*/
public void addCat() {// 加猫
String name = input.next();
for (int i = 0; i < animals.length; i++) {
if (animals[i] == null) {
animals[i] = new Cat(name, 4);// 初始的腿是4条。
break;
}
}
}
public void addDuck() {// 加鸭子
String name = input.next();
for (int i = 0; i < animals.length; i++) {
if (animals[i] == null) {
animals[i] = new Duck(name, 2);// 初始的腿是2条。
break;
}
}
}
public void addSnake() {// 加蛇
String name = input.next();
for (int i = 0; i < animals.length; i++) {
if (animals[i] == null) {
animals[i] = new Snake(name);
break;
}
}
}
public void addFish() {// 加鱼
String name = input.next();
for (int i = 0; i < animals.length; i++) {
if (animals[i] == null) {
animals[i] = new Fish(name);
break;
}
}
}
/**
* 删除一个动物的信息。删除猫,鸭子,蛇,鱼。
*/
public void delCat() {// 删除猫
int i = seekCat();// 找到目标的猫,返回下标,没找到时,i = -1
if (i != -1) {
for (int j = i; j < animals.length - 1; j++) {
if (animals[j] != null) {
animals[j] = animals[j + 1];
}
}
System.out.println("删除成功!你现在就能去查看!");
}
}
public void delDuck() {// 删除鸭子
int i = seekDuck();
if (i != -1) {
for (int j = i; j < animals.length - 1; j++) {
animals[j] = animals[j + 1];
}
}
System.out.println("删除成功!你现在就能去查看!");
}
public void delSnake() {// 删除蛇
int i = seekSnake();
if (i != -1) {
for (int j = i; j < animals.length - 1; j++) {
animals[j] = animals[j + 1];
}
}
System.out.println("删除成功!你现在就能去查看!");
}
public void delFish() {// 删除鱼
int i = seekFish();
if (i != -1) {
for (int j = i; j < animals.length - 1; j++) {
animals[j] = animals[j + 1];
}
}
System.out.println("删除成功!你现在就能去查看!");
}
/**
* 改猫的方法。
*/
public void modCat() {
int i = seekCat();
if (i != -1) {
System.out.println("请输入你想要的猫的名字:");
String name = input.next();
System.out.println("请输入你想要的猫的腿的条数:");
int legs = input.nextInt();
animals[i] = new Cat(name, legs);
System.out.println("修改成功!你现在就可以查看结果!");
}
}
/**
* 修改的方法。有修改猫,鸭子,鱼,蛇。
*/
public void modDuck() {// 改鸭子
int i = seekDuck();
if (i != -1) {
System.out.println("请输入你想要的鸭子的名字:");
String name = input.next();
System.out.println("请输入你想要的鸭子的腿的条数:");
int legs = input.nextInt();
animals[i] = new Duck(name, legs);
System.out.println("修改成功!你现在就可以查看结果!");
}
}
public void modSnake() {// 改蛇
int i = seekSnake();
if (i != -1) {
System.out.println("请输入你想要的蛇的名字:");
String name = input.next();
animals[i] = new Snake(name);
System.out.println("修改成功!你现在就可以查看结果!");
}
}
public void modFish() {// 改鱼
int i = seekFish();
if (i != -1) {
System.out.println("请输入你想要的鱼的名字:");
String name = input.next();
animals[i] = new Fish(name);
System.out.println("修改成功!你现在就可以查看结果!");
}
}
}
###ZooTest类
package zoo;
import java.util.Scanner;
public class ZooTest {
static Scanner input = new Scanner(System.in);
static ZooManager zm = new ZooManager();
/**
* 删除的方法。
*/
public void delete() {
System.out.println("请输入要删除的动物的类型:");
System.out.println("1 、 Cat\t2 、Duck\t 3、 Snake\t 4、 Fish");
int choice = input.nextInt();
switch (choice) {
case 1:
System.out.println("************开始删除猫类的信息*************");
zm.delCat();
break;
case 2:
System.out.println("************开始删除鸭子类的信息*************");
zm.delDuck();
break;
case 3:
System.out.println("************开始删除蛇类的信息*************");
zm.delSnake();
break;
case 4:
System.out.println("************开始删除鱼类的信息*************");
zm.delFish();
break;
default:// 无效输入,重新进行删除程序。
System.out.println("无效的输入!");
delete();
break;
}
}
/**
* 增加的方法
*/
public void add() {
System.out.println("现在输入要添加的动物的类型:");
System.out.println("1 、 Cat\t2 、Duck\t3、 Snake\t4 、Fish");
int choice = input.nextInt();
switch (choice) {
case 1:// 添加猫。
System.out.println("************开始添加猫类的信息*************");
if (zm.isOut()) {
System.out.println("输入要添加的猫的名字:");
zm.addCat();
} else {
break;
}
System.out.println("添加猫成功!您现在就可以查看。");
break;
case 2:// 添加鸭子
System.out.println("************开始添加鸭子类的信息*************");
if (zm.isOut()) {
System.out.println("输入要添加的鸭子的名字:");
zm.addDuck();
} else {
break;
}
System.out.println("添加鸭子成功!您现在就可以查看。");
break;
case 3:// 添加蛇
System.out.println("************开始添加蛇类的信息*************");
if (zm.isOut()) {
System.out.println("输入要添加的蛇的名字:");
zm.addSnake();
} else {
break;
}
System.out.println("添加蛇成功!您现在就可以查看。");
break;
case 4:// 加鱼
System.out.println("************开始添加鱼类的信息*************");
if (zm.isOut()) {
System.out.println("请输入要添加的鱼的名字:");
zm.addFish();
} else {
break;
}
System.out.println("添加鱼成功,你现在就可以查看!");
break;
default:// 无效时,继续添加。
System.out.println("无效的输入!");
add();
break;
}
}
/**
* 修改动物信息。先找到要修改的那个动物的位置。有找猫,鸭子,蛇,鱼的方法和对应修改的方法
*/
public void modify() {
System.out.println("请输入要修改的动物的类型:");
System.out.println("1 、 Cat\t2 、Duck\t 3、 Snake 4 、Fish");
int choice = input.nextInt();
switch (choice) {
case 1:
System.out.println("************开始修改猫类的信息*************");
zm.modCat();
break;
case 2:
System.out.println("************开始修改鸭子类的信息*************");
zm.modDuck();
break;
case 3:
System.out.println("************开始修改蛇类的信息*************");
zm.modSnake();
break;
case 4:
System.out.println("************开始修改鱼类的信息*************");
zm.modFish();
break;
default:// 无效时继续修改
System.out.println("无效的输入!");
modify();
break;
}
}
/**
* 查看的方法
*/
public void see() {// 調用其他查看的方法,可以看所有動物信息。
System.out.println("============请输入你要查看的动物的品种============");
System.out.println("1\tCat");
System.out.println("2\tDuck");
System.out.println("3\tSnake");
System.out.println("4\tFish ");
System.out.println("输入你的选择:");
@SuppressWarnings("resource")
Scanner input = new Scanner(System.in);
int choose = input.nextInt();
switch (choose) {
case 1:
System.out.println("^-^-^-^-^-^-^-^-^-猫-^-^-^-^-^-^-^-^-^");
System.out.println("動物名字\t動物腿數\t動物聲明");
zm.seeCat();
break;
case 2:
System.out.println("^-^-^-^-^-^-^-^-^-鸭子-^-^-^-^-^-^-^-^-^");
System.out.println("動物名字\t動物腿數\t動物聲明");
zm.seeDuck();
break;
case 3:
System.out.println("^-^-^-^-^-^-^-^-^-蛇-^-^-^-^-^-^-^-^-^");
System.out.println("動物名字\t \t動物聲明");
zm.seeSnake();
break;
case 4:
System.out.println("^-^-^-^-^-^-^-^-^-鱼-^-^-^-^-^-^-^-^-^");
System.out.println("動物名字\t動物聲明");
zm.seeFish();
System.out.print("动物功能:");
Swim swim = new Fish();
swim.swim();
break;
default:
System.out.println("无效的输入。");
see();
break;
}
}
/**
* 初始界面。
*/
public void print() {
System.out.println("-----------------动物园管理---------------------");
System.out.println("你有如下选择*********************************");
System.out.println("1、\t 查看一类动物");
System.out.println("2、\t 增加一个动物");
System.out.println("3、\t 删除一个动物");
System.out.println("4、\t 修改一个动物");
System.out.println("5、\t 退出动物管理");
System.out.println("*******************************************");
System.out.println("请输入你的选择:^_^-^_^");
}
/**
* 程序入口方法。
*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ZooTest zt = new ZooTest();
boolean flag = true;
int choose = 0;
do {
while (flag) {
zt.print();
if (input.hasNext()) {
choose = input.nextInt();
}
input.nextLine();
switch (choose) {
case 1:// 查看动物信息
System.out.println("------>查看动物信息<-------");
zt.see();
break;
case 2:// 增加一个动物
System.out.println("------>增加一个动物<-------");
zt.add();
break;
case 3:// 删除一个动物
System.out.println("------>删除一个动物<-------");
zt.delete();
break;
case 4:// 修改一个动物
System.out.println("------>修改一个动物<-------");
zt.modify();
break;
case 5:// 退出动物管理
System.out.println("------>退出动物管理<-------");
System.exit(0);
break;
default:
System.out.println("输入了错误选项,本系统正在重新初始化。");
break;
}
}
} while (choose < 1 || choose > 5);
}
}
好了,暂时就是这样的了,以后有机会再优化吧。