简易的动物园管理系统

#动物园管理

有猫,鸭子,鱼等动物,他们有一个共同的父类–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);

	}
}

好了,暂时就是这样的了,以后有机会再优化吧。

你可能感兴趣的:(java基础学习,java核心基础的接触性学习)