c++医院排队看病系统

如何实现病人到医院看病,需要排队等候,先到先看。请编写程序模拟病人看病的过程。(1)后到的病人必修排在最后面;(2)排队过程中的病人可以随时查看自己前面还有多少病人等待看病;(3)系统能提示正在看病的后面一个病人作好准备。
理论描述

queue

#include <iostream>
#include <queue>
using namespace std;

int main() {
    // 初始化病人队列和正在看病的病人
    queue<int> patients;
    int currentPatient = 1;

    // 循环等待病人到达医院并进行看病
    while (!patients.empty()) {
        // 如果当前没有正在看病的病人,则将下一个病人加入队列中
        if (currentPatient == patients.front()) {
            patients.pop();
            cout << "病人" << currentPatient << "已到达医院。" << endl;
            currentPatient++;
        } else {
            // 否则,如果当前正在看病的病人已经看完病,则将其从队列中删除,并提示下一个病人作好准备
            if (currentPatient % patients.size() == 0) {
                cout << "病人" << currentPatient << "已完成看病,请下一个病人做好准备。" << endl;
                patients.pop();
            } else {
                // 否则,如果当前正在看病的病人还没有看完病,则等待一段时间后再次检查是否需要提醒下一个病人作好准备
                system("pause");
            }
        }
    }

    return 0;
}

来我看看

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7727345
  • 这篇博客也不错, 你可以看下C++数据结构二叉树统计总结点个数,叶子结点个数,单分支结点个数,双分支结点个数。
  • 除此之外, 这篇博客: C++使用引用的方法向函数传递数组,避免因传入函数而导致退化为指针,正确在函数中计算数组的大小。中的 方法1——用基本语法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 我们将数据类型(&新数组名)[数组的大小]作为函数形参即可

    #include<iostream>
    using namespace std;
    int func(int(&arr)[6])
    {
    	return sizeof(arr);
    }
    
    int main()
    {
    	int Arr[] = { 2,4,3,1,73,0 };
    	cout << func(Arr) << endl;
    	system("pause");
    	return 0;
    }
    

    输出的结果是 24
    这种方法好处在使为程序更加安全,因为传入的数据如果不是我们想要的大小,就会禁止传入,从而报错。
    坏处更加明显了,我们需要提前知道所使用数组的大小,并且对于不同的数组,需要有不同的函数实现,使得重复代码增加很多。

  • 您还可以看一下 林男老师的小学生c++趣味编程入门视频教程 少儿C十十信息学奥赛竞赛网课课程中的 变量、表达式与赋值语句——教室面积小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    要实现医院排队看病系统的程序模拟,可以借助队列来进行病人的排队管理。以下示例代码演示了如何使用C++实现该功能:

    #include <iostream>
    #include <queue>
    
    using namespace std;
    
    class Hospital {
    private:
        queue<string> patients;
    
    public:
        void addPatient(const string& name) {
            patients.push(name);
            cout << name << "已加入排队等候" << endl;
        }
    
        void displayWaitingList() {
            int size = patients.size();
            cout << "当前等候人数:" << size << endl;
            cout << "前面还有以下病人等待看病:" << endl;
    
            queue<string> temp = patients;
            while (!temp.empty()) {
                cout << temp.front() << endl;
                temp.pop();
            }
        }
    
        void callNextPatient() {
            if (patients.empty()) {
                cout << "没有病人在等候" << endl;
            } else {
                string nextPatient = patients.front();
                patients.pop();
                cout << "请" << nextPatient << "进行就诊" << endl;
            }
        }
    };
    
    int main() {
        Hospital hospital;
    
        // 添加病人到队列
        hospital.addPatient("张三");
        hospital.addPatient("李四");
        hospital.addPatient("王五");
    
        // 查看当前等候人数和前面的病人
        hospital.displayWaitingList();
    
        // 调用下一个病人
        hospital.callNextPatient();
    
        return 0;
    }
    

    运行上述代码后,你将看到以下输出:

    张三已加入排队等候
    李四已加入排队等候
    王五已加入排队等候
    当前等候人数:3
    前面还有以下病人等待看病:
    张三
    李四
    王五
    请张三进行就诊
    

    在上述代码中,我们定义了一个Hospital类,其中使用了queue作为成员变量patients来保存病人的排队顺序。addPatient方法用于将病人加入队列,并打印加入成功的消息。displayWaitingList方法用于显示当前等候人数以及前面等待看病的病人列表。callNextPatient方法则用于调用下一个病人。

    通过调用addPatient方法添加病人,然后使用displayWaitingList方法查看当前等候人数和前面等待的病人,最后使用callNextPatient方法调用下一个病人进行就诊。

    用这种方式,你可以动态地管理病人的排队顺序,并随时查看等待人数和下一个排队的病人。