病人排队程序设计报告.doc_第1页
病人排队程序设计报告.doc_第2页
病人排队程序设计报告.doc_第3页
病人排队程序设计报告.doc_第4页
病人排队程序设计报告.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2010年XXX大学程序设计综合实习报告设计题目: 病人看病模拟程序专 业 班 级 姓 名 学 号 起止时间 20092010 学年 第 三 学期目录一、课程题目:3二、任务分配3三、需求分析4四、概要设计44.1抽象数据类型定义:44.2 主程序5五、详细设计6六、调试分析116.1116.2126.312七、用户手册137.1 说明137.2 注意事项13八、测试结果13九、参考文献14摘要:在现代化中,信息的收集、管理在工作将发挥越来越重要的作用,能否高效地管理海量信息已成为企事业单位能否高效运行的关键所在。而利用计算机技术,实现管理系统的自动化、规范化就是最好的解决方法。针对部分医疗机构就诊排队混乱的问题专门设计了该程序。本报告主要介绍如何正确使用病人看病模拟程序主,以解决排队看病秩序混乱问题。本程序功能全面、分类科学。它集显示、输入、添加、删除等各种处理为一体,信息维护起来非常方便。关键字:程序;排队就诊;使用说明;一、课程题目:病人排队看病主要重复两件事: (1)病人到达珍室,将病历本交给护士,排队等待队列中候诊;(2)护士从等待队列中取出下一位病人的病历,该病人就诊;要求编程模拟这一过程。程序采用菜单选择方式,其选项功能说明如下:(1)排队-输入排队病人的病历号,加入到病人排队队列中;(2)就诊-最前面的病人就诊,并从队列中删除;(3)查看队列-从队首到队尾列出所有排队病人病历号;(4)不在排队,余下依次就诊-从队首到队尾列出所有派队病人病历号,退出运行;(5)下班-退出运行; 二、任务分配代码编写:程序调试:报告书写:三、需求分析(1)该程序主要是为了方便病人排队就医,解决排队混乱问题而设计;(2)能够实现病人信息的有序管理,插入、删除、显示;(3)操作人员需要手动输入、删除病人序号。四、概要设计4.1抽象数据类型定义:ADT Queue数据对象:D=ai | ai ElemSet , i=1,2,n, n0数据关系:R1= | ai-1, aiD,i=2,n约定其中ai为队列头,an段为队列列尾。基本操作:InitQueue(&Q)操作结果:构造一个空队列Q。DestroyQueue(&Q)初始条件:队列Q已存在。操作结果:队列Q被销毁,不再存在。QueueEmpty(Q)初始条件:队列Q已存在。操作结果:若Q为空队列,则返回TRUE,否则返回FALSEGetHead(Q,&e)初始条件:Q为非空队列。操作结果:用e返回Q的队头元素。EnQueue(Q,&e)初始条件:队列Q已存在。操作结果:插入元素e为Q的新的队尾元素。DeQueue(&Q,&e)初始条件:Q为非空队列。操作结果:删除Q的队头元素,并用e 返回其值。 Bzpd(&Q)初始条件:Q为满队列。不能再加入人数。pdrenshu(&Q)初始条件:队列Q存在。操作结果:输出正在排队等候的人数。Reshu(&Q)初始条件:队列Q存在。操作结果:输出一天内排队的人数。show(&Q)初始条件:队列Q存在。操作结果:输出排队等候人的信息。accident(&Q)初始条件:因发生意外情况操作结果:队列销毁,退出程序。workoff(&Q)初始条件:下班时间到了。操作结果:退出程序。4.2 主程序Viod main() LinkQueue x;InitQueue(x);int m=1;while(m=!0) switch(menubar()case 1:EnQueue(x);break;case 2:DeQueue(x);break;case 3:show(x);break;case 4:bzpd(x);break;case 5:Reshu(i);break;case 6:pdrenshu(x);break;case 7:accident(x);exit(0);break;case 8:workoff(x);exit(0);break;五、详细设计#include #include#include#include#define max 50#define OK 1#define TRUE 1#define FALSE -1#define ERROR -1#define OVERFLOW -2typedef char QElemType;typedef int status;char menubar()/菜单函数int c=0;printf(n*n);printf(n*欢迎进入就诊模拟系统*nn);printf( 1:排队n);printf( 2:就诊n);printf( 3:查看队列n);printf( 4:不再排队n);printf( 5:查询今天已有人数n);printf( 6:正在候诊的人数n);printf( 7:意外情况,坐诊取消n);printf( 8:下班n);printf(n*n);printf(n 特注: 请输入数字选项(1-8):);doscanf(%d,&c); getchar();if(!(c=1&c=1&cnext=NULL;return OK;int i=0;status EnQueue(LinkQueue &Q)if(iname); printf(请输入年龄:); scanf(%d,&p-age);printf(请输入性别(男性请输入Mm,女性请输入Ff): );scanf(%s,p-sex);p-next=NULL;Q.rear-next=p;Q.rear=p;+i;return OK;elseprintf(今日就诊人数已达上限!n);return FALSE;status DeQueue(LinkQueue &Q)QueuePtr p;if(Q.front=Q.rear)printf(此时无候诊病人);return ERROR;p=Q.front-next;if(p!=Q.rear)Q.front-next=p-next;elseQ.rear=Q.front;printf(请%s就诊,p-name);free(p);return OK;status QueueEmpty(LinkQueue Q)if(Q.front=Q.rear)return TRUE;elsereturn FALSE;status show(LinkQueue Q) if(Q.front=Q.rear)printf(无候诊病人); return 0;QueuePtr a;QueuePtr b;a=Q.front;Q.front=Q.front-next;b=Q.rear;printf( 姓名 年龄 性别n);printf(-n);doprintf(%s %-4d %sn,Q.front-name,Q.front-age,Q.front-sex);if(Q.front=Q.rear)return ERROR;Q.front=Q.front-next;while( Q.front!=Q.rear);printf(%s %-4d %sn,Q.front-name,Q.front-age,Q.front-sex);Q.front=a;Q.rear=b;return 0;void Reshu(status a)printf(今天已有人数n);printf(%d人,a);void pdrenshu(LinkQueue Q)int c=0;if(Q.front=Q.rear)printf(无候诊病人);printf(%d人,c);elseQueuePtr a;QueuePtr b;a=Q.front;Q.front=Q.front-next;b=Q.rear;while(Q.front!=Q.rear)+c;Q.front=Q.front-next;+c;printf(%d,c);Q.front=a;Q.rear=b;status DestroyQueue(LinkQueue Q)QueuePtr p;if(Q.front=Q.rear)i=max;return OK;elsedop=Q.front-next;if(p!=Q.rear)Q.front-next=p-next;elseQ.rear=Q.front;free(p);while(Q.rear!=Q.front);free(Q.rear);Q.rear=Q.front;i=max;return OK;void accident(LinkQueue Q)DestroyQueue(Q);printf(抱歉,因发生意外情况,今日就诊取消!nn);void workoff(LinkQueue Q)DestroyQueue(Q);printf(现在已下班,后续病人无法继续就诊!nn);void bzpd(LinkQueue Q)printf(临近下班,停止排队,请明日再来,如给您带来不便,敬请谅解!n);i=max;void main()printf(n 制作: XXX XXX n);LinkQueue x;InitQueue(x);int m=1;while(m=!0) switch(menubar()case 1:EnQueue(x);break;case 2:DeQueue(x);break;case 3:show(x);break;case 4:bzpd(x);break;case 5:Reshu(i);break;case 6:pdrenshu(x);break;case 7:accident(x);exit(0);break;case 8:workoff(x);exit(0);break;六、调试分析6.1输入name1、name2、name3三个病人姓名,输出的显示结果错误。错误的输出结果:经调试,正确结果如下:6.2 输入操作指令不符合规则时,出现死循环在scanf语句后添加,getchar语句,问题得到一定程度解决,但当输入为一串英文字母时,返回的错误提示个数为英文字母的个数。6.3 当所有病人就诊完成,再次查看队列现有人数时出现如下错误“就诊函数”出现错误,经调试,返回结果正确!七、用户手册7.1 说明请用户根据界面提示数字指令操作,大致意义如下:数字1:插入病人信息;数字2:删除病人信息;数字3:显示正在排队的病人信息;数字4:临近下班,排队停止,现有病人还可依次就诊;数字5:查询今日已经就诊人数(已经就诊和正在排队人数);数字6:查询正在候诊的病人数;数字7:意外发生,就诊取消,排队队列销毁;数字8:下班时间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论