java 宠物店管理系统

项目需求:

1. 完成宠物管理系统!
   1. 新建一个Pet类
      1. 属性:
         1. 名字String name
         2. 性别 char sex
         3. 年龄 int age
      2. 方法:
         1. 吃 eat
         2. 叫 howl
         3. 显示宠物信息 show
   2. 新建一个 Dog类 继承 Pet类
      1. 新增属性:
         1. 品种 kind
      2. 新增方法:
         1. 跑 run
         2. 拆家 dealer
   3. 新建一个Cat 类 继承 Pet类
      1. 新增属性
         1. 和主人的亲密度 love
      2. 新增方法
         1. 跑 run
         2. 卖萌 actingCute
   4. 新建一个类 PetShop
      1. 属性:
         1. 宠物店名字 String name
         2. 存储宠物的笼子 Pet[] pets=new Pet[100];(宠物店最多能存储100只宠物)
      2. 方法:
         1. 进货宠物 private boolean addPet(Pet pet);//私有进货方法。
         2. 收购宠物 public boolean purchasePet(Pet pet);//公开收购宠物方法,在该方法调用 进货宠物 addPet 方法。
         3. 销售宠物 private Pet sellPet();//销售流程私有。
         4. 顾客买宠物 public Pet buyPet(int type);//1代表买 狗,2代表买猫。返回Pet。在该方法调用 销售宠物 sellPet 方法。
         5. 向顾客展示所有宠物信息 public void showPets()
   5. 测试(用户的角色是顾客):
      1. 顾客进入宠物店。PetShop.name宠物店老板说:你是要买宠物(1)?还是要出售宠物(2)?还是随便看看然后离开(0)?
         1. 购买宠物:
            1. 需要买什么宠物?狗(1),猫(2)
               1. 选择狗:
                  1. 要什么品种的狗?
                  2. 输入完信息后查找宠物店是否存在该品种的狗,如果存在则随机出一个符合品种的狗购买,然后购买成功!输出狗的信息。
                     如果不存在该品种的狗,则提示:你选择的品种本店没有,请重新输入!
                     (输入:exit离开)
                     注意:!!!
                     不要求购买交易流程等。只要能通过品种,然后从宠物店中所有该品种的狗随机出一只即可。
               2. 选择猫:
                  1. 需要多少亲密度的猫咪?(0-100)
                  2. 如果输入的亲密度为 X 则 随机出  [x-10~x+10]范围的猫咪,然后完成购买,输出猫咪信息。否则(流程参考狗的购买流程)
         2. 出售宠物:
            1. 你的宠物是?狗(1),猫(2)
               1. 选择狗:
                  1. 是什么品种的狗?
                  2. 是什么性别的狗?
                  3. 狗的年龄多大?
                  4. 狗取什么名字?
                  5. 输入完信息后完成出售,出售宠物成功!
               2. 选择猫:
                  1. 你的猫咪和主人的亲密度为多少?(0-100)
                  2. 是什么性别的猫?
                  3. 猫年龄多大?
                  4. 猫取什么名字?
                  5. 输入完信息后完成销售,销售成功!
         3. 离开!



注:[购买宠物]、[出售宠物]、[离开] 。等菜单可以循环选择!

项目源码下载地址:

https://github.com/benxiaohai8888/Javase/tree/master/work


项目代码:

1 Pet.java

package work;

public abstract class Pet {
	protected String name;
	protected String sex;
	protected int age;

	public Pet(String name, String sex, int age) {
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public abstract void eat();

	public abstract void howl();

	public abstract void show();

	public abstract void run();

}


2.Cat.java

package work;

public class Cat extends Pet {
	private int love;

	public Cat(String name, String sex, int age, int love) {
		super(name, sex, age);
		this.love = love;
	}

	public void setLove(int love) {
		if (love < 0 || love > 100) {
			this.love = 20;
		} else
			this.love = love;
	}

	public int getLove() {
		return love;
	}

	public static void main(String[] args) {

	}

	@Override
	public void eat() {

	}

	@Override
	public void howl() {

	}

	@Override
	public void show() {
		System.out.println(this.toString());
	}

	@Override
	public void run() {

	}

	public void actingCute() {

	}

	@Override
	public String toString() {
		return "Cat [love=" + love + ", name=" + name + ", sex=" + sex + ", age=" + age + "]";
	}

}


3. Dog.jva

package work;

public class Dog extends Pet {
	private String kind;

