分享
分销 收藏 举报 申诉 / 12
播放页_导航下方通栏广告

类型病人就医管理系统.doc

  • 上传人:快乐****生活
  • 文档编号:2302232
  • 上传时间:2024-05-27
  • 格式:DOC
  • 页数:12
  • 大小:118KB
  • 下载积分:8 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    病人 就医 管理 系统
    资源描述:
    ______________________________________________________________________________________________________________ 一、设计题目 编写一个程序定义行医类,反映病人到医院看病,排队看医生的情况,在病人排队过程中,主要发生两件事: (1) 病人到达诊室,将病历本交给护士,排到等待队列中候诊。 (2) 护士从等待队列中取出一位病人的病历,该病人进入诊室就诊。 要求程序采用菜单方式,其选项及功能说明如下: (1) 排队------输入病人的病历号,加入到病人排队队列中 (2) 就诊-------病人排队队列中最前面的病人就诊,并将其从队列中删除。 (3) 查看排队------从队首到队尾列出所有的排队病人的病历号。 (4) 下班---------退出运行。 二、需求分析 1)运行环境(软、硬件环境) 软件:Microsoft Visual Studio//Microsoft Visual C++6.0; 硬件:计算机硬件系统(包括键盘等) 2)输入的形式和输入值的范围 输入形式:通过键盘键入测试数据 输入值范围:①字符型(char) 医生,护士 ②字符数组 病人病历号 3)输出的形式描述 输入通过显示计算机屏显示,医生选择相应功能之后,显示屏会显示出各种对应信息。 4)功能描述 病人到诊室,交给护士自己的病历表之后,护士登记病人的病历号,同时纳入队列中进行排队等待。当等到该病历号的病人进入诊室进行就诊时,系统删除前一位病人的病历号,同时下一位病人进入等待就诊阶段。如此反复,当时间到达下班时间之后,系统停止运行,医生操作退出系统!此过程中,医生可以随时调动系统数据,查看需要就诊的病人病历号及病人人数,此过程使用队列的遍历函数予以实现。 5)测试数据 分别选择验证相应功能的数据进行实验数据测试。 测试排队功能数据:(选择1) 病历号:100,101,102,103 测试输入错误时,系统显示:(选择12) 测试就诊功能数据:(选择2) 测试查看队列功能数据:(选择3) 测试下班功能数据:(选择4) 三、概要设计 1)抽象数据类型定义描述 (对各类的成员及成员函数进行抽象描述,参见书或ppt 及实验) ①template <class T> class Node { public: T data; //数据域 Node<T> *next; //指针域 }; ②template <class T> class LinkQueue { public: LinkQueue(); //构造函数,初始化一个空的链队列 ~LinkQueue(){}; //析构函数,释放链队中各结点的存储空间 void InQueue(T x); //将元素x入队 T OutQueue(); //将队头元素出队 T GetQueue(); //取链队列的队头元素 int Empty(){ if(front==NULL) return 1; return 0;}; //判断链队列是否为空 void Traverse(); //遍历函数 private: Node<T> *front, *rear; //队头和队尾指针 }; 2)功能模块设计(如主程序模块设计) ①头文件 ②类: 第一,结点类; 第二,链队列类; 第三,行医类: ③主函数 3)模块层次调用关系图 四、详细设计 实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算法。 结点类: template <class T> class Node { public: T data; //数据域 Node<T> *next; //指针域 }; 链队列类: template <class T> class LinkQueue { public: LinkQueue(); //构造函数,初始化一个空的链队列 ~LinkQueue(){}; //析构函数,释放链队中各结点的存储空间 void InQueue(T x); //将元素x入队 T OutQueue(); //将队头元素出队 T GetQueue(); //取链队列的队头元素 int Empty() { if(front==NULL) return 1; return 0; }; //判断链队列是否为空 void Traverse(); //遍历函数 private: Node<T> *front, *rear; //队头和队尾指针 }; template <class T> LinkQueue<T>::LinkQueue() { front=rear=NULL; } template <class T> void LinkQueue<T>::InQueue(T x) { Node<T> *s; s=new Node<T>; s->data=x; //申请一个数据域为x的结点s s->next=NULL; if(front==NULL)//空队列,新结点既是队头,又是队尾 { front=rear=s; } else { rear->next=s; //将结点s插入到队尾 rear=s; } } template <class T> T LinkQueue<T>::OutQueue() { Node <T> *p; T x; if (front==NULL) { cout<<"队空"<<endl; exit(0); } p=front; x=p->data; //暂存队头元素 front=front->next; //将队头元素所在结点摘链 if (front==NULL) rear=front; delete p; return x; } template <class T> void LinkQueue<T>::Traverse() { Node<T> *p; p=front; cout<<"正在排队的病人显示:"<<endl; while(p!=NULL) { cout<<p->data<<" "; p=p->next; } cout<<endl; } 行医类: class Hospitalize { private: LinkQueue <int> queue; // 病人队列 public: Hospitalize(){}; // 无参数的构造函数 ~Hospitalize(){}; // 析构函数 void StandInALine(); // 排队 void Cure(); // 就诊 void Display(); // 查看排队 }; void Hospitalize::StandInALine() { int num; // 病历号 cout<<"请输入病历号:"; cin>>num; // 输入排队病人 queue.InQueue(num); // 将病历号加入到病人排队队列中 } void Hospitalize::Cure() { if(queue.Empty()) { cout<<"现已没有病人在排队了!"<<endl; } else { int a; a=queue.OutQueue(); // 病人排队队列中最前面的病人就诊,并将其从队列中删除 cout<<a<<"号病人现在就医!"<<endl; } } void Hospitalize::Display() { queue.Traverse(); // 从队首到队尾列出所有的排队病人的病历号 cout<<endl; } 五、调试分析 包括调试过程中遇到的问题及解决的方法、算法的时间空间复杂性分析、经 验体会。 本实验中遇到问题: Q1:结点类中的成员设为私有导致后面的链队列类不可使用结点类的相关寒暑; A1:将结点类中的成员变量或成员函数全部设为公有;或者是将结点类设置为链队列的友元类。 本实验的时间复杂度为0(n), 空间复杂度为0(1); 本实验经验体会: 一个良好的开端对于程序的成功运行具有至关重要的作用。第一节课上,老师说,“有的同学如果想直接在VC上编写程序,而未经过之前的算法等相关准备的话是很难写成功的!”的确,想想自己平时编写程序的时候,如果直接就在VC上编写的话,程序写得很慢,效率会很低!所以,这个实验中,我尝试着按照老师讲的,首先分析了程序的相关要求,联系自己平时所学知识,很快把程序主体架构写出来了,这大大方便了后续的相关工作。在第二节课上,按照要求把相关函数详细代码写出,所以程序第二节课就写好了。所以,这个实验之后,我逐渐明白了在程序编写之前,做好适当的准备是至关重要的。 本实验中,通过上网查找和和同学讨论等方式,这个实验增强了自学能力,有助于提高自己的实践能力,运用知识的能力。 六、用户使用说明 详细列出每一步的操作说明。 第一,病人进入诊室,护士收集病历号并输入至本系统。即选择菜单栏中的“1”,从而实现将病人纳入到队列中去。 第二,当轮到某病历号的病人就诊时,医生可以通过查看未就诊,依然在队列中的病人的病历号,然后选择“2”,实现对该病人的就诊。 第三,该病人就诊完毕,系统删除该病人的信息,即病人出队,下一位病人可以进入就诊阶段。同时,医生可以通过功能键“3”,选择查看病人队列。 第四,当病人队列已无元素,医生下班了,就可以通过选择功能键“4”,从而实现对系统的关闭,系统停止运行。 七、测试结果 菜单显示: ①排队: ②就诊: ③查看队列: ④下班退出系统: 八、附录:程序设计源代码 #include<iostream> #include<string> #include<stdlib.h> using namespace std; template <class T> class Node { public: T data; //数据域 Node<T> *next; //指针域 }; template <class T> class LinkQueue { public: LinkQueue(); //构造函数,初始化一个空的链队列 ~LinkQueue(){}; //析构函数,释放链队中各结点的存储空间 void InQueue(T x); //将元素x入队 T OutQueue(); //将队头元素出队 T GetQueue(); //取链队列的队头元素 int Empty() { if(front==NULL) return 1; return 0; }; //判断链队列是否为空 void Traverse(); //遍历函数 private: Node<T> *front, *rear; //队列头指针,尾指针 }; template <class T> LinkQueue<T>::LinkQueue() { front=rear=NULL; //初始化为空 } template <class T> void LinkQueue<T>::InQueue(T x) { Node<T> *s; s=new Node<T>; s->data=x; //申请一个数据域为x的结点s s->next=NULL; if(front==NULL)//空队列,新结点既是队头,又是队尾 { front=rear=s; } else { rear->next=s; //将结点s插入到队尾 rear=s; } } template <class T> T LinkQueue<T>::OutQueue() { Node <T> *p; T x; if (front==NULL) { cout<<"队空"<<endl; exit(0); } p=front; x=p->data; //暂存队头元素 front=front->next; //将队头元素所在结点摘链 if (front==NULL) rear=front; delete p; return x; } template <class T> void LinkQueue<T>::Traverse() { Node<T> *p; p=front; cout<<"**正在排队的病人显示(按照病历号):"<<endl; while(p!=NULL) { cout<<p->data<<" "; p=p->next; } cout<<endl; } //医生工作 class Hospitalize { private: LinkQueue <int> queue; // 病人队列 public: Hospitalize(){}; // 无参数的构造函数 ~Hospitalize(){}; // 析构函数 void StandInALine(); // 排队 void Cure(); // 就诊 void Display(); // 查看排队 }; void Hospitalize::StandInALine() { int num; // 病历号 cout<<"请输入病历号:"; cin>>num; // 输入排队病人 queue.InQueue(num); // 将病历号加入到病人排队队列中 } void Hospitalize::Cure() { if(queue.Empty()) { cout<<"现已没有病人在排队了!"<<endl; } else { int a; a=queue.OutQueue(); // 病人排队队列中最前面的病人就诊,并将其从队列中删除 cout<<a<<"号病人现在就医!"<<endl; } } void Hospitalize::Display() { queue.Traverse(); // 从队首到队尾列出所有的排队病人的病历号 cout<<endl; } //主函数 void main() { Hospitalize a; int n; while (n!= 4) { cout<<"*****************************************************************"<<endl; cout<<"**你好!欢迎进入病人就医管理系统!"<<endl; cout << " 1. 排队--输入病人的病历号,加入到病人队列中!" << endl; cout << " 2. 就诊--病人排队队列中最前面的病人就诊,并将其从队列中删除!" << endl; cout << " 3. 查看排队--从队首到队尾列出所有的排队病人的病历号!" << endl; cout << " 4. 下班--退出运行!" << endl; cout<<"*****************************************************************"<<endl; cout << "--请选择:"; cin >> n; if(n<1||n>4) cout<<"**输入错误!请重新选择--"<<endl; cout<<endl; // 选择功能 switch(n) { case 1: a.StandInALine(); // 排队--输入病人的病历号,加入到病人队列中 break; case 2: a.Cure(); // 就诊--病人排队队列中最前面的病人就诊,并将其从队列中删除 break; case 3: a.Display(); // 查看排队--从队首到队尾列出所有的排队病人的病历号 break; } } system("pause"); } Welcome To Download !!! 欢迎您的下载,资料仅供参考! 精品资料
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:病人就医管理系统.doc
    链接地址:https://www.zixin.com.cn/doc/2302232.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork