STEP #1

(1/2)

此处切换ai服务商,可对比多家ai的回复,取最优解。

上一步下一步关闭
酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

病人候诊系统是为患者提供挂号和叫号的管理系统。患者挂号后,候诊时应按照挂号的先后顺序排队,先挂号的先就诊。就诊后,将患者从队列中删除。后来挂号的则插入队列中。具体包括以下内容: 1.初始化诊室:选择菜单1进行初始化诊室,对三个科室进行初始化:1.内科、2.外科、3.急诊; 2.挂号功能:选择菜单2进行挂号,输入姓名、年龄和性别,选择要挂号的诊室,自动生成就诊号码(从1开始),并将病人在挂号诊室排队; 3.叫号功能:选择菜单3进行叫号,输入要叫号的诊室后,显示“××诊室,××患者马上到诊室就诊!”,并将其从挂号队列中出队; 4.查看未就诊情况:选择菜单4,列出所有诊室未就诊患者的姓名。用数据结构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`结构体包含一个患者 [2024-10-27 23:24:51 | AI写代码神器 | 1019点数解答]

相关提问