您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 医院门诊候诊管理系统
重庆科技学院《C语言程序设计》课程设计报告学院:__专业班级:学生姓名:学号:设计地点(单位)__________________设计题目:_医院门诊候诊管理系统_______________________完成日期:2013年7月12日指导教师评语:_____________________________________________________________________________________________________________________________________________________________________________________________成绩(五级记分制):________________指导教师(签字):________________重庆科技学院课程设计任务书设计题目:医院门诊候诊的队列管理程序学生姓名课程名称C语言程序设计课程设计专业班级地点起止时间设计内容及要求【问题描述】要求采用先来先就诊的排队方式(就诊顺序与挂号单编号无关),假设挂号时编码是连续的,但由于同一个门诊科目有3个诊室,其中35(含35)岁以上的在第一诊室,35岁以下男患者进第二诊室,其它的进第三诊室,程序启动后显示下列菜单:【实现提示】1--挂号2--叫号3--分诊室4--显示各诊室队列信息5--统计当天就诊的患者情况(要求按性别进行统计和按任意年龄区段进行统计)6--结束程序选1时,提示用户在一行内输入姓名及挂号单编号;选2时,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列中删除选3时,进行诊室分配选4时,按队列顺序显示个诊室排队人的姓名、挂号单编号及所在诊室选5时,进行两种统计方法的选择,并进行必要的统计计算选6时,退出程序的运行要求1~5中每一个步骤完成后都能重新显示此选择菜单设计参数(1)系统分析、设计正确。(2)结果以图表方式显示。(3)界面简洁、美观。(4)报告格式规范。进度要求具体进度详见“校内独立实践教学日程安排表”参考资料[1]何钦铭颜晖.《C语言程序设计》.高等教育出版社.2008年[2]谭浩强张基温.《C语言程序设计教程》.高等教育出版社.2006年其它说明1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。2.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。教研室主任:指导教师:陈刘奎/焦晓军/陈应祖2013年6月12日摘要目录1总体设计.............................................................62详细设计.............................................................73程序模块显示...................................................84系统调试............................................................115结果分析............................................................126总结................................................................137程序源码............................................................141.总体设计一.系统功能分析:1:能实现挂号功能,在一行内输入病人的信息,输出挂号列表。2:能实现叫号功能,显示排在队列中第一位患者姓名、挂号单编号,将其从挂号序列中删除。3:可以根据病人的性别与年龄,分配诊室,并按队列顺序显示个诊室排队人的姓名、挂号单编号及所在诊室。4:可以按性别进行统计和按任意年龄区段进行统计。5:上述功能都可以重复执行。二.系统功能模块划分:1:功能描述介绍2:挂号3:叫号4:划分诊室5:显示病人就诊信息6.统计病人就诊信息2.详细设计(1):系统功能模块图1:2:3:4:5:6:3:程序模块显示:模块1:前端定义以及功能选择程序块:模块2:功能介绍introduce()函数:模块2:首先介绍该程序的相关工功能及如何操作模块3:挂号模块4:叫号模块5:分配诊室模块6:依队列顺序输出病人信息模块7:分别根据年龄和性别统计End__结束程序模块3:挂号功能input()函数:模块4:叫号功能jiaohao()函数模块5:分配诊室:fp()函数模块6:病人信息输出:statistic()函数模块7;统计功能:type_statistic()函数End:结束程序4系统调试调试过程中遇到的问题有如下一些:1.switch语句的case只是一个入口,后面要加break;2:出现错误“missing';'before'type'”(1):可能是应为将变量的申明放在输入输出之前(2):少了‘}’符号3:很多次连续使用输入函数接受数据时,后面一个函数接受的数据经常是乱码,后来发现是因为前一个函数接受数据完毕后会输入一个回车键,而后一个输入函数将ENTER键接受了,所以出现了乱码,在接受第一个数据后用接一个ch=getchar()或是gets(ch)将回车键类接受,问题就能得到解决;5结果分析1:关于设计的独到之处:(1)关于接受一个数据如何确保它是一个int型数据:接受整形数据需要使用scanf函数%d格式输入,而如果此时输入一个字符,会出现数字乱码,而不会报错,所以我将输入的数据类型定义为字符型接受,然后使用isdigit函数判断该字符是否为字符型数字,如果是,用自定义change函数将该字符型数字转化为整形数字。如果不是,重新执行以上操作输入及判断的操作,如此可以确保得到的最终数据是一个int型数据。(总结独到的设计特点和不足之处。)2.关于该程序的不足之处:(1):输入时的性别框设患者为男性时输入“man”,可是此程序只能识别字符串“man”.由于我是使用strcmp函数将输入的字符串与man做比较,如果相同则判定其为男性患者如果输入时在man后加空格或其他字符,后续的关于性别的程序块会识别错误。(2):再者,当输入病人的信息,如果二位病人的挂号编号重复时,程序不会提示出错,这也是一个不足所在6总结经过这次程序设计,我们总结以下几点:1:编程需要细心与耐心,以及平时要养成良好的编程习惯。因为编程序是一件很需要耐心与细心的事情,一个错误经常需要长时间去测试、检验才能找到出错之处,而最好的办法就是通过良好的编程习惯以及耐心减少错误出现的频率2:编程很注重与他人的合作,交流。一个人常会被自己的习惯思维所局限,交流与合作通过思维碰撞和知识互补可以拓宽自己的思路,拓展自己的知识面,一个人因为自己的习惯思维,常会对自己犯的错误视为不见,而通过别人的帮助检测能够帮助较快的找到错误所在。程序源码:#includestdio.h#includestdlib.h#includectype.h#includestring.h#defineN100intS1=0,S2=0,S3=0,man=0,woman=0,pl=0,g=0;//定义s为诊室,p1指针intk;structhos{charname[15];//患者姓名charsex[10];//患者性别charnum[10];//挂号单编号charyear[10];//患者年龄introom;//被分到的诊室号};structhosh[N];structhos*p=&h[0];voidintroduce()//功能介绍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);}voidrun(){voidintroduce();voidinput();voidjiaohao();voidfp();voidstatistic();voidtype_statistic();charfunction='1',j[10];while(function){switch(function){case'1':input();break;case'2':jiaohao();break;case'3':fp();break;case'4':statistic();break;case'5':type_statistic();break;case'6':exit(0);break;default:system(cls);//清屏printf(\n\terror\n\n请重新输入:);}printf(请选择功能);introduce();function=getchar();gets(j);while(isdigit(function)==0)//isdigit(function):判断function字符是不是数字{printf(您输入有误,请重新输入);function=getchar();gets(j);}}}voidinput(){intchange(char);//intd;chari,j[8],s[15];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++){printf(第%2d位病人:\n,k);printf(姓名:);strcpy(p[pl].name,gets(s));printf(编号:);strcpy(p[pl].num,gets(s));/*for(d=pl;d=0;d--){if(p[pl].num==p[d].num&&pl!=d)printf(error);}*/printf(性别:);strcpy(p[pl].sex,gets(s));printf(年龄:);strcpy(p[pl].year,gets(s));pl++;}printf(已经挂号的病人\n);for(k=g;kpl;k++)printf(第%2d位姓名:%s挂号号码%s\n,k+1-g,p[k].name,p[k].num);system(pause);//暂停system(cls);//清屏}voidjiaohao(){if(g==pl){system(cls);printf(所有病人都已经分配完毕\n);return;}printf(病人%s已前往就诊挂号号码:%5s\n\n,p[g].name,p[g].num);g++;printf(剩余%2d位等待叫号的病人\n,pl-g);for(k=g;kpl;k++)printf(挂号排序第%2d位姓名:%s挂号号码:%5s\n,k+1-g,p[k].name,p[k].num);system(pause);system(cls);}voidfp()//分配诊室:fp()函数{S1=0;S2=0;S3=0;for(k=0;kg;k++){if(atoi(p[k].year)=35){S1++;p[k].room=1;
本文标题:医院门诊候诊管理系统
链接地址:https://www.777doc.com/doc-5791578 .html