一、实验目的
- 掌握面向对象程序设计的基本概念,包括类与对象的关系。
- 理解功能驱动的设计方法,能够根据需求设计类和系统架构。
- 掌握类的详细设计与实现方法,包括类的属性、方法和构造函数的定义。
- 学会通过问题分解描述与类的初步设计,逐步实现复杂系统。
- 综合运用面向对象的知识,实现一个医院患者管理系统。
二、实验学时
2学时
三、实验类型
验证性
四、实验需求
1、硬件
每人配备计算机1台,建议优先使用个人计算机开展实验。
2、软件
Windows 10/11操作系统
IntelliJ IDEA 版本号:2024.03
安装IntelliJ IDEA,以及Java运行所需要的相关基础环境。
3、网络
本地主机能够访问互联网和实验中心网络。
4、工具
无。
五、实验任务
5.1 类的初步设计:设计一个 Patient
类,包含患者的基本信息。
5.2 类的详细设计与实现:为 Patient
类添加方法和构造函数。
5.3 功能驱动的类设计:设计一个 Doctor
类,包含医生的基本信息和诊疗方法。
5.4 类的交互:实现 Patient
类和 Doctor
类的交互,模拟诊疗过程。
5.5综合任务:设计一个 Hospital
类,管理患者和医生,并实现简单的挂号功能。
六、实验内容及步骤
6.1、任务 1:类的初步设计
步骤:
- 设计一个
Patient
类,包含患者的姓名、年龄、性别和症状属性。
示例代码:
// Patient.java
public class Patient {
// 属性
private String name;
private int age;
private String gender;
private String symptom;
// 构造函数
public Patient(String name, int age, String gender, String symptom) {
this.name = name;
this.age = age;
this.gender = gender;
this.symptom = symptom;
}
// Getter 方法
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getGender() {
return gender;
}
public String getSymptom() {
return symptom;
}
// 打印患者信息
public void printInfo() {
System.out.println("患者姓名: " + name);
System.out.println("患者年龄: " + age);
System.out.println("患者性别: " + gender);
System.out.println("患者症状: " + symptom);
}
}
6.2、任务 2:类的详细设计与实现
步骤:
- 为
Patient
类添加方法,如更新症状、打印详细信息等。
示例代码:
// 在 Patient 类中添加以下方法
public void updateSymptom(String newSymptom) {
this.symptom = newSymptom;
System.out.println("更新后的症状: " + newSymptom);
}
// 测试类
public class PatientTest {
public static void main(String[] args) {
Patient patient = new Patient("张三", 35, "男", "发热");
patient.printInfo();
patient.updateSymptom("咳嗽");
}
}
6.3、任务 3:功能驱动的类设计
步骤:
- 设计一个
Doctor
类,包含医生的姓名、科室和诊疗方法。
示例代码:
// Doctor.java
public class Doctor {
// 属性
private String name;
private String department;
// 构造函数
public Doctor(String name, String department) {
this.name = name;
this.department = department;
}
// 诊疗方法
public void diagnose(Patient patient) {
System.out.println("医生 " + name + " 正在为患者 " + patient.getName() + " 进行诊疗。");
System.out.println("患者症状: " + patient.getSymptom());
System.out.println("建议前往 " + department + " 进一步检查。");
}
// 打印医生信息
public void printInfo() {
System.out.println("医生姓名: " + name);
System.out.println("所属科室: " + department);
}
}
6.4、任务 4:类的交互
步骤:
- 实现
Patient
类和Doctor
类的交互,模拟诊疗过程。
示例代码:
public class HospitalSimulation {
public static void main(String[] args) {
// 创建患者和医生对象
Patient patient = new Patient("李四", 28, "女", "头痛");
Doctor doctor = new Doctor("王医生", "神经科");
// 打印信息
patient.printInfo();
doctor.printInfo();
// 诊疗过程
doctor.diagnose(patient);
}
}
6.5、任务 5:综合任务 - 医院管理系统
步骤:
- 设计一个
Hospital
类,管理患者和医生。 - 实现患者挂号功能,将患者分配给医生。
示例代码:
import java.util.ArrayList;
import java.util.List;
// Hospital.java
public class Hospital {
// 属性
private List<Patient> patients;
private List<Doctor> doctors;
// 构造函数
public Hospital() {
patients = new ArrayList<>();
doctors = new ArrayList<>();
}
// 添加患者
public void addPatient(Patient patient) {
patients.add(patient);
System.out.println("患者 " + patient.getName() + " 已挂号。");
}
// 添加医生
public void addDoctor(Doctor doctor) {
doctors.add(doctor);
System.out.println("医生 " + doctor.getName() + " 已加入医院。");
}
// 分配医生给患者
public void assignDoctor(Patient patient, Doctor doctor) {
System.out.println("患者 " + patient.getName() + " 被分配给医生 " + doctor.getName() + "。");
doctor.diagnose(patient);
}
// 测试类
public static void main(String[] args) {
// 创建医院对象
Hospital hospital = new Hospital();
// 添加患者和医生
Patient patient1 = new Patient("王五", 40, "男", "发热");
Patient patient2 = new Patient("赵六", 25, "女", "咳嗽");
Doctor doctor1 = new Doctor("张医生", "发热门诊");
Doctor doctor2 = new Doctor("李医生", "呼吸科");
hospital.addPatient(patient1);
hospital.addPatient(patient2);
hospital.addDoctor(doctor1);
hospital.addDoctor(doctor2);
// 分配医生
hospital.assignDoctor(patient1, doctor1);
hospital.assignDoctor(patient2, doctor2);
}
}
关于测试
- 编写测试用例,对系统的关键功能进行测试。
- 调试代码,修复可能存在的BUG。
七、实验考核
本实验考核采用【实验随堂查】方式开展。
每个实验完成后,在实验课上通过现场演示的方式向实验指导教师进行汇报,并完成现场问答交流。
每个实验考核满分100分,其中实验成果汇报60分,现场提问交流40分。
实验考核流程:
(1)学生演示汇报实验内容的完成情况,实验指导老师现场打分。
(2)指导老师结合实验内容进行提问,每位学生提问2-3个问题,根据回答的情况现场打分。
(3)实验考核结束后,进行公布成绩。