Java实现宠物商店管理

作者:龍雅 时间:2023-09-14 09:14:13 

本文实例为大家分享了Java实现宠物商店管理的具体代码,供大家参考,具体内容如下

第一种实现方式:抽象类和对象数组


public abstract class AbstractPet //定义宠物模板
{
private String name;  //名称
private String color;  //颜色
private int age;   //年龄

public AbstractPet(){}
public AbstractPet(String name, String color, int age){
 this.setName(name);
 this.setColor(color);
 this.setAge(age);
}

public String getName(){
 return this.name;
}
public String getColor(){
 return this.color;
}
public int getAge(){
 return this.age;
}
public void setName(String name){
 this.name = name;
}
public void setColor(String color){
 this.color = color;
}
public void setAge(int age){
 if (age > 0)
 {
  this.age = age;
 }else{
  this.age = 1;
 }
}

//定义抽象方法
public abstract void printInfo();   //自我介绍
}

public class Dog extends AbstractPet
{
public Dog(String name, String color, int age){
 super(name, color, age);
}
//实现抽象方法
public void printInfo(){ //自我介绍
 System.out.println("狗: " + super.getName() + ",年龄 " + super.getAge() + "岁,颜色:" + super.getColor());
}
}

public class Cat extends AbstractPet
{
public Cat(String name, String color, int age){
 super(name, color, age);
}
//实现抽象方法
public void printInfo(){ //自我介绍
 System.out.println("狗: " + super.getName() + ",年龄 " + super.getAge() + "岁,颜色:" + super.getColor());
}
}

public class PetShop
{
private AbstractPet[] pets;
private int foot; //定义下标

public PetShop(int len){ //宠物数量由用户确定
 if (len > 0)
 {
  this.pets = new AbstractPet[len];
 }else{
  this.pets = new AbstractPet[1];
 }
}

//添加宠物的方法
public boolean add(AbstractPet pet){
 if (this.foot < this.pets.length)
 {
  this.pets[foot] = pet;
  this.foot ++;
  return true;
 }else{
  return false;
 }
}

//定义查询宠物的方法[提供按照种类查询和按照姓名查询两种方法]
public AbstractPet[] search(String keyword){
 int n = 0; //定义查询到的宠物数量
 AbstractPet[] searchPets = null;
 for (int i = 0; i < this.pets.length; i++)
 {
  if (this.pets[i] != null)
  {
   if (this.pets[i].getName().indexOf(keyword) != -1 || this.pets[i].getColor().indexOf(keyword) != -1)
   {
    n++;
   }
  }  
 }
 searchPets = new AbstractPet[n];
 n = 0;
 for (int i = 0; i < this.pets.length; i++)
 {
  if (this.pets[i] != null)
  {
   if (this.pets[i].getName().indexOf(keyword) != -1 || this.pets[i].getColor().indexOf(keyword) != -1)
   {
    searchPets[n] = this.pets[i];
    n ++;
   }
  }  
 }
 return searchPets;
}
}

public class testPetShop
{
public static void main(String[] args){
 PetShop p = new PetShop(5);
 p.add(new Dog("狗1", "黑色的", 3));
 p.add(new Dog("狗2", "红色的", 2));
 p.add(new Cat("猫1", "褐色的", 3));
 p.add(new Cat("猫2", "黄色的", 3));
 p.add(new Cat("猫3", "黑色的", 5));
 p.add(new Dog("狗3", "棕色的", 4));
 print(p.search("黑"));
}
public static void print(AbstractPet pets[]){
 for (int i = 0; i < pets.length; i++)
 {
  if (pets[i] != null)
  {
   pets[i].printInfo();
  }  
 }
}
}

第二种实现方式:接口和对象数组


interface IPet
{
String getName(); //取得宠物姓名
String getColor(); //取得宠物颜色
int getAge();  //取得宠物年龄
void show();   //显示宠物信息
}

public class Dog implements IPet
{
private String name;
private String color;
private int age;

public Dog(String name, String color, int age){
 this.setName(name);
 this.setColor(color);
 this.setAge(age);
}
public String getName(){
 return this.name;
}
public String getColor(){
 return this.color;
}
public int getAge(){
 return this.age;
}
public void setName(String name){
 this.name = name;
}
public void setColor(String color){
 this.color = color;
}
public void setAge(int age){
 if (age < 0 || age > 50)
 {
  this.age = 1; //默认值
 }else{
  this.age = age;
 }
}
public void show(){
 System.out.println(this.toString());
}
public String toString(){
 return "狗:" + this.getName() + " " + this.getColor() + " " + this.getAge();
}
}

