数据结构课程设计(银行排队系统)

更新时间:2023-03-10 23:40:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

(贵州大学计算机科学与信息学院贡献)

#include #include #include #include #include #define n 3 int vip1=0; int y,z;

float sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; float i1=0,i2=0,i3=0,i4=0,i5=0;

float ave1=0,ave2=0,ave3=0,ave4=0,ave5=0; struct List {

int A[n+1]; //顾客用来办理业务的N个窗口 int len; //表示数组中的元素个数 }L;

struct Lnode

{ //链表结点类型 int data;

Lnode *next; };

struct Linkqueue

{ //链式存储的等候队列的类型定义 Lnode *front; Lnode *rear; }Q;

void Initshuzu() //初始化线性的算法 {

for(int i=1;i<=n;i++)

L.A[i]=0; //元素值为0,表示编号为I的窗口当前状态为空 L.len=0; }

void Initqueue() //初始化队列的算法 {

Q.front=Q.rear=(Lnode *)malloc(sizeof(Lnode)); Q.front->next=NULL; }

void Enqueue(Linkqueue *Q,int elem) //进队算法 {

Lnode *s;

s=(Lnode *)malloc(sizeof(Lnode)); s->data=elem; s->next=NULL; Q->rear->next=s; Q->rear=s; }

int Dlqueue(Linkqueue *Q) //出队算法 {

Lnode *t; int x;

if(Q->front==Q->rear) { printf(\队列为空!\\n\ exit(1); } else { t=Q->front->next;

Q->front->next=t->next; x=t->data; free(t); return x; } }

void printl() //输出数组算法 { int i;

