C++实现强大病人候诊系统:挂号、叫号、查看未就诊情况全搞定!
以下是一个基于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`结构体包含一个患者 ######[AI写代码神器 | 1019点数解答 | 2024-10-27 23:24:51]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- C++实现矩阵类:重载运算符+与=,含构造、析构及异常处理(字节豆包 | 671点数解答 | 2025-06-23 15:25:09)226
- C++ 实现矩阵类:重载运算符加与赋值,含构造、析构及错误处理(字节豆包 | 993点数解答 | 2025-06-23 15:27:43)158
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- Linux开发必备:物理机BIOS、型号、网卡驱动及虚拟机判断查询攻略(百度文心 | 328点数解答 | 2023-11-09 18:48:49)258
- 一招搞定!查询 Oracle 用户权限的 SQL 语句揭秘( | 129点数解答 | 2023-12-27 17:41:26)263
- Linux 系统组管理实战:创建、修改、添加用户与删除组操作全解析 (字节豆包 | 398点数解答 | 2024-10-18 09:14:34)215
- Linux系统:全面实操组管理与用户管理任务(阿里通义 | 634点数解答 | 2024-10-18 09:17:56)239
- Dev C++ 实现超多功能 C 语言资源管理器:创建、查看、管理文件一步到位! (字节豆包 | 1142点数解答 | 2024-12-01 11:36:27)353
- 用Dev C++实现C语言资源管理器:支持创建、查看、预览等功能!(GPT | 1505点数解答 | 2024-12-01 11:40:15)172
- 用 Dev C++ 实现 C 语言资源管理器:含代码,可创建、管理文件与文件夹 (GPT | 2709点数解答 | 2024-12-01 11:41:45)216
- Python三关挑战:文件与文件夹数量统计及路径获取(字节豆包 | 493点数解答 | 2024-12-11 13:29:49)220