文章目录

  • 1、项目介绍
  • 2、程序主要类
  • 3、主要操作
  • 4、UML类图
  • 5、总结与心得


1、项目介绍

该项目(大作业)为构思一个宠物店,用Java语言实现,体现面向对象思想。
基本要求为:
1、体现面向对象特性:封装,继承,多态
2、体现代码规范
3、体现用户友好性(对用户输入做规范化处理)
4、利用Java集合类完成增删改查功能

同时绘制UML类图,这里我使用的的亿图图示工具绘制的UML类图

2、程序主要类

宠物店的宠物都是动物,我们可以设置一个抽象类Animal作为父类,然后把宠物店的其他宠物作为子类,如猫,狗等作为子类,然后再设置一个顾客类来执行相关的操作,最后在测试类中进行测试。
以下是作为抽象父类的Animal类:

//动物类
public abstract class Animal {
    //定义名字,年龄,颜色
    private String name;
    private int age;
    private String color;
    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 getColor() { return color; }
    public void setColor(String color) { this.color = color;}
    public Animal() {}
    public Animal(String name, int age,String color) {
        this.name = name;
        this.age = age;
        this.color = color;
    }
}

以下两个是作为子类的部分代码截图

//子类猫类
public class Cat extends Animal {
    public Cat(){}
    public Cat(String name,int age,String color){
        super(name,age,color);
    }
}
//子类狗类
public class Dog extends Animal {
    public Dog(){}
    public Dog(String name,int age,String color){
        super(name,age,color);
    }
}

3、主要操作

主要的操作为显示数据与修改数据,购买操作,以及通过控制循环来退出程序
1.显示数据的操作:

public void out(){
        System.out.println(" ");
        System.out.println("动物名字\t年龄\t动物颜色");
        for(int i=0;i<cat.length;i++){
            System.out.println(cat[i].getName()+"\t"+cat[i].getAge()+"\t"+cat[i].getColor());
        }
        for(int i=0;i<dog.length;i++){
            System.out.println(dog[i].getName()+"\t"+dog[i].getAge()+"\t"+dog[i].getColor());
        }
        for(int i=0;i<duck.length;i++){
            System.out.println(duck[i].getName()+"\t"+duck[i].getAge()+"\t"+duck[i].getColor());
        }
        for(int i=0;i<fish.length;i++){
            System.out.println(fish[i].getName()+"\t"+fish[i].getAge()+"\t"+fish[i].getColor());
        }
        System.out.println(" ");
    }

2.修改数据的操作:

public void change(){
        System.out.println("请输入想要修改的宠物种类");
        System.out.println("1.猫咪   2.狗狗   3.鸭子   4.金鱼");
        int flag = input.nextInt();
        System.out.println("请输入想修改的宠物姓名");
        String lastName = input.next();
        System.out.println("请输入修改后的新名字,及其相关信息:");
        System.out.println("样式如下:加菲猫 2 黑色");
        newName = input.next();
        newAge = input.nextInt();
        newColor = input.next();
        if(flag==1){
            for(int i=0;i<cat.length;i++){
                if(lastName.equals(cat[i].getName()) ){
                    cat[i].setName(newName);
                    cat[i].setAge(newAge);
                    cat[i].setColor(newColor);
                }
            }
        }else if(flag == 2){
            for(int i=0;i<dog.length;i++){
                if(lastName.equals(dog[i].getName()) ){
                    dog[i].setName(newName);
                    dog[i].setAge(newAge);
                    dog[i].setColor(newColor);
                }
            }
        }else if(flag == 3){
            for(int i=0;i<duck.length;i++){
                if(lastName.equals(duck[i].getName()) ){
                    duck[i].setName(newName);
                    duck[i].setAge(newAge);
                    duck[i].setColor(newColor);
                }
            }
        }else{
            for(int i=0;i<fish.length;i++){
                if(lastName.equals(fish[i].getName()) ){
                    fish[i].setName(newName);
                    fish[i].setAge(newAge);
                    fish[i].setColor(newColor);
                }
            }
        }
        System.out.println("修改完成");
    }

3.进行购买宠物操作的代码:

public void buy(){
        System.out.println("请输入想要购买的宠物种类");
        System.out.println("1.猫咪   2.狗狗   3.鸭子   4.金鱼");
        int flag = input.nextInt();
        System.out.println("请输入购买的宠物名字");
        newName = input.next();
        if(flag==1){
            for(i=0;i<cat.length;i++){
                if(newName.equals(cat[i].getName()) ){
                    System.out.println("购买成功");
                    break;
                }
            }
            if(i==cat.length)System.out.println("没有找到该宠物,抱歉");
        } else if(flag == 2){
            for(i=0;i<dog.length;i++){
                if(newName.equals(dog[i].getName()) ){
                    System.out.println("购买成功");
                    break;
                }
            }
            if(i==dog.length)System.out.println("没有找到该宠物,抱歉");
        }else if(flag == 3){
            for(int i=0;i<duck.length;i++){
                if(newName.equals(duck[i].getName()) ){
                    System.out.println("购买成功");
                    break;
                }
            }
            if(i==duck.length)System.out.println("没有找到该宠物,抱歉");
        }else{
            for(int i=0;i<fish.length;i++){
                if(newName.equals(fish[i].getName()) ){
                    System.out.println("购买成功");
                    break;
                }
            }
            if(i==fish.length)System.out.println("没有找到该宠物,抱歉");
        }
    }

4.text类中的主要菜单循环代码截图:

Scanner input = new Scanner(System.in);
        int a = 0;
        Custom c = new Custom();
        System.out.println("欢迎来到宠物店啊喵");
        System.out.println("请选择要进行的操作步骤:");
        do{
            System.out.println("1.看看宠物店的所有宠物");
            System.out.println("2.修改宠物店的宠物信息");
            System.out.println("3.购买宠物");
            System.out.println("4.不买并遗憾退出宠物店");
            a =input.nextInt();
            if(a==1){
                c.out();
            } else if(a==2){
                c.change();
            } else if(a==3){
                c.buy();
            } else {
                break;
            }
            System.out.println("请选择后续操作:");
        }while(a!=0);
        System.out.println("谢谢使用!");

可能还有很多没做到或者没考虑到的部分功能,因为笔者我的能力有限,只能想到这些部分,万分抱歉。

4、UML类图

图片用亿图图示制作:

用java写一个动物识别的软件 java编写宠物类_System


用java写一个动物识别的软件 java编写宠物类_fish_02

5、总结与心得

到此寒假的集训与大作业就告一段落了,通过这次的集训,让我这个Java的萌新初次学习到了Java语言的奇妙功能,也通过学习明白了很多新的思想方法,也对实验室的学长学姐表示感谢,感谢他们的分享与讲解,Java的学习路还很长,我还有很多没弄懂的部分,还得继续学习,所以用此博客来记录自己初次学习的结束以及新的学习的开始,道阻且长,仍需努力。