智能医学工程-计算机程序设计-2025版-实验05:类与对象

5 阅读4分钟

一、实验目的

  1. 掌握面向对象程序设计的基本概念,包括类与对象的关系。
  2. 理解功能驱动的设计方法,能够根据需求设计类和系统架构。
  3. 掌握类的详细设计与实现方法,包括类的属性、方法和构造函数的定义。
  4. 学会通过问题分解描述与类的初步设计,逐步实现复杂系统。
  5. 综合运用面向对象的知识,实现一个医院患者管理系统。

二、实验学时

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:类的初步设计

步骤:

  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:类的详细设计与实现

步骤:

  1. 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:功能驱动的类设计

步骤:

  1. 设计一个 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:类的交互

步骤:

  1. 实现 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:综合任务 - 医院管理系统

步骤:

  1. 设计一个 Hospital 类,管理患者和医生。
  2. 实现患者挂号功能,将患者分配给医生。

示例代码:

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);
    }
}

关于测试

  1. 编写测试用例,对系统的关键功能进行测试。
  2. 调试代码,修复可能存在的BUG。

七、实验考核

本实验考核采用【实验随堂查】方式开展。

每个实验完成后,在实验课上通过现场演示的方式向实验指导教师进行汇报,并完成现场问答交流。

每个实验考核满分100分,其中实验成果汇报60分,现场提问交流40分。

实验考核流程:

(1)学生演示汇报实验内容的完成情况,实验指导老师现场打分。

(2)指导老师结合实验内容进行提问,每位学生提问2-3个问题,根据回答的情况现场打分。

(3)实验考核结束后,进行公布成绩。