医院门诊候诊的队列管理程序-课程设计实验报告_第1页
医院门诊候诊的队列管理程序-课程设计实验报告_第2页
医院门诊候诊的队列管理程序-课程设计实验报告_第3页
医院门诊候诊的队列管理程序-课程设计实验报告_第4页
医院门诊候诊的队列管理程序-课程设计实验报告_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上 目录 1前言 12 2设计思想 3设计过程与分析 4总结和体会5程序清单 题目:医院门诊候诊的队列管理程序 学生姓名 李志豪课程名称C语言程序设计课程设计专业班级11级电子2班设计内容及要求【问题描述】要求采用先来先就诊的排队方式(就诊顺序与挂号单编号无关),假设挂号时编码是连续的,但由于同一个门诊科目有3个诊室,其中35(含35)岁以上的在第一诊室,35岁以下男患者进第二诊室,其它的进第三诊室,程序启动后显示下列菜单:【实现提示】1挂号2叫号3分诊室4显示各诊室队列信息5统计当天就诊的患者情况(要求按性别进行统计和按任意年龄区段进行统计)6结束程序选1时,提示用户

2、在一行内输入姓名及挂号单编号;选2时,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列中删除选3时,进行诊室分配选4时,按队列顺序显示个诊室排队人的姓名、挂号单编号及所在诊室选5时,进行两种统计方法的选择,并进行必要的统计计算选6时,退出程序的运行要求15中每一个步骤完成后都能重新显示此选择菜单下达日期:2013年10月9日,完成日期:2013年11月8日 前 言一、意义和目的C语言是电子科学与技术专业的重要专业基础课。在很多后续课程中,都要使用到C语言。学生通过对C语言的学习,已经具备了使用C语言编写简单的应用程序的能力。为了加强程序设计基础,开设课程设计课,使学生对C语言有更全面

3、的理解,进一步提高运用C语言编程解决实际问题的能力,同时,为后续课程的学习夯实基础。课程设计目的:Ø 提高用程序设计解决实际问题的能力。Ø 通过提出算法、指定输入输出来设计一个解决方案。Ø 用C语言合理地开发两个简洁有效的程序代码来实现该设计。Ø 测试程序是否工作且满足设计指标并评价其效率。 二、目标 完成本课程设计的学生应能在以下几方面证明你们的能力:A、分析问题。各种简单的与计算机有关的案例中所需要的输出结果,把大问题分解成小问题,使用自顶向下或类似设计方法给出模块化或计划。 B、提出算法执行特定任务。模块表示为算法,使用自顶向下或伪代码等设计手段将

4、模块细化成更详细的成分,清楚地表明顺序、选择和重复等到控制结构。 C、把一个算法变为用C语言编写的结构化程序。 D、用合适的测试方法检查程序是否符合最初的要求,为不合适数据设计错误陷阱,并提供错误信息来帮助用户。 E、写出清晰的用户文档,确保用户或者通过遵循程序中的指示或者使用程序设计者编写的文档能成功地运行程序。 F、写出技术文档,对程序中主要标示符的含义或作用加以说明,并提供一个完整的程序流程图。 G、调试程序、测试数据过程成功 设计思想 一系统功能分析:1:能实现挂号功能,在一行内输入病人的信息,输出挂号列表。2:能实现叫号功能,显示排在队列中第一位患者姓名、挂号单编号,将其从挂号序列中

5、删除。3:可以根据病人的性别与年龄,分配诊室,并按队列顺序显示个诊室排队人的姓名、挂号单编号及所在诊室。4:可以按性别进行统计和按任意年龄区段进行统计。5:上述功能都可以重复执行。 模块3:挂号 1:模块4:叫号模块2:首先介绍该程序的相关工功能及如何操作 2: 模块5:分配诊室 3:模块6:依队列顺序输出病人信息 4:模块7:分别根据年龄和性别统计 5: End _结束程序 6: 设计过程与分析程序模块显示:模块1:前端定义以及功能选择程序块:模块2:功能介绍introduce()函数:模块3:挂号功能input ()函数:模块4:叫号功能 jiaohao()函数模块5:分配诊室:fp()函

6、数模块6:病人信息输出:statistic()函数模块7;统计功能:type_statistic()函数End :结束程序系统调试调试过程中遇到的问题有如下一些:1. switch语句的case只是一个入口,后面要加break;2:出现错误“missing '' before 'type'”(1) :可能是应为将变量的申明放在输入输出之前(2) :少了符号3:很多次连续使用输入函数接受数据时,后面一个函数接受的数据经常是乱码,后来发现是因为前一个函数接受数据完毕后会输入一个回车键,而后一个输入函数将ENTER 键接受了,所以出现了乱码,在接受第一个数据后用接一个

7、ch=getchar()或是gets(ch)将回车键类接受,问题就能得到解决;结果分析1:关于设计的独到之处:(1)关于接受一个数据如何确保它是一个int型数据:接受整形数据需要使用scanf函数%d格式输入,而如果此时输入一个字符,会出现数字乱码,而不会报错,所以我将输入的数据类型定义为字符型接受,然后使用isdigit函数判断该字符是否为字符型数字,如果是,用自定义change函数将该字符型数字转化为整形数字。如果不是,重新执行以上操作输入及判断的操作,如此可以确保得到的最终数据是一个int 型数据。(总结独到的设计特点和不足之处。)2. 关于该程序的不足之处:(1) :输入时的性别框设患

