使用集合来存储和管理对象,编写一个Java程序,根据以下要求存储和管理在宠物诊所
注册的一组宠物的数据:
1.该应用程序必须能够处理来自至少两种类型的宠物的数据,如猫和狗。
2.对于每只宠物,它们的名字、年龄、颜色、体重和品种 应该被记录。
提示:考虑创建一个类型为Pet的数组,其中Pet是您创建的一个基类,其中包含名称、年龄
、颜色和权重作为实例变量。每个子类代表每种类型的宠物都有一个额外的实例变量品种,
可以存储特定的宠物品种。例如,它可以是波斯猫,虎斑猫...西班牙猎犬,小猎
犬等等。您需要检查每个变量是否已以您指定的任何格式正确输入。您还需要通知用
户,如果给定宠物的任何数据字段保留为空,该宠物的完整详细信息将不会保存在当前会话
之外。
3.该程序应该包含一个叫做“speak”的方法,它返回一个典型的动物噪声,加上对动物的描述,如:
“喵喵!我是Pixel,一个4岁的虎斑猫
汪汪我是Jack,一只9岁的小猎犬。”
4.该计划需要允许将宠物添加到诊所或从诊所中删除。在创建宠物细节后,不要求有任何设施来
修改宠物细节。
提示:从数组中删除数据可能会在数组中留下一个空白,所以在添加另一只宠物时,计算另
一个宠物总数并搜索下一个免费的数组单元格。
5.必须有可能进行报告。e.打印到屏幕上)在诊所上。该报告应标明可以硬编码的诊所名称、登
记的每种宠物的总数以及这些宠物的主要颜色。
6.该程序应该允许用户查看目前在诊所注册的所有宠物。
7.在一个会议结束时,当项目被终止时,诊所的详细信息以及每个注册宠物的细节应该被写入磁
盘。这些细节应该记录在两个标准文本文件中:一个包含诊所详细信息(称为“诊所细节”。
另一个保存着所有的宠物记录,被称为“宠物细节”。txt" .
提示:不要将空白记录保存到磁盘,在将其内容写入磁盘之前,请检查每个数组单元格中是
否有一个有效的“宠物”对象。如果宠物的详细信息中的任何字段被留空(字符串长度为零
),那么该学生是无效的,他们的详细信息不应该被写入磁盘。
8.当程序启动时,它应该从这些标准文本文件中读取,以便将以前存储的任何数据重新填充应用
程序作为起点。
提示:每个记录都需要创建一个Pet类的新实例,并将其链接到数组中的下一个可用的空闲单
元格。
9.程序用户还必须能够根据名字或颜色搜索宠物,从而显示该宠物的细节,并调用该宠物的语音
()方法。
10.该程序必须只使用一个控制台接口。
您必须开发一组测试用例和至少一个单元测试,并记录将这些测试应用于软件的结果。
其他分配要求:
1.采用面向对象的原则应该在您实现上述需求时很明显,包括使用继承和多态性。
2.一种结构化的测试方法应通过提交一个测试计划来证明,其中包括至少一个符合上述要求的单
元测试和结果。
运行结果(所有功能均已实现,此处仅展示功能3):
部分代码如下:
PetClinicManagement.java
import java.util.List;
import java.util.Scanner;
// Main class for managing a pet clinic
public class PetClinicManagement {
public static void main(String[] args) throws InterruptedException {
Scanner scanner = new Scanner(System.in);
PetClinic petClinic = new PetClinic("Great Pet Clinic"); // Create a new pet clinic instance
petClinic.loadFromFiles(); // Load pet data from files
boolean exit = false;
while (!exit) { // Main menu loop
System.out.println("\n----- Pet Clinic Management -----");
System.out.println("\n------- 1. Add a pet-------------");
System.out.println("\n--------2. Remove a pet----------");
System.out.println("\n--------3. View clinic details---");
System.out.println("\n--------4. View all pets---------");
System.out.println("\n--------5. Search pet by name----");
System.out.println("\n--------6. Search pet by color---");
System.out.println("\n--------7. Save to files and exit");
System.out.print("\n-Please enter your choice (1-7): ");
int choice = scanner.nextInt();
scanner.nextLine(); // Consume the newline character
switch (choice) {
case 1: // Add a pet
System.out.print("Enter pet type (Cat/Dog/Bird): ");
String petType = scanner.nextLine();
System.out.print("Enter pet name: ");
String name = scanner.nextLine();
System.out.print("Enter pet age: ");
while (!scanner.hasNextInt()) { // Validate age input
System.out.println("Error: Please enter a valid age as a number");
System.out.print("Enter pet age: ");
scanner.next(); // Consume invalid input
}
int age = scanner.nextInt();
scanner.nextLine(); // Consume the newline c