栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++实现病人就医管理系统

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++实现病人就医管理系统

本文实例为大家分享了C++语言实现病人就医管理系统的具体代码,供大家参考,具体内容如下

函数可实现反应病人到医院看病,排队看医生的情况,有行医类模板的定义及所有类函数的编写代码

部分代码展示:

lk_queue.h

#ifndef __LK_QUEUE_H__
#define __LK_QUEUE_H__

#include "utility.h" // 实用程序软件包
#include "node.h" // 结点类模板

// 链队列类模板

template
class linkQueue 
{
protected:
// 链队列实现的数据成员:
 Node *front, *rear; // 队头队尾指指

// 辅助函数模板:
 void Init(); // 初始化队列

public:
// 抽象数据类型方法声明及重载编译系统默认方法声明:
 linkQueue(); // 无参数的构造函数模板
 virtual ~linkQueue(); // 析构函数模板
 int Length() const; // 求队列长度 
 bool Empty() const; // 判断队列是否为空
 void Clear(); // 将队列清空
 void Traverse(void (*visit)(const ElemType &)) const ; // 遍历队列
 StatusCode OutQueue(ElemType &e); // 出队操作
 StatusCode GetHead(ElemType &e) const; // 取队头操作
 StatusCode InQueue(const ElemType &e); // 入队操作
 linkQueue(const linkQueue ©); // 复制构造函数模板
 linkQueue &operator =(const linkQueue ©);// 重载赋值运算符
};

// 链队列类模板的实现部分

template 
void linkQueue::Init()
// 操作结果:初始化队列
{
 rear = front = new Node; // 生成头结点
}

template
linkQueue::linkQueue()
// 操作结果:构造一个空队列
{
 Init();
}

template
linkQueue::~linkQueue()
// 操作结果:销毁队列
{
 Clear(); 
}

template
int linkQueue::Length() const
// 操作结果:返回队列长度 
{
 int count = 0; // 计数器 
 for (Node *tmpPtr = front->next; tmpPtr != NULL; tmpPtr = tmpPtr->next)
 { // 用tmpPtr依次指向每个元素
 count++; // 对栈每个元素进行计数
 }
 return count;
}

template
bool linkQueue::Empty() const
// 操作结果:如队列为空,则返回true,否则返回false
{
 return rear == front;
}

template
void linkQueue::Clear() 
// 操作结果:清空队列
{
 ElemType tmpElem; // 临时元素值
 while (Length() > 0)
 { // 队列非空,则出列
 OutQueue(tmpElem);
 }
}

template 
void linkQueue::Traverse(void (*visit)(const ElemType &)) const 
// 操作结果:依次对队列的每个元素调用函数(*visit)
{
 for (Node *tmpPtr = front->next; tmpPtr != NULL; 
 tmpPtr = tmpPtr->next)
 { // 对队列每个元素调用函数(*visit)
 (*visit)(tmpPtr->data);
 }
}


template
StatusCode linkQueue::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;
 }
 delete tmpPtr; // 释放出队的结点
 return SUCCESS;
 }
 else
 { // 队列为空
 return UNDER_FLOW;
 }
}

template
StatusCode linkQueue::GetHead(ElemType &e) const
// 操作结果:如果队列非空,那么用e返回队头元素,返回SUCCESS,
// 否则返回UNDER_FLOW,
{
 if (!Empty()) 
 { // 队列非空
 Node *tmpPtr = front->next; // 指向队列头素
 e = tmpPtr->data; // 用e返回队头元素
 return SUCCESS;
 }
 else
 { // 队列为空
 return UNDER_FLOW;
 }
}

template
StatusCode linkQueue::InQueue(const ElemType &e)
// 操作结果:插入元素e为新的队尾,返回SUCCESS
{
 Node *tmpPtr = new Node(e); // 生成新结点
 rear->next = tmpPtr; // 新结点追加在队尾
 rear = tmpPtr; // rear指向新队尾
 return SUCCESS;
}

template
linkQueue::linkQueue(const linkQueue ©)
// 操作结果:由队列copy构造新队列——复制构造函数模板
{
 Init();
 for (Node *tmpPtr = copy.front->next; tmpPtr != NULL; 
 tmpPtr = tmpPtr->next)
 { // 对copy队列每个元素对当前队列作入队列操作
 InQueue(tmpPtr->data);
 }
}

template
linkQueue &linkQueue::operator =(const linkQueue ©)
// 操作结果:将队列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" //链队列


//行医类
class HospitalListWLY
{
private:
 //行医类数据成员
 linkQueuequeue; //病人队列


 //辅助函数
 void StandInALine(); //排队
 void Cure(); //就诊
 void Display(); //查看排队


public:
 //方法声明及重载编译系统默认方法声明
 HospitalListWLY(){}; //无参数的构造函数
 ~HospitalListWLY(){}; //析构函数
 void Work(); //医生行医工作
};

//行医类的实现部分
void HospitalListWLY::StandInALine()
//操作结果:输入病人的病历号,加入到病人排队队列中
{
 unsigned int num; //病历号


 cout<<"请输入病历号:";
 cin>>num; //输入病人的病历号
 queue.InQueue(num); //将病历号加入到病人排队队列中

}


void HospitalListWLY::Cure()
//操作结果:病人排队队列中最前面的病人就诊,将其从队列中删除
{
 if (queue.Empty())
 { //无病人
 cout<<"现已没有病人在排队了!"<>select; //选择功能
 switch(select)
 {
 case 1:
 StandInALine(); //排队——输入病人的病历号,加入到病人队列中
 break;
 case 2:
 Cure(); //就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除
 break;
 case 3:
 Display(); //查看队列——从队首到队尾列出所有的排队病人的病历号
 break;
 }
 }
}


#endif

全部代码下载链接:C++语言实现病人就医管理系统

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/62556.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号