qq_53502444 2021-11-11 14:22 采纳率: 50%
浏览 58
已结题

银行排队系统,这个Enqueue和Dlqueue怎么声明啊


#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h> 
#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;
typedef struct List
{
    int A[n+1];
    int len;
}List;
typedef struct Lnode
{
    int data;
    struct Lnode *next;
}Lnode;
typedef struct Linkqueue
{
    Lnode *front;
    Lnode *rear;
}Linkqueue;
List L;
Linkqueue Q;
void Initshuzu()
{
    int i;
    for(i=1;i<=n;i++)
    L.A[i]=0;
    L.len=0;
}
void print1()
{
    int i;
    printf("正在办理业务的顾客编号为: 一号柜台 二号柜台 三号柜台\n");
    printf("                                      ");
    for(i=1;i<=L.len;i++)
    {
        printf("%d号客户             ",L.A[i]);
    }
    printf("\n");
}
void print2()
{
    int i=0;
    printf("正在等候办理业务的顾客编号为:");
    Lnode *s=Q.front->next;
    while(s!=NULL)
    {
        printf("%d",s->data);
        s=s->next;i++;
    }
    printf("\n您的前面一共有%d人在排队,请您稍候!",i); printf("\n");
}
void daoda(int x)
{
    int i=L.len+1;
    if (L.len<n)
    {
        L.A[i]=x;
        i++; L.len++;
    }
    else Enqueue(&Q,x);
}
void likai(int x)
{
    int i=0,j=1;
    int y;
    do
    {
        if (x>L.len)
        {
            printf("输入有误!\n请重新输入:");
            scanf("%d",&x);
            j++;
        }
        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)
                {
                    y=Dlqueue(&Q);
                    L.A[i]=y;
                    L.len++;
                }
            }
        }
    }while(i==0 && j<3);
    if(j==3)
    {
        printf("再见!欢迎下次光临!");
        exit(0);
    }
}
int guitai()
{
    int y=0;
    printf ("请输入您所办理业务的柜台号(1-3):");
    scanf ("%d",&y);
    if(y<1||y>3)
    {
        printf ("您输入的柜台号有误,请重新输入! \n");
        printf ("请输入您所办理业务的柜台号(1-3):");scanf("%d",&y);
    }
    else
        printf ("您所办理业务的柜台为%d.\n",y);
    return y;
}
int pingfen()
{
    int y=0;
    printf("请输入您的评分(1-5):\n 1分...非常不满意; 2分...不满意; 3分...一般满意;\n 4分...比较满意;\n 5分...非常满意。\n");
    printf("请输入:");
    scanf ("%d",&y);
    if(y<1 || y>3)
    {
        printf("您输入评分有误,请重新输入!\n");
        printf("请输入您的评分(1-5):");
        scanf ("%d",&y);
    }
    else printf ("您的评分为%d.\n",y);
    return y;
}
void mygrade ()
{
    printf("为了改善服务质量,请您对我们的服务进行评价。谢谢! \n");
    z=guitai();
    y=pingfen();
    switch (z)
    {
        case 1:sum1+=y; i1++;
            ave1=sum1/i1;
            printf("%d号柜台的平均满意度为%0.2f。感谢您的评分,谢谢!\n",z,ave1);
            break;
        case 2:sum2+=y; i2++;
            ave2=sum2/i2;
            printf("%d号柜台的平均满意度为%0.2f。感谢您的评分,谢谢!\n",z,ave2);
            break;
        case 3:sum3+=y; i3++;
            ave3=sum3/i3;
            printf("%d号柜台的平均满意度为%0.2f。感谢您的评分,谢谢!\n",z,ave3);
            break;
        default:printf("您的输入有误,请重新输入! \n");
    }
    getch();
}
void VIP(int x)
{
    int i,a=x,k=0;
    char ch[3];
    switch(a)
    {
        case 1:
        {
            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++;
            }
            else if(i==200 && ch[0]=='2' && ch[1]=='2' && ch[3]=='2')
            {
                printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务! \n");
                VIP1++;
            }
            else if(i==300 && ch[0]=='3' && ch[1]=='3' && ch[3]=='3')
            {
                printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务! \n");
                VIP1++;
            }
            else if(i==400 && ch[0]=='4' && ch[1]=='4' && ch[3]=='4')
            {
                printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务! \n");
                VIP1++;
            }
            else if(i==500 && ch[0]=='5' && ch[1]=='5' && ch[3]=='5')
            {
                printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务! \n");
                VIP1++;
            }
            else printf ("\n您的输入有误!\n");
            break;
        }
        default:break;
    }
}
void mytime()
{
    time_t timep;
    time (&timep);
    printf("         现在时刻:%s",ctime(&timep));
}
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 Initqueue()
{
    Q.front=Q.rear=(Lnode *)malloc(sizeof(Lnode));
    Q.front->next=NULL;
}
void main()
{
    system("color 1f");
    system("mode con:cols=90 lines=35");
    time_t a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,start,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**********欢迎光临中国银行**********\n");
        printf("\n                                    \n");
        printf("             1      顾客到达\n");
        printf("             2      顾客离开\n");
        printf("             3      查看业务办理\n");
        printf("             4      查看排队情况\n");
        printf("             5      系统查询\n");
        printf("             6      退出\n\n");
        mytime();
        printf("\n        提示:请按回车键进行下步操作\n");
        printf("\n                                    \n");
        printf("***************************************n");
        printf("请输入:");
        scanf("d",&c);
        switch(c)
        {
            case 1:
            {
                system("cls");
                printf("\n**********顾客到达界面***********\n\n");
                int k=0,a;
                printf("请选择您的用户类型:VIP用户请按1;普通用户请按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);
                        mytime();
                        system("pause");
                    }
                    else if(v==2)
                    {
                        a2=time(NULL);
                        mytime();
                        system("pause");
                    }
                    else if(v==3)
                    {
                        a3=time(NULL);
                        mytime();
                        system("pause");
                    }
                    else if(v==4)
                    {
                        a4=time(NULL);
                        mytime();
                        system("pause");
                    }
                    else if(v==5)
                    {
                        a5=time(NULL);
                        mytime();
                        system("pause");
                    }
                    else if(v==6)
                    {
                        a6=time(NULL);
                        mytime();
                        system("pause");
                    }
                    else if(v==7)
                    {
                        a7=time(NULL);
                        mytime();
                        system("pause");
                    }
                    else if(v==8)
                    {
                        a8=time(NULL);
                        mytime();
                        system("pause");
                    }
                    else if(v==9)
                    {
                        a9=time(NULL);
                        mytime();
                        system("pause");
                    }
                    else if(v==10)
                    {
                        a10=time(NULL);
                        mytime();
                        system("pause");
                    }
                    else
                    {
                        printf("请稍候拿号,谢谢!");
                        system("pause");
                    }
                }
                system("cls");
                break;
            }
            case 2:
            {
                system("cls");
                printf("\n**********顾客离开界面**********\n\n");
                printf("请输入离开顾客得编号:"); scanf("%d",&x);
                likai(x);
                mygrade();
                w++;
                if(x==1)
                {
                    end=time(NULL);A[0]=difftime(end,a1);
                    printf("您办理业务所用时间为%0.2f秒.\n",A[0]);
                }
                else if(x==2)
                {
                    end=time(NULL);A[1]=difftime(end,a2);
                    printf("您办理业务所用时间为%0.2f秒.\n",A[1]);
                }
                else if(x==3)
                {
                    end=time (NULL);A[2]=difftime(end,a3);
                    printf("您办理业务所用时间为%0.2f秒.\n",A[2]);
                }
                else if(x==4)
                {
                    end=time(NULL);A[3]=difftime(end,a4);
                    printf("您办理业务所用时间为%0.2f秒.\n",A[3 ]);
                }
                else if(x==5)
                {
                    end=time(NULL);A[4]=difftime(end,a5);
                    printf("您办理业务所用时间为%0.2f秒.\n",A[4]);
                }
                else if(x==6)
                {
                    end=time(NULL);A[5]=difftime(end,a6);
                    printf("您办理业务所用时间为%0.2f秒.\n",A[5]);
                }
                else if(x==7)
                {
                    end=time (NULL);A[6]=difftime(end,a7);
                    printf("办理业务所用时间为&0.2f 秒.\n",A[6]);
                }
                else if(x==8)
                {
                    end=time(NULL);A[7]=difftime (end,a8);
                    printf("您办理业务所用时间为%0.2f秒.\n",A[7]);
                }
                else if(x==9)
                {
                    end=time(NULL);A[8]=difftime (end,a9);
                    printf("您办理业务所用时间为%0.2f秒.\n",A[8]);
                }
                else if(x==10)
                {
                    end=time(NULL);A[9]=difftime (end,a10);
                    printf("您办理业务所用时间为%0.2f秒.\n",A[9]);
                }
                allsum+=A[0];
                getch(); system ("cls");
                break;
            }
            case 3:
            {
                system("cls");
                printf("\n**********业务查询界面**********\n\n");
                print1();
                getch();
                system("cls");
                break;
            }
            case 4:
            {
                system("cls");
                printf("\n**********排队查询界面**********\n\n");
                print2();
                getch();
                system("cls");
                break;
            }
            case 5:
            {
                system("cls");
                printf("\n**********系统查询界面**********\n\n");
                char cool[3];
                int i=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");
            case 6:
                return;
                getch();system("cls");
            default: printf("输入有误!请重新输入: \n");getch();
                system("cls");
        }
    }
}

  • 写回答

1条回答 默认 最新

  • 关注

    把Enqueue和Dlqueue这两个函数放在调用他们的函数之前。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月19日
  • 已采纳回答 11月11日
  • 创建了问题 11月11日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分