C语言课程设计用于医院门诊候诊的队列管理程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C语言课程设计课程设计题目:用于医院门诊候诊的队列管理程序姓名:学号:班级:指导老师:完成日期:1目录组员及其任务分配:..................................................................................................2一、设计目的.............................................................................................................2二、需求分析.............................................................................................................2三、总体设计(程序设计组成框图、流程图)...........................................................3四、详细设计.............................................................................................................5源程序代码(分文件展示).....................................................................................10调试测试展示...........................................................................................................142组员及其任务分配:函数调用选项voidra()statistics(统计当天就诊患者情况)分程序叫号Callnumber(叫号),分诊室CRoom(分诊室)分程序registration(挂号)菜单界面voidBUI()一、设计目的数据类型、分支控制、循环控制、函数的定义及调用、结构体及数组、指针、文件操作、编译预处理等。达到系统理解、综合运用课程知识的学习目标;学会用C语言程序解决实际问题的方法;掌握程序的局部测试、调试方法,建立程序系统调试、测试的基本概念和思想,学会较大程序的系统测试和调试方法。二、需求分析方便医院门诊候诊的队列管理,采用先来先就诊的排队方式(就诊顺序与挂号单编号无关),假设挂号时编码是连续的,但由于同一个门诊科目有3个诊室,其中35(含35)岁以上的在第一诊室,35岁以下男患者进第二诊室,其它的进第三诊室,程序启动后显示下列菜单:【实现提示】1--挂号32--叫号3--分诊室4--显示各诊室队列信息5--统计当天就诊的患者情况(要求按性别进行统计和按任意年龄区段进行统计)6--结束程序选1时,提示用户在一行内输入姓名及挂号单编号;选2时,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列中删除选3时,进行诊室分配选4时,按队列顺序显示个诊室排队人的姓名、挂号单编号及所在诊室选5时,进行两种统计方法的选择,并进行必要的统计计算选6时,退出程序的运行要求1~5中每一个步骤完成后都能重新显示此选择菜单三、总体设计(程序设计组成框图、流程图)(1)系统功能分析:1.能实现挂号功能,提示用户在一行内输入姓名及挂号单编号,并储存;2.能实现叫号功能,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列中删除;3.根据病人的性别与年龄,能实现诊室的分配;4.能按队列顺序显示各个诊室排队人的姓名、挂号单编号及所在诊室。5.按性别进行统计和按任意年龄区段进行统计,并打印输出;6.完成每个步骤之后都能重新显示此选择菜单。4(2)总体设计框图•模块一、主界面菜单调用:voidBUI()模块二、挂号系统voidregistration()模块三、叫号系统voidCallnumber()模块四、分诊室系统按照年龄和性别进行分诊voidCRoom()模块五:显示各诊室患者排队信息voidshow()模块六:分性别和任意年龄进行统计统计当天就诊患者情况voidstatistics()7.结束程序voidend()5(3)流程图模块一、主界面调用voidra()流程图主界面模块,显示分程序模块,通过函数调用的选择项,输入相应的数字即可进入对应的功能模块,模块的运行应当是先1.挂号,2.叫号,3.分诊室,分配分诊室后就可以显示队列信息,之后也可选择输入年龄统计当天就诊患者情况,运行结束后就是可选择6结束程序。四、详细设计模块二、挂号voidregistration()•模块一、主界面菜单调用:voidBUI()模块二、挂号voidregistration()模块三、叫号voidCallnumber()模块四、分诊室voidCRoom()模块五、显示队列信息voidshow()模块六、统计当天就诊患者情况voidstatistics()模块七、结束程序voidend()输入挂号编号性别sex姓名name年龄year输入需要挂号病人的人数(i):1-10人6挂号模块,是通过结构体数组记录患者的信息。其中需要输入患者的姓名,性别,挂号单编号(就诊顺序与挂号单编号无关),并且,先输入需要挂号几个病人,每次挂号病人最多十个,并添加判断单次是否在预先输入需要挂号的病人的范围之内,以此来控制输入。模块运行输入挂号的次数,输入完毕后,即可返回主界面。模块三、叫号voidCallnumber()病人已经显示队列第一位患者显示队列第一位患者菜单界面判断病人是否分配7叫号模块,首先把挂号后的第一病人进行叫号,之后能实现显示之后剩余等待叫号的的病人并排在队列中第一位患者姓名、挂号单编号,然后,通过文件写入公共将已经叫号就诊的病人保存在1.txt中实现病人叫号信息的保存。叫号完毕之后将跳过已经挂号的病人,叫号模块运行完毕时,回车即可返回主菜单界面。模块四、分诊室voidCRoom()是否是否门诊科目有3个诊室,通过判断年龄其中35(含35)岁以上的在第一诊室,后再将剩余的患者进行性别判断进行第二、第三诊室的分配,35岁以下男患者进第二诊室,其它的进第三诊室分诊室在35男性第一诊室第二诊室第三诊室主界8模块五、显示队列信息voidshow()显示各患者队列及诊室信息模块,并且显示每名患者的详细信息,所显示的信息分为三个部分展示。而且模块运行完毕后,按回车回到主界面。模块六、统计当天就诊患者情况voidstatistics()是显示分诊室所匹配的诊室信息。第一诊室人数a及患者信息第二诊室人数b及患者信息第三诊室人数t及患者信息主界年龄模块六、统计当天就诊患者情况voidstatistics()先输入年龄界限输出高于输出低于输出男性患者人数输出女性患者人数主界面9否统计模块,先输出共有多少位患者叫号就诊,统计男性患者和女性患者各有多少位,然后再判断高于或等于所输入年龄分界线和低于所输入年龄分界线的人数,最后按回车回到主界面。在小组所设计分程序模块为叫号voidCallnumber()以及显示分诊室模块设计voidCRoom()函数调用关系:模块三、叫号函数:voidCallnumber()函数的具体设计:先清屏,显示窗口标题栏分程序名称,使用全局变量e和c,e表示叫号当中的人数,判断病人是否分配完毕,然后将挂号后拍在第一位的病人叫号,之后的病人继续等待叫号,并且将叫号的病人写入到文件1.txt中,变量c自加后再用e–c判断剩余等待挂号的人数。最后按回车键回到主界面。10模块四、分诊室函数:voidCRoom()函数的具体设计:先判断叫号当值变量c的值是否为0,如若为0表示c并未自加,也就表示目前没有病人叫号,提示提示请先叫号!定义全局变量fe之后判断性别,年龄使之分配到各个诊室,全局变量fe可避免病人重复分配到各个诊室,引发错误,如果多个已叫号病人可一次性分配,最后按回车键回到主界面。源程序代码(分文件展示)#includestdio.h//头文件#includestdlib.h#includectype.h#includestring.h#includetime.h#includewindows.hinte=0,a=0,b=0,t=0,c=0,fe=0;intk;structhos{charname[16];//病人姓名charsex[11];//病人性别charnum[11];//病人挂号单编号charyear[11];//病人年龄introom;//病人被分到的诊室号};structhosh[100];11structhos*p=&h[0];voidCallnumber()//叫号分系统{SetConsoleTitle(2.叫号系统);//窗口标题栏system(cls);//清屏intk;if(c==e){system(cls);printf(所有病人都已经分配完毕\n);system(pause);return;}printf(病人(%s)已前往就诊挂号号码:%s\n\n,p[c].name,p[c].num);FILE*fp=fopen(1.txt,a+);if(fp==0){printf(can'topenfile\n);}fseek(fp,0,SEEK_END);intz=fgetc(fp);//从文件中获取一个字符if(z!=EOF)//查看文件是否为空{fprintf(fp,姓名);fprintf(fp,\t性别);fprintf(fp,\t挂号单);fprintf(fp,\t年龄);fprintf(fp,\n);}12fwrite(p[c].name,strlen(p[c].name),1,fp);//将姓名输出到文件中fprintf(fp,\t);fwrite(p[c].sex,strlen(p[c].sex),1,fp);fprintf(fp,\t);fwrite(p[c].num,strlen(p[c].num),1,fp);fprintf(fp,\t);fwrite(p[c].year,strlen(p[c].year),1,fp);fprintf(fp,\n\n);fclose(fp);c++;printf(\n--------------------------剩余【%d】位等待叫号的病人---------------------------\n,e-c);for(k=c;ke;k++)printf(目前等待叫号排序第【%d位】姓名:%s挂号号码:%s\n,k+1-c,p[k].name,p[k].num);system(pause);system(cls);}voidCRoom()//分配诊室:fp()函数{system(cls);SetConsoleTitle(3.诊室分配);printf(\n--------------------------诊室分配结果---------------------------\n);if(c==0){13printf(Error!请先叫号!\n);}for(fe;fec;fe++){if(atoi(p[fe].year)=35)//字符串转换为整数{a++;p[fe].room=1;}//其中35(含35)岁以上的患者在第一诊室elseif(strcmp(p[fe].sex,男)==0){b++;p[fe].room=2;}//35岁以下男患者进第二诊室else{t++;p[fe].room=3;}//其它的患者进第三诊室printf(\n病人(%s)性别:%s挂号编号:%s已被分配到第【%d】诊室\n,p[fe].name,p[fe].sex,p[fe].num,p[fe].room);}system(pause);system(cls);}14调试测试展示:通过

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功