资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据结构课程设计报告课程名称:数据结构课程设计课程设计题目:病人看病模拟程序姓名:院系:信息工程系专业:计算机科学与技术班级:学号:指导老师:目录1课程设计的目的2需求分析3程序设计报告内容概要设计2详细设计2函数调用关系图程序清单运行结果4总结7参考文献7附录8病人看病模拟程序课程设计的目的(1)熟练掌握队列的两种存储方式。(2)掌握队列的基本操作及应用。(3)利用队列实现病人就医管理模拟程序。需求分析设计一个病人就医管理系统,编写一个程序定义行医,反映病人到医院看病,排队看医生的情况,在病人排队过程中,主要发生两件事:(1)病人到达诊室,将病历本交给护士,排到等待队列中候诊。(2)护士从等待队列中取出一位病人的病历,该病人进入诊室就诊。要求程序采用菜单方式,其选项及功能说明如下:1)排队输入病人的病历号,加入到病人排队队列中2)就诊病人排队队列中最前面的病人就诊,并将其从队列中删除3)查看排队-从队首到队尾列出所有的排队病人的病历号。4)下班-退出运行。1. 课程设计报告内容3.1概要设计:(1).抽象数据类型图的定义如下:此程序采用队列数据结构,存储结构为单链表,采用此种结构一方面可以采用数据复杂程度,增加系统稳定性;另一方面,利用动态分配内存的方法,便于内存管理,充分利用内存空间。intMenu_select()/菜单选择程序,要求用户输入一个正确的菜单选项。如果不正确,则重复调用此子程序,知道输入的值是正确的structbingli*(creat()/创建一个单链表。如果创建成功,则返回这个单链表的表头;如果创建不成功,则退出程序。voidListInsert_rear(structbingli*head)/创建一个单链表成功后,再次排队则时调用此子程序,作用是在单链表尾部(即对尾)插入一个病历号码。如果插入不成功,则退出程序。structbingli*(ListDelete(structbingli*head)/就诊程序。作用是输出就诊的病历号(即队首元素),并且删除队首元素、释放其所占空间。voiddisplay(structbingli*head)/显示队列所有元素(2)本程序包含两个模块:a. 主程序模块:voidmain()队列操作模块:实现所求的所有实际操作各模块之间的调用关系如下:主程序模块队列操作模块3.1详细设计1) structbingliIntnumber;structbingli*nextbingli;/数据类型为整型/下一个节点/列队的类型该结构体含有两个数据:第一个是排队的病历号码,第二个是指向这类结构体的指针2) 菜单选择程序:IntMenu_select()/要求用户输入一个正确的菜单选项。如果不正确,则重复调用此子程序,直到输入的值是正确的3) 创建一个单链表:Structbingli*(crear()/如果创建成功,则返回这个单链表的表头,如果创建不成功,则退出程序,4) 插入一个病历号码:VoidListInsert_rear(structbingli*head)/创建一个单链表成功后,再次排队则调用此子程序,作用是在单链表尾部(即对尾)插入一个病历号码。如果不成功,则退出程序。5) 就诊程序:structbingli*(ListDelete(structbingli*head)/作用就是输出就诊的病历号(即队首元素),并且删除队首元素、释放其所占空间/显示队列所有元素6) 显示函数voiddisplay(structbingli*head)主函数程序如下:voidmain()structbingli*head;printf(*欢迎进入就医排队管理系统!*n)printf(*t:排队;*n);printf(*t:就诊;*n);printf(*t:查看排队情况;*n);printf(*t:不再排队;*n);printf(*t:下班-退出运行;*n);printf(f*n);printf(f*n);intj=1;while(1)switch(Menu_select()case1:printf(1:排队;n);if(j=1)j+;head=creat();elseListInsert_rear(head);break;case2:printf(2:就诊;n);head=ListDelete(head);break;case3:printf(3:查看排队情况;n);display(head);break;case4:n);printf(4:不再排队,余下顺序就诊display(head);return;break;case5:printf(5:下班-退出运行n);return;3.3函数调用关系图3.4程序清单:(见附录)3.5运行结果1*+=+*#H*+k或必逬人就医祥臥.背理系统!*霧鳩历号似输人數刊表示结束B8:4324926寸渕戒功:办就逐.就跆甬病历号为:32:査右排队恃抚;240承贿厉号!嗣咸功3:査看排典諏;2图一4:不再排臥,余下顺序就诊.:戒诊.欢迎进入就匡排队莺理系统!输入错误请重新输入!输力号(以输入数字0表不结束)3喳看排臥情况;15Hreseanykeytocontinue2645G5719*+*I-乍i彳*况运珅情-出心於退焙-:二-琳丄二J1厂一:+:ij1Ii*芳,治41412345*z*图二2. 总结通过这次课程设计,让我对一个程序的数据结构有更全面更进一步的认识,根据不同的需求,采用不同的数据存储方式,不一定要用栈,二叉树等高级类型,有时用基本的链表等,只要运用得当,也能达到相同的效果,甚至更效率在编写这个程序的过程中,我复习了之前所学的基本语法,更加深刻的认识到循环是大部分程序的基本要素。结合上学期学的C语言,这个学期学的分析算法的时间复杂度,不断改进算法,更佳巩固了之前学的知识,比以前更能灵活运用。此次写的程序还有很大的发展空间,例如可以增加文件的打开和存储功能、增加病人姓名等。考虑到功能的增加,可能要更改数据结构及相关的算法。此次课程设计,我受益匪浅,巩固旧知识的同时,学习了心得知识。更重要的是,它使我对数据结构产生了浓厚的兴趣,对编写程序更有信心。参考文献【1】严蔚敏,吴伟民编著数据结构(C语言版)一一北京大学出版社.2011.附录:#includestdafx.h#include#include#include#defineNULL0#defineLENsizeof(structbingli)structbingliintnumber;structbingli*next;bingli;intMenu_select()/菜单选择程序,要求用户输入一个正确的菜单选项。如果不正确,则重复调用此子程序,直到输入的值是正确的intsn;for(;)scanf(%d,&sn);if(sn5)printf(nt输入错误,请重新输入!n);elsebreak;returnsn;structbingli*(creat()/创建一个单链表。如果创建成功,则返回这个单链表的表头;如果创建不成功,则退出程序。structbingli*head;structbingli*p1,*p2;intn=0;if(!(p1=(structbingli*)malloc(LEN)exit(1);p2=p1;printf(请输入病历号(以输入数字0表示结束)n);scanf(%d,&p1-number);head=NULL;while(p1-number!=0)n=n+1;if(n=1)head=p1;elsep2-next=p1;p2=p1;scanf(%d,&p1-number);p2-next=NULL;p1=head;printf(排队成功!n);return(head);voidListInsert_rear(structbingli*head)/创建一个单链表成功后,再次排队时则调用此子程序,作用是在单链表尾部(即对尾)插入/一个病历号码。如果插入不成功则退出程序。structbingli*p4,*p5;if(!(p4=(structbingli*)malloc(LEN)exit(2);printf(请输入病历号!n);scanf(%d,&p4-number);p5=head;while(p5-next!=NULL)p5=p5-next;p5-next=p4;p4-next=NULL;printf(排队成功!n);structbingli*(ListDelete(structbingli*head),并且删除队首元/就诊程序。作用就是输出就诊的病历号(即队首元素)素、释放/其所占空间。printf(就诊的病历号为:%dn,head-number);structbingli*p6;p6=head;head=head-next;free(p6);return(head);voiddisplay(structbingli*head)/显示队列所有元素structbingli*p9;p9=head;while(p9!=NULL)printf(%dn,p9-number);p9=p9-next;voidmain()structbingli*head;printf(f*n);*n);printf(*欢迎进入就医排队管理系统!printf(n*t请选择操作:*n);printf(*t:排队;*n);printf(*t:就诊;*n);printf(*t:查看排队情况;*n);printf(f*n);*n);*n);printf(*t:不再排队;printf(*t:下班-退出运行;intj=1;while(1
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号