(实验)完成一个医院挂号系统

(实验)完成一个医院挂号系统,功能如下:

①取号排队:输入患者姓名,身份证号,年龄,性别信息后输出排队序号,同时提醒其前排队患者数量;

②叫号服务:取排在最前的患者服务,通知提醒其后两

位患者等待。

③查询服务(患者):患者输入排队序号,查询该序号之前排队人数;

④查询服务(管理员):按排队序号输出所有排队人员信息;

⑤取消排队:输出排队序号,删除该患者排队信息(极少使用)。

#include <iostream>
#include<string.h>
using namespace std;
const int MAXSIZE=100;
const int ok=1;
const int error=0;
typedef int Status;
typedef struct people //定义患者信息
{
   string name;//姓名
   int number;//身份证号
   int age;//年龄
   string sex;//性别
   int n=0;//患者的排队序号
}people;
typedef struct//队列的顺序存储,循环队列的数据类型
{
    people *base;//基地址
    int front;//指向队头的指针
    int rear;//指向队尾下一个元素的指针
}sqqueue;
Status Initqueue(sqqueue &Q)//循环队列的初始化
{
    Q.base=new people[MAXSIZE];//为队列分配一个最大容量为MAXSIZE的数组空间
    Q.front=Q.rear=0;//把头指针和尾指针置为0;队列为空
    return ok;
}
Status input(sqqueue &Q,people &e)//输入患者的信息
{
    if((Q.rear+1)%MAXSIZE==Q.front)//判断队满
        return error;//跳出程序
        else
        {
    cout<<"请输入患者的信息:"<<endl;
            cout<<"请输入患者的姓名:"<<endl;
            cin>>e.name;
            cout<<"请输入患者的身份证号码(4位):"<<endl;
            cin>>e.number;
            cout<<"请输入患者的年龄:"<<endl;
            cin>>e.age;
            cout<<"请输入患者的性别"<<endl;
            cin>>e.sex;
             Q.base[Q.rear]=e;//新元素插入队尾
        Q.rear=(Q.rear+1)%MAXSIZE;//队尾指针加1
        }
        return ok;
}
Status get_sq(sqqueue &Q,people &e)//出队,删除
{
    if(Q.front==Q.rear) return error;//队列是空的
    e=Q.base[Q.front];//队头元素
    Q.front=(Q.front+1)%MAXSIZE;
    cout<<"删除成功"<<endl;
    return ok;
}
Status calling(sqqueue Q,people &e)//叫号
{
    if(Q.front!=Q.rear)
        cout<<"请排队序号为"<<Q.base[Q.front].n+1<<"的患者就诊"<<endl;
        cout<<"请序号为"<<Q.base[Q.front].n+2<<"和"<<Q.base[Q.front].n+3<<"的患者等待就诊"<<endl;
}
int sq_search1(sqqueue &Q,int S)//患者查询
{
        for(int i=0;i<(Q.rear-Q.front+MAXSIZE)%MAXSIZE;i++)
        {
            if(Q.base[i].n=S)
            return i;
        }

}
void sq_search2(sqqueue &Q,int i)//查询(管理者端)
{
    if(Q.rear==Q.front)//判断队空
    {
    cout<<"该队列为空!"<<endl;
    return;
    }
    else
        cout<<"患者的信息如下:"<<endl;
        cout<<"姓名  身份证号  年龄  性别 "<<endl;
        for(i=0;i<(Q.rear-Q.front+MAXSIZE)%MAXSIZE;i++)
        {
            cout<<" "<<Q.base[i+1].name<<" "<<Q.base[i+1].number<<" "<<Q.base[i+1].age<<" "<<Q.base[i+1].sex<<" "<<endl;

        }
}
int main()
{
    sqqueue Q;
    people e;
    int choose=-1;
    int a,b,i,S;
    cout<<"医院挂号系统欢迎您!"<<endl;
    cout<<"^^^^^^^^^^^^^^^^^^^^"<<endl;
    cout<<"1.创建队列"<<endl;
    cout<<"2.输入患者信息取号"<<endl;
    cout<<"3.叫号"<<endl;
    cout<<"4.查询服务(患者端)"<<endl;
    cout<<"5.查询服务(管理端)"<<endl;
     cout<<"6.取消排队(最前面的)"<<endl;
    while(choose!=0)
    {
        cout<<"请输入你要执行的操作:"<<endl;
    cin>>choose;
        switch(choose)
        {
        case 1:
            if(Initqueue (Q))//建立队列
                cout<<"建立队列成功!"<<endl;
            else
                cout<<"失败!请重新建立"<<endl;
            break;
        case 2:
            input(Q,e);//输入患者的信息
            e.n=(Q.rear-Q.front+MAXSIZE)%MAXSIZE;//计算当前队列的长度
        cout<<"你的排队序号为:"<<e.n<<endl;
        cout<<"你当前的人数为:"<<e.n-1<<endl;
            break;
        case 3:
        calling(Q,e);

            break;
        case 4:
            cout<<"请输入要查询的患者排队序号"<<endl;
    cin>>S;
            b=sq_search1(Q,b);//患者查询
            cout<<"查询结果是:"<<endl;
            cout<<"姓名  "<<"身份证号"<<"  年龄"<<"  性别"<<endl;
            cout<<Q.base[b+1].name<<" "<<Q.base[b+1].number<<" "<<Q.base[b+1].age<<" "<<Q.base[b+1].sex<<endl;
            break;
        case 5:
            sq_search2(Q,i);//输出所有的信息
            break;
        case 6:
            get_sq(Q,e);
            break;
        }

    }
    return 0;
}





  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值