Java實(shí)現(xiàn)寵物商店管理系統(tǒng)
本文實(shí)例為大家分享了Java實(shí)現(xiàn)寵物商店管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
一、實(shí)驗(yàn)?zāi)康?/strong>
1.掌握java類的繼承、多態(tài)等的基本概念;
2.掌握簡(jiǎn)單的信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。
二、實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)建議在安裝了以下軟件的計(jì)算機(jī)上完成:
1. Windows xp/win7/win8/win10操作系統(tǒng)
2. JDK 1.6以上版本
3. Eclipse或NetBeans IDE或EditPlus或其它開發(fā)工具
三、實(shí)驗(yàn)內(nèi)容與要求
(一) 問題描述
要求采用java面向?qū)ο蟮幕局R(shí),實(shí)現(xiàn)寵物商店管理系統(tǒng)。
(二) 實(shí)驗(yàn)要求
1、寵物商店有狗和貓兩種動(dòng)物,請(qǐng)為這兩種動(dòng)物創(chuàng)建各自的類,而且它們都繼承寵物類,為這些類定義基本的屬性和方法;
2、為寵物商店也創(chuàng)建一個(gè)類,該類有基本屬性,比如商店名稱等,還有寵物籠子的屬性,此外,還具備一些方法,比如:買進(jìn)寵物、銷售寵物、清點(diǎn)寵物庫(kù)存、銷售統(tǒng)計(jì)和盈利情況等;
3、實(shí)現(xiàn)買進(jìn)寵物的方法,輸入狗或貓的基本屬性和進(jìn)貨價(jià)格,并把該買進(jìn)的寵物放進(jìn)寵物籠子;
4、實(shí)現(xiàn)銷售寵物的方法,輸入狗或貓的基本屬性和銷售價(jià)格,并把寵物從寵物籠子取出;
5、實(shí)現(xiàn)清點(diǎn)寵物庫(kù)存方法,列出所有庫(kù)存的寵物清單;
6、實(shí)現(xiàn)銷售和盈利統(tǒng)計(jì),查詢所有已銷售的寵物清單,包括進(jìn)貨價(jià)格和銷售價(jià)格,還有總利潤(rùn);
四、實(shí)現(xiàn)提示
1. 寵物籠子采用數(shù)組實(shí)現(xiàn),數(shù)組的數(shù)據(jù)類型為寵物類;
2. 銷售清單也采用數(shù)組實(shí)現(xiàn)。
五、代碼
Pet類
public class Pets {
private String color; //顏色
private int age; //年齡
private String sex; //性別
private String kind;
private double inPrice; //進(jìn)貨價(jià)格
private double outPrice; //銷售價(jià)格
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; // 狗的當(dāng)前長(zhǎng)度
private int catFoot = 0; //貓的當(dāng)前長(zhǎng)度
private int petFoot = 0;
private int num = 0; //庫(kù)存數(shù)量
private int inNum = 0; //進(jìn)貨數(shù)量
private int outNum = 0; //銷售數(shù)量
public PetsStore(int len) {
if (len > 0) {
this.cats = new Cat[len]; // 開辟數(shù)組大小
this.dogs = new Dog[len];
this.pets = new Pets[len];
} else {
this.dogs = new Dog[1]; // 至少開辟一個(gè)空間
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() { // 添加的是一個(gè)寵物
System.out.println("您添加的是狗還是貓?\n" + "1.狗 2.貓");
String choice = input.next();
if(choice.equals("1")) {
Dog dog = new Dog();
System.out.println("請(qǐng)輸入您要添加的寵物的信息");
System.out.print("顏色:");
dog.setColor(input.next());
System.out.print("年齡:");
dog.setAge(input.nextInt());
System.out.print("性別:");
dog.setSex(input.next());
System.out.print("進(jìn)貨價(jià)格:");
dog.setInPrice(input.nextDouble());
System.out.print("出售價(jià)格:");
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("請(qǐng)輸入您要添加的寵物的信息");
System.out.print("顏色:");
cat.setColor(input.next());
System.out.print("年齡:");
cat.setAge(input.nextInt());
System.out.print("性別:");
cat.setSex(input.next());
System.out.print("進(jìn)貨價(jià)格:");
cat.setInPrice(input.nextDouble());
System.out.print("出售價(jià)格:");
cat.setOutPrice(input.nextDouble());
cats[catFoot] = cat;
catFoot++;
System.out.println("添加成功!");
inNum++;
num++;
}
else {
System.out.println("添加失??!");
}
}
else {
System.out.println("沒有這個(gè)選項(xiàng),請(qǐng)重新輸入!");
}
}
public void print() {
Date date = new Date();
System.out.println("===============寵物商店庫(kù)存清單===============");
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("庫(kù)存為零,請(qǐng)及時(shí)購(gòu)進(jìn)寵物!\n");
}
else {
System.out.println("您要出售的是貓還是狗?\n" + "1.貓 2.狗");
String choice = input.next();
if(choice.equals("1")) {
System.out.println("請(qǐng)輸入您要出售的貓的特征");
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("查無此貓!請(qǐng)核對(duì)后重新輸入 \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會(huì)報(bào)數(shù)組越界的錯(cuò)誤
outNum++;
num--;
}
}
else if(choice.equals("2")) {
System.out.println("請(qǐng)輸入您要出售的狗的特征");
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("查無此狗!請(qǐng)核對(duì)后重新輸入 ");
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會(huì)報(bào)數(shù)組越界的錯(cuò)誤
outNum++;
num--;
}
}
else {
System.out.println("沒有這個(gè)選項(xiàng),請(qǐng)重新輸入!");
}
}
}
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" + "利潤(rùn):" + myProfit);
if(myProfit > 0) {
System.out.println("恭喜,您的店處于盈利狀態(tài)!");
}
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("請(qǐng)為您的寵物商店取個(gè)名字:");
store.setName(input.nextLine());
System.out.println("您好!" + store.getName() + "的店長(zhǎng),歡迎使用寵物商店管理系統(tǒng)!");
String choice = "1";
while(choice.equals("0") == false) {
System.out.println("==========寵物商店管理系統(tǒng)==========");
System.out.println("1.查看庫(kù)存\n" + "2.添加寵物\n" + "3.出售寵物\n" + "4.查看盈利\n" + "5.銷售記錄\n" + "0.退出程序");
System.out.println("===================================");
System.out.print("請(qǐng)輸入你的選擇:");
choice = input.next();
switch(choice) {
case "1":
store.print();
System.out.println("請(qǐng)問您還需要什么服務(wù)?");
break;
case "2":
String choice1 = "1";
do {
store.add();
System.out.println("是否繼續(xù)添加?\n" + "1.是 2.否");
choice1 = input.next();
} while(choice1.equals("1"));
System.out.println("請(qǐng)問您還需要什么服務(wù)?");
break;
case "3":
String choice2 = "1";
do {
store.sell();
System.out.println("是否繼續(xù)出售?\n" + "1.是 2.否");
choice2 = input.next();
} while(choice2.equals("1"));
System.out.println("請(qǐng)問您還需要什么服務(wù)?");
break;
case "4":
store.profitNote();
System.out.println("請(qǐng)問您還需要什么服務(wù)?");
break;
case "5":
store.note();
System.out.println("請(qǐng)問您還需要什么服務(wù)?");
break;
case "0":
System.out.println("謝謝您的使用,歡迎下次再來!\n" + "**********按任意鍵結(jié)束程序**********");
break;
default:
System.out.println("錯(cuò)誤輸入, 請(qǐng)重新輸入!");
break;
}
}
}
}
沒用很復(fù)雜的容器類,只適合萌新看的,大佬勿噴,完成作業(yè)還是不錯(cuò)的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java Class 解析器實(shí)現(xiàn)方法示例
這篇文章主要通過對(duì)class文件的分析,介紹了Java Class 解析器實(shí)現(xiàn)方法示例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-09-09
可觀測(cè)性-Metrics-數(shù)據(jù)庫(kù)連接池HikariCP監(jiān)控教程
這篇文章主要介紹了可觀測(cè)性-Metrics-數(shù)據(jù)庫(kù)連接池HikariCP監(jiān)控教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
Mybatis-Plus使用saveOrUpdate及問題解決方法
本文主要介紹了Mybatis-Plus使用saveOrUpdate及問題解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Java線程中的用戶態(tài)和內(nèi)核態(tài)解讀
這篇文章主要介紹了Java線程中的用戶態(tài)和內(nèi)核態(tài)解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
jpa使用manyToOne(opntional=true)踩過的坑及解決
這篇文章主要介紹了jpa使用manyToOne(opntional=true)踩過的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
mybatis?log4j2打印sql+日志實(shí)例代碼
在學(xué)習(xí)mybatis的時(shí)候,如果用log4j2來協(xié)助查看調(diào)試信息,則會(huì)大大提高學(xué)習(xí)的效率,加快debug速度,下面這篇文章主要給大家介紹了關(guān)于mybatis?log4j2打印sql+日志的相關(guān)資料,需要的朋友可以參考下2022-08-08

