Java实现宠物商店管理系统

 更新时间:2020年10月29日 15:44:15   作者:ZenGx1n  
这篇文章主要为大家详细介绍了Java实现宠物商店管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

一、实验目的

1.掌握java类的继承、多态等的基本概念;

2.掌握简单的信息管理系统的设计与实现。

二、实验环境

实验建议在安装了以下软件的计算机上完成:

1. Windows xp/win7/win8/win10操作系统
2. JDK 1.6以上版本
3. Eclipse或NetBeans IDE或EditPlus或其它开发工具

三、实验内容与要求

(一) 问题描述

要求采用java面向对象的基本知识,实现宠物商店管理系统。

(二) 实验要求

1、宠物商店有狗和猫两种动物,请为这两种动物创建各自的类,而且它们都继承宠物类,为这些类定义基本的属性和方法;

2、为宠物商店也创建一个类,该类有基本属性,比如商店名称等,还有宠物笼子的属性,此外,还具备一些方法,比如:买进宠物、销售宠物、清点宠物库存、销售统计和盈利情况等;

3、实现买进宠物的方法,输入狗或猫的基本属性和进货价格,并把该买进的宠物放进宠物笼子;

4、实现销售宠物的方法,输入狗或猫的基本属性和销售价格,并把宠物从宠物笼子取出;

5、实现清点宠物库存方法,列出所有库存的宠物清单;

6、实现销售和盈利统计,查询所有已销售的宠物清单,包括进货价格和销售价格,还有总利润;

四、实现提示

1. 宠物笼子采用数组实现,数组的数据类型为宠物类;

 2. 销售清单也采用数组实现。

五、代码

Pet类

public class Pets {
 private String color; //颜色
 private int age; //年龄
 private String sex; //性别
 private String kind;
 
 private double inPrice; //进货价格
 private double outPrice; //销售价格
 private double profit; //盈利
 
 
 public Pets(String color, int age, String sex) {
 this.color = color;
 this.age = age;
 this.sex = sex;
 }
 
 public Pets() {
 
 }
 
 public String getKind() {
 return kind;
 }
 
 public void setKind(String kind) {
 this.kind = kind;
 }
 
 public double getProfit() {
 return profit;
 }
 
 public void setProfit(double profit) {
 this.profit = profit;
 }
 
 public String getSex() {
 return sex;
 }
 
 public void setSex(String sex) {
 this.sex = sex;
 }
 
 public String getColor() {
 return color;
 }
 
 public void setColor(String color) {
 this.color = color;
 }
 
 public int getAge() {
 return age;
 }
 
 public void setAge(int age) {
 this.age = age;
 }
 
 public double getInPrice() {
 return inPrice;
 }
 
 public void setInPrice(double inPrice) {
 this.inPrice = inPrice;
 }
 
 public double getOutPrice() {
 return outPrice;
 }
 
 public void setOutPrice(double outPrice) {
 this.outPrice = outPrice;
 }
 
}

Cat类

public class Cat extends Pets{
 
 public Cat(String color, int age, String sex) {
 super(color, age, sex);
 }
 
 public Cat() {
 
 }
 
}

Dog类

public class Dog extends Pets{
 
 public Dog(String color, int age, String sex) {
 super(color, age, sex);
 }
 
 public Dog() {
 
 }
}

PetsStore类

import java.util.Scanner;
import java.util.Date;
public class PetsStore {
 Scanner input = new Scanner(System.in); 
 private String name;
 private Cat[] cats;
 private Dog[] dogs;
 private Pets[] pets;
 
 private int dogFoot = 0; // 狗的当前长度
 private int catFoot = 0; //猫的当前长度
 private int petFoot = 0; 
 
 private int num = 0; //库存数量
 private int inNum = 0; //进货数量
 private int outNum = 0; //销售数量
 
 public PetsStore(int len) {
 if (len > 0) {
 this.cats = new Cat[len]; // 开辟数组大小 
 this.dogs = new Dog[len];
 this.pets = new Pets[len];
 } else {
 this.dogs = new Dog[1]; // 至少开辟一个空间
 this.cats = new Cat[1];
 this.pets = new Pets[1];
 }
 }
 
 public String getName() {
 return name;
 }
 
 public void setName(String name) {
 this.name = name;
 }
 
