医院管理系统C++实现——控制台输入输出

代码声明:

题目来源于学生题目求助,个人原创,禁止搬运,仅供参考,欢迎各位前来批评指正~共同学习,共同进步

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

// 医生类
class Doctor {
private:
    std::string name;
    std::string gender;
    std::string department;

public:
    // 构造函数初始化医生信息
    Doctor(const std::string& name, const std::string& gender, const std::string& department)
        : name(name), gender(gender), department(department) {}

    // 获取医生信息的函数
    const std::string& getName() const {
        return name;
    }

    const std::string& getGender() const {
        return gender;
    }

    const std::string& getDepartment() const {
        return department;
    }

    // 更新医生信息的函数
    void updateInfo(const std::string& newName, const std::string& newGender, const std::string& newDepartment) {
        name = newName;
        gender = newGender;
        department = newDepartment;
    }

    // 如果需要,可以添加更多用于信息操作的函数
};

// 病患类
class Patient {
private:
    std::string name;
    std::string gender;
    std::string symptoms;
    std::string appointmentTime;

public:
    // 构造函数初始化病患信息
    Patient(const std::string& name, const std::string& gender, const std::string& symptoms,
            const std::string& appointmentTime)
        : name(name), gender(gender), symptoms(symptoms), appointmentTime(appointmentTime) {}

    // 获取病患信息的函数
    const std::string& getName() const {
        return name;
    }

    const std::string& getGender() const {
        return gender;
    }

    const std::string& getSymptoms() const {
        return symptoms;
    }

    const std::string& getAppointmentTime() const {
        return appointmentTime;
    }

    // 更新病患信息的函数
    void updateInfo(const std::string& newName, const std::string& newGender, const std::string& newSymptoms,
                    const std::string& newAppointmentTime) {
        name = newName;
        gender = newGender;
        symptoms = newSymptoms;
        appointmentTime = newAppointmentTime;
    }

    // 如果需要,可以添加更多用于信息操作的函数
};

// 医生管理类
class DoctorManagement {
private:
    std::vector<Doctor> doctors;

public:
    // 添加新医生的函数
    void addDoctor(const std::string& name, const std::string& gender, const std::string& department) {
        doctors.emplace_back(name, gender, department);
    }

    // 显示医生列表的函数
    void displayDoctors() const {
        std::cout << "医生列表:\n";
        for (const auto& doctor : doctors) {
            std::cout << "姓名: " << doctor.getName() << ", 性别: " << doctor.getGender()
                      << ", 科室: " << doctor.getDepartment() << "\n";
        }
    }

    // 更新医生信息的函数
    void updateDoctorInfo(const std::string& doctorName, const std::string& newDoctorName,
                          const std::string& newGender, const std::string& newDepartment) {
        auto it = std::find_if(doctors.begin(), doctors.end(),
                               [&doctorName](const Doctor& d) { return d.getName() == doctorName; });

        if (it != doctors.end()) {
            it->updateInfo(newDoctorName, newGender, newDepartment);
            std::cout << "医生信息修改成功。\n";
        } else {
            std::cout << "找不到该医生。\n";
        }
    }

    // 删除医生的函数
    void deleteDoctor(const std::string& doctorName) {
        auto it = std::find_if(doctors.begin(), doctors.end(),
                               [&doctorName](const Doctor& d) { return d.getName() == doctorName; });

        if (it != doctors.end()) {
            doctors.erase(it);
            std::cout << "医生信息删除成功。\n";
        } else {
            std::cout << "找不到该医生。\n";
        }
    }
};

// 病患管理类
class PatientManagement {
private:
    std::vector<Patient> patients;

public:
    // 添加新病患的函数
    void addPatient(const std::string& name, const std::string& gender, const std::string& symptoms,
                    const std::string& appointmentTime) {
        patients.emplace_back(name, gender, symptoms, appointmentTime);
    }

    // 显示病患列表的函数
    void displayPatients() const {
        std::cout << "病患列表:\n";
        for (const auto& patient : patients) {
            std::cout << "姓名: " << patient.getName() << ", 性别: " << patient.getGender()
                      << ", 病症: " << patient.getSymptoms() << ", 就诊时间: " << patient.getAppointmentTime() << "\n";
        }
    }

    // 更新病患信息的函数
    void updatePatientInfo(const std::string& patientName, const std::string& newPatientName,
                           const std::string& newGender, const std::string& newSymptoms,
                           const std::string& newAppointmentTime) {
        auto it = std::find_if(patients.begin(), patients.end(),
                               [&patientName](const Patient& p) { return p.getName() == patientName; });

        if (it != patients.end()) {
            it->updateInfo(newPatientName, newGender, newSymptoms, newAppointmentTime);
            std::cout << "病患信息修改成功。\n";
        } else {
            std::cout << "找不到该病患。\n";
        }
    }

    // 删除病患的函数
    void deletePatient(const std::string& patientName) {
        auto it = std::find_if(patients.begin(), patients.end(),
                               [&patientName](const Patient& p) { return p.getName() == patientName; });

        if (it != patients.end()) {
            patients.erase(it);
            std::cout << "病患信息删除成功。\n";
        } else {
            std::cout << "找不到该病患。\n";
        }
    }
};

// 诊所系统类
class ClinicSystem {
private:
    DoctorManagement doctorManagement;
    PatientManagement patientManagement;
    bool loggedIn;

public:
    // 构造函数,初始化登录状态为未登录
    ClinicSystem() : loggedIn(false) {}

