Title TICKET WINDOW - Program Using Queue. Author: AHMAD JUNAID NAZAMI Visitor Submitted Source Code Author Email: junaid123_pk@hotmail.com Description: This program demonstrates the working of Queue.It may help beginners to understand functionalty of queue. Hits: 3892 Since 25th November, 2003 Code: Select and Copy the Code /*Ticket Window is a simple program to show the implementaion of QUEUE. Program takes as input number of tickets required and ENQUEUE them. Only two tickets are allowed at one time.If more than two tickets are demanded, two are given and the remaining is enqueued again for its turn*/ #include <iostream.h> #include <conio.h> #include <process.h> class ticketqueue{ private: //Data Members int q[5]; int front, rear, noe; //noe..to store number of elements public: //Member Functions ticketqueue(){ noe = rear = front = 0;} //Constructor void enqueue(int); void ticketchecker(); void print(); int isempty(); void queuebuilder(); void menu(); }; ///////////////////// void ticketqueue :: enqueue(int a) { q[rear] = a; rear++; noe++; if (rear == 5) rear = 0; cout<<"\n"<<a<<" Is Enqeueued....."<<endl; } ///////////////////// void ticketqueue :: ticketchecker() { clrscr(); int not,rt; if ( !isempty() ) { not = q[front]; if (not > 2) { rt = not - 2; if ( rt > 0 ) { enqueue(rt); front++; cout<<"\n\n"<<not<<"# Tickets were demanded. 2 Tickets are given.\n" <<"\nEnqueued again for next go to get remaining #"<<rt<<" Tickets"<<endl; } else if ( rt <= 0 ) front++; noe--; } else if ( not <= 2 ) { front++; noe--; cout<<"\n"<<not<<"# tickets are given...."<<endl; } } else cout<<"\n!!! NO REQUEST IN THE QUEUE " <<endl; getch(); clrscr(); menu(); } ///////////////////// void ticketqueue :: print() { clrscr(); int i = front; if ( noe > 0 ) { cout<<"\nREQUESTS ENQUEUED ARE :" ; do { cout<<q[i]<<" "; i++; if ( i == 5 ) i = 0; } while ( i != rear ); } else cout<<"\nNO REQUEST IN QUEUE...QUEUE IS EMPTY "; getch(); clrscr(); menu(); } ////////////////// //Utility Fuction int ticketqueue :: isempty() { if ( noe == 0 ) return 1; else return 0; } ///////////////// //This Function takes input from the user and shows Queue graphically void ticketqueue::queuebuilder(){ clrscr(); int tickets, z = 0, i = 0, x = 20, y = 10, g = 1, h = 17; char c; cout<<"Enter number of tickets to purchase... "<<endl; while (!(c == 'E' || c == 'e')) { if ( z > 4) { clrscr(); cout<<" \n\n ERROR!!! Queue Size Violation...Exiting Now "<<endl; getch(); clrscr(); menu(); } else { cout<<"\nEnter : "; cin>>tickets; enqueue(tickets); z++; gotoxy(17,10); cout<<"->"; gotoxy(20,9); cout<<"----------------------------------"; gotoxy(x,y); cout<<q[i]; x+=2; gotoxy(20,11); cout<<"----------------------------------"; gotoxy(g,h); cout<<"PRESS C/c to CONTINUE E/e to END: "; cin>>c; h += 6; i++; } } getch(); clrscr(); menu(); } ////////////////// void ticketqueue::menu() { int b; gotoxy(15,5); cout<<"Press 1................ENTER NO OF TICKETS\n"; gotoxy(15,8); cout<<"Press 2................TICKET CHECKER\n"; gotoxy(15,11); cout<<"Press 3................ALL TICKET REQUESTS\n"; gotoxy(15,15); cout<<"Press 4................EXIT\n"; gotoxy(15,18); cout<<"NOW ENTER : "; cin>>b; if ( b == 1 ) queuebuilder(); else if ( b == 2 ) ticketchecker(); else if ( b == 3 ) print(); else if ( b == 4 ) exit(1); } ////////////////// void main() { clrscr(); ticketqueue t; t.menu(); getch(); }