//望采纳,打这么多字不容易
在成都网站建设、成都网站制作中从网站色彩、结构布局、栏目设置、关键词群组等细微处着手,突出企业的产品/服务/品牌,帮助企业锁定精准用户,提高在线咨询和转化,使成都网站营销成为有效果、有回报的无锡营销推广。创新互联专业成都网站建设十年了,客户满意度97.8%,欢迎成都创新互联客户联系。
//用eclipse软件
一、问题描述
设计一个宠物商店,在商店中可以有多种宠物,试表示出此种关系,并要求可以根据关键字查找相应的宠物信息。所需要的宠物信息自行设定。
1、可以保存多个宠物的信息
2、宠物的属性:名字、年龄等
3、可以实现宠物上架、下架、模糊查询等功能。
实现思路
1.首先需要定义一个宠物类,因为宠物种类有很多,因此需要定义一个抽象类。该类中需要包含宠物的各种信息,例如:种类、名字、年龄、雌雄等。
2.有了宠物后还需要定义一个商店类,来存放各种宠物。该商店类可以展示出商店内的宠物信息,以满足用户需求。
3.因为要实现宠物的上架和下架操作,因此还需要定义一个上架类和下架类。可以通过该类对宠物进行上架和下架操作,以存放到商店中。
4.要实现模糊查询功能,需要定一个查询类,该类可以通过输入关键字来查询商店内的宠物信息来展现出来。
5.要实现上诉功能,还需要定义一个测试类,来实现上述操作。
代码实现:
1.宠物类
package 宠物商店;
public abstract class 宠物类 {
public String species; //种类
public String name; //名字
public String sex; //雌雄
public int age; //年龄
public 宠物类() {
}
public 宠物类(String species,String name,String sex,int age) {
this.species=species;
this.name=name;
this.sex=sex;
this.age=age;
}
public abstract void pet1();
public void setspecies(String species) {
this.species=species;
}
public String getspecies() {
return species;
}
public void setname(String name) {
this.name=name;
}
public String getname() {
return name;
}
public void setsex(String sex) {
this.sex=sex;
}
public String getsex() {
return sex;
}
public void setage(int age) {
this.age=age;
}
public int getage() {
return age;
}
}
2.商店类
package 宠物商店;
public class 商店类 extends 宠物类{
public 商店类(String species,String name,String sex,int age) {
super(species, name, sex,age);
}
public void pet1() {
System.out.println("宠物种类:"+species+"\t宠物名称:"+name+"\t宠物性别"+sex+"\t宠物年龄"+age+"岁");
}
static 商店类 doug1=new 商店类("金毛","豆豆","雄性",1);
static 商店类 doug2=new 商店类("牧羊犬","花花","雌性",2);
static 商店类 doug3=new 商店类("泰迪","毛毛","雄性",1);
static 商店类 doug4=new 商店类("二哈","笨笨","雌性",2);
static 商店类 cat1=new 商店类("加菲猫","胖胖","雄性",1);
static 商店类 cat2=new 商店类("波斯猫","玲玲","雌性",2);
}
3.下架类
package 宠物商店;
import java.util.Scanner;
public class 下架类 {
public static void XJ() {
Scanner scanner = new Scanner(System.in);
System.out.println("现在本店有以下宠物:");
商店类.doug1.pet1();
商店类.doug2.pet1();
商店类.doug3.pet1();
商店类.doug4.pet1();
商店类.cat1.pet1();
商店类.cat2.pet1();
System.out.println("请您选择要下架的宠物名称");
String name = scanner.next();
System.out.println("您好,您已成功下架名字为:"+name+"的宠物");
}
}
4.上架类
package 宠物商店;
import java.util.Scanner;
public class 上架类 {
public static String species; //种类
public static String name; //名字
public static String sex; //雌雄
public static int age; //年龄
public static void SJ() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要上架宠物的种类:");
species=scanner.next();
System.out.println("请输入你要上架宠物的名字:");
name=scanner.next();
System.out.println("请输入你要上架宠物的雌雄:");
sex=scanner.next();
System.out.println("请输入你要上架宠物的年龄:");
age=scanner.nextInt();
商店类 cw=new 商店类(species,name,sex,age);
System.out.println("恭喜您,您已经成功上架:");
cw.pet1();
System.out.println("现在本商店有:");
商店类.doug1.pet1();
商店类.doug2.pet1();
商店类.doug3.pet1();
商店类.doug4.pet1();
商店类.cat1.pet1();
商店类.cat2.pet1();
cw.pet1();
}
}
5.查询类
package 宠物商店;
import java.util.Scanner;
public class 查询类 {
public static void CX() {
Scanner scanner = new Scanner(System.in);
System.out.println("尊敬的顾客您好,我会为您提供最优的服务");
System.out.println("1:查询本店宠物种类\t2:查询本店宠物信息");
int n = scanner.nextInt();
if(n==1) {
System.out.println("尊敬的顾客,目前本店有:1、宠物狗\t2、宠物猫");
}
if(n==2) {
System.out.println("请输入您要查询宠物的种类信息:");
String name = scanner.next();
if(name.equals("狗")||name.equals("gou")) {
System.out.println("本店提供"+name+"的品种为:");
商店类.doug1.pet1();
商店类.doug2.pet1();
商店类.doug3.pet1();
商店类.doug4.pet1();
}
else if(name.equals("猫")||name.equals("mao")) {
System.out.println("本店提供"+name+"的品种为:");
商店类.cat1.pet1();
商店类.cat2.pet1();
}
else {
System.out.println("给常抱歉,本店不能提供你所需要的宠物:"+name);
}
}
}
}
6.测试类
package 宠物商店;
import java.util.Scanner;
public class 测试类 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("**********欢迎来到宠物商店在线系统**********");
System.out.println("我们将为您提供最优秀的服务,请您做以下选择");
System.out.println("1:员工登录\t2:尊敬的顾客");
int i = scanner.nextInt();
if(i==1){
System.out.println("亲爱的员工您好,请选择您要进行的操作:");
System.out.println("1:对宠物进行上架操作\t2:对宠物进行下架操作");
int n = scanner.nextInt();
if(n==1) {
//转到上架类
上架类.SJ();
}
if(n==2) {
//转到下架类
下架类.XJ();
}
}
if(i==2) {
查询类.CX();
}
}
}
public interface 接口A {
public void get();
}
//**************
public class 接口A的实现类 implements 接口A {
@Override
public void get() {
System.out.println(1);
}
}
//**************
public class Test {
接口A d = new 接口A的实现类();
public Test() {
d.get();
}
}
虽然可以,但不提倡,因为接口有其自己的存在意义,接口定义行为,一般的都是接口定义,然后用一个类实现。
如果您必须要在接口中实现方法:
public interface 接口A {
public void get();
public default void set() {
//实现
}
}
public class Run {
public static void main(String[] args) {
Master master = new Master();
master.feedDog("鸡骨头");
master.feedCat("鸡骨头");
}
}
class Master {
private Pet mPet;
private Food mFood;
public void feedCat(String food) {
mPet = new Cat();
mFood = new Food(food);
mPet.eat(mFood);
}
public void feedDog(String food) {
mPet = new Dog();
mFood = new Food(food);
mPet.eat(mFood);
}
}
class Dog extends Pet{
@Override
public void eat(Food food) {
System.out.println("正在喂小狗吃"+food.getFood());
if (food.getFood().matches(Food.BONE)) {
System.out.println("小狗正在吃"+food.getFood()+"!");
}else {
System.out.println("但是小狗不喜欢吃"+food.getFood()+"!");
}
}
}
class Cat extends Pet{
@Override
public void eat(Food food) {
System.out.println("正在喂小猫吃"+food.getFood());
if (food.getFood().matches(Food.FISH)) {
System.out.println("小猫正在吃"+food.getFood()+"!");
}else {
System.out.println("但是小猫不喜欢吃"+food.getFood()+"!");
}
}
}
class Food {
public final static String BONE = ".*骨.*";
public final static String FISH = ".*鱼.*";
private String food;
public String getFood() {
return food;
}
public void setFood(String food) {
this.food = food;
}
public Food(String food) {
this.food = food;
}
}
class Pet {
public void eat(Food food) {
}
}
public class Pet {
//pet的属性
private String name;
private int age;
private char gengder;
//提供无参构造方法
public Pet() {
super();
}
//提供有参构造方法
public Pet(String name, int age, char gengder) {
super();
this.name = name;
this.age = age;
this.gengder = gengder;
}
//提供get/set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getGengder() {
return gengder;
}
public void setGengder(char gengder) {
this.gengder = gengder;
}
//重写tostring方法
@Override
public String toString() {
return "Pet [name=" + name + ", age=" + age + ", gengder=" + gengder + "]";
}
}
封装的基本语法:
属性私有化
提供无参和有参构造方法
提供get/set方法
重写tostring方法
具体代码如下:
class Pet {
public static final String Male = "雄";
public static final String Female = "雌";
// 名称
private String name;
// 年龄
private int age;
// 性别
private String gender;
// 配偶
private Pet partner;
public Pet(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
if (gender != Male gender != Female) {
throw new IllegalArgumentException("无效的参数[gender]。");
}
this.gender = gender;
}
public Pet getPartner() {
return partner;
}
public void setPartner(Pet partner) {
this.partner = partner;
}
// 判断自己是否满足结婚条件
public boolean isMarriageable() {
// 判断自己是否有配偶
if (this.partner != null) {
return false;
}
// 判断己方是否满足结婚年龄
if ((this.gender == Male this.age 5) ||
(this.gender == Female this.age 4)) {
return false;
}
return true;
}
// 判断自己是否可以和 pet 结婚
public boolean isMarriageableWith(Pet pet) {
// 判断自己是否满足结婚条件
if (!this.isMarriageable()) {
return false;
}
// 判断对方是否满足结婚条件
if (!pet.isMarriageable()) {
return false;
}
// 判断双方是否为同性
if (this.gender.equals(pet.getGender())) {
return false;
}
return true;
}
// 结婚方法
public void marry(Pet partner) {
// 把对方设置为自己的配偶
this.setPartner(partner);
// 把自己设置为对方的配偶
partner.setPartner(this);
}
}
public class Homework4 {
public static void main(String[] args) {
Pet p1 = new Pet("小花猫", 5, Pet.Male);
Pet p2 = new Pet("小黑猫", 4, Pet.Female);
// 判断小花猫是否可以和小黑猫结婚
boolean result = p1.isMarriageableWith(p2);
System.out.println(result ? "小花猫和小黑猫可以结婚" : "小花猫和小黑猫不可以结婚");
// 小花猫和小黑猫结婚
p1.marry(p2);
Pet p3 = new Pet("小白猫", 4, Pet.Female);
// 判断小白猫是否可以和小花猫结婚,小黑猫已经有配偶了不能结婚
result = p3.isMarriageableWith(p1);
System.out.println(result ? "小白猫和小花猫可以结婚" : "小白猫和小花猫不可以结婚");
}
}