温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-04-14 11:19:23 来源:亿速云 阅读:708 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关C++如何实现病人就医管理系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

具体内容如下

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

部分代码展示:

lk_queue.h

#ifndef __LK_QUEUE_H__ #define __LK_QUEUE_H__ #include "utility.h" // 实用程序软件包 #include "node.h" // 结点类模板 // 链队列类模板 template<class ElemType> class LinkQueue  { protected: // 链队列实现的数据成员:  Node<ElemType> *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<ElemType> &copy); // 复制构造函数模板  LinkQueue<ElemType> &operator =(const LinkQueue<ElemType> &copy);// 重载赋值运算符 }; // 链队列类模板的实现部分 template <class ElemType> void LinkQueue<ElemType>::Init() // 操作结果:初始化队列 {  rear = front = new Node<ElemType>; // 生成头结点 } template<class ElemType> LinkQueue<ElemType>::LinkQueue() // 操作结果:构造一个空队列 {  Init(); } template<class ElemType> LinkQueue<ElemType>::~LinkQueue() // 操作结果:销毁队列 {  Clear();  } template<class ElemType> int LinkQueue<ElemType>::Length() const // 操作结果:返回队列长度  {  int count = 0; // 计数器   for (Node<ElemType> *tmpPtr = front->next; tmpPtr != NULL; tmpPtr = tmpPtr->next)  { // 用tmpPtr依次指向每个元素  count++; // 对栈每个元素进行计数  }  return count; } template<class ElemType> bool LinkQueue<ElemType>::Empty() const // 操作结果:如队列为空,则返回true,否则返回false {  return rear == front; } template<class ElemType> void LinkQueue<ElemType>::Clear()  // 操作结果:清空队列 {  ElemType tmpElem; // 临时元素值  while (Length() > 0)  { // 队列非空,则出列  OutQueue(tmpElem);  } } template <class ElemType> void LinkQueue<ElemType>::Traverse(void (*visit)(const ElemType &)) const  // 操作结果:依次对队列的每个元素调用函数(*visit) {  for (Node<ElemType> *tmpPtr = front->next; tmpPtr != NULL;   tmpPtr = tmpPtr->next)  { // 对队列每个元素调用函数(*visit)  (*visit)(tmpPtr->data);  } } template<class ElemType> StatusCode LinkQueue<ElemType>::OutQueue(ElemType &e) // 操作结果:如果队列非空,那么删除队头元素,并用e返回其值,返回SUCCESS, // 否则返回UNDER_FLOW, {  if (!Empty())   { // 队列非空  Node<ElemType> *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<class ElemType> StatusCode LinkQueue<ElemType>::GetHead(ElemType &e) const // 操作结果:如果队列非空,那么用e返回队头元素,返回SUCCESS, // 否则返回UNDER_FLOW, {  if (!Empty())   { // 队列非空  Node<ElemType> *tmpPtr = front->next; // 指向队列头素  e = tmpPtr->data; // 用e返回队头元素  return SUCCESS;  }  else  { // 队列为空  return UNDER_FLOW;  } } template<class ElemType> StatusCode LinkQueue<ElemType>::InQueue(const ElemType &e) // 操作结果:插入元素e为新的队尾,返回SUCCESS {  Node<ElemType> *tmpPtr = new Node<ElemType>(e); // 生成新结点  rear->next = tmpPtr; // 新结点追加在队尾  rear = tmpPtr; // rear指向新队尾  return SUCCESS; } template<class ElemType> LinkQueue<ElemType>::LinkQueue(const LinkQueue<ElemType> &copy) // 操作结果:由队列copy构造新队列——复制构造函数模板 {  Init();  for (Node<ElemType> *tmpPtr = copy.front->next; tmpPtr != NULL;   tmpPtr = tmpPtr->next)  { // 对copy队列每个元素对当前队列作入队列操作  InQueue(tmpPtr->data);  } } template<class ElemType> LinkQueue<ElemType> &LinkQueue<ElemType>::operator =(const LinkQueue<ElemType> &copy) // 操作结果:将队列copy赋值给当前队列——重载赋值运算符 {  if (&copy != this)  {  Clear();  for (Node<ElemType> *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:  //行医类数据成员  LinkQueue<unsigned int>queue; //病人队列  //辅助函数  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<<"现已没有病人在排队了!"<<endl;  }  else  {  unsigned int num; //病历号  queue.OutQueue(num); //病人排队队列中最前面的病人就诊,并将其从队列中删除  cout<<num<<"号病人现在就医."<<endl;  } } void HospitalListWLY::Display() //操作结果:从队首到队尾列出所有的排队病人的病历号 {  queue.Traverse(Write); //从队首到队尾列出所有的排队病人的病历号  cout<<endl; } void HospitalListWLY::Work() //操作结果:医生行医工作 {  int select=0;  while(select!=4)  {  cout<<"1。排队—输入排队病人的病历号,加入到病人队列中."<<endl;  cout<<"2.就诊—病人排队队列中最前面的病人就诊,并将其从队列中删除"<<endl;  cout<<"3.查看排队—从队首到队尾列出所有的排队病人的病历号"<<endl;  cout<<"4.下班—退出运行"<<endl;  cout<<"请选择:";  cin>>select; //选择功能  switch(select)  {  case 1:  StandInALine(); //排队——输入病人的病历号,加入到病人队列中  break;  case 2:  Cure(); //就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除  break;  case 3:  Display(); //查看队列——从队首到队尾列出所有的排队病人的病历号  break;  }  } } #endif

感谢各位的阅读!关于“C++如何实现病人就医管理系统”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI