1课程名称:《数据结构》课程设计课程设计题目:看病排队候诊问题姓名:AAA院系:计算机学院专业:计算机科学技术年级:11级学号:AAAAAAA指导教师:AAAA2012年9月14日2目录1课程设计的目的………………………………………………………32需求分析………………………………………………………………33课程设计报告内容…………………………………………………33.1概要设计………………………………………………………33.2详细设计………………………………………………………43.3调试分析………………………………………………………43.4用户手册………………………………………………………43.5程序清单………………………………………………………53.6测试结果………………………………………………………84小结…………………………………………………………………13.5参考文献……………………………………………………………1331.课程设计的目的(1)熟练使用C语言编写程序,解决实际问题;(2)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(3)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(4)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;2.需求分析系统的主要数据是病人信息。病人信息包括:病历号,姓名,性别。本系统主要实现对病人就医进行管理,需要实现以下几个方面的管理功能:(1)病人排队:录入病人的信息。(2)显示正在等候就医的病人信息:按病历号。(3)病人就医;按病历号。(4)下班退出。3.课程设计报告内容3.1概要设计①主函数:main()②队列的基本操作4③输入前来排队候诊病人的信息:Getin()④查看排队情况:Show()⑤病人就诊:Cure()3.2详细设计程序流程图如下:3.3调试分析程序的设计严格遵循模块化的程序设计思想,由简单到复杂,注意规范。3.4用户手册用户在使用程序时应按照提示执行,步骤如下:5①进入系统后,首先选择1号功能键依次输入正在排队等候就医的病人信息。②选择2号功能键:显示目前正在等候就医的病人信息。③选择3号功能键:病人按系统分配的病历号依次就医,系统按先排队先就医的顺序分配病历号,每次一人。同时系统删除已经就医结束的病人信息。④若有新的病人排队,请继续选择1号键输入病人的信息。⑤选择4号键退出系统,今日未完成就医的病人明日继续。⑥输入其他键系统给出错误提示。3.5程序清单#includemalloc.h#includestdlib.h#includestdio.h#defineMAXQSIZE100typedefstruct//病人的信息{intnumber;//病历号charname[20];//姓名charsex[10];//年龄}Elemtype;typedefstructQnode{Elemtypedata;structQnode*next;}Qnode,*Queueptr;typedefstruct//队列的链式存储结构{Queueptrfront;6Queueptrrear;}Linkqueue;intN=0;//每日病人的累积量intM=0;//已经就诊的病人数量voidInitqueue(Linkqueue&Q){Q.front=Q.rear=(Queueptr)malloc(sizeof(Qnode));if(Q.front){Q.front-next=NULL;}}voidEnqueue(Linkqueue&Q,Elemtype*e){Queueptrp;p=(Queueptr)malloc(sizeof(Qnode));if(p){p-data=*e;p-next=NULL;Q.rear-next=p;Q.rear=p;}}Elemtype*Dequeue(Linkqueue&Q){Elemtype*e;Queueptrp;if(Q.rear!=Q.front){p=Q.front-next;Q.front-next=p-next;}if(Q.front==p)Q.rear=Q.front;free(p);returne;}voidGetin(Linkqueue&Q,Elemtype*a)//输入前来排队候诊病人的信息{7inti,j;printf(请输入前来排队候诊病人的数量:);scanf(%d,&i);for(j=N;jN+i;j++){a[j].number=j+1;printf(\n请输入第%d个病人的姓名:,j+1);scanf(%s,a[j].name);printf(\n请输入第%d个病人的性别:,j+1);scanf(%s,a[j].sex);Enqueue(Q,a);}N=N+i;}voidShow(Elemtype*a)//查看排队情况{inti;printf(\n病人就医的顺序如下:\n);printf(---病历号------姓名------性别-----\n);for(i=M;iN;i++){printf(\n);printf(%10d%10s%10s\n,a[i].number,a[i].name,a[i].sex);}}voidCure(LinkqueueQ)//病人就诊{M=M+1;Elemtype*e;e=Dequeue(Q);printf(第%d号病人已经成功就诊!\n,M);}intmain(){intm;LinkqueueQ;Elemtypea[MAXQSIZE];Initqueue(Q);printf(病人就医管理系统功能如下:\n\n);8printf(1.病人前来排队候诊!\n);printf(2.查看排队情况!\n);printf(3.病人就诊!\n);printf(4.医生下班,请退出系统!\n);do{printf(\n请选择数字1~4实现相应的功能\n);scanf(%d,&m);switch(m){case1:Getin(Q,a);break;case2:Show(a);break;case3:Cure(Q);break;case4:printf(医生下班,请退出系统!\n);break;default:printf(输入错误,请重新输入!\n);break;}}while(m!=4);return0;}3.6测试结果测试数据如下:病历号姓名性别1赵强男2孙刚男3刘丹女4李杰男95李欣女6周倩女7何萍女8杨阳男①程序开始界面。②选择功能1,先输入表格中前5人的信息。10③输入完成,选择2号功能,显示病人排队就医的信息。(系统按病人就医的先后次序依次分配病历号。)④输入3号数字键:病人按病历号次序看病,每次一人。11⑤输入1号键:又有三名病人前来排队。⑥输入3号键:病人继续按照病历号顺序看病。12⑦输入其他键,系统给出错误提示。⑧输入4号键,医生下班,退出系统。今天没排到队的病人明日继续。134.小结在数据结构课程设计的过程中,我不仅认识到了学好解理论知识的必要性,更认识到了上机操作的重要性。上机操作能过培养我们解决实际问题的能力,通过对上机操作遇到的各种问题的解决,自己感到一丝成功的同时,更下决心努力学好专业课,为以后的学习及实践打下好的基础。5.参考文献①严蔚敏,吴伟民编著.数据结构(C语言版)--北京:清华大学出版社,2007.②阮宏一,鲁静编著.数据结构课程设计(C/C++描述)--电子工业大学出版社,2011.