 public void add() { // 添加的是一个宠物
 System.out.println("您添加的是狗还是猫?\n" + "1.狗   2.猫");
 String choice = input.next();
 if(choice.equals("1")) {
 Dog dog = new Dog();
 
 System.out.println("请输入您要添加的宠物的信息");
  System.out.print("颜色:");
  dog.setColor(input.next());
  System.out.print("年龄:");
  dog.setAge(input.nextInt());
  System.out.print("性别:");
  dog.setSex(input.next());
  System.out.print("进货价格:");
  dog.setInPrice(input.nextDouble());
  System.out.print("出售价格:");
  dog.setOutPrice(input.nextDouble());
  
 if(dogFoot < dogs.length) {
 dogs[dogFoot] = dog;
 dogFoot++;
 System.out.println("添加成功!");
 inNum++;
 num++;
 } 
 else {
 System.out.println("添加失败!");
 }
 } 
 else if(choice.equals("2")) {
 if(catFoot < cats.length) {
 Cat cat = new Cat();
 
 System.out.println("请输入您要添加的宠物的信息");
  System.out.print("颜色:");
  cat.setColor(input.next());
  System.out.print("年龄:");
  cat.setAge(input.nextInt());
  System.out.print("性别:");
  cat.setSex(input.next());
  System.out.print("进货价格:");
  cat.setInPrice(input.nextDouble());
  System.out.print("出售价格:");
  cat.setOutPrice(input.nextDouble());
  
  
 cats[catFoot] = cat;
 catFoot++;
 System.out.println("添加成功!");
 inNum++;
 num++;
 } 
 else {
 System.out.println("添加失败!");
 }
 } 
  else {
 System.out.println("没有这个选项,请重新输入!");
 }
 }
 
 public void print() {
 Date date = new Date();
 System.out.println("===============宠物商店库存清单===============");
 System.out.println("*******************C A T S*******************");
 System.out.println("Color Age Sex InPrice OutPrice");
 for (int i = 0; i < cats.length; i++) {
 if (cats[i] != null) {
 System.out.println(cats[i].getColor() + "\t" + cats[i].getAge() + "\t" + cats[i].getSex() + "\t" + cats[i].getInPrice() + "\t" + cats[i].getOutPrice());
 }
 }
 System.out.println("\n*******************D O G S*******************");
 System.out.println("Color Age Sex InPrice OutPrice");
 for (int i = 0; i < dogs.length; i++) {
 if (dogs[i] != null) {
 System.out.println(dogs[i].getColor() + "\t" + dogs[i].getAge() + "\t" + dogs[i].getSex() + "\t" + dogs[i].getInPrice() + "\t" + dogs[i].getOutPrice());
 }
 }
 System.out.println("=============================================");
 System.out.println("date:  " + date);
 }
 
 public void sell() {
 if(num == 0) {
 System.out.println("库存为零,请及时购进宠物!\n");
 }
 else {
 System.out.println("您要出售的是猫还是狗?\n" + "1.猫    2.狗");
 String choice = input.next();
 if(choice.equals("1")) {
 System.out.println("请输入您要出售的猫的特征");
 System.out.print("颜色:");
 String color1 = input.next();
 System.out.print("年龄:");
 int age1 = input.nextInt();
 System.out.print("性别:");
 String sex1 = input.next();
 
 int i, flag = catFoot;
 for(i = 0; i < catFoot; i++) {
 if(color1.equals(cats[i].getColor()) && age1 == cats[i].getAge() && sex1.equals(cats[i].getSex())) {
  flag = i; break;
 }
 }
 if(i == catFoot) {
 System.out.println("查无此猫!请核对后重新输入 \n");
 sell();
 }
 else {
 pets[petFoot] = cats[i];
 pets[petFoot].setKind("cat");
 petFoot++;
 for(int j = flag; j < catFoot; j++) {
  cats[j] = cats[j + 1];
 }
 System.out.println("售出成功!\n");
 catFoot -= 1; //不减1会报数组越界的错误
 outNum++;
 num--;
 }
 }
 else if(choice.equals("2")) {
 System.out.println("请输入您要出售的狗的特征");
 System.out.print("颜色:");
 String color1 = input.next();
 System.out.print("年龄:");
 int age1 = input.nextInt();
 System.out.print("性别:");
 String sex1 = input.next();
 
 int i, flag = dogFoot;
 for(i = 0; i < dogFoot; i++) {
 if(color1.equals(dogs[i].getColor()) && age1 == dogs[i].getAge() && sex1.equals(dogs[i].getSex())) {
  flag = i; break;
 }
 }
 if(i == dogFoot) {
 System.out.println("查无此狗!请核对后重新输入 ");
 sell();
 }
 else {
 pets[petFoot].setKind("dog");
 pets[petFoot] = dogs[i];
 petFoot++;
 for(int j = flag; j < catFoot; j++) {
  dogs[j] = dogs[j + 1];
 }
 System.out.println("售出成功!\n");
 dogFoot -= 1; //不减1会报数组越界的错误
 outNum++;
 num--;
 }
 }
 else {
 System.out.println("没有这个选项,请重新输入!");
 }
 }
 }
 
 public void note() {
 Date date = new Date();
 System.out.println("===============宠物商店销售记录清单===============");
 System.out.println("Kind Color Age Sex InPrice OutPrice");
 for(int i = 0; i < pets.length; i++) {
 if(pets[i] != null) {
 System.out.println(pets[i].getKind() + "\t" + pets[i].getColor() + "\t" + pets[i].getAge() + "\t" + pets[i].getSex() + "\t" + pets[i].getInPrice() + "\t" + pets[i].getOutPrice());
 }
 }
 System.out.println("=================================================");
 System.out.println("date:   " + date);
 }
 
