【練習】銀行排號程式

Time-space發表於2017-11-19

  隨著銀行業務的擴充套件, 到銀行辦理業務的人越來越多,經常可以見到銀行營業大廳中排著長隊。為了改善服務,很多銀行都設定了排號系統,顧客去辦理業務時,通過排號機生成一個好嗎,然後可坐在在休息區等候排號系統按號碼進行呼叫,而從不需要使用者站在櫃檯前等候,緩解使用者等候時的煩躁情緒。本程式為模擬該排號系統的例項。

  • 實現原始碼
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct
{
    int num; //顧客編號
    long time;//進入佇列時間
}DATA;
#include "2-12 CycQueue.h"
int num;//顧客序號
void add(CycQueue *q) //新增顧客排列
{
    DATA data;
    if(!CycQueueIsFull(q)) //如果佇列未滿
    {
        data.num=++num;
        data.time=time(NULL);
        CycQueueIn(q,data);
    }
    else
        printf("\n排隊的人太多,請稍候再排隊!\n");
}
void next(CycQueue *q) //通知下一顧客準備
{
    DATA *data;
    if(!CycQueueIsEmpty(q)) //若佇列不為空
    {
        data=CycQueueOut(q); //取佇列頭部的資料
        printf("\n請編號為%d的顧客辦理業務!\n",data->num);
    }
    if(!CycQueueIsEmpty(q)) //若佇列不為空
    {
        data=CycQueuePeek(q);//取佇列中指定位置的資料
        printf("請編號為%d的顧客準備,馬上將為您理業務!\n",data->num);
    }
}
int main()
{
    CycQueue *queue1;
    int i,n;
    char select;
    num=0;//顧客序號
    queue1=CycQueueInit(); //初始化佇列
    if(queue1==NULL)
    {
        printf("建立佇列時出錯!\n");
        getch();
        return 0;
    }
    do{
        printf("\n請選擇具體操作:\n");
        printf("1.新到顧客\n");
        printf("2.下一個顧客\n");
        printf("0.退出\n") ;
        fflush(stdin);
        select=getch();
        switch(select)
        {
            case '1':
                add(queue1);
                printf("\n現在共有%d位顧客在等候!\n",CycQueueLen(queue1));
                break;
            case '2':
                next(queue1);
                printf("\n現在共有%d位顧客在等候!\n",CycQueueLen(queue1));
                break;
            case '0':
                break;
        }
    }while(select!='0');
    CycQueueFree(queue1); //釋放佇列
    getch();
    return 0;
}
  • 測試結果

    這裡寫圖片描述

相關文章