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++语言实现病人就医管理系统
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。