package com.tian;
站在用户的角度思考问题,与客户深入沟通,找到龙港网站设计与龙港网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、做网站、企业官网、英文网站、手机端网站、网站推广、申请域名、网页空间、企业邮箱。业务覆盖龙港地区。
import java.io.IOException;
import java.util.Scanner;
/*
* Annie的宠物小屋里有12个笼子,每个笼子可以放不同的动物,包括猫,狗和蛇,
* 但同一时刻一个笼子只能放0只或1只宠物,本题要求完成:
* (1)定义抽象基类Animal,至少包含抽象方法ShowMe;
* (2)定义派生类Cat,Dog,Snake,具体实现上述抽象方法ShowMe,显示该宠物的种类,名称和喜欢的食物。
* (3)定义笼子类,能放0只或1只宠物,可以增加,移除指定笼子中的宠物,查询每个笼子中存放宠物的情况;
* (4)定义描述宠物小屋的类Shelves,其中包括12个笼子用于存放各种宠物;可统计宠物的种类和数量。
* (5)实现一个简单的控制类,测试上述类
*/
public class Test2 {
public static void main(String[] args) throws IOException {
System.out.println("请先让我做下自我介绍:");
Cat cat=new Cat();
cat.showMe();
Dog dog=new Dog();
dog.showMe();
Snake snake=new Snake();
snake.showMe();
System.out.println("-----------------我是分割线-----------------------");
System.out.println("请先将宠物让入笼子里面");
Cage cage=new Cage();
//调用宠物进笼方法
cage.join();
boolean onEnd=true; //结束标志
//选择添加还是移除
while(onEnd){ //让该循环一直为真,便于操作(后面有结束语句)
System.out.println("添加按(y),移除按(n),查看种类以及数量(m),按其他键则直接退出");
char c1=(char)System.in.read();
if(c1=='y'){
cage.join();
}else if(c1=='n'){
cage.move();
}else if(c1=='m'){
//当进行查询各个种类的数量时,该循环就结束了(不足之处,你自己改进下)
System.out.println("在笼子中猫的数量为:"+Cage.c+"\t狗的数量为:"+Cage.d+"\t蛇的数量为:"+Cage.s);
}else{
System.out.println("谢谢使用!");break; //直接结束循环
}
}
}
}
//抽象类Animal
abstract class Animal{
String kinds;
String name;
String foods;
abstract void showMe();
}
//Cat类
class Cat extends Animal{
public void showMe() {
System.out.println("我是猫类,我的名字叫小花,我喜欢吃鱼。");
}
}
//狗类
class Dog extends Animal{
void showMe() {
System.out.println("我是狗类,我的名字叫小黄,我喜欢吃肉。");
}
}
//蛇类
class Snake extends Animal{
void showMe() {
System.out.println("我是蛇类,我的名字叫小k,我喜欢吃老鼠。");
}
}
//笼子类
class Cage{
static String[] cg=new String[100]; //设置静态一个字符串数组cg,用来记录宠物的种类
static String[] name=new String[100]; //设置静态变量name,用来记录各种宠物名字
static int[] pd=new int[100]; //设置一个静态数组pd,来确定笼子中是否有宠物,并初始化为0(0:表示没有;1:表示有)
static int c=0; //静态变量c用来记录猫类在笼子里面的数量
static int d=0; //静态变量d用来记录狗类在笼子里面的数量
static int s=0; //静态变量s用来记录蛇类在笼子里面的数量
//宠物进笼的方法
public void join(){
System.out.println("请选择你要放进笼子的宠物类别:");
System.out.println("1.猫");
System.out.println("2.狗");
System.out.println("3.蛇");
Scanner input=new Scanner(System.in);
//请输入数字,不然会有异常(这里没抛异常)
int i=input.nextInt();
if(i1||i3){
System.out.println("输入有误,请重新输入");
Cage cage=new Cage();
cage.join();
}
System.out.println("请选择笼子的编号:");
int j=input.nextInt();
System.out.println("请输入宠物的名字:");
String inname=input.next(); //输入宠物名字的时候,字与字之间不要有空格,不然空格后面的字无法获取
switch (i) {
case 1:
//先判断该笼子中是否有宠物,没有的话才能放入宠物,否则请重新选择新的笼子
if(pd[j]==1){
System.out.println("有宠物在该笼子,请重新选择:");
Cage cage=new Cage();
cage.join();
}else{
pd[j]=1; //将数组中下标为j的值设置为1,表示宠物进入该笼子
cg[j]="猫"; //记录进入该笼子宠物的种类,便于以后添加或移除宠物是统计每个宠物种类的数量
name[j]=inname; //设置宠物的名字
c++;
System.out.println(cg[j]+":"+name[j]+"进入第"+j+"个笼子");
}
break;
case 2:
if(pd[j]==1){
System.out.println("有宠物在该笼子,请重新选择:");
Cage cage=new Cage();
cage.join();
}else{
pd[j]=1;
cg[j]="狗";
name[j]=inname;
d++;
System.out.println(cg[j]+":"+name[j]+"进入第"+j+"个笼子");
}
break;
default:
if(pd[j]==1){
System.out.println("有宠物在该笼子,请重新选择:");
Cage cage=new Cage();
cage.join();
}else{
pd[j]=1;
cg[j]="蛇";
name[j]=inname;
s++;
System.out.println(cg[j]+":"+name[j]+"进入第"+j+"个笼子");
}
break;
}
}
//宠物出笼的方法
public void move(){
System.out.println("请选择要移除哪个笼子中的宠物");
Scanner input=new Scanner(System.in);
int k=input.nextInt();
//首先进行判断,看你要移除宠物的笼子中是否有宠物,有的话就可以,不然就重新选择别的笼子
if(pd[k]==0){
System.out.println("该笼子中没有宠物,请重新选择");
Cage cage=new Cage();
cage.move();
}else{
pd[k]=0;
System.out.println("第"+k+"个笼子中的"+name[k]+"被移除");
if(cg[k]=="猫"){
c--;
}else if(cg[k]=="狗"){
d--;
}else{
s--;
}
}
}
}
Ps:本人也是新手一枚,代码还有很多不尽人意之处,希望楼主进一步的完善。测试类我没写,都放在main方法中进行了测试。希望楼主能采纳。
//望采纳,打这么多字不容易
//用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 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方法