123 Eng

Engineering the engineers™


Latest Jobs   Forum Map

 


Home
Source Codes
Engineering Colleges

Training  Reports
Seminar Reports
Placement Papers

Forums

   Computer Science / IT
   Electronics
   Electrical
   Mechanical
   Chemical
   Civil

   CAT / MBA

   GMAT / Foreign MBA
Latest Jobs

Engineering Jobs / Technical Jobs
Management Jobs

Sitemap
Terms of use

Displaying  Source Code(s)  
 

 
--------------------------------------------------------------------------------

Queue Data Structure Class Example which uses Polymorphism.

--------------------------------------------------------------------------------

Description : Example on how to use a Queue Data Structure to handle tasks using Polymorphism.

/*
QUEUE IMPLEMENTATION
With Inheritance and Polymorphism (Late Binding)
-Sanchit Karve
b0rn2c0de
*/

#include <dos.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <windows.h>

#define MAX 5 // MAXIMUM CONTENTS IN QUEUE

class task
{
public:
virtual void dotask(){}
task(){}
int exists;

};

class notep: public task
{

public:
notep(){exists=1;}

void dotask()
{
system("notepad");
}
};

class regt:public task
{
public:
regt(){exists=1;}

void dotask()
{
system("regedit");
}
};

class winex:public task
{
public:
winex(){exists=1;}

void dotask()
{
system("explorer");
}
};

class Bep:public task
{
public:
Bep(){exists=1;}

void dotask()
{
cout<<"a";
}
};

class MsBox:public task
{
private:
char* text;
char* caption;
int style;

public:
MsBox(char* ext,char* cap,int no)
{
text=ext;
caption=cap;
exists=1;
style=no;
}

void dotask()
{
MessageBox(0,text,caption,style);
}
};

class queue
{
private:
task *t[MAX];
int al;
int dl;

public:
int opt,opt1,a;
char te[255],capt[40];

queue()
{
dl=-1;
al=-1;
}

void del()
{
task* tmp;
if(dl==-1)
{
cout<<"Queue is Empty";
sleep(2);
}
else
{
t[dl]->exists=0;
for(int j=0;j<=al;j++)
{
if((j+1)<=al)
{
tmp=t[j+1];
t[j]=tmp;
}
else
{
t[al]->exists=0;
al--;

if(al==-1)
dl=-1;
else
dl=0;
}
}
}
}

void menu()
{
clrscr();
cout<<"1) Add Task
2)Execute Tasks
3)Exit Program<BR>;
// int opt;
cin>>opt;
switch(opt)
{
case 1:
clrscr();
cout<<"1) Open Notepad<BR>;
cout<<"2) Open Explorer<BR>
<<"3) Open Registry<BR>
<<"4) Sound a Beep<BR>
<<"5) MessageBox API<BR>
<<"6) Back<BR>;


cin>>opt1;
if(opt1!=6)
add(opt1);
break;

case 2:
if(al!=-1 && dl!=-1)
{
for(int k=0;k<=al;k++)
{
if(t[k]->exists==1)
t[k]->dotask();
t[k]->exists=0;
}
al=dl=-1;
}
else
{
cout<<"Queue is Empty";
sleep(3);
}
break;

case 3:
exit(0);
break;
}
}

void add(int item)
{
if(dl==-1 && al==-1)
{
dl++;
al++;
}
else
{
al++;
if(al<MAX){}
else
{
cout<<"Queue is Full<BR>;
al--;
sleep(3);
return;
}
}
switch(item)
{
case 1:
t[al]=new notep;
break;

case 2:
t[al]=new winex;
break;

case 3:
t[al]=new regt;
break;

case 4:
t[al]=new Bep;
break;

case 5:
cout<<"
Enter Style Number:";
cin>>a;
t[al]=new MsBox("Task Performed.","Queue Implementation",a);
break;

default:
cout<<"Programming Error"; // No Possibility of this executing
};
}

};

void main()
{
queue a;
while(1)
{
a.menu();
}
}
 

 

Contribute content or training reports / feedback / Comments
job placement papers
All rights reserved copyright 123ENG