zoukankan      html  css  js  c++  java
  • 用c语言模拟简单的银行排队系统

    此程序模拟了银行排队系统,用链表实现队列排队

    List.h

     1 #ifndef  LIST_H
     2 #define LIST_H
     3 #include<stdio.h>
     4 #include<stdlib.h>
     5 
     6 #define OK      0
     7 #define ERROR   -1
     8 //define the structure node
     9 typedef struct queue
    10 {
    11         int value;
    12         struct queue *next;
    13 }Queue;
    14 
    15 // front point to head node
    16 typedef struct linkqueue
    17 {
    18         Queue *front;
    19         Queue *tail;
    20 }LinkQueue;
    21 
    22 #define QUEUE_LEN  sizeof(Queue)
    23 //init a queue
    24 
    25 int initQueue(LinkQueue *);
    26 
    27 //whether the queue is empty or not
    28 int isEmptyQueue(LinkQueue *);
    29 
    30 
    31 //enter a value  into queue
    32 int enterQueue(LinkQueue *,int value);
    33 
    34 //pop a vaue from the queue
    35 int deQueue(LinkQueue *);
    36 
    37 
    38 //printf the Queue
    39 int printQueue(LinkQueue *);
    40 
    41 int Query(LinkQueue *,int);
    42 
    43 
    44 #endif

    List.c  的实现:

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include"List.h"
     4 
     5 
     6 
     7 int initQueue(LinkQueue *Q)
     8 {
     9         printf("Init a queue ......
    ");
    10         if(!(Q->front = Q->tail = (Queue *)malloc(QUEUE_LEN)))
    11         {
    12                 printf("ERROR:Malloc Error !
    ");
    13                 return ERROR;
    14         }
    15         Q->front->next = NULL;
    16         return OK;
    17 }
    18 
    19 int enterQueue(LinkQueue *Q,int enterValue)
    20 {
    21         Queue *tmpNode = NULL;
    22         if(!(tmpNode = (Queue*)malloc(QUEUE_LEN)))
    23         {
    24                 printf("ERROR:Malloc Error !
    ");
    25                 return ERROR;
    26         }
    27 
    28         tmpNode->value = enterValue;
    29         tmpNode->next = NULL;
    30         Q->tail->next = tmpNode;
    31         Q->tail = tmpNode;
    32 
    33 }
    34 
    35 int isEmptyQueue(LinkQueue *Q)
    36 {
    37         return  (Q->front->next == NULL);
    38 }
    39 
    40 
    41 
    42 int printQueue(LinkQueue *Q)
    43 {
    44         Queue *tmpNode = NULL;
    45         tmpNode = Q->front->next;
    46         if(NULL == tmpNode)
    47         {
    48                 printf("ERROR:Queue is NULL
    ");
    49                 return ERROR;
    50 
    51         }
    52 
    53         while(tmpNode != Q->tail)
    54         {
    55                 printf("%d  ",tmpNode->value);
    56                 tmpNode = tmpNode->next;
    57         }
    58         printf("%d
    ",Q->tail->value);
    59 
    60 }
    61 
    62 int deQueue(LinkQueue *Q)
    63 {
    64         if(isEmptyQueue(Q))
    65         {
    66                 printf("ERROR:The Queue is empty !
    ");
    67                 return ERROR;
    68         }
    69         int value;
    70         value = Q->front->next->value;
    71         Q->front->next = Q->front->next->next;
    72         return value;
    73 }
    74 
    75 
    76 int Query(LinkQueue *Q,int myNum)
    77 {
    78         int numOfMan = 0;
    79         if(isEmptyQueue(Q))
    80         {
    81                 printf("The Queue is empty 
    ");
    82                 return ERROR;
    83         }
    84         if( myNum>Q->tail->value || myNum < Q->front->next->value)
    85         {
    86                 printf("SORRY you have put into a wrong waiting number
    ");
    87                 return ERROR;
    88         }
    89 
    90         numOfMan = myNum-Q->front->next->value;
    91         return  numOfMan;
    92 }

    Bank.c

      1  *Author :zxJay
      2  *
      3  *
      4  */
      5 
      6 #include<stdio.h>
      7 #include<string.h>
      8 #include"List.h"
      9 
     10 static bankNumber = 0;
     11 
     12 static totalNumber = 0;
     13 
     14 int stopBank();
     15 int startBank();
     16 int flag = 1;
     17 
     18 int main()
     19 {
     20         int choice = 0;
     21         int num = 0;
     22         LinkQueue Q;
     23         initQueue(&Q);
     24         while(1)
     25         {
     26                 printf("################Bank Bank queuing system #############
    ");
     27                 printf("###           1:Applying A number           
    ");
     28                 printf("###           2:Query                       
    ");
     29                 printf("###           3:Stop Applying A NUmber      
    ");
     30                 printf("###           4:Start Applying A Number     
    ");
     31                 printf("###           5:Leaving Bank     
    ");
     32                 printf("###           6:Print list     
    ");
     33                 printf("###           7:EXIT                        
    
    
    ");
     34                 printf("   Please put into you chioce[1-5]:   ");
     35                 scanf("%d",&choice);
     36                 switch(choice)
     37                 {
     38                 case 1 :
     39                         if(flag)
     40                         {
     41                                 system("clear");
     42                                 bankNumber++;
     43                                 enterQueue(&Q,bankNumber);
     44                                 totalNumber++;
     45                                 printf("your waiting number id %d
    ",bankNumber);
     46                                 printf("%d person(s) befor you,please wait for a while
    ",Query(&Q,bankNumber));
     47                                 sleep(2);
     48                                 system("clear");
     49                                 break;
     50                         }
     51                         else
     52                         {
     53                                 system("clear");
     54                                 printf("         stop Applying A Bank number
    ");
     55                                 break;
     56                         }
     57                 case 2 :
     58                         system("clear");
     59                         printf("Please put into your number:
    ");
     60                         scanf("%d",&num);
     61                         printf("%d person(s) before,please wait for a while
    ",Query(&Q,num));
     62                         sleep(2);
     63                         system("clear");
     64                         break;
     65                 case 3 :
     66                         stopBank();
     67                         system("clear");
     68                         printf("         stop Applying A Bank number
    ");
     69                         break;
     70                 case 4 :
     71                         startBank();
     72                         system("clear");
     73                         break;
     74                 case 5 :
     75                         system("clear");
     76                         printf("you (%d) are leaving bank ....
    ",Q.front->next->value);
     77                         deQueue(&Q);
     78                         totalNumber--;
     79                         sleep(2);
     80                         system("clear");
     81                         break;
     82                 case 6 :
     83                         system("clear");
     84                         printf("Waiting List :");
     85                         printQueue(&Q);
     86                         sleep(3);
     87                         system("clear");
     88                         break;
     89                 case 7 :
     90                         exit(0);
     91                         break;
     92                 default :
     93                         break;
     94 
     95                 }
     96 
     97         }
     98 
     99         return OK;
    100 }
    101 
    102 
    103 int stopBank()
    104 {
    105         flag = 0;
    106 
    107 }
    108 
    109 int startBank()
    110 
    111 {
    112         flag = 1;
    113 
    114 }

    编译环境:redhat  6.3 

  • 相关阅读:
    (转)Entity Framework 4.1 之三(由4.0过渡到4.1/4.3)
    (转)修改的T4代码生成器(续)
    (转)【Smart Code Generator】 基于T4的代码生成器
    linux下播放mp3
    poj 2777 Count Color
    poj 1062 昂贵的聘礼
    uva 991 Safe Salutations
    uva 10587 Mayor's posters
    poj 2528 Mayor's posters
    逆序数
  • 原文地址:https://www.cnblogs.com/zxjie/p/BankQueue.html
Copyright © 2011-2022 走看看