    // 登录函数
    bool login() {
        std::string username, password;
        std::cout << "请输入用户名: ";
        std::cin >> username;
        std::cout << "请输入密码: ";
        std::cin >> password;

        // 这里用于验证逻辑
        loggedIn = (username == "admin" && password == "123456");
        return loggedIn;
    }

    // 显示主菜单的函数
    void displayMenu() const {
        std::cout << "\n1. 医生管理\n"
                  << "2. 病患管理\n"
                  << "0. 退出\n";
    }

    // 启动系统的函数
    void start() {
        if (!login()) {
            std::cout << "登录失败,程序退出。\n";
            return;
        }

        int choice;
        do {
            displayMenu();
            std::cout << "请输入您的选择: ";
            std::cin >> choice;

            switch (choice) {
                case 1:
                    doctorManagementMenu();
                    break;
                case 2:
                    patientManagementMenu();
                    break;
                case 0:
                    std::cout << "退出程序。\n";
                    break;
                default:
                    std::cout << "无效选择,请重试。\n";
            }

        } while (choice != 0);
    }

    // 医生管理子菜单的函数
    void doctorManagementMenu() {
        int choice;
        do {
            std::cout << "\n1. 添加医生\n"
                      << "2. 显示医生列表\n"
                      << "3. 修改医生信息\n"
                      << "4. 删除医生信息\n"
                      << "0. 返回上级菜单\n";
            std::cout << "请输入您的选择: ";
            std::cin >> choice;

            switch (choice) {
                case 1: {
                    std::string doctorName, doctorGender, doctorDepartment;
                    std::cout << "请输入医生姓名: ";
                    std::cin >> doctorName;
                    std::cout << "请输入医生性别: ";
                    std::cin >> doctorGender;
                    std::cout << "请输入医生所属科室: ";
                    std::cin >> doctorDepartment;
                    doctorManagement.addDoctor(doctorName, doctorGender, doctorDepartment);
                    std::cout << "医生添加成功。\n";
                    break;
                }


                case 2:
                    doctorManagement.displayDoctors();
                    break;


                case 3: {
                    std::string doctorName, newDoctorName, newDoctorGender, newDoctorDepartment;
                    std::cout << "请输入要修改的医生姓名: ";
                    std::cin >> doctorName;
                    std::cout << "请输入新的医生姓名: ";
                    std::cin >> newDoctorName;
                    std::cout << "请输入新的医生性别: ";
                    std::cin >> newDoctorGender;
                    std::cout << "请输入新的医生所属科室: ";
                    std::cin >> newDoctorDepartment;
                    doctorManagement.updateDoctorInfo(doctorName, newDoctorName, newDoctorGender, newDoctorDepartment);
                    break;
                }


                case 4: {
                    std::string doctorName;
                    std::cout << "请输入要删除的医生姓名: ";
                    std::cin >> doctorName;
                    doctorManagement.deleteDoctor(doctorName);
                    break;
                }


                case 0:
                    std::cout << "返回上级菜单。\n";
                    break;
                default:
                    std::cout << "无效选择,请重试。\n";
            }

        } while (choice != 0);
    }

    // 病患管理子菜单的函数
    void patientManagementMenu() {
        int choice;
        do {
            std::cout << "\n1. 添加病患\n"
                      << "2. 显示病患列表\n"
                      << "3. 修改病患信息\n"
                      << "4. 删除病患信息\n"
                      << "0. 返回上级菜单\n";
            std::cout << "请输入您的选择: ";
            std::cin >> choice;

            switch (choice) {
                case 1: {
                    std::string patientName, patientGender, patientSymptoms, patientAppointmentTime;
                    std::cout << "请输入病患姓名: ";
                    std::cin >> patientName;
                    std::cout << "请输入病患性别: ";
                    std::cin >> patientGender;
                    std::cout << "请输入病症: ";
                    std::cin >> patientSymptoms;
                    std::cout << "请输入就诊时间: ";
                    std::cin >> patientAppointmentTime;
                    patientManagement.addPatient(patientName, patientGender, patientSymptoms, patientAppointmentTime);
                    std::cout << "病患添加成功。\n";
                    break;
                }


                case 2:
                    patientManagement.displayPatients();
                    break;


                case 3: {
                    std::string patientName, newPatientName, newPatientGender, newPatientSymptoms, newPatientAppointmentTime;
                    std::cout << "请输入要修改的病患姓名: ";
                    std::cin >> patientName;
                    std::cout << "请输入新的病患姓名: ";
                    std::cin >> newPatientName;
                    std::cout << "请输入新的病患性别: ";
                    std::cin >> newPatientGender;
                    std::cout << "请输入新的病症: ";
                    std::cin >> newPatientSymptoms;
                    std::cout << "请输入新的就诊时间: ";
                    std::cin >> newPatientAppointmentTime;
                    patientManagement.updatePatientInfo(patientName, newPatientName, newPatientGender,
                                                         newPatientSymptoms, newPatientAppointmentTime);
                    break;
                }


                case 4: {
                    std::string patientName;
                    std::cout << "请输入要删除的病患姓名: ";
                    std::cin >> patientName;
                    patientManagement.deletePatient(patientName);
                    break;
                }

###(这里王一的患者信息改成了赵二,所以找不到王一这个患者)


                case 0:
                    std::cout << "返回上级菜单。\n";
                    break;
                default:
                    std::cout << "无效选择,请重试。\n";
            }

        } while (choice != 0);
    }
};

// 主函数
int main() {
    // 创建诊所系统对象并启动
    ClinicSystem clinicSystem;
    clinicSystem.start();

    return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值