8、者为男性时输入“man”,可是此程序只能识别字符串“man”.由于我是使用strcmp函数将输入的字符串与"man"做比较,如果相同则判定其为男性患者如果输入时在"man"后加空格或其他字符,后续的关于性别的程序块会识别错误。(2) :再者,当输入病人的信息,如果二位病人的挂号编号重复时,程序不会提示出错,这也是一个不足所在。 总结与体会经过这次程序设计,我总结以下几点:1:编程需要细心与耐心,以及平时要养成良好的编程习惯。因为编程序是一件很需要耐心与细心的事情,一个错误经常需要长时间去测试、检验才能找到出错之处,而最好的办法就是通过良好的编程习惯以及耐

9、心减少错误出现的频率2:编程很注重与他人的合作,交流。一个人常会被自己的习惯思维所局限,交流与合作通过思维碰撞和知识互补可以拓宽自己的思路,拓展自己的知识面,一个人因为自己的习惯思维,常会对自己犯的错误视为不见,而通过别人的帮助检测能够帮助较快的找到错误所在。体会:这次的课程设计给了我很大的收获,很大的进步,可以更加自如地运用所学到的知识,虽然还有很多的地方不懂,有很多的地方需要改进,但是这是一个很好的炼金石,不管程序有多复杂,有多烦都要尽自己能力去搞懂,虽然成果不是很完善,希望日后能有能力完成得更加完美和成功。 程序清单程序源码:# include <stdio.h># incl

10、ude <stdlib.h># include <ctype.h> # include <string.h># define N 100int S1=0,S2=0,S3=0,man=0,woman=0,pl=0,g=0; /定义s为诊室,p1指针int k;struct hoschar name15; /患者姓名char sex10; /患者性别char num10; /挂号单编号 char year10; /患者年龄int room; /被分到的诊室号;struct hos hN;struct hos *p=&h0;void introduce()

11、 /功能介绍introduce()函数printf(" n 功 能 选 择 n");printf("n");printf(" 1-挂号 n");printf(" 2-叫号 n");printf(" 3分诊室 n");printf(" 4显示各诊室队列信息 n");printf(" 5统计当天就诊患者情况(要求按性别和任意年龄区段进行统计 n");printf(" 6结束程序 n");printf("n");void

12、run()void introduce();void input ();void jiaohao();void fp();void statistic();void type_statistic();char function='1',j10;while (function)switch(function)case '1':input();break;case '2':jiaohao();break;case '3':fp();break;case '4':statistic();break;case '5

13、':type_statistic();break;case '6':exit(0);break;default:system("cls"); /清屏printf("nterrornn请重新输入: ");printf("请选择功能");introduce();function=getchar();gets(j);while(isdigit(function)=0)/isdigit(function):判断function字符是不是数字printf("您输入有误,请重新输入");function

14、=getchar();gets(j);void input()int change(char);/int d;char i,j8,s15;printf("请输入需要挂号的病人人数(请输入0到9之间的数):");i=getchar();gets(j);while(isdigit(i)=0)/isdigit(i):判断i字符是不是数字printf("您输入有误,请重新输入");i=getchar();gets(j);printf("请输入%d位病人的个人信息n",change(i);for(k=1;k<=change(i);k+)p

15、rintf("第%2d位病人:n",k);printf("姓名 :");strcpy(,gets(s);printf("编号 :");strcpy(ppl.num,gets(s);/*for(d=pl;d>=0;d-)if(ppl.num=pd.num&&pl!=d)printf("error");*/printf("性别 :");strcpy(ppl.sex,gets(s);printf("年龄 :");strcpy(ppl.year,

16、gets(s);pl+;printf("已经挂号的病人n");for(k=g;k<pl;k+)printf("第%2d位 姓名: %s挂号号码%sn",k+1-g,,pk.num);system("pause");/暂停system("cls");/清屏void jiaohao()if(g=pl)system("cls");printf("所有病人都已经分配完毕n");return;printf("病人%s已前往就诊 挂号号码:%5snn&quo

17、t;,,pg.num);g+;printf("剩余%2d位等待叫号的病人n",pl-g);for(k=g;k<pl;k+)printf("挂号排序第%2d位 姓名:%s挂号号码: %5sn",k+1-g,,pk.num);system("pause");system("cls");void fp () /分配诊室:fp()函数S1=0;S2=0;S3=0;for(k=0;k<g;k+)if(atoi(pk.year)>=35)S1+; pk.room=1 ; /其中35

18、(含35)岁以上的患者在第一诊室else if(strcmp(pk.sex,"man")=0)S2+;pk.room=2 ; /35岁以下男患者进第二诊室elseS3+;pk.room=3;/其它的患者进第三诊室printf("病人%s被分配在第%d诊室n",,pk.room,pk.num);system("pause");system("cls");void statistic() /病人信息输出:statistic( )函数for(k=0;k<g;k+)printf(" 第%2d名

19、患者 姓名:%s挂号编号:%s 诊室:第%d诊室n",k+1,,pk.num,pk.room);printf(" 第一诊室%2d人n",S1);printf(" 第二诊室%2d人n",S2);printf(" 第三诊室%2d人n",S3);system("pause");system("cls");void type_statistic() /统计功能:type_statistic()函数int year,high=0,low=0;man=0;woman=0;for(k=0;k<g;k+)if(strcmp(pk.sex,"man")=0)man+;else woman+;printf("请输入一个界限年龄:");scanf("%d",&year);for(k=0;k<g;k+)if(atoi(pk.year)>=year)hig

温馨提示

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

评论

0/150

提交评论