赞
踩
项目需求:
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();
- }
- }
项目截图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。