Employee Class Implementation with Menu or graphics in C C++ Programming Language code example code assignment home work
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <dos.h>
#include<graphics.h>
#include<stdlib.h>
#define NMAX 30
void showmouseptr();
void restrictmouseptr(int x1,int y1,int x2,int y2);
void getmousepos(int *button,int *x,int *y);
union REGS i,o;
initmouse();
initmouse()
{
i.x.ax=0;
int86(0x33,&i,&o);
return(o.x.ax);
}
void showmouseptr()
{
i.x.ax=1;
int86(0x33,&i,&o);
}
void restrictmouseptr(int x1,int y1,int x2,int y2)
{
i.x.ax=7;
i.x.cx=x1;
i.x.dx=x2;
int86(0x33,&i,&o);
i.x.ax=8;
i.x.cx=y1;
i.x.dx=y2;
int86(0x33,&i,&o);
}
void getmousepos(int *button,int *x,int *y)
{
i.x.ax=3;
int86(0x33,&i,&o);
*button=o.x.bx;
*x=o.x.cx;
*y=o.x.dx;
}
void butt()
{
setfillpattern(0*55, RED);
bar(200,200,350,220);
rectangle(200,200,350,220);
outtextxy(210,196,"1: Add New");
bar(200,225,350,245);
rectangle(200,225,350,245);
outtextxy(200,221,"2 :modify");
bar(200,250,350,270);
rectangle(200,250,350,270);
outtextxy(200,246, "3: delete");
bar(200,275,350,295);
rectangle(200,275,350,295);
outtextxy(200,271, "4: display");
bar(200,300,350,320);
rectangle(200,300,350,320);
outtextxy(200,296, "5: exit");
// outtextxy(200,296, "5: exit");
}
int mouseclick()
{int button,x,y;
char flag;
while(!kbhit())
{
getmousepos(&button,&x,&y);
if((button & 1)==1)
{
if((x>200)&&(x<350)&&(y>200)&&(y<220))
{ flag='1' ;
break;}
if((x>200)&&(x<350)&&(y>225)&&(y<245))
{ flag='2';
break;}
else if((x>200)&&(x<350)&&(y>250)&&(y<270))
{ flag='3';
break;}
else if((x>200)&&(x<350)&&(y>275)&&(y<295))
{flag='4';
break;}
else if((x>200)&&(x<350)&&(y>300)&&(y<320))
{flag='5';
break;}
else if((x>200)&&(x<350)&&(y>380)&&(y<400))
break;
}}
return(flag);
};
struct edate
{
int dd;
int mm;
int yy;
};
class box
{
private:
int row;
int col;
int rowwidth;
int colwidth;
int startx;
int starty;
char *text[10];
public:
box(int r,int c,int rw,int cw,int x,int y)
{
row=r;
col=c;
rowwidth=rw;
colwidth=cw;
startx=x;
starty=y;
}
///////////////////////////Draw Box
void draw()
{
int i, j,y,x;
// Draw rows
y = starty;
gotoxy(startx,starty);
// Rows Display
for(i=1;i<=row+1;i++)
{
for(j=startx;j<startx+col+col*colwidth;j++)
{
cout << "Í";
}
y=starty+i+i*rowwidth;
gotoxy(startx,y);
}
///////// Col Display
x=startx;
gotoxy(startx,starty);
for(i=1;i<=col+1;i++)
{
for(j=starty;j<starty+1+row+row*rowwidth;j++)
{
cout << "º";
gotoxy(x,j);
}
x=startx+i+i*colwidth;
gotoxy(x,starty);
}
// Set Four Corners
gotoxy(startx,starty);
cout << "É";
gotoxy(startx+col+col*colwidth,starty);
cout << "»";
gotoxy(startx,starty+row+row*rowwidth);
cout << "È";
gotoxy(startx+col+col*colwidth,starty+row+row*rowwidth);
cout << "¼";
// Upper Middle Conectors
for(i=1;i<=col-1;i++)
{
gotoxy(startx+i+colwidth*i,starty);
cout << "Ë";
}
// Lower Middle Conectors
for(i=1;i<=col-1;i++)
{
gotoxy(startx+i+colwidth*i,starty+row+row*rowwidth);
cout << "Ê";
}
// Left Side Middle Conectors
for(i=1;i<=row-1;i++)
{
gotoxy(startx,starty+i+rowwidth*i);
cout << "Ì";
}
// Left Side Middle Conectors
for(i=1;i<=row-1;i++)
{
gotoxy(startx+col+col*colwidth,starty+i+rowwidth*i);
cout << "¹";
}
/// Middle Conectors
for(i=1;i<=row-1;i++)
{
for(j=1;j<=col-1;j++)
{
gotoxy(startx+j+colwidth*j,starty+i+rowwidth*i);
cout <<"Î";
}
}// Outer For
}};// End OF Function
/////////////////////////////////////////////
/* void settext(char *t[10],int s)
{
int i;
for(i=0;i<s;i++)
text[i]= t[i];
}};
// Display Text On the Screen
void displaytext()
{
int i;
for(i=1;i<=row;i++)
{
gotoxy(startx+1,starty+i+rowwidth/2+rowwidth*(i-1));
cout << text[i-1];
}
} }; */
class employee
{
private:
int empno;
char name[NMAX];
char fname[NMAX];
char address[NMAX];
char jobtitle[NMAX];
edate edob;
public:
void getdata();
void showdata(int);
void setscreen();
void enteremp();
void displayemp(int);
void deleteemp();
void modifyemp();
void modnew();
char findemp();
};
//////////////////////////////////////////////////////////////////////////
////////////////////// SET SCREEN
/////////////////////////////////////////////////////////////////////////
void employee::setscreen()
{
int i;
struct date d;
int d1,m1,y1;
gotoxy(25,2);
cout<<"Employee Registeration List";
gotoxy(25,3);
cout <<"==========================";
getdate(&d);
gotoxy(50,3);
d1= d.da_day;
m1= d.da_mon;
y1= d.da_year;
cout << "Date : " << d1 << "/" << m1<< "/"<< y1 ;
gotoxy(2,4);
for(i=2;i<=78;i++) cout << "=";
gotoxy(2,5);
cout << "Emp NO";
gotoxy(10,5);
cout << "Name";
gotoxy(20,5);
cout << "Address";
gotoxy(40,5);
cout << "F-Name";
gotoxy(60,5);
cout << "DOB";
gotoxy(70,5);
cout << "JOB_Title";
gotoxy(2,6);
for(i=2;i<=78;i++) cout << "=";
}
//////////////////////////////////////////////////////////////////////////
////////////////////// GET DATA
/////////////////////////////////////////////////////////////////////////
void employee::getdata()
{
char ch;
gotoxy(20,6);
cout << "Employee ENTRY FORM";
gotoxy(20,7);
cout << "==================";
/////////Display
gotoxy(10,9);
cout << "Employee no : ";
gotoxy(10,11);
cout << "NAME : ";
gotoxy(10,13);
cout << "Father's Name : ";
gotoxy(10,15);
cout << "Address : ";
gotoxy(10,17);
cout << "Job Title : ";
gotoxy(10,19);
cout << "Date of Birth : ";
// Get Value Unique VAlue Of Emp NO
do
{
box b2(6,2,1,18,8,8);
b2.draw();
gotoxy(30,9);
cout << " ";
gotoxy(30,9);
cin >> empno;
ch= findemp();
}while(ch=='y');
gotoxy(30,11);
gets(name);
gotoxy(30,13);
gets(fname);
gotoxy(30,15);
gets(address);
//strupr(taddress);
gotoxy(30,17);
gets(jobtitle);
gotoxy(30,19);
cin>>edob.dd;
gotoxy(34,19);
cin>>edob.mm;
gotoxy(38,19);
cin>>edob.yy;
}
//////////////////////////////////////////////////////////////////////////
////////////////////// SHOW DATA
/////////////////////////////////////////////////////////////////////////
void employee::showdata(int r)
{
gotoxy(3,r);
cout << empno;
gotoxy(10,r);
puts(name);
gotoxy(20,r);
puts(address);
gotoxy(40,r);
puts(fname);
gotoxy(60,r);
cout << edob.dd <<"\\"<<edob.mm<<"\\"<<edob.yy;
gotoxy(70,r);
puts(jobtitle);
}
//////////////////////////////////////////////////////////////////////////
////////////////////// FIND LOCATION OF EMPLOYEE RECORD
/////////////////////////////////////////////////////////////////////////
char employee::findemp()
{
employee s1;
fstream sfile;
sfile.open("employee.txt",ios::in|ios::binary);
sfile.seekg(0,ios::beg);
while(sfile.read((char *)(&s1),sizeof(s1)) )
{
if(s1.empno==empno)
{
sfile.close();
return 'y';
}
}
sfile.close();
return 'n';
}
//////////////////////////////////////////////////////////////////////////
////////////////////// Enter NEw EMPLOYEE RECORD
/////////////////////////////////////////////////////////////////////////
void employee::enteremp()
{
employee s1;
s1.getdata();
fstream sfile;
sfile.open("employee.txt",ios::out|ios::app|ios::binary);
//ofstream ff("sha.txt",ios::out|ios::app);
sfile.write((char *)(&s1),sizeof(s1));
sfile.close();
};
//////////////////////////////////////////////////////////////////////////
////////////////////// Display EMPLOYEE RECORD
/////////////////////////////////////////////////////////////////////////
void employee::displayemp(int n) // ZERO FOR ALL AND ONE FOR SINGLE
{
int tempno;
int flag=0;
employee s1;
if (n==1)
{
gotoxy(20,7);
cout<< "enter Emp No : ";
cin>> tempno;
}
setscreen();
fstream sfile;
sfile.open("employee.txt",ios::in|ios::binary);
sfile.seekg(0,ios::beg);
int r=7;
while(sfile)
{
sfile.read((char *)(&s1),sizeof(s1));
if (!sfile) break;
flag=0;
if(tempno!=s1.empno && n==1) continue;
s1.showdata(r);
if (r==23)
{
flag=1;
r=6;
gotoxy(4,24);
cout << "Press Any Key TO Continue";
setfillpattern(0*55, RED);
bar(200,350,380,700);
rectangle(200,350,380,0);
outtextxy(200,346, "main");
mouseclick();
getch();
}
r++;
}
sfile.close();
gotoxy(2,23);
for(int i=2;i<=78;i++) cout<<"=";
if(!flag)
{
gotoxy(4,24);
cout << "Press Any Key TO Continue";
/* bar(200,350,380,400);
rectangle(200,350,380,400);
outtextxy(200,346, "main");
mouseclick();*/
getch();
}
}// End of function
//////////////////////////////////////////////////////////////////////////
////////////////////// MOdify EMPLOYEE Record
/////////////////////////////////////////////////////////////////////////
void employee::modnew()
{
char ch2;
int tempno,flag =0;
employee s1;
gotoxy(20,3); cout << "Enter emp No :"; cin >> tempno;
box b3(7,2,1,18,15,4);
b3.draw();
fstream sfile;
sfile.open("employee.txt",ios::in|ios::binary);
sfile.seekg(0,ios::beg);
int count = 0,x=20,y=5;
while(sfile.read((char *)(&s1), sizeof(s1)) )
{
count++;
if(s1.empno==tempno)
{
gotoxy(22,7);gotoxy(x,y); cout << "Name is ";x=40;gotoxy(x,y); puts(s1.name);y=7 ;
gotoxy(22,8);x=20;gotoxy(x,y); cout << "Address is ";x=40;gotoxy(x,y); puts(s1.address);y=9;
gotoxy(22,9);x=20;gotoxy(x,y); cout << "FName is ";x=40;gotoxy(x,y); puts(s1.fname); y=11;
flag=1;
gotoxy(22,12);x=20;gotoxy(x,y); cout << "Enter Name ";x=40;gotoxy(x,y); gets(s1.name);y=13;
gotoxy(22,13);x=20;gotoxy(x,y); cout << "Enter Address ";x=40;gotoxy(x,y); gets(s1.address);y=15;
gotoxy(22,14);x=20;gotoxy(x,y); cout << "Enter FName ";x=40;gotoxy(x,y); gets(s1.fname);
break;
}
}// END OF WHILE
sfile.close();
if(flag==1)
{
gotoxy(22,20);
s1.modifyemp();
cout << "Record Modify";
}
else
{
gotoxy(22,20);
cout << "Record Not Modified";
}
gotoxy(20,22);
cout << "Press any Key to continue";
getch();
}
//////////////////////////////////////////////////////////////////////////
////////////////////// Modify EMPLOYEE
/////////////////////////////////////////////////////////////////////////
void employee::modifyemp()
{
employee s2;
int flag =0;
fstream sfile;
sfile.open("employee.txt",ios::in|ios::binary);
fstream temp;
temp.open("temp.dat",ios::out|ios::binary);
sfile.seekg(0,ios::beg);
while(sfile)
{
sfile.read((char *)(&s2),sizeof(s2));
if(!sfile)break;
if(empno!=s2.empno)
temp.write((char *)(&s2),sizeof(s2));
else
{
if(flag==0)
{
temp.write((char *)this,sizeof(employee ));
flag=1;
}
else
temp.write((char *)(&s2),sizeof(s2));
}
}// ENd of WHILE
sfile.close();
temp.close();
sfile.open("employee.txt",ios::out|ios::binary);
temp.open("temp.dat",ios::in|ios::binary);
temp.seekg(0,ios::beg);
while(temp)
{
temp.read((char *)(&s2),sizeof(s2));
if(!temp)break;
sfile.write((char *)(&s2),sizeof(s2));
}
sfile.close();
temp.close();
}
//////////////////////////////////////////////////////////////////////////
////////////////////// Delete Rec
/////////////////////////////////////////////////////////////////////////
void employee::deleteemp()
{
int tempno;
employee s1;
int flag =0;
fstream sfile;
sfile.open("employee.txt",ios::in|ios::binary);
fstream temp;
temp.open("temp.dat",ios::out|ios::binary);
sfile.seekg(0,ios::beg);
gotoxy(20,10);
cout << "ENTHER THE REGISTRATION NUMBER TO BE DELETED " ;
cin >> tempno;
while(sfile)
{
sfile.read((char *)(&s1),sizeof(s1));
if(!sfile)break;
if(s1.empno!=tempno) temp.write((char *)(&s1),sizeof(s1));
if(s1.empno==tempno)
{
flag=1;
}
}// ENd of WHILE
sfile.close();
temp.close();
sfile.open("employee.txt",ios::out|ios::binary);
temp.open("temp.dat",ios::in|ios::binary);
temp.seekg(0,ios::beg);
while(temp)
{
temp.read((char *)(&s1),sizeof(s1));
if(!temp)break;
if(s1.empno!=tempno) sfile.write((char *)(&s1),sizeof(s1));
}
sfile.close();
temp.close();
if(flag==1)
{
gotoxy(22,13);
cprintf( "RECORD DELETE ");
gotoxy(20,17);
cout << "Press any key to contntinue ";
getch();
}
else
{
gotoxy(20,16);
cout << "Record NOT DELETED ";
getch();
}
};
////////////////////////////////////////////////////////////////////
///////////////// MAIN
////////////////////////////////////////////////////////////////////
void main()
{/* char *c[3] = {
{ "1 for \0" },
{ "2 for \0" },
{ "3 for \0" }
};*/
box b1(5,2,1,12,20,4);
int i,y=15;
char ch,ch1,c;
employee s1;
char str[]={"EMPLOYEE MANAGEMENT SYSTEM" };
int gd = DETECT ,gm,maxx,maxy,button,midx,midy;
initgraph(&gd,&gm,"D:\\tc\\bgi");
midx=getmaxx()/10;
midy=getmaxy()/2;
/*for(y=50;y<midy;y++)
{
setcolor(BLUE);
settextstyle(10,0,1);
outtextxy(midx,y,str);
delay(25);
sound(25);
cleardevice();
} */
maxx=getmaxx();
maxy=getmaxy();
char str1[]={"EMPLOYEE MANAGEMENT SYSTEM" };
do
{
cleardevice();
setcolor(BLUE);
settextstyle(7,0,1);
outtextxy(midx+10,30,str1);
setfillpattern(0*33,RED);
bar(13,75,175,470);
rectangle(13,75,175,470);
bar(400,75,605,470);
rectangle(400,75,605,470);
rectangle(10,70,maxx-10,maxy-10);
setcolor(WHITE);
settextstyle(3,0,1);
if(initmouse()==0)
{
closegraph();
restorecrtmode();
exit(1);
}
restrictmouseptr(1,57,maxx-5,maxy-5);
showmouseptr();
butt();
ch=mouseclick();
switch(ch)
{ case '1':
{cleardevice();
s1.enteremp();
break;}
case '4':
{cleardevice();
outtextxy(150,200," PRESS [A] FOR ALL [S] FOR SINGLE => ");
ch1=getch();
if(ch1=='S'||ch1=='s')
{cleardevice();
s1.displayemp(1);
break;
}
else
{cleardevice();
s1.displayemp(0);
}break;}
case '2':
{ cleardevice();
s1.modnew();
break;}
case '3':
{cleardevice();
s1.deleteemp();
break;}}
}while(ch!='5');
}