public class Cat implements IPet
{
private String name;
private String color;
private int age;

public Cat(String name, String color, int age){
 this.setName(name);
 this.setColor(color);
 this.setAge(age);
}
public String getName(){
 return this.name;
}
public String getColor(){
 return this.color;
}
public int getAge(){
 return this.age;
}
public void setName(String name){
 this.name = name;
}
public void setColor(String color){
 this.color = color;
}
public void setAge(int age){
 if (age < 0 || age > 50)
 {
  this.age = 1; //默认值
 }else{
  this.age = age;
 }
}
public void show(){
 System.out.println(this.toString());
}
public String toString(){
 return "猫:" + this.getName() + " " + this.getColor() + " " + this.getAge();
}
}

public class PetShop
{
private IPet[] pets;
private int foot;

public PetShop(int len){ //宠物店的宠物数量由用户决定
 if (len > 0)
 {
  pets = new IPet[len];
 }else{
  pets = new IPet[1]; //默认最小数量为1
 }
}
public boolean add(IPet pet){
 if (this.foot < this.pets.length)
 {
  this.pets[this.foot] = pet;
  this.foot ++;
  return true;
 }else{
  return false;
 }
}
public IPet[] search(String keyword){
 //定义一个新的宠物对象数组,用来存储符合查询条件的宠物
 IPet[] resultPet = null; //不确定数量,要通过循环得到
 int count = 0; //用来存储符合查询条件的宠物数量
 for (int i = 0; i < this.pets.length; i++)
 {
  if (this.pets[i] != null)
  {
   if (this.pets[i].getName().indexOf(keyword) != -1 || this.pets[i].getColor().indexOf(keyword) != -1)
   {
    count ++;
   }
  }
 }
 resultPet = new IPet[count];
 int n = 0;
 for (int i = 0; i < this.pets.length; i++)
 {
  if (this.pets[i] != null)
  {
   if (this.pets[i].getName().indexOf(keyword) != -1 || this.pets[i].getColor().indexOf(keyword) != -1)
   {
    resultPet[n] = this.pets[i];
    n ++;
   }
  }
 }
 return resultPet;
}
}

public class TestPetShop
{
public static void main(String[] args){
 //创建一个宠物商店
 PetShop ps = new PetShop(7); //假设可以放置5只宠物
 ps.add(new Dog("旺旺", "黑色的",4));
 ps.add(new Dog("旺财", "白色的",6));
 ps.add(new Dog("小黑", "黄色的",3));
 ps.add(new Cat("波波", "褐色的",7));
 ps.add(new Cat(" * ", "黑色的",8));
 ps.add(new Cat("小云", "灰色的",2));
 ps.add(new Dog("仔仔", "黄色的",5));
 print(ps.search("色"));
}
public static void print(IPet[] pet){
 for (int i = 0; i < pet.length; i++)
 {
  if (pet[i] != null)
  {
   pet[i].show();
  }
 }
}
}

来源:https://blog.csdn.net/Dragon_201314/article/details/78264849

标签:java,商店管理
0
投稿

猜你喜欢

  • C#实现汉字转拼音或转拼音首字母的方法

    2022-10-22 17:26:01
  • Java parseInt解释加方法示例

    2021-09-17 15:13:55
  • Java异步调用转同步方法实例详解

    2023-11-01 20:38:25
  • C语言函数封装及变量的作用域

    2022-10-06 10:14:47
  • 一文详解C# Chart控件

    2023-01-20 03:50:04
  • Java面试题冲刺第二十三天--分布式

    2023-09-24 07:30:43
  • Java中线程安全问题

    2021-12-02 05:51:59
  • Java日常练习题,每天进步一点点(53)

    2023-08-12 00:55:00
  • Android巧用DecorView实现对话框功能

    2022-07-14 14:03:40
  • 基于java文件上传-原始的Servlet方式

    2021-10-17 13:26:25
  • Android 获取随机验证码功能示例

    2023-01-22 10:03:27
  • android中TabHost的图标(48×48)和文字叠加解决方法

    2023-05-19 14:13:28
  • SpringBoot中的五种对静态资源的映射规则的实现

    2023-06-21 08:31:47
  • Android自定义ViewPager指示器

    2023-11-29 03:30:31
  • Java使用递归法解决汉诺塔问题的代码示例

    2023-09-05 20:31:28
  • Android开发之RecyclerView控件

    2023-08-14 08:57:37
  • idea推送项目到gitee中的创建方法

    2021-08-19 11:27:14
  • Java并发之不可思议的死循环详解

    2023-10-20 03:11:34
  • C#并行编程Task类用法介绍

    2021-06-26 20:58:17
  • Android编程实现VideoView循环播放功能的方法

    2021-12-05 15:31:42
  • asp之家 软件编程 m.aspxhome.com