




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计课程设计题目:用于医院门诊候诊的队列管理程序姓名: 学号: 班级: 指导老师: 完成日期: 目录组员及其任务分配:3一、设计目的3二、需求分析3三、总体设计(程序设计组成框图、流程图)4四、详细设计6源程序代码(分文件展示)10调试测试展示13组员及其任务分配: 吕智星:函数调用选项void ra() statistics(统计当天就诊患者情况)施贝贝: 分程序 叫号Callnumber(叫号) ,分诊室CRoom(分诊室)田渠:分程序 registration(挂号) 朱港平:菜单界面void BUI() 一、设计目的数据类型、分支控制、循环控制、函数的定义及调用、结构体及数组、指针、文件操作、编译预处理等。达到系统理解、综合运用课程知识的学习目标;学会用C语言程序解决实际问题的方法;掌握程序的局部测试、调试方法,建立程序系统调试、测试的基本概念和思想,学会较大程序的系统测试和调试方法。二、需求分析方便医院门诊候诊的队列管理,采用先来先就诊的排队方式(就诊顺序与挂号单编号无关),假设挂号时编码是连续的,但由于同一个门诊科目有3个诊室,其中35(含35)岁以上的在第一诊室,35岁以下男患者进第二诊室,其它的进第三诊室,程序启动后显示下列菜单:【实现提示】1挂号 2叫号 3分诊室4显示各诊室队列信息5统计当天就诊的患者情况(要求按性别进行统计和按任意年龄区段进行统计)6结束程序选1时,提示用户在一行内输入姓名及挂号单编号;选2时,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列中删除选3时,进行诊室分配选4时,按队列顺序显示个诊室排队人的姓名、挂号单编号及所在诊室选5时,进行两种统计方法的选择,并进行必要的统计计算选6时,退出程序的运行要求15中每一个步骤完成后都能重新显示此选择菜单 三、总体设计(程序设计组成框图、流程图)(1)系统功能分析:1. 能实现挂号功能,提示用户在一行内输入姓名及挂号单编号,并储存;2. 能实现叫号功能,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列中删除;3. 根据病人的性别与年龄,能实现诊室的分配;4. 能按队列顺序显示各个诊室排队人的姓名、挂号单编号及所在诊室。5. 按性别进行统计和按任意年龄区段进行统计,并打印输出;6. 完成每个步骤之后都能重新显示此选择菜单。(2)总体设计框图 (3)流程图 模块一、主界面调用void ra()流程图 主界面模块,显示分程序模块,通过函数调用的选择项,输入相应的数字即可进入对应的功能模块,模块的运行应当是先1.挂号,2.叫号,3.分诊室,分配分诊室后就可以显示队列信息,之后也可选择输入年龄统计当天就诊患者情况,运行结束后就是可选择6结束程序。四、详细设计 模块二、挂号void registration( )输入需要挂号病人的人数(i):1-10人 主界面BUI()i+ 如果i=y? 是 否统计模块,先输出共有多少位患者叫号就诊,统计男性患者和女性患者各有多少位,然后再判断高于或等于所输入年龄分界线和低于所输入年龄分界线的人数,最后按回车回到主界面。在小组所设计分程序模块为叫号void Callnumber( )以及显示分诊室模块设计void CRoom( )函数调用关系:模块三、叫号函数:void Callnumber()函数的具体设计:先清屏,显示窗口标题栏分程序名称,使用全局变量e和c,e表示叫号当中的人数,判断病人是否分配完毕,然后将挂号后拍在第一位的病人叫号,之后的病人继续等待叫号,并且将叫号的病人写入到文件1.txt中,变量c自加后再用e c判断剩余等待挂号的人数。最后按回车键回到主界面。模块四、分诊室函数:void CRoom()函数的具体设计:先判断叫号当值变量c的值是否为0,如若为0表示c并未自加,也就表示目前没有病人叫号,提示提示请先叫号! 定义全局变量fe之后判断性别,年龄使之分配到各个诊室,全局变量fe可避免病人重复分配到各个诊室,引发错误,如果多个已叫号病人可一次性分配,最后按回车键回到主界面。源程序代码(分文件展示)# include /头文件# include # include # include #include #include windows.hint e = 0, a = 0, b = 0, t = 0, c = 0,fe=0;int k;struct hoschar name16; /病人姓名char sex11; /病人性别char num11; /病人挂号单编号 char year11; /病人年龄int room; /病人被分到的诊室号;struct hos h100;struct hos *p = &h0;void Callnumber() /叫号分系统SetConsoleTitle(2.叫号系统); /窗口标题栏system(cls); /清屏int k;if (c = e)system(cls);printf(所有病人都已经分配完毕n);system(pause);return ;printf(病人(%s)已前往就诊 挂号号码:%snn, , pc.num);FILE *fp = fopen(1.txt, a+);if (fp = 0) printf(cant open filen); fseek(fp, 0, SEEK_END);int z = fgetc(fp); /从文件中获取一个字符if (z != EOF) /查看文件是否为空fprintf(fp, 姓名);fprintf(fp, t性别);fprintf(fp, t挂号单);fprintf(fp, t年龄);fprintf(fp, n);fwrite(, strlen(), 1, fp); /将姓名输出到文件中fprintf(fp, t);fwrite(pc.sex, strlen(pc.sex), 1, fp);fprintf(fp, t);fwrite(pc.num, strlen(pc.num), 1, fp); fprintf(fp, t);fwrite(pc.year, strlen(pc.year), 1, fp);fprintf(fp, nn);fclose(fp);c+;printf(n-剩余【%d】位等待叫号的病人-n, e - c);for (k = c; ke; k+)printf(目前等待叫号排序第【%d位】 姓名:%s挂号号码: %sn, k + 1 - c, , pk.num);system(pause);system(cls);void CRoom() /分配诊室:fp()函数system(cls);SetConsoleTitle(3.诊室分配);printf(n-诊室分配结果-n);if (c = 0)printf( Error! 请先叫号! n);for (fe; fe= 35) /字符串转换为整数a+;pfe.room = 1;/其中35(含35)岁以上的患者在第一诊室else if (strcmp(pfe.sex, 男) = 0)b+;pfe.room = 2;/35岁以下男患者进第二诊室 elset+;pfe.room = 3;/其它的患者进第三诊室printf(n病人(%s) 性别:%s 挂号编号:%s 已被分配到第【%d】诊室n, , pfe.sex, pfe.num, pfe.room);system(pause);system(cls);调试测试展示:通过vc6.0进行测试;源代码:# include # include # include # include # 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() /功能介绍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 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: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=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=0;d-)if(ppl.num=pd.num&pl!=d)printf(error);*/printf(性别 :);strcpy(ppl.sex,gets(s);printf(年龄 :);strcpy(ppl.year,gets(s);pl+;printf(已经挂号的病人n);for(k=g;kpl;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,,pg.num);g+;printf(剩余%2d位等待叫号的病人n,pl-g);for(k=g;kpl;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=35)S1+; pk.room=1 ; /其中35(含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;kg;k+)printf( 第%2d名患者 姓名:%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;kg;k+)if(strcmp(pk.sex,man)=0)man+;else woman+;printf(请输入一个界限年龄:);scanf(%d,&year);for(k=0;k=year)hi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南体育职业学院《招投标及合同管理》2023-2024学年第一学期期末试卷
- 湖南省长沙市雅礼集团2024-2025学年初三第5次月考试题化学试题试卷含解析
- 2025的场地租赁合同样本
- 2025技术授权借贷合同范本
- 2025搅拌车租赁合同范本
- 2025简约标准的房屋租赁合同
- 2025建筑工程项目管理国内竞争性招标合同
- 2025年企业安全生产知识竞赛试题100题及答案
- 2025年高考历史总复习人教版必修二全册知识点梳理汇编
- 2025商店商铺租赁合同样式模板
- 钢筋安装三检记录表
- 软件工程导论课件(第六版)(张海潘编著)(1-13章)
- 动作经济原则手边化POU改善
- 自有房产未取得不动产权属证书证明
- 2023-2024学年广东广州天河区明珠中英文学校数学三上期末联考试题含答案
- 林木常见病害的防治-常见林木病害及其控制技术
- 智能仓储管理实战手册
- 医院化验单模板 血常规
- 中考英语时态专项练习题(附答案)
- 中国各地特色皮蛋
- 提高住院病历完成及时性持续改进(PDCA)
评论
0/150
提交评论