C++实现病人就医管理系统
本文实例为大家分享了C++语言实现病人就医管理系统的具体代码,供大家参考,具体内容如下
函数可实现反应病人到医院看病,排队看医生的情况,有行医类模板的定义及所有类函数的编写代码
部分代码展示:
lk_queue.h
#ifndef__LK_QUEUE_H__ #define__LK_QUEUE_H__ #include"utility.h"//实用程序软件包 #include"node.h"//结点类模板 //链队列类模板 templateclassLinkQueue { protected: //链队列实现的数据成员: Node *front,*rear;//队头队尾指指 //辅助函数模板: voidInit();//初始化队列 public: //抽象数据类型方法声明及重载编译系统默认方法声明: LinkQueue();//无参数的构造函数模板 virtual~LinkQueue();//析构函数模板 intLength()const;//求队列长度 boolEmpty()const;//判断队列是否为空 voidClear();//将队列清空 voidTraverse(void(*visit)(constElemType&))const;//遍历队列 StatusCodeOutQueue(ElemType&e);//出队操作 StatusCodeGetHead(ElemType&e)const;//取队头操作 StatusCodeInQueue(constElemType&e);//入队操作 LinkQueue(constLinkQueue ©);//复制构造函数模板 LinkQueue &operator=(constLinkQueue ©);//重载赋值运算符 }; //链队列类模板的实现部分 template voidLinkQueue ::Init() //操作结果:初始化队列 { rear=front=newNode ;//生成头结点 } template LinkQueue ::LinkQueue() //操作结果:构造一个空队列 { Init(); } template LinkQueue ::~LinkQueue() //操作结果:销毁队列 { Clear(); } template intLinkQueue ::Length()const //操作结果:返回队列长度 { intcount=0;//计数器 for(Node *tmpPtr=front->next;tmpPtr!=NULL;tmpPtr=tmpPtr->next) {//用tmpPtr依次指向每个元素 count++;//对栈每个元素进行计数 } returncount; } template boolLinkQueue ::Empty()const //操作结果:如队列为空,则返回true,否则返回false { returnrear==front; } template voidLinkQueue ::Clear() //操作结果:清空队列 { ElemTypetmpElem;//临时元素值 while(Length()>0) {//队列非空,则出列 OutQueue(tmpElem); } } template voidLinkQueue ::Traverse(void(*visit)(constElemType&))const //操作结果:依次对队列的每个元素调用函数(*visit) { for(Node *tmpPtr=front->next;tmpPtr!=NULL; tmpPtr=tmpPtr->next) {//对队列每个元素调用函数(*visit) (*visit)(tmpPtr->data); } } template StatusCodeLinkQueue ::OutQueue(ElemType&e) //操作结果:如果队列非空,那么删除队头元素,并用e返回其值,返回SUCCESS, //否则返回UNDER_FLOW, { if(!Empty()) {//队列非空 Node *tmpPtr=front->next;//指向队列头素 e=tmpPtr->data;//用e返回队头元素 front->next=tmpPtr->next;//front指向下一元素 if(rear==tmpPtr) {//表示出队前队列中只有一个元素,出队后为空队列 rear=front; } deletetmpPtr;//释放出队的结点 returnSUCCESS; } else {//队列为空 returnUNDER_FLOW; } } template StatusCodeLinkQueue ::GetHead(ElemType&e)const //操作结果:如果队列非空,那么用e返回队头元素,返回SUCCESS, //否则返回UNDER_FLOW, { if(!Empty()) {//队列非空 Node *tmpPtr=front->next;//指向队列头素 e=tmpPtr->data;//用e返回队头元素 returnSUCCESS; } else {//队列为空 returnUNDER_FLOW; } } template StatusCodeLinkQueue ::InQueue(constElemType&e) //操作结果:插入元素e为新的队尾,返回SUCCESS { Node *tmpPtr=newNode (e);//生成新结点 rear->next=tmpPtr;//新结点追加在队尾 rear=tmpPtr;//rear指向新队尾 returnSUCCESS; } template LinkQueue ::LinkQueue(constLinkQueue ©) //操作结果:由队列copy构造新队列——复制构造函数模板 { Init(); for(Node *tmpPtr=copy.front->next;tmpPtr!=NULL; tmpPtr=tmpPtr->next) {//对copy队列每个元素对当前队列作入队列操作 InQueue(tmpPtr->data); } } template LinkQueue &LinkQueue ::operator=(constLinkQueue ©) //操作结果:将队列copy赋值给当前队列——重载赋值运算符 { if(©!=this) { Clear(); for(Node *tmpPtr=copy.front->next;tmpPtr!=NULL; tmpPtr=tmpPtr->next) {//对copy队列每个元素对当前队列作入队列操作 InQueue(tmpPtr->data); } } return*this; } #endif
Hospitalize.h
#ifndef__HOSPITALIZE_H__ #define__HOSPITALIZE_H__ #include"lk_queue.h"//链队列 //行医类 classHospitalListWLY { private: //行医类数据成员 LinkQueuequeue;//病人队列 //辅助函数 voidStandInALine();//排队 voidCure();//就诊 voidDisplay();//查看排队 public: //方法声明及重载编译系统默认方法声明 HospitalListWLY(){};//无参数的构造函数 ~HospitalListWLY(){};//析构函数 voidWork();//医生行医工作 }; //行医类的实现部分 voidHospitalListWLY::StandInALine() //操作结果:输入病人的病历号,加入到病人排队队列中 { unsignedintnum;//病历号 cout<<"请输入病历号:"; cin>>num;//输入病人的病历号 queue.InQueue(num);//将病历号加入到病人排队队列中 } voidHospitalListWLY::Cure() //操作结果:病人排队队列中最前面的病人就诊,将其从队列中删除 { if(queue.Empty()) {//无病人 cout<<"现已没有病人在排队了!"< >select;//选择功能 switch(select) { case1: StandInALine();//排队——输入病人的病历号,加入到病人队列中 break; case2: Cure();//就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除 break; case3: Display();//查看队列——从队首到队尾列出所有的排队病人的病历号 break; } } } #endif
全部代码下载链接:C++语言实现病人就医管理系统
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。