




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、综合设计题目: 课 程:数据结构与算法年 级:2015级 专 业: 班 级: 学 号: 姓 名: 指导教师:课程设计(论文)任务书 学院 专业 班 1、 课程设计(论文)题目 医院候诊管理系统 2、 课程设计(论文)工作自 2016 年 12 月 26日起至 2016 年12月 30日止。三、课程设计(论文) 地点: 信息工程学院 5-203 四、课程设计(论文)内容要求:1本课程设计的目的通过该课程设计的操作与实践,使学生真正掌握数据结构相关算法的实现及应用方法,在一定程度上提高使用数据结构相关算法的综合设计能力,具体掌握的基本能力如下:(1)掌握数据结构中各种抽象数据类型;(2)全面提高学
2、生的程序设计、开发能力。2课程设计的任务及要求 任务:已知医院有内科、外科、骨科、皮肤科和口腔科,每个科均有普通门诊和专家门诊,普通门诊挂号费5元,专家门诊挂号费10元,其中内科门诊要求14岁以下(含14岁)儿童进第一诊室,1525岁(含25岁)男患者进第二诊室,女患者进第三诊室,其他的进第四诊室,要求编制程序实现如下功能(患者信息包括挂号单编号、性别、年龄、所挂科室):(1)能实现挂号功能,提示用户在一行内输入姓名及挂号单编号,并储存;(2)能实现叫号功能,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列中删除;(3)根据病人的性别与年龄,能实现诊室的分配;(4)能按队列顺序显示各
3、个诊室排队人的姓名、挂号单编号及所在诊室;(5)按性别进行统计和按任意年龄区段进行统计,并打印输出;(6)完成每个步骤之后都能重新显示选择菜单。2)基本要求:本课程设计应满足以下要求:(1)任意性:用户任意给定输入,系统能够完成正确的计算;(2)友好性:界面要友好,输入有提示,尽量展示人性化;(3)可读性:源程序代码清晰、有层次;(4)健壮性:用户输入非法数据时,系统要及时给出警告信息;(5)结构性:应用程序具有良好的程序结构。对所编写的源程序的要求:(1)能够达到系统功能的基本要求,鼓励自行增加新功能(相应提高评分等级);(2)要有可视化用户界面。尽可能的使界面友好、直观、易操作; (3)开
4、发工具任选,源程序要有适当的注释,使程序容易阅读。3)创新要求: 在基本要求达到后,可进行创新设计。 4)课程设计论文编写要求(1)要按照书稿的规格打印撰写设计论文;(2)论文包括目录、摘要、正文、总结等;(3)课程设计论文装订按学校的统一要求完成。5)答辩与评分标准: (1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分;(2)能正确回答老师所提问题,可增加10分;(3)课程设计报告书写规范整齐,可增加10分;(4)心得体会认真总结,可增加10分;(5)程序有创新性,可增加10分;成绩评定实行优秀、良好、中等、及格和不及格五个等级。不及格者需重做。5)课程设计进度安排16周周
5、五:上交分组名单及选题18周周一之前:查阅相关资料,划分模块、小组成员分工18周周一:编制源程序18周周三、四:上机调试,修改、完善系统、撰写课程设计报告18周周四上午9:00:上交源代码(.cpp 、.h 存入已小组成员的学号与名字命名的文件夹1份/组)与课程设计报告(1份/人)上机时间安排表(地点:信息学院203机房):18周:周一上午1、2、3、4节 周三上午1、2、3、4节周四上午1、2、3、4节学生签名: 年 月 日课程设计(论文)评审意见项目优良中及格不及格课程设计之前查阅相关资料,完成需求分析,准备充分。课程设计期间态度端正,按时参加,按时完成。所设计系统按要求完成各项功能。所设
6、计系统具有一定的创新性,添加一些实用功能。论文撰写规范,结构严谨,思路清晰,准确表达。介绍所设计的系统表述清楚,主要问题回答准确。自学能力强并独立解决问题,具备一定的系统开发能力。 评阅人签名: 曾伟 职称: 讲师华东交通大学综合设计目录第1章 系统概要.11.1系统介绍.11.2 基本功能要求1第2章 设计思路与算法22.1 程序设计思路.22.2 程序设计功能结构.22.3 数据结构定义.2第3章 源程序代码4第4章 运行结果及分析9 4.1运行结果. 94.2结果分析. 14第5章 心得体会15参考文献166第1章 系统概要1.1系统介绍设计一个医院门诊候诊的队列管理系统,该系统要求对医
7、院门诊候诊的排队进行管理和维护。其中医院有内科、外科、骨科、皮肤科和口腔科五个科室,每个科均有普通门诊和专家门诊,普通门诊挂号费5元,专家门诊挂号费10元。而且其中内科门诊有四个诊室,要求14岁以下(含14岁)儿童进第一诊室,1525岁(含25岁)男患者进第二诊室,女患者进第三诊室,其他的进第四诊室。1.2 基本功能要求(1)能实现挂号功能,提示用户在一行内输入姓名及挂号单编号,并储存;(2)能实现叫号功能,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列中删除;(3)根据病人的性别与年龄,能实现诊室的分配;(4)能按队列顺序显示各个诊室排队人的姓名、挂号单编号及所在诊室;(5)按性
8、别进行统计和按任意年龄区段进行统计,并打印输出;(6)完成每个步骤之后都能重新显示选择菜单。- 1 - 第2章 设计思路与算法2.1程序设计思路1、根据系统所要求的基本功能,可将程序主要化为挂号、叫号、分配诊室、依队列顺序输出病人信息及统计管理当前信息等模块。2、依据各模块具体功能运用相关语句和结构编程具体的程序。a . 挂号模块,是通过数组记录患者的信息;b. 叫号模块,能实现显示排在队列中第一位患者姓名、挂号单编号,然后,通过清屏形式将其从挂号序列中删除的功能。通过分诊步骤之后,再操作此模块将显示下一位患者的信息,即实现了题目中“从挂号序列中删除”的要求;c分配诊室模块,先按照患者所需选择
9、普通或专家门诊以及相应的科室,再在内科患者中,按照年龄及性别进行分配诊室模块,能实现对患者进行分诊功能,先通过判断年龄进行第一诊室的分配,然后再将剩余的患者进行性别判断进行第二、第三、第四诊室的分配;d. 显示各患者队列及诊室信息模块,可以实现将当前所有患者的所在诊室以及其详细信息展示出来的功能,所显示的信息分为三个部分展示;e. 统计模块,分为性别统计和按任意年龄统计。按任意年龄统计,通过输入的年龄界限X与年龄数组中的数据进行判断比较,输出相应的人数,并且输入的年龄界限必须是可行的实际值,否则无意义;按性别统计,直接打印数据即可。3、在主函数界面,通过主界面函数分别进入各模块,进行运行并调试
10、。2.2程序设计功能结构 其主要几个模块流程图如下主界面函数主界面函数 6、退出程序5、当前信息统计管理4、按队列显示信息3、分配诊室2、叫号1、挂号挂号模块模块二:挂号系统void guahao循环输入姓名name姓名name主界面内科第三诊室内科第二诊室内科第四诊室内科第一诊室否否是是男?是25岁以下14岁以下皮肤科诊室口腔科诊室骨科诊室外科诊室口腔科?皮肤科?科?外科?骨科?内科?模块四:按照年龄和性别进行分诊分配诊室函数主界面显示队列中剩余患者信息显示队列中第一位患者信息叫号函数模块三:叫号系统void jiaohao输出输入姓名name姓名name2.3数据结构定义主要运用的三个数据
11、结构如下(结构体数组):struct hoschar name15; /保存患者姓名char sex10; /保存性别char num10; /保存患者数目(可自行更改)char year10; /保存患者年龄char ke20; /所挂科室char fee20; /保存门诊费用int room;/结构体数组struct hos hN;struct hos *p=&h0;第3章 源程序代码# include <stdio.h># include <stdlib.h># include <ctype.h> # include <string.h&
12、gt;# define N 100int S1=0,S2=0,S3=0,S4=0,a1=0,a2=0,a3=0,a4=0,man=0,woman=0,pl=0,g=0,sum=0;int k,mz;struct hoschar name15;char sex10;char num10;char year10;char ke20; /所挂科室char fee20; /门诊费用int room;struct hos hN;struct hos *p=&h0;void introduce()printf(" n 欢迎使用医院候诊管理系统 n");printf("
13、 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
14、 ();void jiaohao();void fp();void statistic();void type_statistic();char function,j10;function=getchar();while (function)switch(function)case '1':input();break;case '2':jiaohao();break;case '3':fp();break;case '4':statistic();break;case '5':type_statistic();br
15、eak;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
16、()int change(char);char i,j8,s15;printf("请输入需要挂号的病人人数(请输入0到9之间的数):n");getchar();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&quo
17、t;,k);printf("姓名 :");strcpy(,gets(s);printf("编号 :");strcpy(ppl.num,gets(s);printf("性别 :");strcpy(ppl.sex,gets(s);printf("年龄 :");strcpy(ppl.year,gets(s); printf("请选择 普通门诊(挂号费5元)或者 专家门诊(挂号费10元):n"); /专家和普通门诊strcpy(ppl.fee,gets(s);printf("请
18、选择 内科;外科;骨科;皮肤科;口腔科 n");strcpy(ppl.ke,gets(s); /选择科室pl+;printf("已经挂号的病人n");for(k=g;k<pl;k+) if(strcmp(pk.fee,"普通门诊")=0) printf("第%2d位 姓名: %s 挂号号码%s 所挂科室:普通%s n",k+1-g,,pk.num,pk.ke); if(strcmp(pk.fee,"专家门诊")=0) printf("第%2d位 姓名: %s 挂号号码%s 所
19、挂科室:专家%s n",k+1-g,,pk.num,pk.ke);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;k<p
20、l;k+)printf("挂号排序第%2d位 姓名:%s挂号号码: %5sn",k+1-g,,pk.num);system("pause");system("cls");void fp ()S1=0;S2=0;S3=0;S4=0;a1=0;a2=0;a3=0;a4=0;for(k=0;k<g;k+)if(strcmp(pk.ke,"内科")=0)if(atoi(pk.year)<=14)S1+; pk.room=1 ; /其中14(含14)岁以下的患者在第一诊室else if(atoi(p
21、k.year)>14&&atoi(pk.year)<=25)if(strcmp(pk.sex,"男")=0)S2+;pk.room=2 ; /14岁以上25岁以下(含25)男患者进第二诊室elseS3+;pk.room=3; /14岁以上25岁以下(含25)女患者进第三诊室elseS4+;pk.room=4; /其它的患者进第三诊室printf("病人%s被分配在内科第%d诊室n",,pk.room); if(strcmp(pk.ke,"外科")=0) a1=a1+1;printf("
22、;病人%s被分配在%s诊室n",,pk.ke); if(strcmp(pk.ke,"骨科")=0) a2=a2+1;printf("病人%s被分配在%s诊室n",,pk.ke); if(strcmp(pk.ke,"皮肤科")=0) a3=a3+1;printf("病人%s被分配在%s诊室n",,pk.ke); if(strcmp(pk.ke,"口腔科")=0) a4=a4+1;printf("病人%s被分配在%s诊室n",p
23、,pk.ke);system("pause");system("cls");void statistic()for(k=0;k<g;k+)printf(" 第%2d名患者 姓名:%s 挂号编号:%s 诊室:%s诊室n",k+1,,pk.num,pk.ke);printf(" 内科第一诊室%2d人n",S1);printf(" 内科第二诊室%2d人n",S2);printf(" 内科第三诊室%2d人n",S3);printf(" 内科第
24、四诊室%2d人n",S4);printf(" 外科诊室%2d人n",a1);printf(" 骨科诊室%2d人n",a2);printf(" 皮肤科诊室%2d人n",a3);printf(" 口腔科诊室%2d人n",a4);system("pause");system("cls");void type_statistic()int year,high=0,low=0;man=0;woman=0;for(k=0;k<g;k+)if(strcmp(pk.fee,&
25、quot;普通门诊")=0)sum=sum+5;if(strcmp(pk.fee,"专家门诊")=0) sum=sum+10;if(strcmp(pk.sex,"男")=0)man+;else woman+;printf("今日总挂号门诊费为:%dn",sum);printf("请输入一个界限年龄:");scanf("%d",&year);for(k=0;k<g;k+)if(atoi(pk.year)>=year)high+;else low+;printf(&qu
26、ot;共有%2d位患者就诊.n",g);printf("其中男性患者有%2d位,",man);printf("女性患者有%2d位.n",woman);printf("年纪大于等于%d的患者有%2d位,",year,high);printf("年纪小于%d的患者有%2d位.n",year,low);system("pause");system("cls");void main()introduce();run();int change(char ch)/将单个字符型数
27、字转化为整形int i;i=ch-48;return(i);第4章 运行结果及分析4.1运行结果功能介绍introduce函数界面(菜单)选择1即开始挂号挂号后选择2即开始叫号此时选择3可见患者所分配到的诊室信息这时选择4可见各科室及诊室队列信息以此,叫号(2)和分配诊室(3)相继进行,各科室及诊室队列信息(4)也相应变化 最后,又叫完号并分配完诊室后,可得各科室诊室的队列信息如上,其中可见,14岁以下的内科患者进入内科第一诊室,14岁以上25岁以下的内科男患者进去内科第二诊室,女患者则进入内科第三诊室,相应其他科室如外科也进入相应科室诊室。最后,选择5即可计算出当天的挂号门诊费,并能根据年龄
28、及性别进行统计4.2结果分析当调试程序遇到问题时先尝试调试程序一步一步的解决问题,不会的我会看书、上网查阅资料或者与同学讨论最终解决程序中出现的问题。同时,也努力通过自己的想法不断创新,找到更为简洁方便符合情况的地方。1、储存患者信息时含有多项信息,可通过循环控制,利用结构体数组输出被叫号病人的各项信息,同时输出每个等待叫号病人的信息,最后清屏、暂停,并引用introduce( )函数返回主界面。2、很多次连续使用输入函数接受数据时,后面一个函数接受的数据经常报错,通过getcahr()和putchar()语句进行调试,发现是因为前一个函数接受数据完毕后会输入一个回车键,而后一个输入函数将回车键接受了,而与后一个函数所要接收的数据类型不同导致错误,最后采用getchar();语句将多余的回车键吸收。3、在使用isdigit(i)函数时,i的数据类型需为char类型从而进行判断,但在其他函数中又应为int 类型,此时i的数据类型相矛盾,查阅资料得,可自定义一个change函数通过ACS码将该字符型数字转化为整形数字。4、如何根据患者情况选择相对应的科室,起初想法再次采用一个switch,case语句进行选择控制,但实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 动漫制作合同范本
- 农村地抵押合同范例
- 买卖鞋合同范例
- 公路发包合同范本
- 买断企业产品合同范本
- 代办检测合同范本
- 企业bt项目合同范本
- 三方工程合同范本
- 冷库改造项目合同范本
- 包干服务合同范例
- 2025年贵州蔬菜集团有限公司招聘笔试参考题库含答案解析
- 小学二年级有余数的除法口算题(共300题)
- 高职院校高水平现代物流管理专业群建设方案(现代物流管理专业群)
- 妊娠期高血压疾病试题
- 2024专升本英语答题卡浙江省
- 【冠心病探究文献综述2000字】
- (完整版)50028-城镇燃气设计规范
- 从聚焦课堂到关注教育教学全过程PPT课件
- 五年级下册英语(闽教版)教学计划
- 医院医疗设备采购流程图
- [建筑]最新建设工程价款结算暂行办法
评论
0/150
提交评论