编写一个程序实现就医管理。在病人就医过程中,主要发生三件事: ⑴预检,分科室,挂号。 ⑵病人到达诊室,将病历本交给护士,排到等待队列中候诊。 ⑶护士从等待队列中取出一位病人的病历,该病人进入诊室就诊。 要求程序采用菜单方式,其选项及功能说明如下: ⑴挂号------预检,分科室,生成就诊号。 ⑵排队------输入病人的就诊号,加入到病人排队队列中。 ⑶就诊-------病人排队队列中最前面的病人就诊,并将其从队列中删除。 ⑷查看排队------从队首到队尾列出所有的排队病人的病历号。 ⑸下班---------退出运行。用C++实现
时间: 2023-07-15 17:16:00 浏览: 51
以下是用 C++ 实现的代码:
```c++
#include <iostream>
#include <cstdlib>
#include <queue>
using namespace std;
// 定义病人结构体
struct Patient {
string name; // 病人姓名
string gender; // 性别
int age; // 年龄
string department; // 科室
int visit_num; // 就诊号码
};
// 定义全局变量
int visit_count = 1000; // 就诊号码计数器
queue<Patient> wait_queue; // 等待队列
// 预检
void pre_check(Patient& patient) {
// 省略预检过程
}
// 分科室
void department_select(Patient& patient) {
// 省略分科室过程
}
// 挂号
void register_patient() {
Patient patient;
cout << "请输入病人姓名:";
cin >> patient.name;
cout << "请输入病人性别:";
cin >> patient.gender;
cout << "请输入病人年龄:";
cin >> patient.age;
pre_check(patient);
department_select(patient);
patient.visit_num = visit_count++;
cout << "挂号成功,您的就诊号码为:" << patient.visit_num << endl;
}
// 排队
void enqueue() {
int visit_num;
cout << "请输入您的就诊号码:";
cin >> visit_num;
Patient patient;
patient.visit_num = visit_num;
wait_queue.push(patient);
cout << "排队成功" << endl;
}
// 就诊
void visit() {
if (wait_queue.empty()) {
cout << "当前没有病人在排队" << endl;
return;
}
Patient patient = wait_queue.front();
cout << "请 " << patient.name << " 进入诊室就诊" << endl;
wait_queue.pop();
}
// 查看排队
void check_queue() {
if (wait_queue.empty()) {
cout << "当前没有病人在排队" << endl;
return;
}
cout << "当前排队病人的就诊号码为:";
queue<Patient> temp_queue = wait_queue;
while (!temp_queue.empty()) {
cout << temp_queue.front().visit_num << " ";
temp_queue.pop();
}
cout << endl;
}
int main() {
int option;
while (true) {
cout << "请选择操作:" << endl;
cout << "1. 挂号" << endl;
cout << "2. 排队" << endl;
cout << "3. 就诊" << endl;
cout << "4. 查看排队" << endl;
cout << "5. 下班" << endl;
cin >> option;
switch (option) {
case 1:
register_patient();
break;
case 2:
enqueue();
break;
case 3:
visit();
break;
case 4:
check_queue();
break;
case 5:
exit(0);
default:
cout << "无效操作,请重新选择" << endl;
}
}
return 0;
}
```
注意:预检和分科室的具体实现过程可以根据实际需求进行修改,本代码中省略了这些过程的具体实现。另外,为了简化代码,本例中没有加入病历本的记录和管理,实际应用时需要根据需求进行修改。