printf(\正在办理业务的顾客编号为: 一号柜台 printf(\ \ for( i=1;i<=L.len;i++) { printf(\号客户 \ } printf(\ }

void print2() //输出队列算法 { int i=0;

printf(\正在等候办理业务的顾客编号为:\ Lnode *s=Q.front->next; while(s!=NULL) { printf(\ s=s->next;

二号柜台三号柜台\\n\ i++; } printf(\您的前面一共有%d人在排队,请您稍候!\ printf(\}

void daoda(int x) //解决顾客到达事件算法 { int i=L.len+1; if (L.len

else

Enqueue(&Q,x); }

void likai(int x) //解决顾客离开事件算法 { int i=0; do { if(x>L.len) { printf(\输入有误!\\n请重新输入:\ scanf(\ } else for(i=0;i<=L.len;i++) { if(i==x) { printf(\尊敬的%d号顾客您好!\\n\ L.A[i]=0; L.len--; if(Q.front!=Q.rear) { int y=Dlqueue(&Q); L.A[i]=y; L.len++; } }

} }while(i==0); }

int guitai( ) //判断输入的柜台号是否正确 { int y=0;

printf(\请输入你所办理业务的柜台号(1-3):\\n\ scanf(\ if(y<1||y>5) { printf(\你输入的柜台号有误,请重新输入!\\n\ printf(\请输入你所办理业务的柜台号(1-3):\\n\ scanf(\ } else printf(\你所办理业务的柜台为%d.\\n\ return y; }

int pingfeng( ) //判断输入的分数是否正确 { int y=0;

printf(\请输入你评分(1-5):\\n 1分…………非常不满意;\\n 2分…………比较不满意;\\n 3分…………一般满意;\\n 4分…………比较满意;\\n 5分…………非常满意。\\n\ printf(\请输入:\ scanf(\ if(y<1||y>5) { printf(\你输入评分有误,请重新输入!\\n\ printf(\请输入你的评分(1-5):\\n\ scanf(\ } else printf(\你的评分为%d.\\n\ return y; }

void mygrade() //主评分函数 { printf(\为了改善服务质量,请你对我们的服务进行评价。谢谢!\\n\ z=guitai( ); y=pingfeng( );

switch (z) //柜台评分处理

{ case 1: //1号柜台评分处理 { sum1+=y; i1++; ave1=sum1/i1; printf(\号柜台的平均满意度为%0.2f。感谢你的评分,谢谢!!!\\n\ break; } case 2: //2号柜台评分处理 { sum2+=y; i2++; ave2=sum2/i2; printf(\号柜台的平均满意度为%0.2f。感谢你的评分,谢谢!!!\\n\ break; }

case 3: //3号柜台评分处理 { sum3+=y; i3++; ave3=sum3/i3; printf(\号柜台的平均满意度为%0.2f。感谢你的评分,谢谢!!!\\n\ break; } default : printf(\你的输入有误,请重新输入!\\n\ }

getch(); }

void vip(int x) //vip用户认证 { int i,a; a=x; char ch[3]; int k=0; switch(a) { case 1: { printf(\请输入你的卡号:\ scanf(\

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(\尊敬的VIP用户您好,请您直接到VIP区办理业务!\\n\ vip1++; } else if(i==200&&ch[0]=='2'&&ch[1]=='2'&&ch[2]=='2'&&ch[3]=='2') { printf(\尊敬的VIP用户您好,请您直接到VIP区办理业务!\\n\ vip1++; } else if(i==300&&ch[0]=='3'&&ch[1]=='3'&&ch[2]=='3'&&ch[3]=='3') { printf(\尊敬的VIP用户您好,请您直接到VIP区办理业务!\\n\ vip1++; } else if(i==400&&ch[0]=='4'&&ch[1]=='4'&&ch[2]=='4'&&ch[3]=='4') { printf(\尊敬的VIP用户您好,请您直接到VIP区办理业务!\\n\ vip1++; } else if(i==500&&ch[0]=='5'&&ch[1]=='5'&&ch[2]=='5'&&ch[3]=='5') { printf(\尊敬的VIP用户您好,请您直接到VIP区办理业务!\\n\ vip1++; } else printf(\你的输入有误!\\n\ break; } default : break; } }

void time() //时间函数 {

time_t timep; time (&timep);

printf(\ 现在时刻:%s\}

void main() //主函数 { system(\ //屏幕颜色设定 system(\ time_t a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,end; double

b1=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; double A[10]={0,0,0,0,0,0,0,0,0,0}; int c,x,v=0,w=0; Initshuzu(); Initqueue(); double sum=0; while(1) {

printf(\欢迎光临中国银******************************************\\n\ printf(\ \\n\

printf(\ 1 顾客到达\\n\ printf(\ 2 顾客离开\\n\ printf(\ 3 查看业务办理\\n\ printf(\ 4 查看排队情况\\n\ printf(\ 5 系统查询\\n\ printf(\ 6 退出\\n\\n\ time();

printf(\ 提示:请按回车键进行下一步操作\\n\ printf(\ \\n\ printf(\欢迎光临中国银*******************************************\\n\ printf(\请输入:\ scanf(\ switch(c) { case 1: { system(\ printf(\顾客到达界*****************************************\\n\\n\ int k=0; int a; printf(\请选择你的用户类型:VIP用户请按 1;\\n 通卡用户请按 2.\\n\

行 行面普 printf(\请输入:\ scanf(\ if (a==1) { vip(a); getch(); } else { v++; //普通卡顾客计数 printf(\尊敬的普通卡用户,你的业务号为%d.\\n\ daoda(v); if(v==1) { a1=time(NULL); //v=1的客户到达时间 system(\ } else if(v==2) { a2=time(NULL); system(\ } else if(v==3) { a3=time(NULL); system(\ } else if(v==4) { a4=time(NULL); system(\ } else if(v==5) { a5=time(NULL); system(\ } else if(v==6) { a6=time(NULL); system(\ } else if(v==7) {

a7=time(NULL); system(\ } else if(v==8) { a8=time(NULL); system(\ } else if(v==9) { a9=time(NULL); system(\ } else if(v==10) { a10=time(NULL); system(\ } else { printf(\请稍候拿号,谢谢!\ system(\ } } system(\ break; } case 2: { system(\

printf(\顾客离开界面******************************************\\n\\n\ printf(\请输入离开顾客得编号:\\n\ scanf(\ likai(x); mygrade() ; w++; if(x=1) { end=time(NULL); A[0]=difftime(end,a1); printf(\ 您办理业务所用时间为 %0.2f 秒.\\n\

} else if(x=2) { end=time(NULL); A[1]=difftime(end,a2); printf(\ 您办理业务所用时间为 %0.2f

秒.\\n\ } else if(x=3) { end=time(NULL); A[2]=difftime(end,a3); printf(\ 秒.\\n\ } else if(x=4) { end=time(NULL); A[3]=difftime(end,a4); printf(\ 秒.\\n\ } else if(x=5) { end=time(NULL); A[4]=difftime(end,a5); printf(\ 秒.\\n\ } else if(x=6) { end=time(NULL); A[5]=difftime(end,a6); printf(\ 秒.\\n\ } else if(x=7) { end=time(NULL); A[6]=difftime(end,a7); printf(\ 秒.\\n\ } else if(x=8)

您办理业务所用时间为 %0.2f

您办理业务所用时间为 %0.2f

您办理业务所用时间为 %0.2f

您办理业务所用时间为 %0.2f

您办理业务所用时间为 %0.2f

本文来源:https://www.bwwdw.com/article/show.html

Top