看病排队候诊问题.docx
《看病排队候诊问题.docx》由会员分享,可在线阅读,更多相关《看病排队候诊问题.docx(12页珍藏版)》请在冰豆网上搜索。
看病排队候诊问题
课程名称:
《数据结构》课程设计
课程设计题目:
看病排队候诊问题
姓名:
AAA
院系:
计算机学院
专业:
计算机科学技术
年级:
11级
学号:
AAAAAAA
指导教师:
AAAA
2012年9月14日
1课程设计的目的………………………………………………………3
2需求分析………………………………………………………………3
3课程设计报告内容…………………………………………………3
3.1概要设计………………………………………………………3
3.2详细设计………………………………………………………4
3.3调试分析………………………………………………………4
3.4用户手册………………………………………………………4
3.5程序清单………………………………………………………5
3.6测试结果………………………………………………………8
4小结…………………………………………………………………13.
5参考文献……………………………………………………………13
1.课程设计的目的
(1)熟练使用C语言编写程序,解决实际问题;
(2)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
(3)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
(4)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
2.需求分析
系统的主要数据是病人信息。
病人信息包括:
病历号,姓名,性别。
本系统主要实现对病人就医进行管理,需要实现以下几个方面的管理功能:
(1)病人排队:
录入病人的信息。
(2)显示正在等候就医的病人信息:
按病历号。
(3)病人就医;按病历号。
(4)下班退出。
3.课程设计报告内容
3.1概要设计
①主函数:
main()
②队列的基本操作
③输入前来排队候诊病人的信息:
Getin()
④查看排队情况:
Show()
⑤病人就诊:
Cure()
3.2详细设计
程序流程图如下:
3.3调试分析
程序的设计严格遵循模块化的程序设计思想,由简单到复杂,注意规范。
3.4用户手册
用户在使用程序时应按照提示执行,步骤如下:
①进入系统后,首先选择1号功能键依次输入正在排队等候就医的病人信息。
②选择2号功能键:
显示目前正在等候就医的病人信息。
③选择3号功能键:
病人按系统分配的病历号依次就医,系统按先排队先就医的顺序分配病历号,每次一人。
同时系统删除已经就医结束的病人信息。
④若有新的病人排队,请继续选择1号键输入病人的信息。
⑤选择4号键退出系统,今日未完成就医的病人明日继续。
⑥输入其他键系统给出错误提示。
3.5程序清单
#include
#include
#include
#defineMAXQSIZE100
typedefstruct//病人的信息
{
intnumber;//病历号
charname[20];//姓名
charsex[10];//年龄
}Elemtype;
typedefstructQnode
{
Elemtypedata;
structQnode*next;
}Qnode,*Queueptr;
typedefstruct//队列的链式存储结构
{
Queueptrfront;
Queueptrrear;
}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)//输入前来排队候诊病人的信息
{
inti,j;
printf("请输入前来排队候诊病人的数量:
");
scanf("%d",&i);
for(j=N;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;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");
printf("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
李杰
男
5
李欣
女
6
周倩
女
7
何萍
女
8
杨阳
男
①程序开始界面。
②选择功能1,先输入表格中前5人的信息。
③输入完成,选择2号功能,显示病人排队就医的信息。
(系统按病人就医的先后次序依次分配病历号。
)
④输入3号数字键:
病人按病历号次序看病,每次一人。
⑤输入1号键:
又有三名病人前来排队。
⑥输入3号键:
病人继续按照病历号顺序看病。
⑦输入其他键,系统给出错误提示。
⑧输入4号键,医生下班,退出系统。
今天没排到队的病人明日继续。
4.小结
在数据结构课程设计的过程中,我不仅认识到了学好解理论知识的必要性,更认识到了上机操作的重要性。
上机操作能过培养我们解决实际问题的能力,通过对上机操作遇到的各种问题的解决,自己感到一丝成功的同时,更下决心努力学好专业课,为以后的学习及实践打下好的基础。
5.参考文献
①严蔚敏,吴伟民编著.数据结构(C语言版)--北京:
清华大学出版社,2007.
②阮宏一,鲁静编著.数据结构课程设计(C/C++描述)--电子工业大学出版社,2011.