	public Dog(String name, String sex, int age, String kind) {
		super(name, sex, age);
		this.kind = kind;
	}

	public String getKind() {
		return kind;
	}

	public void setKind(String kind) {
		this.kind = kind;
	}

	@Override
	public void eat() {

	}

	@Override
	public void howl() {

	}

	@Override
	public void show() {
		System.out.println(this.toString());
	}

	@Override
	public void run() {

	}

	public void dealer() {

	}

	@Override
	public String toString() {
		return "Dog [kind=" + kind + ", name=" + name + ", sex=" + sex + ", age=" + age + "]";
	}

}


4.PetShop.java

package work;

import java.util.Random;

public class PetShop {
	private String name;
	private Pet[] pets = new Pet[10];
	private int count = 0;

	public PetShop(String name) {
		this.name = name;
		addPet(new Dog("小黑", "雄", 2, "拉布拉多"));
		addPet(new Cat("莉莉", "母", 4, 80));
		addPet(new Dog("小白", "雌", 1, "中华田园犬"));
		addPet(new Cat("露西", "母", 6, 85));
		addPet(new Dog("andy", "公", 1, "藏獒"));
		addPet(new Cat("默默", "母", 2, 50));
		addPet(new Cat("小强", "公", 8, 89));
		addPet(new Dog("小小", "雄", 2, "拉布拉多"));
		addPet(new Dog("big", "雄", 2, "中华田园犬"));
	}

	// 判断是否有用户输入的品种
	public boolean hasDogKind(String kind) {
		for (Pet pet : pets) {
			if (pet instanceof Dog) {
				Dog d = (Dog) pet;
				boolean equals = d.getKind().equals(kind);
				if (equals) {
					return true;
				}
			}
		}
		return false;
	}

	public String getName() {
		return name;
	}

	public int size() {
		return count;
	}

	// 进货宠物 private boolean addPet(Pet pet);//私有进货方法。
	private boolean addPet(Pet pet) {
		if (count >= pets.length) {
			return false;
		}
		pets[count] = pet;
		count++;
		return true;
	}

	// 收购宠物 public boolean purchasePet(Pet pet);//公开收购宠物方法,在该方法调用 进货宠物 addPet
	// 方法。
	public boolean purchasePet(Pet pet) {
		return this.addPet(pet);
	}

	// 购买狗的方法
	public Pet buyDog(String kind) {
		int kindNum = 0;
		for (int i = 0; i < pets.length; i++) {
			Pet pet = pets[i];
			if (pet instanceof Dog) {
				Dog d = (Dog) pet;
				boolean equals = d.getKind().equals(kind);
				if (equals) {
					kindNum++;
				}
			}
		}
		int[] kindIndex = new int[kindNum];// 保存符合 kind品种的dog的下标位置
		int k = 0;
		for (int i = 0; i < pets.length; i++) {
			Pet pet = pets[i];
			if (pet instanceof Dog) {
				Dog d = (Dog) pet;
				boolean equals = d.getKind().equals(kind);
				if (equals) {
					kindIndex[k++] = i;
				}
			}
		}
		Random r = new Random();
		int nextInt = r.nextInt(kindIndex.length);
		int i = kindIndex[nextInt];

		Pet result = pets[i];// 确定卖出去的宠物
		capaticyConfirm(i);
		return result;
	}

	// 购买宠物成功后将数组长度减少
	private void capaticyConfirm(int index) {
		// 5 6
		int tag = index;
		while (tag < count - 1) {
			pets[tag] = pets[tag + 1];
			tag++;
		}
		pets[--count] = null;
	}

	// 5. 向顾客展示所有宠物信息 public void showPets()
	public void showPets() {
		for (int i = 0; i < count; i++) {
			pets[i].show();
		}
	}

	// 判断是否有用户要购买的猫
	public boolean hasCatLove(int love) {
		for (Pet pet : pets) {
			if (pet instanceof Cat) {
				Cat c = (Cat) pet;
				boolean equals = love - c.getLove() >= -10 && love - c.getLove() <= 10;
				if (equals) {
					return true;
				}
			}
		}
		return false;

	}

