ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:20.71KB ,
资源ID:23717310      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23717310.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(病人就医管理代码.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

病人就医管理代码.docx

1、病人就医管理代码2.病人就医管理 1.目标与要求编写一个程序,反应病人到医院看病,排队看医生的情况。在病人排队的过程中,主要发生两件事。(1) 病人到达诊室,将病历本交给护士,拍到等待队列中候诊。(2) 护士从等待队列中取出以为病人的病历,该病人进入诊室就诊。要求程序采用菜单方式,其选项及功能说明如下。(1) 排队输入病人的病历号,加入到病人排队队列中。(2) 就诊病人排列队列中最前面的病人就诊,并将其从队列中删除。(3) 查看排队从队首到队尾列出所有的排队病人的病历号。(4) 下班退出运行。 2.工具、准备工作 在实验开始前,应回顾或复习相关内容。需要一台计算机,其中安装有Visual C+

2、 6.0、Visual c+ 2005、Visual C+ 2005 Express Dev-c+或MinGW Developer Studio等集成开发环境软件 3.实验分析 4.代码如下: /头文件:hospitalize.h #ifndef _HOSPITALIZE_H_#define _HOSPITALIZE_H_#include lk_queue.h / 链队列/ 行医类class Hospitalizeprivate:/ 行医类的数据成员: LinkQueue queue; / 病人队列/ 辅助函数 void StandInALine(); / 排队 void Cure(); /

3、就诊 void Display(); / 查看排队public:/ 方法声明及重载编译系统默认方法声明: Hospitalize(); / 无参数的构造函数 Hospitalize(); / 析构函数 void Work(); / 医生工作;/ 行医类的实现部分void Hospitalize:StandInALine()/ 操作结果: 输入排队病人的病历号,加入到病人排队队列中 unsigned int num; / 病历号 cout num; / 输入排队病人 queue.InQueue(num); / 将病历号加入到病人排队队列中void Hospitalize:Cure()/ 操作结果

4、: 病人排队队列中最前面的病人就诊,并将其从队列中删除 if (queue.Empty() / 无病人 cout 现已没有病人在排队了! endl; else unsigned int num; / 病历号 queue.OutQueue(num); / 病人排队队列中最前面的病人就诊,并将其从队列中删除 cout num 号病人现在就医. endl; void Hospitalize:Display()/ 操作结果: 从队首到队尾列出所有的排队病人的病历号 queue.Traverse(Write); / 从队首到队尾列出所有的排队病人的病历号 cout endl;void Hospitali

5、ze:Work()/ 操作结果: 医生工作 int select = 0; while (select != 4) cout 1. 排队-输入病人的病历号,加入到病人队列中 endl; cout 2. 就诊-病人排队队列中最前面的病人就诊,并将其从队列中删除 endl; cout 3. 查看排队-从队首到队尾列出所有的排队病人的病历号 endl; cout 4. 下班-退出运行 endl; cout select; / 选择功能 switch(select) case 1: StandInALine(); / 排队-输入病人的病历号,加入到病人队列中 break; case 2: Cure()

6、; / 就诊-病人排队队列中最前面的病人就诊,并将其从队列中删除 break; case 3: Display(); / 查看排队-从队首到队尾列出所有的排队病人的病历号 break; #endif/头文件:lk_queue.h#ifndef _LK_QUEUE_H_#define _LK_QUEUE_H_#include utility.h / 实用程序软件包#include node.h / 结点类模板/ 链队列类模板templateclass LinkQueue protected:/ 链队列实现的数据成员: Node *front, *rear; / 队头队尾指指/ 辅助函数模板: v

7、oid Init(); / 初始化队列public:/ 抽象数据类型方法声明及重载编译系统默认方法声明: LinkQueue(); / 无参数的构造函数模板 virtual LinkQueue(); / 析构函数模板 int Length() const; / 求队列长度 bool Empty() const; / 判断队列是否为空 void Clear(); / 将队列清空 void Traverse(void (*visit)(const ElemType &) const ; / 遍历队列 StatusCode OutQueue(ElemType &e); / 出队操作 StatusCo

8、de GetHead(ElemType &e) const; / 取队头操作 StatusCode InQueue(const ElemType &e); / 入队操作 LinkQueue(const LinkQueue ©); / 复制构造函数模板 LinkQueue &operator =(const LinkQueue ©);/ 重载赋值运算符;/ 链队列类模板的实现部分template void LinkQueue:Init()/ 操作结果:初始化队列 rear = front = new Node; / 生成头结点templateLinkQueue:LinkQueue

9、()/ 操作结果:构造一个空队列 Init();templateLinkQueue:LinkQueue()/ 操作结果:销毁队列 Clear(); templateint LinkQueue:Length() const/ 操作结果:返回队列长度 int count = 0; / 计数器 for (Node *tmpPtr = front-next; tmpPtr != NULL; tmpPtr = tmpPtr-next) / 用tmpPtr依次指向每个元素 count+; / 对栈每个元素进行计数 return count;templatebool LinkQueue:Empty() co

10、nst/ 操作结果:如队列为空,则返回true,否则返回false return rear = front;templatevoid LinkQueue:Clear() / 操作结果:清空队列 ElemType tmpElem; / 临时元素值 while (Length() 0) / 队列非空,则出列 OutQueue(tmpElem); template void LinkQueue:Traverse(void (*visit)(const ElemType &) const / 操作结果:依次对队列的每个元素调用函数(*visit) for (Node *tmpPtr = front-n

11、ext; tmpPtr != NULL; tmpPtr = tmpPtr-next) / 对队列每个元素调用函数(*visit) (*visit)(tmpPtr-data); templateStatusCode LinkQueue:OutQueue(ElemType &e)/ 操作结果:如果队列非空,那么删除队头元素,并用e返回其值,返回SUCCESS,/ 否则返回UNDER_FLOW, if (!Empty() / 队列非空 Node *tmpPtr = front-next; / 指向队列头素 e = tmpPtr-data; / 用e返回队头元素 front-next = tmpPtr

12、-next; / front指向下一元素 if (rear = tmpPtr) / 表示出队前队列中只有一个元素,出队后为空队列 rear = front; delete tmpPtr; / 释放出队的结点 return SUCCESS; else / 队列为空 return UNDER_FLOW; templateStatusCode LinkQueue:GetHead(ElemType &e) const/ 操作结果:如果队列非空,那么用e返回队头元素,返回SUCCESS,/ 否则返回UNDER_FLOW, if (!Empty() / 队列非空 Node *tmpPtr = front-

13、next; / 指向队列头素 e = tmpPtr-data; / 用e返回队头元素 return SUCCESS; else / 队列为空 return UNDER_FLOW; templateStatusCode LinkQueue:InQueue(const ElemType &e)/ 操作结果:插入元素e为新的队尾,返回SUCCESS Node *tmpPtr = new Node(e); / 生成新结点 rear-next = tmpPtr; / 新结点追加在队尾 rear = tmpPtr; / rear指向新队尾 return SUCCESS;templateLinkQueue:

14、LinkQueue(const LinkQueue ©)/ 操作结果:由队列copy构造新队列复制构造函数模板 Init(); for (Node *tmpPtr = copy.front-next; tmpPtr != NULL; tmpPtr = tmpPtr-next) / 对copy队列每个元素对当前队列作入队列操作 InQueue(tmpPtr-data); templateLinkQueue &LinkQueue:operator =(const LinkQueue ©)/ 操作结果:将队列copy赋值给当前队列重载赋值运算符 if (© != this)

15、Clear(); for (Node *tmpPtr = copy.front-next; tmpPtr != NULL; tmpPtr = tmpPtr-next) / 对copy队列每个元素对当前队列作入队列操作 InQueue(tmpPtr-data); return *this;#endif/头文件: node.h#ifndef _NODE_H_#define _NODE_H_/ 结点类模板template struct Node / 数据成员: ElemType data; / 数据域 Node *next; / 指针域/ 构造函数模板: Node(); / 无参数的构造函数模板 N

16、ode(ElemType item, Node *link = NULL); / 已知数据元素值和指针建立结构;/ 结点类模板的实现部分templateNode:Node()/ 操作结果:构造指针域为空的结点 next = NULL;templateNode:Node(ElemType item, Node *link)/ 操作结果:构造一个数据域为item和指针域为link的结点 data = item; next = link;#endif/头文件:utility.h#ifndef _UTILITY_H_ / 如果没有定义_UTILITY_H_#define _UTILITY_H_ / 那

17、么定义_UTILITY_H_/ 实用程序软件包#ifdef _MSC_VER / 表示是VC #if _MSC_VER = 1200 / 表示VC6.0/ 标准库头文件#include / 标准串和操作#include / 标准流操作#include / 极限#include / 数学函数#include / 文件输入输出#include / 字符处理#include / 日期和时间函数#include / 标准库#include / 标准输入输出#include / 输入输出流格式设置 #include / 支持变长函数参数 #include / 支持断言#else / 其它版本的VC+/

18、ANSI C+标准库头文件#include / 标准串和操作#include / 标准流操作#include / 极限#include / 数学函数#include / 文件输入输出#include / 字符处理#include / 日期和时间函数#include / 标准库#include / 标准输入输出#include / 输入输出流格式设置 #include / 支持变长函数参数 #include / 支持断言using namespace std; / 标准库包含在命名空间std中#endif / _MSC_VER = 1200#else / 非VC / ANSI C+标准库头文件#

19、include / 标准串操作#include / 标准流操作#include / 极限#include / 数据函数#include / 文件输入输出#include / 字符处理#include / 日期和时间函数#include / 标准库#include / 标准输入输出#include / 输入输出流格式设置 #include / 支持变长函数参数 #include / 支持断言using namespace std; / 标准库包含在命名空间std中#endif / _MSC_VER/ 自定义类型enum StatusCode SUCCESS, FAIL, UNDER_FLOW,

20、OVER_FLOW,RANGE_ERROR, DUPLICATE_ERROR, NOT_PRESENT, ENTRY_INSERTED, ENTRY_FOUND, VISITED, UNVISITED;/ 宏定义#define DEFAULT_SIZE 1000 / 缺省元素个数#define DEFAULT_INFINITY 1000000 / 缺省无穷大/ 实用函数(模板)声明static char GetChar(istream &inStream = cin); / 从输入流inStream中跳过空格及制表符获取一字符static bool UserSaysYes(); / 当用户肯定

21、回答(yes)时, 返回true, 用户否定回答(no)时,返回falsestatic void SetRandSeed(); / 设置当前时间为随机数种子static int GetRand(int n); / 生成0 n-1之间的随机数static int GetRand(); / 生成随机数static int GetPoissionRand(double expectValue);/ 生成期望值为expectValue泊松随机数 template void Swap(ElemType &e1, ElemType &e2); / 交换e1, e2之值templatevoid Displa

22、y(ElemType elem, int n); / 显示数组elem的各数据元素值template void Write(const ElemType &e); / 显示数据元素/ 实用类class Timer; / 定时器类Timerclass Error; / 通用异常类static char GetChar(istream &inStream)/ 操作结果:从输入流inStream中跳过空格及制表符获取一字符 char ch; / 临时变量 while (ch = (inStream).peek() != EOF / 文件结束符(peek()函数从输入流中接受1 / 字符,流的当前位置

23、不变) & (ch = (inStream).get() = / 空格(get()函数从输入流中接受1字符,流 / 的当前位置向后移1个位置) | ch = t); / 制表符 return ch; / 返回字符static bool UserSaysYes()/ 操作结果: 当用户肯定回答(yes)时, 返回true, 用户否定回答(no)时,返回false char ch; / 用户回答字符 bool initialResponse = true; / 初始回答 do / 循环直到用户输入恰当的回答为止 if (initialResponse) / 初始回答 cout (y, n)?; else / 非初始回答 cout 用y或n回答:; while (ch = GetChar() = n); / 跳过空格,制表符及换行符获取一字符 initialResponse = false; while (ch != y & ch != Y & ch != n & ch != N); while (GetChar() != n); / 跳过当前行后面的字符 if (ch = y | ch = Y) return true; else return false;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1