《数据结构与算法》课设

上传人:lis****210 文档编号:224781703 上传时间:2023-08-01 格式:DOCX 页数:43 大小:242.92KB
返回 下载 相关 举报
《数据结构与算法》课设_第1页
第1页 / 共43页
《数据结构与算法》课设_第2页
第2页 / 共43页
《数据结构与算法》课设_第3页
第3页 / 共43页
点击查看更多>>
资源描述
数据结构与算法课设医院候诊管理系统综合设计题目:课 程:数据结构与算法年 级:专 业:班 级:学 号:姓 名:指导教师:课程设计(论文)任务书学 院专 业班一、 课程设计(论文)题目医院候诊管理系 统二、课程设计(论文)工作自2016年12月26日起至2016年12月30日止三、 课程设计(论文)玉点:信息工程学院 5-203四W程设计(论文)内容要求:1本课程设计的目的通过该课程设计的操作与实践,使学生真正掌握数据结构相关算法的实现及应用方法, 在一定程度上提髙使用数据结构相关算法的综 合设计能力,具体掌握的基本能力如下:(1)掌握数据结构中各种抽象数据类型;(2)全面提髙学生的程序设计、开发能力。2 课程设计的任务及要求任务:已知医院有内科、外科、骨科、皮肤科 和口腔科,每个科均有普通门诊和专家门诊,普 通门诊挂号费 5 元,专家门诊挂号费 10 元,其中内科门诊要求 14岁以下(含 14 岁)儿童进第一诊室,1525岁(含25岁)男患者进第二诊 求编制程序实现如下功能(患者信息包括挂号单 编号、性别、年龄、所挂科室):室,女患者进第三诊室,其他的进第四诊室,要(1) 能实现挂号功能,提示用户在一行内输入姓名及挂号单编号,并储存;(2) 能实现叫号功能,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列 中删除;(3) 根据病人的性别与年龄,能实现诊室 的分配;(4) 能按队列顺序显示各个诊室排队人的 姓名、挂号单编号及所在诊室;(5) 按性别进行统计和按任意年龄区段进 行统计,并打印输出;(6) 完成每个步骤之后都能重新显示选择 菜单。2) 基本要求:本课程设计应满足以下要求:(1) 任意性:用户任意给定输入,系统能够完成正确的计算;(2) 友好性:界面要友好,输入有提示,尽量展示人性化;(3)可读性:源程序代码清晰、有层次(4)健壮性:用户输入非法数据时,系统要及时给出警告信息;(5)结构性:应用程序具有良好的程序结构。对所编写的源程序的要求:(1) 能够达到系统功能的基本要求,鼓励自行增加新功能(相应提高评分等级);(2) 要有可视化用户界面。尽可能的使界面友好、直观、易操作;(3) 开发工具任选,源程序要有适当的注释,使程序容易阅读。3) 创新要求:在基本要求达到后,可进行创新设计。4) 课程设计论文编写要求(1) 要按照书稿的规格打印撰写设计论文;(2) 论文包括目录、摘要、正文、总结等;(3) 课程设计论文装订按学校的统一要求完成。5) 答辩与评分标准:(1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60 分;(2)能正确回答老师所提问题,可增加10分;(3) 课程设计报告书写规范整齐,可增加10 分;(4) 心得体会认真总结,可增加10分;(5) 程序有创新性,可增加10分;成绩评定实行优秀、良好、中等、及格和不 及格五个等级。不及格者需重做。5)课程设计进度安排16周周五:上交分组名单及选题18周周之前:查阅相关资料,划分模块、小组成员分工18周周一:编制源程序 18周周三、四:上机调试,修改、完善系统、撰写课程设计报告18周周四上午9:00:上交源代码(.cpp 、.h 存入已小组成员的学号与名字命名 的文件夹1份/组)与课程设计报告(1份/人)上机时间安排表(地点:信息学院203机房):18周:周一上午1、2、3、4节周三上午1、2、3、4节周四上午1、2、3、4节课程设计(论文)评审意见项目优良中及 格不 及 格课程设计之前查阅相关资料,完成需求分析,准 备充分。课程设计期间态度端正,按时参加,按时完成。所设计系统按要求完成各项功能。所设计系统具有一定的创新性,添加一些实用功 能。论文撰写规范,结构严谨,思路清晰,准确表达。介绍所设计的系统表述清楚,主要问题回答准 确。自学能力强并独立解决问题,具备一定的系统开 发能力。评阅目录第1章系统概要11.1系统介绍11.2基本功能要求1第2章设计思路与算法22.1 程序设计思路 22.2 程序设计功能结构 22.3 数据结构定义 2第3章源程序代码.4第4章 运行结果及分析.64.1 运行结果 94.2结果分析 14第5章心得体会.15参考文献16第 1 章 系统概要1.1 系统介绍 设计一个医院门诊候诊的队列管理系统,该系统要求对医院门诊候诊的排队进行管理和 维护。其中医院有内科、外科、骨科、皮肤科和口腔科五个 科室,每个科均有普通门诊和专家门诊,普通门诊挂号 费 5 元,专家门诊挂号费 10 元。而且其中内科门诊有 四个诊室,要求 14岁以下(含14岁)儿童进第一诊室,1525岁(含25岁)男患者进第二诊室,女患者进第 三诊室,其他的进第四诊室。1.2 基本功能要求( 1)能实现挂号功能,提示用户在一行内输入姓 名及挂号单编号,并储存;III( 2)能实现叫号功能,显示排在队列中第一位患 者姓名、挂号单编号,并将其从挂号序列中删除;( 3)根据病人的性别与年龄,能实现诊室的分配( 4)能按队列顺序显示各个诊室排队人的姓名、 挂号单编号及所在诊室;( 5)按性别进行统计和按任意年龄区段进行统计,并打印输出;( 6)完成每个步骤之后都能重新显示选择菜单。第 2 章 设计思路与算法2.1 程序设计思路1、根据系统所要求的基本功能,可将程序主要 化为挂号、叫号、分配诊室、依队列顺序输出病 人信息及统计管理当前信息等模块。2、依据各模块具体功能运用相关语句和结构编程具体的程序。a . 挂号模块,是通过数组记录患者的信息; b. 叫号模块,能实现显示排在队列中第一位患者姓名、挂号单编号,然后,通过清屏形式将其从挂号序列中删除的功能。通过分诊步骤之后,再操作此模块将显示下一位患者的信息,即实现 了题目中“从挂号序列中删除”的要求;C.分配诊室模块,先按照患者所需选择普通或 专家门诊以及相应的科室,再在内科患者中,按 照年龄及性别进行分配诊室模块,能实现对患者进行分诊功能,先通过判断年龄进行第一诊室的分配,然后再将剩余的患者进行性别判断进行第二、第三、第四诊室的分配;d. 显示各患者队列及诊室信息模块,可以实现 将当前所有患者的所在诊室以及其详细信息展示出来的功能,所显示的信息分为三个部分展 示;e. 统计模块,分为性别统计和按任意年龄统计。 按任意年龄统计,通过输入的年龄界限 X 与年 龄数组中的数据进行判断比较,输出相应的人 数,并且输入的年龄界限必须是可行的实际值, 否则无意义;按性别统计,直接打印数据即可。3、在主函数界面,通过主界面函数分别进入各 模块,进行运行并调试。2.2程序设计功能结构 其主要几个模块流程图如下主界面函数 主界面函数1、2、3、挂叫分号号配诊4、5、6、按当退队前出列信程显示队列中第模块三:叫号系统分配诊显示队列中”主界内科第模块内17 L1 X | 按照是否否14岁以下25岁以下是内科第 内科第 内科第是外外科诊室2.3数据结构定义 主要运用的三个数据结构如下(结构体数组): struct hoschar name15; /保存患者姓名char sex10; /保存性别char num10; /保存患者数目(可自行更 改)char year10; /保存患者年龄char ke20;/所挂科室char fee20; /保存门诊费用 int room;/结构体数组 struct hos hN; struct hos *p=&h0;第 3 章 源程序代码# include # include # include # include # define N 100 intS1=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( 候诊管理系统 printf(选择n欢迎使用医院n);n 功能n);printf( i1 n);printf(I 1- 挂 号n);printf(I 2- 叫 号n);printf( I3 分 诊 室I n);printf( I 4 显示各诊室队列信息 I n);printf( I 5 统计当天就诊患者情况 (要求按性别和任意年龄区段进行统计)I n);printf( I 6 结 束 程 序华东交通大学综合设计I n);printf( 1void run()void introduce();void input ();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();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);char i,j8,s15;prinf(请输入需要挂号的病人人数(请输入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(第24 位病人:n,k);printf(姓名:);strcpy(ppl.name,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(”请选择内科;外科;骨科;皮肤 科;口腔科 n);strcpy(ppl.ke,gets(s);/选择科室 pl+;printf(已经挂号的病人n);for(k=g;kpl;k+)if(strcmp(pk.fee,普通门诊)=0)printf(第%2d位 姓名:%s 挂号号%s所挂科室:%sn,k+1-g,pk.name,pk.num,pk.ke);if(strcmp(pkfee,专家门诊)=0)printf(第2d位 姓名:%s 挂号号%s所挂科室:专 家 %sn,k+1-g,pk.name,pk.num,pk.ke);system(pause);/暂停system(cls);/ 清void jiaohao()if(g=pl) system(cls);printf(所有病人都已经分配完毕); return;printf( 病 人 %s 已 前 往 就 诊 挂 号 号g+;printf(剩余%2d位等待叫号的病人n,pl-g);for(k=g;kpl;k+)printf(挂号排序第2d位 姓名:挂号%s号%5sn,k+1-g,pk.name,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;kg;k+)if(strcmp(pk.ke,内科)=0)if(atoi(pk.year)14&atoi(pk.year)=25)if(strcmp(pk.sex,男)=0)S2+;pk.room=2 ; /14 岁以 上 25 岁以下(含 25)男患者进第二诊室else S3+;pk.room=3 ;/14 岁以上 25 岁以下(含 25)女患者进第三诊 室else华东交通大学综合设计 S4+;pk.room=4 ; /其它的患者进第三诊室printf(病人s被分配在内科第%d 诊 n,pk.name,pkroom);if(strcmp(pk.ke,外科)=0) a1=a1+1;printf(病人s 被分配在$ 诊 n,pk.name,pkke);if(strcmp(pk.ke,骨科)=0) a2=a2+1;printf(病人s 被分配在$ 诊 n,pk.name,pkke);if(strcmp(pkke,皮肤科)=0) a3=a3+1;printf(病人s 被分配在$ 诊 n,pk.name,pk.ke);if(strcmp(pk.ke, 口腔科)=0) a4=a4+1;printf(病人s 被分配在$ 诊 n,pk.name,pkke);system(pause); system(cls);void statistic()for(k=0;kg;k+)printf(第24名患者姓名:%s挂号 编 号 : %s 诊 室 : %s 诊 室n,k+1,pk.name,pk.num,pk.ke);printf(内科第一诊室2d 人n,S1);printf(内科第二诊室2d 人n,S2);printf(内科第三诊室2d人n,S3);printf(内科第四诊室2d人n,S4);printf(外科诊室24 人n,a1);printf(骨科诊室24 人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;kg;k+) if(strcmp(pkfee,普通门诊)=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=year)high+; else low+;printf(共有2d位患者就诊.n,g); printf(其中男性患者有%2d 位,man);printf(女性患者有 2d 位 An,woman);printf(年纪大于等于%d的患者有%2d 位,year,high);printf(年纪小于%d的患者有%2d 位.n,year,low);system(pause);system(cls);void main()introduce();run();int change(char ch)/将 单 个字符型数字转化为整形int i;i=ch-48;return(i);臺勰聲屆B好求按h别和佟2年龄申H第 4 章 运行结果及分析4.1 运行结果功能介绍 introduce 函数界面(菜单)心蕊i卩宙71 泾疇咗兰卅乳鋪O巾能选庄选择1即开始挂号El C:U sers& a n kaDesktopD eb uexe- X欢迎使用医院悵诊管迎系:蛟回功能迭埒回ftTT - 1 Q- 3 4 5 6(挂号赍元):晋谨门诊(挂月贽口兀)或音左宣门诊(挂号费2元);(挂号费2元):堪位;(挂号克山元):4男10护昔通门诊(挂号夷t元)或青专隊门诊 帛科:外科:骨科:歧肤科:口腔科粮*賞(i青愉入到之冋的驾I): 4I活通门诊时圭呂贽L)或者左宜门诊 咯仲 外科昌朴 应肤和 口腔科I - J. _-制科:外科昌科:应肤科:口腔科鬆鑒會曙况1要求按性别讪I意年聚区段边行绑+)V內F吓 H县曰:昔 :室: 室養至 -1 - - - -5制立病企吕王老五号.3a . IS裁匚芦通门诊(挂号悪元)或音专琢门诊 垂只陥科:外科昌科匚皮捉科:口腔科挂号后选择 2 即开始叫号構况(夷求按性别和任意年龄区段进行统计)鬲人舐三已前往裁诊挂号号码:1Bl CiUa n kaDe&lctop De b u gexe X医院假诊管理浆统功能选择回曇结S 列島 i 诊天序TT -123456 2 3 4五- 侍1 2 3隹 箒克妾羸 _1-1- 二.二一二 - - - -_-is 口苕苕弓 0百昌SS此时选择3可见患者所分配到的诊室信息S3 C:User55 a nkaDesktopD&bu g医院蟻潼昔理至统,&xe欢迎使用医院假诊管理系统功能选择夭序 i 计束 IT-C- 123456 这时选择 4 可见各科室及诊室队列信息Bl PVJ 詔rglganlc日IDmMktoplDmbugl医院侯诊管理垂统,ex日 X富輻瞞医院悵诊管理锵回功能选择回si#AAO W诊诊诊。ol=fi 患一二三四宀I毒诊議 靑内内居口討获铁以此,叫号(2)和分配诊室(3)相继进行,各科室及诊室队列信息(4)也相应变化E UU詛眄1匚日nlc目D日匚ktoplDehugl医院候诊管理垂统,exmX厲輻癡医院假诊管理新回功能选择 1-時号 诃号I信目诸番况(要求按性别和任意年龄区段进行统计)*3 - Mt 4 -晁亦容诊 5 - 6 -结束翟序病人李四已前往就诊挂号号冯:2口莒号弓五Tfi -IX -3r ! -J- 1 -J-侍1 CJ蛍 2JC二工壬 艾二15 鑫苕慕 Hr!=i厲至11三四1AAAA - llloo Al 者書诊诊诊口 0宀蠱 1 一二三四宀wWIW蟲 12&Bm “爰需內內長口酎E C:Users5 a nlcaDesktopD?buexe X富舟鄒離医院假诊管理票统功能选择回情况逵求按性别和任意年龄区段进行统计)t列患号逼内内::室85 诊诊3&V-S诊天序H E.示计束曇结 -t-T -12 3 4 5 6病人王老五已前往就诊挂号号码:3室 SS 诊诊竅 19祎 sff. s. tTr- 仕酉:旦 编雲 f iarms三曇辜王内內 ir si 三四耆 ysn 人人人挨iAAAA -1111O认坠宀iwoKA 者肴喜诊诊诊口 n- H 一二三四審1K聶 ww遐霧;MW琥 12 3assttfi 亠畀養霄內内咼口;gEl CAUsersXs a nlc3De&ktopDebu g医屍候诊管理垂统,eae X医院悵诊管理黑统功能选择回诊天序 SS 诊示计束 分曙结118 (要求按性别和任意年龄区段逬行统计)feA赵六已前往就诊挂号号码:4 驴的病人B8 噩r至- 内内算- n -三四奉_八意aaaaK3 C:LI sera n lcaDe5-ktopDebu g医院候诊管理至统,exeH醤號確馆医院假诊管理萦缆功能选择旨暑壷見(要求按性别和任意年龄区段逬行纯计)i诊天序 fs 旨鬆示计束曇结 4T - 1 2 3 4 E 6窒 SSS 內内.外 :;窒; 诊诊3诊 1 2 - 4 1; f 冒 isHAAAA - Hl 11O 人A头SI5AO 者者者鳶诊诊诊1 osfi ass -123 4ssssff 口韵后,又叫完号并分配完诊室后,可得各科室诊i=j室的队列信息如上ttt,其中可见,14岁以 下的内科患者进入内科第一诊室, 14 岁以上 25 岁以下的内科男患者进去内科第二诊室,女患者 则进入内科第三诊室,相应其他科室如外科也进入相应科室诊室。最后,选择5即可计算出当天的挂号门诊费,并能根据年龄及性别进行统计IIIS3 C:U&er&Va nlc8De&ktopDebu g医屍候诊管理至统,exh X史邑JL建r 一時曽需嶷臺讣宀公幕-(要求按性别和任意年龄区段逬饰计) -结束理瘁1位. 二IT - s- S - 3的 om 挂一hd :咒4男A任 _JJ,X U -3 1 1半:4.2 结果分析当调试程序遇到问题时先尝试调试程序一 步一步的解决问题,不会的我会看书、上网查阅 资料或者与同学讨论最终解决程序中出现的问 题。同时,也努力通过自己的想法不断创新,找 到更为简洁方便符合情况的地方。1、储存患者信息时含有多项信息,可通过 循环控制,利用结构体数组输出被叫号病人的各 项信息,同时输出每个等待叫号病人的信息,最 后清屏、暂停,并引用 introduce( )函数返回主 界面。2、很多次连续使用输入函数接受数据时,后 面一个函数接受的数据经常报错,通过geteahr() 和putchar()语句进行调试,发现是因为前一个 函数接受数据完毕后会输入一个回车键,而后一 个输入函数将回车键接受了,而与后一个函数所 要接收的数据类型不同导致错误,最后采用 getchar();语句将多余的回车键吸收。3、在使用isdigit(i)函数时,i的数据类型需为char类型从而进行判断,但 在其他函数中又应为int类型,此时i的数据类型相矛盾,查阅资料得,可自定 义一个change函数通过ACS II码将该字符型数字转化为整形数字。4、如何根据患者情况选择相对应的科室,起初想法再次采用一个 switch,case 语句进行选择控制,但实现程序过程中,由于多次定义变量容易发生错误,且 效率低,代码不够简洁,最后通过 strcmp 函数进行字符串间的比较,即可根据 患者输入的信息来选定不同科室。5、程序采用了分文件形式,每个文件对应各自相应的模块,新增的功能(如: 暂停、清屏功能)和简短代码后面进行了单行注释。第 5 章 心得体会此次数据结构课程设计要求的所有功能 都已实现,课程设计也算告一段落。至此我从一 下几个方面系统的总结一下课程设计的得与失。首先,通过一学期的数据结构的学习, 对这门课程有了一定的了解和掌握,通过课程设 计可以更好的掌握课本所学知识,达到学以致用 的目的。然而,在程序开发的过程中,深刻地领 悟到自己在数据结构方面的欠缺,对知识点的掌握远远不够,导致在设计中完全不能灵活的使用 数据结构的知识,反而更加偏向于C语言的编程方面,这是我在课程设计中的不足与反思。不过, 遇到了一些问题通过不断的思考,不断地学习将 问题各个如破加以解决,最终完成了课程设计的 各个要求,也是对自己所学知识的一种认可。虽 然还是有很多不足,但是希望在不断修正与学习 逐渐弥补。其次,此次课程设计通过对实验题目的理解做了一些需求分析,将问题具体到程序结构模 型,比如采用了分模块形式,每个模块对应各自 相应的函数,再具体到代码的实现通过一步一步 的分析问题,熟练运用各种语句来实现程序的运 行,不断调试来解决问题,最后完成实验要求, 在某些方面也进一步锻炼了实践调试操作。当然,因为编程序是一件很需要耐心与细心 的事情,一个错误经常需要长时间去测试、检验 才能找到出错之处,而最好的办法就是通过良好 的编程习惯以及耐心减少错误出现的频率,比如 本次课程设计函数相互交叉,共同完成一些功 能,所以必须要用全局变量,考验了我们的细心 与耐心,更让我们注重培养平时要养成良好的编 程习惯,还有就是,与他人的合作、交流中,拓 宽自己的思路,拓展自己的知识面,不要被自己 的习惯思维所局限,经过碰撞才能发现更多的错 误与漏洞,才能更好地去完善整个程序。参考文献1 李云清、杨庆红、揭安全。数据结构(c语言版)第二版人民邮电大2 严蔚敏、吴伟民。数据结构(C语言版)清华大学出版社;3 严蔚敏、吴伟民。数据结构题集(C语言版)清华大学出版社;4 谭浩强编著C程序设计(第3版)北京:清华大学出版社.6 7
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!