以下是一个基于C++的简单病人候诊系统实现,它涵盖了您所描述的功能。为了简化代码,我使用了标准模板库(STL)中的队列(queue)来管理患者队列。 ```cpp #include <iostream> #include <queue> #include <string> #include <unordered_map> #include <vector> using namespace std; // 患者结构体 struct Patient { string name; int age; string gender; int registrationNumber; }; // 诊室结构体,包含患者队列 struct Clinic { string name; queue<Patient> patientQueue; int currentNumber = 0; // 当前就诊号码 }; // 初始化诊室 void initializeClinics(unordered_map<int, Clinic>& clinics) { clinics[1] = Clinic{"内科"}; clinics[2] = Clinic{"外科"}; clinics[3] = Clinic{"急诊"}; } // 挂号功能 void registerPatient(unordered_map<int, Clinic>& clinics) { string name, gender; int age, clinicNumber; cout << "输入姓名: "; cin >> name; cout << "输入年龄: "; cin >> age; cout << "输入性别: "; cin >> gender; cout << "选择诊室 (1: 内科, 2: 外科, 3: 急诊): "; cin >> clinicNumber; Clinic& clinic = clinics[clinicNumber]; clinic.patientQueue.push(Patient{name, age, gender, ++clinic.currentNumber}); cout << "挂号成功,就诊号码: " << clinic.currentNumber << endl; } // 叫号功能 void callPatient(unordered_map<int, Clinic>& clinics) { int clinicNumber; cout << "选择叫号的诊室 (1: 内科, 2: 外科, 3: 急诊): "; cin >> clinicNumber; Clinic& clinic = clinics[clinicNumber]; if (!clinic.patientQueue.empty()) { Patient patient = clinic.patientQueue.front(); clinic.patientQueue.pop(); cout << clinic.name << "," << patient.name << "患者马上到诊室就诊!" << endl; } else { cout << clinic.name << "当前没有患者等待就诊。" << endl; } } // 查看未就诊情况 void viewWaitingPatients(const unordered_map<int, Clinic>& clinics) { for (const auto& [clinicNumber, clinic] : clinics) { cout << clinic.name << " 未就诊患者:" << endl; queue<Patient> tempQueue = clinic.patientQueue; // 复制队列以避免修改原始队列 while (!tempQueue.empty()) { Patient patient = tempQueue.front(); tempQueue.pop(); cout << "姓名: " << patient.name << endl; } cout << endl; } } // 显示菜单 void showMenu() { cout << "1. 初始化诊室" << endl; cout << "2. 挂号" << endl; cout << "3. 叫号" << endl; cout << "4. 查看未就诊情况" << endl; cout << "5. 退出" << endl; } int main() { unordered_map<int, Clinic> clinics; int choice; do { showMenu(); cout << "选择操作: "; cin >> choice; switch (choice) { case 1: initializeClinics(clinics); break; case 2: registerPatient(clinics); break; case 3: callPatient(clinics); break; case 4: viewWaitingPatients(clinics); break; case 5: cout << "退出系统。" << endl; break; default: cout << "无效选择,请重新输入。" << endl; } } while (choice != 5); return 0; } ``` 说明: 1. 数据结构:使用`unordered_map`来存储诊室信息,其中键是诊室编号,值是`Clinic`结构体实例。每个`Clinic`结构体包含一个患者 [2024-10-27 23:24:51 | AI写代码神器 | 1019点数解答]