C语言课程设计银行排队系统.docx
- 文档编号:25614099
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:20
- 大小:18.05KB
C语言课程设计银行排队系统.docx
《C语言课程设计银行排队系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计银行排队系统.docx(20页珍藏版)》请在冰豆网上搜索。
C语言课程设计银行排队系统
#include
#include
#include
#include
#include
#definen3
intvip1=0;
inty,z;
floatsum1=0,sum2=0,sum3=0,sum4=0,sum5=0;
floati1=0,i2=0,i3=0,i4=0,i5=0;
floatave1=0,ave2=0,ave3=0,ave4=0,ave5=0;
structList
{
intA[n+1];//顾客用来办理业务的N个窗口
intlen;//表示数组中的元素个数
}L;
structLnode
{//链表结点类型
intdata;
Lnode*next;
};
structLinkqueue
{//链式存储的等候队列的类型定义
Lnode*front;
Lnode*rear;
}Q;
voidInitshuzu()//初始化线性的算法
{
for(inti=1;i<=n;i++)
L.A[i]=0;//元素值为0,表示编号为I的窗口当前状态为空
L.len=0;
}
voidInitqueue()//初始化队列的算法
{
Q.front=Q.rear=(Lnode*)malloc(sizeof(Lnode));
Q.front->next=NULL;//k1
}
voidEnqueue(Linkqueue*Q,intelem)//进队算法
{
Lnode*s;
s=(Lnode*)malloc(sizeof(Lnode));
s->data=elem;//k2
s->next=NULL;//k3
Q->rear->next=s;//k4
Q->rear=s;//k5
}
intDlqueue(Linkqueue*Q)//出队算法
{
Lnode*t;
intx;
if(Q->front==Q->rear)
{
printf("队列为空!
\n");
exit
(1);
}
else
{
t=Q->front->next;
Q->front->next=t->next;//k6
x=1;//k7
free(t);//k8
returnx;
}
}
voidprintl()//输出数组算法
{
inti;
printf("正在办理业务的顾客编号为:
一号柜台二号柜台三号柜台\n");
printf("");
for(i=1;i<=L.len;i++)
{
printf("%d号客户",L.A[i]);
}
printf("\n");
}
voidprint2()//输出队列算法
{inti=0;
printf("正在等候办理业务的顾客编号为:
");
Lnode*s=Q.front->next;
while(s!
=NULL)
{
printf("%d",s->data);
s=s->next;//k9
i++;
}
printf("\n您的前面一共有%d人在排队,请您稍候!
",i);
printf("\n");
}
voiddaoda(intx)//解决顾客到达事件算法
{
inti=L.len+1;
if(L.len {L.A[i]=x; i++; L.len++; } else Enqueue(&Q,x); } voidlikai(intx)//解决顾客离开事件算法 { inti=0; do { if(x>L.len) { printf("输入有误! \n请重新输入: "); scanf("%d",&x); } else for(i=0;i<=L.len;i++) { if(i==x) { printf("尊敬的%d号顾客您好! \n",x); L.A[i]=0; L.len--; if(Q.front! =Q.rear) { inty=Dlqueue(&Q); L.A[i]=y; L.len++; } } } }while(i==0); } intguitai()//判断输入的柜台号是否正确 { inty=0; printf("请输入你所办理业务的柜台号(1-3): \n"); scanf("%d",&y); if(y<1||y>5) { printf("你输入的柜台号有误,请重新输入! \n"); printf("请输入你所办理业务的柜台号(1-3): \n"); scanf("%d",&y); } else printf("你所办理业务的柜台为%d.\n",y); returny; } intpingfeng()//判断输入的分数是否正确 { inty=0; printf("请输入你评分(1-5): \n1分…………非常不满意;\n2分…………比较不满意;\n3分…………一般满意;\n4分…………比较满意;\n5分…………非常满意。 \n"); printf("请输入: "); scanf("%d",&y); if(y<1||y>5) { printf("你输入评分有误,请重新输入! \n"); printf("请输入你的评分(1-5): \n"); scanf("%d",&y); } else printf("你的评分为%d.\n",y); returny; } voidmygrade()//主评分函数 { printf("为了改善服务质量,请你对我们的服务进行评价。 谢谢! \n"); z=guitai(); y=pingfeng(); switch(z)//柜台评分处理 { case1: //1号柜台评分处理 { sum1+=y; i1++; ave1=sum1/i1; printf("%d号柜台的平均满意度为%0.2f。 感谢你的评分,谢谢\n",z,ave1); break; } case2: //2号柜台评分处理 { sum2+=y; i2++; ave2=sum2/i2; printf("%d号柜台的平均满意度为%0.2f。 感谢你的评分,谢谢\n",z,ave2); break; } case3: //3号柜台评分处理 { sum3+=y; i3++; ave3=sum3/i3; printf("%d号柜台的平均满意度为%0.2f。 感谢你的评分,谢谢\n",z,ave3); break; } default: printf("你的输入有误,请重新输入! \n"); } getch(); } voidvip(intx)//vip用户认证 { inti,a; a=x; charch[3]; intk=0; switch(a) { case1: { printf("请输入你的卡号: "); scanf("%d",&i); printf("请您输入五位密码: "); while(ch[k-1]! ='') { ch[k]=getch(); k++; printf("*"); } if(i==100&&ch[0]=='1'&&ch[1]=='1'&&ch[2]=='1'&&ch[3]=='1') { printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务! \n"); vip1++; } elseif(i==200&&ch[0]=='2'&&ch[1]=='2'&&ch[2]=='2'&&ch[3]=='2') { printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务! \n"); vip1++; } elseif(i==300&&ch[0]=='3'&&ch[1]=='3'&&ch[2]=='3'&&ch[3]=='3') { printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务! \n"); vip1++; } elseif(i==400&&ch[0]=='4'&&ch[1]=='4'&&ch[2]=='4'&&ch[3]=='4') { printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务! \n"); vip1++; } elseif(i==500&&ch[0]=='5'&&ch[1]=='5'&&ch[2]=='5'&&ch[3]=='5') { printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务! \n"); vip1++; } elseprintf("\n你的输入有误! \n"); break; } default: break; } } voidtime()//时间函数 { time_ttimep; time(&timep); printf("现在时刻: %s",ctime(&timep)); } voidmain()//主函数 { system("color1f");//屏幕颜色设定 system("modecon: cols=90lines=35"); time_ta1,a2,a3,a4,a5,a6,a7,a8,a9,a10,end; doubleb1=0,b2=0,b3=0,b4=0,b5=0,b6=0,b7=0,b8=0,b9=0,b10=0,allsum=0,average=0,xi=0; doubleA[10]={0,0,0,0,0,0,0,0,0,0}; intc,x,v=0,w=0; Initshuzu(); Initqueue(); doublesum=0; while (1) { printf("\n*****************************欢迎光临中国银行******************************************\n"); printf("\n\n"); printf("1顾客到达\n"); printf("2顾客离开\n"); printf("3查看业务办理\n"); printf("4查看排队情况\n"); printf("5系统查询\n"); printf("6退出\n\n"); time(); printf("\n提示: 请按回车键进行下一步操作\n"); printf("\n\n"); printf("*****************************欢迎光临中国银行*******************************************\n"); printf("请输入: "); scanf("%d",&c); switch(c) { case1: { system("cls"); printf("\n*********************************顾客到达界面*****************************************\n\n"); intk=0; inta; printf("请选择你的用户类型: VIP用户请按1;\n普通卡用户请按2.\n"); printf("请输入: "); scanf("%d",&a); if(a==1) { vip(a); getch(); } else { v++;//普通卡顾客计数 printf("尊敬的普通卡用户,你的业务号为%d.\n",v); daoda(v); if(v==1) { a1=time(NULL);//v=1的客户到达时间 system("pause"); } elseif(v==2) { a2=time(NULL); system("pause"); } elseif(v==3) { a3=time(NULL); system("pause"); } elseif(v==4) { a4=time(NULL); system("pause"); } elseif(v==5) { a5=time(NULL); system("pause"); } elseif(v==6) { a6=time(NULL); system("pause"); } elseif(v==7) { a7=time(NULL); system("pause"); } elseif(v==8) { a8=time(NULL); system("pause"); } elseif(v==9) { a9=time(NULL); system("pause"); } elseif(v==10) { a10=time(NULL); system("pause"); } else { printf("请稍候拿号,谢谢! "); system("pause"); } } system("cls"); break; } case2: { system("cls"); printf("\n************************************顾客离开界面******************************************\n\n"); printf("请输入离开顾客得编号: \n"); scanf("%d",&x); likai(x); mygrade(); w++; if(x=1) { end=time(NULL); A[0]=difftime(end,a1); printf("您办理业务所用时间为%0.2f秒.\n",difftime(end,a1)); } elseif(x=2) { end=time(NULL); A[1]=difftime(end,a2); printf("您办理业务所用时间为%0.2f秒.\n",difftime(end,a2)); } elseif(x=3) { end=time(NULL); A[2]=difftime(end,a3); printf("您办理业务所用时间为%0.2f秒.\n",difftime(end,a3)); } elseif(x=4) { end=time(NULL); A[3]=difftime(end,a4); printf("您办理业务所用时间为%0.2f秒.\n",difftime(end,a4)); } elseif(x=5) { end=time(NULL); A[4]=difftime(end,a5); printf("您办理业务所用时间为%0.2f秒.\n",difftime(end,a5)); } elseif(x=6) { end=time(NULL); A[5]=difftime(end,a6); printf("您办理业务所用时间为%0.2f秒.\n",difftime(end,a6)); } elseif(x=7) { end=time(NULL); A[6]=difftime(end,a7); printf("您办理业务所用时间为%0.2f秒.\n",difftime(end,a7)); } elseif(x=8) { end=time(NULL); A[7]=difftime(end,a8); printf("您办理业务所用时间为%0.2f秒.\n",difftime(end,a8)); } elseif(x=9) { end=time(NULL); A[8]=difftime(end,a9); printf("您办理业务所用时间为%0.2f秒.\n",difftime(end,a9)); } elseif(x=10) { end=time(NULL); A[9]=difftime(end,a10); printf("您办理业务所用时间为%0.2f秒.\n",difftime(end,a10)); } allsum+=A[0]; getch(); system("cls"); break; } case3: { system("cls"); printf("\n***********************************业务查询界面*******************************************\n\n"); printl(); getch(); system("cls"); break; } case4: { system("cls"); printf("\n**********************************排队查询界面*******************************************\n\n"); print2(); getch(); system("cls"); break; } case5: { system("cls"); printf("\n*************************************系统查询界面*****************************************\n\n"); charcool[3]; inti=0,k=0; printf("请输入你的卡号: "); scanf("%d",&i); printf("请您输入五位密码: "); while(cool[k-1]! ='') { cool[k]=getch(); k++; printf("*"); } if(i==000&&cool[0]=='1'&&cool[1]=='1'&&cool[2]=='1'&&cool[3]=='1') { average=allsum/w; printf("\n至今已有%d位普通用户,%d位vip用户成功办理业务! ",w,vip1); printf("\n普通用户业务办理总共用时%0.2f秒,平均用时%0.2f秒\n",allsum,average); } getch(); system("cls"); break; } return; getch(); system("cls"); case6: return; getch(); system("cls"); default: printf("输入有误! 请重新输入: \n"); getch(); system("cls"); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 银行 排队 系统