 public void profitNote() {
 Date date = new Date();
 System.out.println("===========宠物商店盈利情况===========");
 double cost = 0.0;
 double income = 0.0;
 double myProfit = 0.0;
 for(int i = 0; i < pets.length; i++) {
 if(pets[i] != null) {
 cost += pets[i].getInPrice();
 income += pets[i].getOutPrice();
 }
 }
 myProfit = income - cost;
 System.out.println("成本:" + cost + "\n" + "总收入:" + income + "\n" + "利润:" + myProfit);
 if(myProfit > 0) {
  System.out.println("恭喜,您的店处于盈利状态!");
 }
 else {
 System.out.println("很遗憾,您的店处于亏损状况!");
 }
 System.out.println("=======================================");
 System.out.println("date:  " + date);
 }
 
 public int getOutNum() {
 return outNum;
 }
 
 public int getInNum() {
 return inNum;
 }
 
 public int getNum() {
 return num;
 }  
}

Main类

import java.util.Scanner;
public class Main {
 public static void main(String[] args) {
 Scanner input = new Scanner(System.in);
 PetsStore store = new PetsStore(100);
 
 System.out.print("请为您的宠物商店取个名字:");
 store.setName(input.nextLine());
 System.out.println("您好!" + store.getName() + "的店长,欢迎使用宠物商店管理系统!");
 
 String choice = "1";
 
 while(choice.equals("0") == false) {
 System.out.println("==========宠物商店管理系统==========");
 System.out.println("1.查看库存\n" + "2.添加宠物\n" + "3.出售宠物\n" + "4.查看盈利\n" + "5.销售记录\n" + "0.退出程序");
 System.out.println("===================================");
 System.out.print("请输入你的选择:");
 choice = input.next();
 
 switch(choice) {
  case "1":
  store.print();
  System.out.println("请问您还需要什么服务?");
  break;
  
  case "2":
  String choice1 = "1";
  do {
   store.add();
   System.out.println("是否继续添加?\n" + "1.是    2.否");
   choice1 = input.next();
  } while(choice1.equals("1"));
  System.out.println("请问您还需要什么服务?");
  break;
  
  case "3":
  String choice2 = "1";
  do {
   store.sell();
   System.out.println("是否继续出售?\n" + "1.是    2.否");
   choice2 = input.next();
  } while(choice2.equals("1"));  
  System.out.println("请问您还需要什么服务?");
  break;
  
  case "4":
  store.profitNote();
  System.out.println("请问您还需要什么服务?");
  break;
  
  case "5":
  store.note();
  System.out.println("请问您还需要什么服务?");
  break;
  
  case "0":
  System.out.println("谢谢您的使用,欢迎下次再来!\n" + "**********按任意键结束程序**********");
  break;
  
  default:
  System.out.println("错误输入, 请重新输入!");
  break;
 }
 
 }
 }
 
}

没用很复杂的容器类,只适合萌新看的,大佬勿喷,完成作业还是不错的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 关于LinkedList集合对元素进行增查删操作

    关于LinkedList集合对元素进行增查删操作

    LinkedList集合内部包含有两个Node类型的first和last属性维护一个双向循环链表,在链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来,需要的朋友可以参考下
    2023-04-04
  • SpringBoot Java后端实现okhttp3超时设置的方法实例

    SpringBoot Java后端实现okhttp3超时设置的方法实例

    Okhttp的使用没有httpClient广泛,网上关于Okhttp设置代理的方法很少,下面这篇文章主要给大家介绍了关于SpringBoot Java后端实现okhttp3超时设置的相关资料,需要的朋友可以参考下
    2021-10-10
  • 关于Springboot日期时间格式化处理方式总结

    关于Springboot日期时间格式化处理方式总结

    这篇文章主要介绍了关于Springboot日期时间格式化处理方式总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • DecimalFormat数字格式化 0和# 的区别及说明

    DecimalFormat数字格式化 0和# 的区别及说明

    这篇文章主要介绍了DecimalFormat数字格式化 0和# 的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • SpringCloud maven-assembly-plugin 多级目录打包的实现

    SpringCloud maven-assembly-plugin 多级目录打包的实现

    本文主要介绍了SpringCloud maven-assembly-plugin 多级目录打包的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Springboot的yml配置文件用法

    Springboot的yml配置文件用法

    这篇文章主要介绍了Springboot的yml配置文件用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java 直接调用python脚本,并传递参数代码实例

    java 直接调用python脚本,并传递参数代码实例

    这篇文章主要介绍了java调用python脚本传递参数的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Java中switch判断语句典型使用实例

    Java中switch判断语句典型使用实例

    这篇文章主要介绍了Java中switch判断语句典型使用实例,本文直接给出代码实例,在忘记switch语法时特别有用,复制修改即可使用,需要的朋友可以参考下
    2015-06-06
  • 使用spring动态获取接口的不同实现类

    使用spring动态获取接口的不同实现类

    这篇文章主要介绍了使用spring动态获取接口的不同实现类,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • JavaWeb登陆功能实现代码

    JavaWeb登陆功能实现代码

    这篇文章主要为大家详细介绍了JavaWeb登陆功能实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10

最新评论