	// 购买猫的方法
	public Pet buyCat(int love) {

		int kindNum = 0;
		for (int i = 0; i < pets.length; i++) {
			Pet pet = pets[i];
			if (pet instanceof Cat) {
				Cat c = (Cat) pet;

				boolean equals = love - c.getLove() >= -10 && love - c.getLove() <= 10;
				if (equals) {
					kindNum++;
				}
			}
		}
		int[] kindIndex = new int[kindNum];// 保存符合 love的cat的下标位置
		int k = 0;
		for (int i = 0; i < pets.length; i++) {
			Pet pet = pets[i];
			if (pet instanceof Cat) {
				Cat c = (Cat) pet;
				boolean equals = love - c.getLove() >= -10 && love - c.getLove() <= 10;
				if (equals) {
					kindIndex[k++] = i;
				}
			}
		}

		Random r = new Random();
		int nextInt = r.nextInt(kindIndex.length);
		int i = kindIndex[nextInt];

		Pet result = pets[i];// 确定卖出去的宠物
		capaticyConfirm(i);
		return result;
	}

}


5 Main.java

package work;

import java.util.Scanner;

public class Main {
	// 键盘输入
	static Scanner sc = new Scanner(System.in);
	PetShop petShop = new PetShop("老王");

	public static void main(String[] args) {
		Main main = new Main();
		main.start();
	}

	// 开始方法
	private void start() {
		while (true) {
			System.out.println(petShop.getName() + "说:你是要买宠物(1)?还是要出售宠物(2)?查看所有宠物(3)?还是随便看看然后离开(0)?");
			int choise = sc.nextInt();
			switch (choise) {
			case 1:
				this.buyPetView();
				break;
			case 2:
				this.purchasePetView();
				break;
			case 3:
				petShop.showPets();
				break;

			default:
				System.out.println("再见...");
				return;
			}
		}

	}

	// 收购宠物
	private void purchasePetView() {
		int choise = inputInt("你的宠物是?狗(1),猫(2)");
		switch (choise) {
		case 1:
			purchaseDogView();
			break;
		case 2:
			purchaseCatView();
			break;

		default:
			break;
		}
	}

	// 收购猫
	private void purchaseCatView() {
		// 1. 你的猫咪和主人的亲密度为多少?(0-100)
		// 2. 是什么性别的猫?
		// 3. 猫年龄多大?
		// 4. 猫取什么名字?
		int love = inputInt("你的猫咪和主人的亲密度为多少?(0-100)");
		String sex = inputStr("是什么性别的猫?");
		int age = inputInt("猫年龄多大?");
		String name = inputStr("猫取什么名字?");
		Cat cat = new Cat(name, sex, age, love);
		boolean purchasePet = petShop.purchasePet(cat);
		System.out.println(purchasePet ? "收购成功!" : "收购失败!");
	}

	// 收购狗
	private void purchaseDogView() {
		// 1. 是什么品种的狗?
		// 2. 是什么性别的狗?
		// 3. 狗的年龄多大?
		// 4. 狗取什么名字?
		String kind = inputStr("是什么品种的狗?");
		String sex = inputStr("是什么性别的狗?");
		String name = inputStr("狗取什么名字?");
		int age = inputInt("狗的年龄多大?");
		Dog dog = new Dog(name, sex, age, kind);
		boolean purchasePet = petShop.purchasePet(dog);
		System.out.println(purchasePet ? "收购成功!" : "收购失败!");
	}

	// 购买宠物
	private void buyPetView() {
		switch (inputInt("需要买什么宠物?狗(1),猫(2)")) {
		case 1:
			buyDogView();
			break;
		case 2:
			buyCatView();
			break;

		default:
			break;
		}
	}

	/**
	 * 购买cat的流程
	 */
	private void buyCatView() {
		while (true) {
			int love = inputInt("需要多少亲密度的猫咪?(0-100)");
			boolean hasCatLove = petShop.hasCatLove(love);
			if (!hasCatLove) {
				System.out.println("你选择的亲密度本店没有,请重新输入!");
				continue;
			}
			Pet buyCat = petShop.buyCat(love);
			buyCat.show();
			return;
		}
	}

	/**
	 * 购买dog的流程
	 */
	private void buyDogView() {
		while (true) {
			String kind = inputStr("要什么品种的狗?");
			boolean hasDogKind = petShop.hasDogKind(kind);
			if (!hasDogKind) {
				System.out.println("你选择的品种本店没有,请重新输入!");
				continue;
			}
			Pet buyDog = petShop.buyDog(kind);
			buyDog.show();
			return;
		}
	}

	// 输入int方法
	public int inputInt(String tip) {
		System.out.println(tip);
		return sc.nextInt();
	}

	// 输入String方法
	public String inputStr(String tip) {
		System.out.println(tip);
		return sc.next();
	}
}


项目截图:


  • 59
    点赞
  • 348
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值