设计并实现一个宠物医院管理系统,该系统旨在帮助宠物医院高效管理各类业务,涵盖宠物信息管理、医疗服务管理、药品管理以及客户服务等多个方面。宠物医院接收不同种类的宠物,为它们提供全面的医疗保健服务,包括疾病诊断、治疗、疫苗接种等。同时,医院需要管理库存药品,记录客户信息和服务历史,以提供优质的客户体验。
提供一个测试类,用于全面验证上述系统功能的正确性和稳定性。测试类应包含以下测试用例:
通过以上测试用例的执行,全面检验宠物医院管理系统的各项功能,确保系统在实际应用中的可靠性和稳定性。
public abstract class Pet {
private String name;
private int age;
private String gender;
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) {
this.gender = gender;
}
public abstract String getInfo();
public abstract void performAction();
}
public class Cat extends Pet{
private String breed;
private double weight;
private String color;
public Cat(String name, int age, String gender, String breed, double weight, String color) {
super(name, age, gender);
this.breed = breed;
this.weight = weight;
this.color = color;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
if (weight > 0) {
this.weight = weight;
}
}
public void meow() {
System.out.println(getName() + " 喵喵叫");
}
public void play() {
System.out.println(getName() + " 在玩耍");
}
@Override
public String getInfo() {
return "猫名: " + getName() + ", 年龄: " + getAge() + " 岁, 品种: " + breed + ", 性别: " + getGender() + ", 体重: " + weight + " 千克, 毛色: " + color;
}
@Override
public void performAction() {
meow();
}
}
public class Dog extends Pet{
private String breed;
private double weight;
private String size;
public Dog(String name, int age, String gender, String breed, double weight, String size) {
super(name, age, gender);
this.breed = breed;
this.weight = weight;
this.size = size;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
if (weight > 0) {
this.weight = weight;
}
}
public void bark() {
System.out.println(getName() + " 汪汪叫");
}
public void run() {
System.out.println(getName() + " 在奔跑");
}
@Override
public String getInfo() {
return "狗名: " + getName() + ", 年龄: " + getAge() + " 岁, 品种: " + breed + ", 性别: " + getGender() + ", 体重: " + weight + " 千克, 体型: " + size;
}
@Override
public void performAction() {
bark();
}
}
public class Rabbit extends Pet{
private String breed;
private int weight;
private String color;
public Rabbit(String name, int age, String gender, String breed, int weight, String color) {
super(name, age, gender);
this.breed = breed;
this.weight = weight;
this.color = color;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
if (weight > 0) {
this.weight = weight;
}
}
public void jump() {
System.out.println(getName() + " 在跳跃");
}
public void gnaw() {
System.out.println(getName() + " 在啃咬");
}
@Override
public String getInfo() {
return "兔子名: " + getName() + ", 年龄: " + getAge() + " 月, 品种: " + breed + ", 性别: " + getGender() + ", 体重: " + weight + " 克, 毛色: " + color;
}
@Override
public void performAction() {
jump();
}
}
public class PetOwner {
private String name;
private String contact;
public PetOwner(String name, String contact) {
this.name = name;
this.contact = contact;
}
public String getName() {
return name;
}
public String getContact() {
return contact;
}
}
public class PetInfoManagement {
private Pet[] pets = new Pet[10];
private PetOwner[] owners = new PetOwner[10];
private int petCount = 0;
public void addPet(Pet pet, PetOwner owner) {
if (petCount < 10) {
pets[petCount] = pet;
owners[petCount] = owner;
petCount++;
}
}
//查询宠物
public void queryPet(String keyword) {
for (int i = 0; i < petCount; i++) {
Pet pet = pets[i];
PetOwner owner = owners[i];
if (pet.getName().contains(keyword) || pet.getInfo().contains(keyword) || owner.getName().contains(keyword)) {
System.out.println(pet.getInfo() + ", 主人: " + owner.getName() + ", 联系方式: " + owner.getContact());
return;
}
}
System.out.println("未找到该宠物!");
}
//修改宠物信息:旧宠物信息,新宠物信息
public void modifyPet(Pet oldPet, Pet newPet) {
for (int i = 0; i < petCount; i++) {
if (pets[i] == oldPet) {
pets[i] = newPet;
break;
}
}
}
//删除宠物
public void deletePet(Pet pet) {
for (int i = 0; i < petCount; i++) {
if (pets[i] == pet) {
for (int j = i; j < petCount - 1; j++) {
pets[j] = pets[j + 1];
owners[j] = owners[j + 1];
}
petCount--;
break;
}
}
}
}
public class Medicine {
private String name;
private String specification;
private String manufacturer;
private double price;
private String expirationDate;
private int stock;
public Medicine(String name, String specification, String manufacturer, double price, String expirationDate, int stock) {
this.name=name;
this.specification=specification;
this.manufacturer=manufacturer;
this.price=price;
this.expirationDate=expirationDate;
this.stock=stock;
}
public String getName() {
return name;
}
public String getSpecification() {
return specification;
}
public void setSpecification(String specification) {
this.specification=specification;
}
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer=manufacturer;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price=price;
}
public String getExpirationDate() {
return expirationDate;
}
public void setExpirationDate(String expirationDate) {
this.expirationDate=expirationDate;
}
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock=stock;
}
//药品管理系统
static class MedicineManagement {
private Medicine[] medicines=new Medicine[10];
private String[] purchaseRecords=new String[10];
private String[] usageRecords=new String[10];
private int medicineCount=0;
//添加药品
public void addMedicine(Medicine medicine) {
if (medicineCount < 10) {
medicines[medicineCount]=medicine;
medicineCount++;
}
}
//药品库存信息
public void medicineShow(){
for (int i=0; i < medicineCount; i++) {
if (medicines[i] != null){
System.out.println("药品:"+medicines[i].getName()+",规格:"+medicines[i].getSpecification()+",生产厂商:"+medicines[i].getManufacturer()+
",价格:"+medicines[i].getPrice()+",有效期至:"+medicines[i].getExpirationDate()+",库存:"+medicines[i].getStock());
}
}
}
//采购药品库存信息
public void purchaseMedicine(Medicine medicine, int quantity, String supplier, String date) {
for (int i=0; i < medicineCount; i++) {
if (medicines[i] == medicine) {
medicine.setStock(medicine.getStock() + quantity);
purchaseRecords[i]="采购日期: " + date + ", 供应商: " + supplier + ", 药品: " + medicine.getName() + ", 数量: " + quantity;
break;
}
}
}
public void purchaseMedicineShow(){
for (int i=0; i < medicineCount; i++) {
if (purchaseRecords[i] != null){
System.out.println(purchaseRecords[i]);
}
}
}
//使用药品具体信息
public void useMedicine(Medicine medicine, int quantity, String petName, String date) {
for (int i=0; i < medicineCount; i++) {
if (medicines[i] == medicine && medicine.getStock() >= quantity) {
medicine.setStock(medicine.getStock() - quantity);
usageRecords[i]="使用日期: " + date + ", 宠物: " + petName + ", 药品: " + medicine.getName() + ", 数量: " + quantity;
break;
}
}
}
public void useMedicineShow(){
for (int i=0; i < medicineCount; i++) {
if (usageRecords[i] != null){
System.out.println(usageRecords[i]);
}
}
}
}
}
public class MedicalServiceManagement {
private String[] diagnosisInfo = new String[10];
private String[] treatmentPlans = new String[10];
private double[] costs = new double[10];
private boolean[] paymentStatus = new boolean[10];
private int recordCount = 0;
//记录诊断信息
public void recordDiagnosis(String diagnosis) {
if (recordCount < 10) {
diagnosisInfo[recordCount] = diagnosis;
recordCount++;
}
}
//治疗方案制定
public void makeTreatmentPlan(String plan) {
if (recordCount < 10) {
treatmentPlans[recordCount - 1] = plan;
}
}
//费用结算
public void calculateCost(double cost) {
if (recordCount < 10) {
costs[recordCount - 1] = cost;
}
}
//记录费用是否缴纳
public void recordPayment(boolean paid) {
if (recordCount < 10) {
paymentStatus[recordCount - 1] = paid;
}
}
public void show(){
for (int i=0; i < diagnosisInfo.length; i++) {
if (diagnosisInfo[i] != null){
System.out.println("宠物情况:"+diagnosisInfo[i]);
System.out.println("治疗预案:"+treatmentPlans[i]);
System.out.println("费用结算:"+costs[i]);
System.out.println("是否缴纳费用:"+ (paymentStatus[i] ? "已缴纳" : "未缴纳"));
}
}
}
}
public class Test {
public static void main(String[] args) {
// 测试宠物信息管理
System.out.println("=============测试宠物信息管理===========");
PetInfoManagement petInfoManagement = new PetInfoManagement();
//添加主人和猫咪信息
PetOwner owner1 = new PetOwner("张三", "13800138000");
Cat cat = new Cat("布丁", 2, "母", "英国短毛猫", 3.5, "白色");
Dog dog = new Dog("大黄", 3, "母", "中华田园犬", 6, "50");
petInfoManagement.addPet(cat, owner1);
petInfoManagement.addPet(dog, owner1);
//查询宠物信息
System.out.println("+查询宠物信息+");
petInfoManagement.queryPet("布丁");
petInfoManagement.queryPet("大黄");
System.out.println("========================");
//修改猫咪信息
System.out.println("+修改猫咪信息+");
Cat newCat = new Cat("布丁", 3, "母", "英国短毛猫", 4.0, "白色");
petInfoManagement.modifyPet(cat, newCat);
petInfoManagement.queryPet("布丁");
//删除宠物
System.out.println("+删除猫咪信息+");
petInfoManagement.deletePet(newCat);
petInfoManagement.queryPet("布丁");
System.out.println("====================================================================================================");
// 测试医疗服务管理
System.out.println("=============测试医疗服务管理===========");
MedicalServiceManagement medicalServiceManagement = new MedicalServiceManagement();
medicalServiceManagement.recordDiagnosis("感冒,症状:流鼻涕,诊断日期:2025-04-13");
medicalServiceManagement.makeTreatmentPlan("使用感冒药,每天两次,每次一片,治疗时间:一周");
medicalServiceManagement.calculateCost(50.0);
medicalServiceManagement.recordPayment(true);
medicalServiceManagement.show();
System.out.println("========================");
MedicalServiceManagement medicalServiceManagement1 = new MedicalServiceManagement();
medicalServiceManagement1.recordDiagnosis("感冒,症状:流鼻涕,诊断日期:2025-03-13");
medicalServiceManagement1.makeTreatmentPlan("使用感冒药,每天两次,每次一片,治疗时间:一个月");
medicalServiceManagement1.calculateCost(1500.0);
medicalServiceManagement1.recordPayment(false);
medicalServiceManagement1.show();
System.out.println("====================================================================================================");
// 测试药品管理
System.out.println("=============测试药品管理===========");
Medicine.MedicineManagement medicineManagement = new Medicine.MedicineManagement();
Medicine medicine = new Medicine("感冒药", "10片/盒", "徐州药厂", 20.0, "2026-01-01", 10);
Medicine medicine1 = new Medicine("发烧药", "15片/盒", "徐州药厂", 120.0, "2027-01-01", 30);
//添加药品
System.out.println("+添加药品+");
medicineManagement.addMedicine(medicine);
medicineManagement.addMedicine(medicine1);
medicineManagement.medicineShow();
System.out.println("========================");
//购买药品
System.out.println("+购买药品+");
medicineManagement.purchaseMedicine(medicine, 5, "海澜之家", "2025-04-13");
medicineManagement.purchaseMedicineShow();
medicineManagement.medicineShow();
System.out.println("========================");
//使用药品
System.out.println("+使用药品+");
medicineManagement.useMedicine(medicine, 2, "布丁", "2025-04-13");
medicineManagement.useMedicineShow();
medicineManagement.medicineShow();
System.out.println("====================================================================================================");
// 测试多态
Pet[] pets = new Pet[3];
pets[0] = new Cat("咪咪", 1, "公", "暹罗猫", 2.5, "花色");
pets[1] = new Dog("旺财", 3, "公", "金毛寻回犬", 20.0, "大型");
pets[2] = new Rabbit("小白", 6, "母", "垂耳兔", 1500, "白色");
for (Pet pet : pets) {
pet.performAction();
System.out.println(pet.getInfo());
}
}
}
预输出结果: