《C语言》课程设计报告
学院:_电气与信息工程学院_专业班级:
学生姓名:学号:
设计地点(单位)________计算机基础自主学习中心 _ __
设计题目:_医院门诊候诊的队列管理程序______________ _____ 完成日期: XXXX 年XX 月 XX日
指导教师评语:______________________ _________________ __________________________________________________________________________________ __________________________________________________________________________________ _______________________________________________ _
成绩(五级记分制):______ __________
指导教师(签字):________ ________
重庆科技学院
课程设计任务书
设计题目:医院门诊候诊的队列管理程序
摘要
熟练操作VC++软件,熟练运用switch语句进行各种选择,通过模块化程序设计,编写子函数使程序条理更清晰。
运用VC++软件编写《医院门诊候诊的队列管理程序》,本程序分为6大模块,模块一中包含所有子函数的调用及结束程序的条件,模块二进行挂号处理,模块三进行叫号处理,模块四程序自动将挂号的人进行分诊室处理,模块五显示队列中各个人的信息,模块六统计当前所挂号的总人数;运用switch进行各种操作的选择;利用循环进行重复的操作;并运用system(“cls”)进行清屏处理,使显示界面更清晰。
关键字:模块化 switch 循环
目录
摘要 (Ⅰ)
1软件需求及分析说明书 (1)
2系统分析与设计 (2)
2.1软件界面设计 (2)
2.2软件的数据设计 (6)
2.3软件的算法设计 (6)
3软件的实现 (9)
4软件测试 (14)
5软件使用说明书 (15)
参考文献 (16)
致谢 (17)
1软件需求分析说明书
本程序分为6大模块,模块一中包含所有子函数的调用及结束程序的条件,模块二进行挂号处理,模块三进行叫号处理,模块四程序自动将挂号的人进行分诊室处理,模块五显示队列中各个人的信息,模块六统计当前所挂号的总人数。
2系统分析与设计
2.1、软件界面设计
主界面:
挂号界面:
叫号界面:
分诊室界面:
信息查询界面:
统计界面:
结束界面:
2.2、软件的数据设计
将输入的挂号人信息以姓名,性别,年龄和挂号单号存入数组中。
2.3、软件的算法设计
模块五,查询系统:
3软件的实现
程序源代码:
#include
#include
#include
typedef struct News
{
char name[20];
char sex[10];
char number[10];
int old;
}News; //定义一个结构体以便保存患者的各个信息
int i=0; // 依次记录患者挂号的顺序,顺便记录总共挂号的人数
int q=0; // 记录当前被叫号的当前队列序号
int s1[50],s2[50],s3[50]; //保存各个诊室患者的队列号
int q1,q2,q3; // 记录各个诊室患者的总人数
int Choose()
{
int i;
printf("\n\n");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>医院门诊候诊的队列管理
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf("\n\n");
printf(" * 1、挂号;\n");
printf(" * 2、叫号;\n");
printf(" * 3、分诊室;\n");
printf(" * 4、显示各诊室队列信息;\n");
printf(" * 5、统计当天就诊的患者情况;\n");
printf(" * 6、结束程序。\n");
printf("\n\n\n\n");
printf("请选择:");
scanf("%d",&i); //通过输入获得返回值,选择说要进入的系统
system("cls");
return i;
} // 选择所要进入系统的函数
void Gh(News *a)
{
int x;
printf("\n"\n");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>挂号系统
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf("\n\n");
printf("请输入挂号姓名,性别,年龄及挂号单号:\n");
scanf("%s %s %d %s",a[i].name,a[i].sex,&a[i].old,a[i].number); // 患者输入自己的
信息进行排队
i++;
system("cls");
printf("挂号成功,按任意键结束!");
scanf("%d",&x);
system("cls");
} // 挂号系统
void Jh(News *a)
{
int x;
printf("\n\n");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>叫号系统
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf("\n\n");
printf("姓名:%s \n性别:%s \n年龄:%d \n挂号单
号:%s\n",a[q].name,a[q].sex,a[q].old,a[q].number); // 显示排在队列第一名患者的信息q++;
printf("叫号成功,按任意键结束!");
scanf("%d",&x);
system("cls");
}// 叫号系统
void Fzs(News *a)
{
int b,x;
system("cls");
printf("\n\n");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>分诊室系统
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf("\n\n");
for(b=q;b
{if(a[b].old>=35)
{s1[q1++]=b;} // 从当前队列第一人开始判断,如果当前患者大于35岁,则诊室1记录下当前患者的总队列号
else
if(a[b].old<35 && !strcmp(a[b].sex,"nan"))
{s2[q2++]=b;} // 如果当前患者小于35岁并且是男性,则诊室2记录下当前患者的总队列号
else
{s3[q3++]=b;} // 如果以上两种情况都不满足,则诊室3记录下当前患者的总队列号
}
printf("分诊室成功,按任意键结束!");
scanf("%d",&x);
system("cls");
} // 分诊室系统
void Xsxx(News *a)
{
int x1,x2,x3;
int x,j;
printf("\n\n");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>信息查询系统
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf("\n\n");
for(j=q;j
{ for(x1=0;x1 {if(s1[x1]==j) // 如果查询到当前序列号与诊室1的某个队列号相同,则输出其信息 {printf("姓名:%s \n性别:%s \n年龄:%d \n挂号单 号:%s\n",a[j].name,a[j].sex,a[j].old,a[j].number); printf("ta在第一诊室!\n\n");} } for(x2=0;x2 {if(s2[x2]==j) // 如果查询到当前序列号与诊室2的某个队列号相同,则输出其信息 {printf("姓名:%s \n性别:%s \n年龄:%d \n挂号单 号:%s\n",a[j].name,a[j].sex,a[j].old,a[j].number); printf("ta在第二诊室!\n\n");} } for(x3=0;x3 {if(s3[x3]==j) // 如果查询到当前序列号与诊室3的某个队列号相同,则输出其信息 {printf("姓名:%s \n性别:%s \n年龄:%d \n挂号单 号:%s\n",a[j].name,a[j].sex,a[j].old,a[j].number); printf("ta在第三诊室!\n\n");} } } printf("显示完毕,按任意键结束!"); scanf("%d",&x); system("cls"); } // 查询系统 void Tj(News *a) { int boy=0,girl=0,z=0; int t,c,m,n,x; for(;;) { printf("\n\n"); printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>统计系统 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); printf("\n\n"); printf(" 请选择统计方式:\n\n\n * 0、按性别统计\n * 1、按年龄段统计\n"); scanf("%d",&c); if(c==0) // 如果输入0则按性别进行统计 { {for(t=0;t {if(!strcmp(a[t].sex,"nan")) boy++; else girl++; } } system("cls"); printf("\n\n"); printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>统计系统 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); printf("\n\n"); printf("今天男性患者有: %d 人\n今天女性患者有: %d 人\n",boy,girl); // 显示按性别统计额结果 printf("\n\n\n\n\n * 0、返回上一层\n * 1、退出统计系统\n"); scanf("%d",&x); system("cls"); if(x==1) break; } else // 输入1则按年龄段进行统计 {system("cls"); printf("\n\n"); printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>统计系统 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); printf("\n\n"); printf("请输入需要统计的年龄段:\n"); printf("\n\n"); scanf("%d %d",&m,&n);// 输入两个年龄划分年龄段 for(t=0;t {if(a[t].old>=m && a[t].old<=n) z++;} system("cls"); printf("\n\n"); printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>统计系统 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); printf("\n\n"); printf("今天年龄段在 %d 到 %d 的有 %d 人",m,n,z); // 显示按年龄段的统计 的结果 printf("\n\n\n\n\n * 0、返回上一层\n * 1、退出统计系统 \n"); scanf("%d",&x); system("cls"); if(x==1) // 通过输入判断是否继续进行统计 break; } } system("cls"); } // 统计系统 int main() { int x=0; News a[1000]; while(x!=6) { x=Choose(); switch(x) { case 1:Gh(a);break; case 2:Jh(a);break; case 3:Fzs(a);break; case 4:Xsxx(a);break; case 5:Tj(a);break; } } system("cls"); printf("\n"); printf("\n"); printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>医院门诊候诊的队列管理<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); printf("\n\n\n\n\n\n\n\n"); printf(" * 程序结束 \n"); scanf("%d",&x); return 0; } 4软件测试 1、int Choose(); //选择所要进入系统的函数 2、void Gh(News *a); //挂号系统 3、void Jh(News *a);// 叫号系统 4、void Fzs(News *a);// 分诊室系统 5、void Xsxx(News *a); // 查询系统 6、void Tj(News *a); // 统计系统 5软件使用说明书