//Payroll Management System #include<iostream .h> #include<conio .h> #include<iomanip .h>
#include<graphics .h> //graphics functions #include<string .h>
#include<dos .h>
#include<fstream .h> //for file handling #include<stdio .h>
struct date_rec //record to get data
{ int dd; int mm; int yyyy; }current_date;
//this class defines data related to monthly pay file
class payfile //base class
{ private: int emp_num; char emp_name[25]; char emp_designation[20]; int days_worked,dw; float basic_pay; float DA; float HRA; float CCA; float con_veyance; float gross_pay; float PF; float income_tax; float other_deductions; float net_pay; public:
payfile() //no arguments constructor {
days_worked=0;
basic_pay=DA=HRA=CCA=con_veyance=gross_pay=0.0; PF=income_tax=other_deductions=net_pay=0.0; }
void get_pay(); //this function reads the private members of payfile
void update_pay_file();/*this function calls get_pay() and generates monthly pay file on disk*/
void reports(); /*this function reads the monthly pay file
from disk and generates salary statements*/
/*when a new employee is registered,this function writes its record using payfile()constructor on disk to make a entry in monthly payfile*/
void add_pay_object(int code,char name[25],char desig[10],float basic); /*when an employee leaves the company,this function deletes
the entry from monthly pay file*/ void del_pay_object(int code);
/*this function modifies designation of an employee in monthly pay file*/ void modify_pay_object(int code,char desig[20]);
/*this function modifies the basic in pay file*/ void modify_basic(int code,float basic);
}pay;
void payfile::modify_basic(int code,float basic)
fstream file;
file.open("payfile.dat",ios::in|ios::out);//opening file file.seekg(0,ios::beg);//set pointer to the begining file.read((char*)&pay,sizeof(pay));//read first record int n=file.tellg(); while(!file.eof()) { if(code==pay.emp_num) { pay.basic_pay=basic;
pay.gross_pay=pay.basic_pay+pay.DA+pay.HRA+pay.CCA+pay.con_veyance; pay.net_pay=pay.gross_pay-(pay.PF+pay.income_tax+pay.other_deductions);
file.seekg(n-sizeof(pay));
file.write((char*)&pay,sizeof(pay)); file.flush();
file.seekg(0,ios::end); }
file.read((char*)&pay,sizeof(pay)); n=file.tellg();
}
file.close(); }
void payfile::add_pay_object(int code,char name[25],char desig[20],
float basic) { fstream outfile; pay.emp_num=code; pay.basic_pay=basic; strcpy(pay.emp_name,name); strcpy(pay.emp_designation,desig);
outfile.open("payfile.dat",ios::app);//open fees file in append mode outfile.write((char*)&pay,sizeof(pay));//make entry in fees file outfile.flush();
outfile.close();//close fees file }
void payfile::del_pay_object(int code)
{
fstream outfile,infile;
outfile.open("tempfile.dat",ios::app); //open temporary file infile.open("payfile.dat",ios::in);//open pay file for reading
infile.seekg(0,ios::beg);//set file pointer to the begining of the file infile.read((char*)&pay,sizeof(pay));//read the first record
while(!infile.eof())
{
if(pay.emp_num!=code)//if this record is not to be deleted
//write in the temporary outfile.write((char*)&pay,sizeof(pay));
infile.read((char*)&pay,sizeof(pay));//read next record }
infile.close();//close pay file
outfile.close();//close temporary file
remove("payfile.dat");//delete old monthly pay file
rename("tempfile.dat","payfile.dat");//temporary file becomes new pay file }
void payfile::modify_pay_object(int code,char desig[20])
{
fstream file;
file.open("payfile.dat",ios::in|ios::out);//open file for reading/writing file.seekg(0,ios::beg);//set file pointer to the begining of the file file.read((char*)&pay,sizeof(pay));//read first record
while(!file.eof()) {
if(code==pay.emp_num) //record found
{
strcpy(pay.emp_designation,desig);
file.seekg(n-sizeof(pay)); //set fili pointer to the record to be changed file.write((char*)&pay,sizeof(pay)); //update record
file.flush();
file.seekg(0,ios::end);/*if record found set file pointer to end of file to stop further searching*/ }
file.read((char*)&pay,sizeof(pay)); //if record not found read next record n=file.tellg();//tell where we are
}
file.close(); }
void payfile::get_pay()//this function reads the private members of payfile {
char ch,month[9]; int mon;
cout< <"\n ENTER MONTH ( 1 to 12 ) --->"; cin>>mon;
switch(mon)
{ //get month name
case 1 : strcpy(month,"JANUARY"); break; case 2 : strcpy(month,"FEBRUARY"); break; case 3 : strcpy(month,"MARCH"); break; case 4 : strcpy(month,"APRIL"); break; case 5 : strcpy(month,"MAY"); break; case 6 : strcpy(month,"JUNE"); break; case 7 : strcpy(month,"JULY"); break; case 8 : strcpy(month,"AUGUST"); break; case 9 : strcpy(month,"SEPTEMBER"); break; case 10 :strcpy(month,"OCTOBER"); break; case 11 :strcpy(month,"NOVEMBER"); break; case 12 :strcpy(month,"DECEMBER"); break; } int n;
if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)
{ n=31; } else if(mon==2) { n=28; } else {
n=30; }
cout< <"\n ENTER THE NO.OF DAYS WORKED--->"; cin>>days_worked; if(days_worked<23) { dw=23-days_worked; days_worked=n-dw; } else { days_worked=n; dw=0; } cout< <"\n============================================="; cout<<"\n In the month of "<<month;
cout<<"\n There are "<<dw<<" day / days with out pay ";
cout<<"\nTHE BASIC PAY FOR THE MONTH IS "<<(basic_pay/n)*days_worked; cout<<"\n THE DEARNESS ALLOWENCE IS (35% of basic) --->"; DA=(0.35*(basic_pay/n))*days_worked;
cout< <setiosflags(ios::fixed)<<setprecision(2)<<DA;
cout<<"\n THE HOUSE RENT ALLOWENCE IS (@ Rs.600/-pm)--->"; HRA=600;
cout< <HRA;
cout<<"\n THE CCA IS (2% of basic) --->"; CCA=(0.02*(basic_pay/n))*days_worked;
cout< <CCA;
cout<<"\n THE CONVEYENCE ALLOWENCE IS (1% of basic)--->"; con_veyance=(0.01*(basic_pay/n))*days_worked;
cout< <con_veyance;
gross_pay=((basic_pay/n)*days_worked)+DA+HRA+CCA+con_veyance; cout<<"\n PF AMOUNT--->";
PF=gross_pay*0.08; cout< <PF;
if(gross_pay>8000) {
cout< <"\n THE INCOME TAX--->"; income_tax=(gross_pay-PF)*.1; cout< <income_tax; } else { income_tax=0; cout<<income_tax; }
cout<<"\n OTHER DEDUCTIONS--->"; cin>>other_deductions;
net_pay=gross_pay-(PF+income_tax+other_deductions); gotoxy(22,24);
cout< <"PRESS ANY KEY TO CONTINUE"; getch(); clrscr(); } void payfile::update_pay_file() { fstream file;
file.open("payfile.dat",ios::in|ios::out);//open pay file in I/O mode file.seekg(0,ios::beg);//set file pointer to the begining of the file file.read((char*)&pay,sizeof(pay)); //read the first record
int n=file.tellg(); //find where file pointer is
while(!file.eof())
{
clrscr();
cout<<"\n ENTER DATA FOR EMPLOYEE NO.--->"< <pay.emp_num; pay.get_pay(); //get pay data
file.seekg(n-sizeof(pay)); //set file pointer to the correct position file.write((char*)&pay,sizeof(pay));//write pay data in the file file.flush();
file.seekg(n);//set file pointer to next record
file.read((char*)&pay,sizeof(pay));//read next record n=file.tellg();//find position of file pointer
}
file.close();//close monthly pay file }
//this class defines the data and member functionsrelated to employee file
class employee:public payfile //derived class
{ private: int employee_num; char employee_name[25]; char employee_address[35]; date_rec date_joining; date_rec date_birth; char desig_nation[20]; float basic_salary; public: char ch;
int get_rec_no();//this function generates record no.automatically
void get_data(); //this function get a record from the operator
void show_data();//this function displays data
void add_object();//this function writes a record on the disk void show_object();//this function reads a record
//from the disk and calls show_data()
void del_object();/*this function deletes a record from the employee file and calls a member function of base class to update entries in monthly pay file*/
void modify_object();//this function changes information on disk void search_object();//this function searches information on
//the basis of a given field }emp; //object list
//this function generates record no. automatically int employee::get_rec_no()
{
int found=0;
int recno,temp_recno;
struct node //structure to make an index of the record nos
{
int rec_no;
node *link;//pointer to next node };
node *start,*ptr,*ptr1,*ptr2;//pointers to node fstream infile;
infile.open("employee.dat",ios::in);//open file in input mode
infile.seekg(0,ios::end);//set file pointer to the begining of the file int n=infile.tellg();//get no. of bytes in the file
infile.close();//close file if(n==0)//if file is empty
else
{//get all record nos. in a linked list
infile.open("employee.dat",ios::in);//open file for reading start=ptr=new node;//get new node from operating system
infile.seekg(0,ios::beg);//set file pointer to the begining of the file infile.read((char*)&emp,sizeof(emp));//read first record
while(!infile.eof())
{
ptr->rec_no=employee_num;//save record no.in the index ptr->link=new node;//get new node for next record ptr=ptr->link;
infile.read((char*)&emp,sizeof(emp));//read next record }
ptr->link=NULL;//end of list //sort record nos.
ptr1=start;//set pointer to the start of the index while(ptr1
->link!=NULL) {
ptr2=ptr1->link;//set second pointer
while(ptr2!=NULL)
{
if(ptr2->rec_no<ptr1 ->rec_no)
{
temp_recno=ptr2->rec_no;//exchange values ptr2->rec_no=ptr1->rec_no; ptr1->rec_no=temp_recno; } ptr2=ptr2->link;//next node } ptr2=ptr1->link; ptr1=ptr2;//next pass }
//generate record no. ptr1=start;
while(ptr1!=NULL&&found!=1)
{
ptr2=ptr1; ptr1=ptr1->link;
if((ptr2->rec_no)+1!=ptr1->rec_no)
{ recno=(ptr2->rec_no)+1; found=1; } } if(found!=1) recno=(ptr2->rec_no)+1; //destroy the index ptr=start;
while(start!=NULL)
{
start=start->link;
delete ptr;//delete index to save memory }
}
return recno;//return the calculated record no. }
//this function reads data
void employee::get_data()
{
clrscr();
cout< <"\n ENTER THE NAME--->"; gets(employee_name);
cout< <"\n ENTER THE ADDRESS--->"; gets(employee_address);
cout< <"\n ENTER THE DATE OF JOINING<<dd/mm/yyyy>>--->"; cin>>date_joining.dd>>ch>>date_joining.mm>>ch>>date_joining.yyyy; cout< <"\n ENTER THE DATE OF BIRTH <<dd/mm/yyyy>>--->"; cin>>date_birth.dd>>ch>>date_birth.mm>>ch>>date_birth.yyyy; cout< <"\n ENTER DESIGNATION--->"; gets(desig_nation);
cout< <"\n ENTER THE BASIC SALARY--->"; cin>>basic_salary;
}
//this function displays data
void employee::show_data()
{
clrscr();
cout< <"\n EMPLOYEE NO.--->"< <employee_num; cout<<"\n EMPLOYEE's NAME--->"< <employee_name; cout<<"\n DATE OF JOINING--->"< <date_joining.dd
<<"-"<<date_joining.mm <<"-"<<date_joining.yyyy; cout<<"\n EMPLOYEE's ADDRESS--->"< <employee_address; cout<<"\n DATE OF BIRTH--->"< <date_birth.dd
<<"-"<<date_birth.mm <<"-"<<date_birth.yyyy; cout<<"\n DESIGNATION--->"< <desig_nation;
cout<<"\n BASIC SALARY--->RS."< <setw(15)//set width <<setprecision(2)//set position of decimal point
<<setiosflags(ios::left)//set left justified output <<setiosflags(ios::showpoint)//always show decimal point <<setiosflags(ios::fixed)//set fixed notation for display <<basic_salary;
gotoxy(22,24);
cout<<"PRESS ANY KEY TO CONTINUE"; getch();
}
//this function writes a record into a file
void employee::add_object() { fstream outfile; char choice='y'; while(choice=='y') { clrscr(); char ch;
//update employee file
outfile.open("employee.dat",ios::app);//open file in append mode emp.get_data();//get information from the user
outfile.write((char*)&emp,sizeof(emp));//write in the file outfile.flush();
outfile.close();//close file
add_pay_object(emp.employee_num,emp.employee_name,emp.desig_nation, emp.basic_salary); cout<<"\n ANY MORE EMPLOYEE TO BE ADDED--->"; cin>>choice;
} }
void employee::show_object() {
fstream infile;
infile.open("employee.dat",ios::in);//open file for reading
infile.seekg(0,ios::beg);//set file pointer to the begining of the file infile.read((char*)&emp,sizeof(emp));//read the first record
while(!infile.eof())
{
emp.show_data();//display record
infile.read((char*)&emp,sizeof(emp));//read the next record }
}
//this function deletes the record of an employee
void employee::del_object()
{
int code;
fstream infile,outfile;
cout< <"\n ENTER THE MEMBERSHIP NO.TO BE DELETED--->"; cin>>code;
//update emp file
outfile.open("tempfile.dat",ios::app);//open temporary file infile.open("employee.dat",ios::in);//open employee file
infile.seekg(0,ios::beg);//set file pointer to the begining of the file infile.read((char*)&emp,sizeof(emp));//read the first record
while(!infile.eof())
{
if(emp.employee_num!=code)//if this record is not to be deleted
//write in temporary file
outfile.write((char*)&emp,sizeof(emp));
infile.read((char*)&emp,sizeof(emp));//read the next record }
infile.close();//close employee file outfile.close();//close temporary file
remove("employee.dat");//delete old employee file
rename("tempfile.dat","employee.dat");//temporary file becomes new //employee file
del_pay_object(code); }
//this function modifies information regarding an employee
void employee::modify_object() { fstream file; int mod_choice; int code; do
{//display modify menu clrscr();
cout< <"\n MODIFY MENU "; cout<<"\n---";
cout<<"\n CHANGED ADDRESS ....1"; cout<<"\n CHANGE DESIGNATION ....2"; cout<<"\n CHANGE BASIC SALARY ....3"; cout<<"\n EXIT MODIFY MENU ....4"; cout<<"\n\n ENTER YOUR CHOICE NO.--->"; cin>>mod_choice;
if(mod_choice!=4)
{
cin>>code;
file.open("employee.dat",ios::in|ios::out);//open the file for // reading/writing
file.seekg(0,ios::beg);//set file pointer to the begining of the file file.read((char*)&emp,sizeof(emp));//read first record
int n=file.tellg();//tell where we are
while(!file.eof()) { if(code==emp.employee_num)//record found { switch(mod_choice) { case 1 : clrscr();
//get new information
cout< <"\n ENTER THE NEW ADDRESS--->"; gets(emp.employee_address);
file.seekg(n-sizeof(emp));//set file pointer to the record //to be modified
file.write((char*)&emp,sizeof(emp));//update record file.flush();
break;
case 2 : clrscr();
//get new information
cout< <"\n ENTER THE NEW DESIGNATION--->"; gets(desig_nation);
file.seekg(n-sizeof(emp));//set file pointer to the record //to be changed
file.write((char*)&emp,sizeof(emp));//update record file.flush();
modify_pay_object(code,desig_nation); break;
case 3 : clrscr();
//get new information
cout< <"\n ENTER NEW BASIC SALARY--->"; cin>>basic_salary;
file.seekg(n-sizeof(emp));//set file pointer to the record //to be modified
file.write((char*)&emp,sizeof(emp)); file.flush();
modify_basic(code,basic_salary); break;
}//end of switch }//end if
file.read((char*)&emp,sizeof(emp));//raed next record n=file.tellg();//tell where we are
}//end while file.close(); }//end if
}//end do while loop
while(mod_choice!=4);
clrscr();
cout< <"\n YOU ENDED THE MODIFY SESSION "; cout<<"\n THANK YOU!";
delay(700); }
//this function searches information on the basis of a given field
{ fstream infile; int search_choice; int phno; int code; char name[25]; do {
int counter=0;//initialize counter to zero clrscr();
//display search menu
cout<<"\n SEARCH MENU "; cout<<"\n---"; cout<<"\n EMPLOYEE CODE ....1"; cout<<"\n EMPLOYEE NAME ....2"; cout<<"\n EXIT ....3";
cout<<"\n\n ENTER YOUR CHOICE NO.--->"; cin>>search_choice;
switch(search_choice) {
case 1 : clrscr();
cout< <"\n ENTER THE MEMBER CODE TO BE SEARCHED --->"; cin>>code;//get record no.
infile.open("employee.dat",ios::in);//open file for reading infile.seekg(0,ios::beg);//set file pointer to the begining
// of the file
infile.read((char*)&emp,sizeof(emp));//read first record
while(!infile.eof())
{
if(emp.employee_num==code) { //record found
counter ++; //increment counter emp.show_data();//display record }
infile.read((char*)&emp,sizeof(emp));//read next record }
infile.close();//if end of file , close file gotoxy(22,20);
cout< <"RECORDS FOUND="<<counter;//display counter getch();//wait for key press
break;
case 2 : clrscr();
cout<<"\n ENTER THE NAME TO BE SEARCHED--->"; cin>>name;
infile.open("employee.dat",ios::in);//open file for reading infile.seekg(0,ios::beg);//set file pointer to the begining of
// the file
infile.read((char*)&emp,sizeof(emp));//read first record
while(!infile.eof())
{
if(strcmpi(emp.employee_name,name)==0) { //record found
counter++;//increment counter emp.show_data();//display record }
infile.read((char*)&emp,sizeof(emp));//read next record }
infile.close();//if end of file , close file gotoxy(22,20);
cout< <"RECORDS FOUND="<<counter;//display counter getch();//wait for key press
break;
case 3 : clrscr();
gotoxy(22,15);//set position for display cout<<"YOU ENDED THE SEARCH SESSION"; gotoxy(27,18);
cout<<"THANK YOU!";
delay(700);//wait for some time break;
} }
while(search_choice!=3);
}
//this function generates reports void payfile::reports()
{
fstream infile; int report_choice; do
{ //display report menu clrscr();
cout<<"\n REPORT MENU ";
cout<<"\n---";
cout<<"\n LIST OF ALL EMPLOYEES ....1"; cout<<"\n SALARY STATEMENTS OF ALL EMPLOYEES ....2"; cout<<"\n SALARY SLIP OF ALL EMPLOYEES ....3"; cout<<"\n EXIT REPORTS SESSION ....4";
cout<<"\n\n REPORT ON WHAT ? < ENTER CHOICE NO.>--->"; cin>>report_choice; switch(report_choice) { case 1 : clrscr(); emp.show_object(); break; case 2 : clrscr(); cout< <"\n---"; cout<<"\n RAJ CORPORATION "; cout<<"\n---"; cout<<"\n EMP.NO. EMP.NAME DESIG ";
cout<<"\nBASIC DA HRA CCA CONVEYANCE GROSS PAY"; cout<<"\n PF ITAX OTHER DED. ******* NET PAY "; cout<<"\n---\n"; infile.open("payfile.dat",ios::in);//open payfile for reading infile.seekg(0,ios::beg);//set file pointer to the begining
// of the file
infile.read((char*)&pay,sizeof(pay));//read the first record
while(!infile.eof())
{
cout<<" ";//leave some space
cout<<setiosflags(ios::left)//set left justified output <<setw(9) //set width of the output
<<pay.emp_num
<<setw(14) //set width of the output <<pay.emp_name;
cout<<setiosflags(ios::left) <<setw(17)
<<pay.emp_designation<<endl; cout<<"EARNINGS:-";
cout<<setiosflags(ios::fixed)//set fixed notation output <<setiosflags(ios::showpoint)//always show decimal point <<setprecision(2)//set position of decimal point
<<setw(12)//set width of the output <<pay.basic_pay <<setw(10) <<pay.DA <<setw(10) <<pay.HRA <<setw(10) <<pay.CCA <<setw(10) <<pay.con_veyance <<setw(12) <<pay.gross_pay <<endl; cout<<"DEDUCTIONS :- "; cout<<setiosflags(ios::fixed) <<setprecision(2) <<setiosflags(ios::showpoint) <<setw(10) <<pay.PF <<setw(10) <<pay.income_tax <<setw(10) <<pay.other_deductions <<setw(15) <<"************" <<pay.net_pay <<endl;
infile.read((char*)&pay,sizeof(pay));//read next record }
infile.close(); gotoxy(22,24);
cout<<"PRESS ANY KEY TO CONTINUE"; getch();//wait for keypress
break;
case 3 : clrscr(); char ch,month[9];
cout<<"\n ENTER CURRENT DATE <<dd/mm/yyyy>>--->"; cin>>current_date.dd>>ch
>>current_date.mm>>ch >>current_date.yyyy; switch(current_date.mm) { //get month name
case 1 : strcpy(month,"JANUARY"); break; case 2 : strcpy(month,"FEBRUARY"); break; case 3 : strcpy(month,"MARCH"); break; case 4 : strcpy(month,"APRIL"); break; case 5 : strcpy(month,"MAY"); break; case 6 : strcpy(month,"JUNE"); break; case 7 : strcpy(month,"JULY");
break; case 8 : strcpy(month,"AUGUST"); break; case 9 : strcpy(month,"SEPTEMBER"); break; case 10 :strcpy(month,"OCTOBER"); break; case 11 :strcpy(month,"NOVEMBER"); break; case 12 :strcpy(month,"DECEMBER"); break; }
infile.open("payfile.dat",ios::in);//open pay file for reading infile.seekg(0,ios::beg);//set file pointer to the begining
// of the file
infile.read((char*)&pay,sizeof(pay));//read first record
while(!infile.eof())
{
clrscr();
cout< <"\n---"; cout<<"\n RAJ CORPORATION ";
cout<<"\n SALARY SLIP FOR THE MONTH OF "<<month<<"-"<<current_date.yyyy; cout<<"\n ---";
cout<<"\n EMPLOYEE NO. :"<<setiosflags(ios::left)//set left // justified output <<setw(10) <<pay.emp_num; cout<<" NAME:"; cout<<setiosflags(ios::left) <<setw(20) <<pay.emp_name;
cout<<"\n\n EARNINGS DEDUCTIONS "; cout<<"\n --- ---"; cout<<"\n BASIC : RS."<<setiosflags(ios::fixed)
<<setiosflags(ios::showpoint) <<setprecision(2) <<setw(12) <<pay.basic_pay; cout<<" PF : RS."; cout<<setiosflags(ios::fixed) <<setiosflags(ios::showpoint) <<setprecision(2) <<setw(12) <<pay.PF; cout<<"\n DA : RS."; cout<<setiosflags(ios::fixed) <<setiosflags(ios::showpoint) <<setprecision(2) <<setw(12) <<pay.DA; cout<<" ITAX : RS."; cout<<setiosflags(ios::fixed) <<setiosflags(ios::showpoint) <<setprecision(2) <<setw(12) <<pay.income_tax; cout<<"\n HRA : RS."; cout<<setiosflags(ios::fixed) <<setiosflags(ios::showpoint) <<setprecision(2)
<<setw(12) <<pay.HRA;
cout<<" OTHER DEDUCTIONS : RS."; cout<<setiosflags(ios::fixed) <<setiosflags(ios::showpoint) <<setprecision(2) <<setw(12) <<pay.other_deductions; cout<<"\n CCA : RS."; cout<<setiosflags(ios::fixed) <<setiosflags(ios::showpoint) <<setprecision(2) <<setw(12) <<pay.CCA; cout<<"\n CONVEYANCE : RS."; cout<<setiosflags(ios::fixed) <<setiosflags(ios::showpoint) <<setprecision(2) <<setw(12) <<pay.con_veyance;
cout<<"\n\n GROSS PAY : RS."; cout<<setiosflags(ios::fixed)
<<setiosflags(ios::showpoint) <<setprecision(2)
<<setw(12) <<pay.gross_pay;
cout<<" TOTAL DEDUCTIONS : RS."; cout<<setiosflags(ios::fixed)
<<setiosflags(ios::showpoint) <<setprecision(2)
<<setw(12)
<<pay.gross_pay-pay.net_pay; cout<<"\n NET PAY : RS."; cout<<setiosflags(ios::fixed) <<setiosflags(ios::showpoint) <<setprecision(2) <<setw(12) <<pay.net_pay; cout<<"\n---"; cout<<"\n SIGNATORY AUTHORITY";
cout<<"\n---"; cout<<"\n---"; gotoxy(22,24);
cout<<"PRESS ANY KEY TO CONTINUE"; getch();//wait for keypress
infile.read((char*)&pay,sizeof(pay));//read next record }
infile.close(); break;
case 4 : clrscr(); gotoxy(22,15);
cout<<"YOU ENDED THE REPORT SESSION "; gotoxy(27,18); cout<<"THANK YOU!"; delay(700); break; } }
while(report_choice!=4); }
//this is the main function void main()
{
int main_choice; do
{ //display main menu clrscr();
gotoxy(22,7);
cout<<" MAIN MENU "; gotoxy(22,8);
cout<<"---"; gotoxy(22,10);
cout<<"REGISTER A NEW EMPLOYEE ....1"; gotoxy(22,11);
cout<<"REMOVE AN EMPLOYEE ....2"; gotoxy(22,12);
cout<<"MODIFY INFORMATION ABOUT AN EMPLOYEE ....3"; gotoxy(22,13);
cout<<"SEARCH FOR INFORMATION ABOUT AN EMPLOYEE ....4"; gotoxy(22,14);
cout<<"UPDATE MONTHLY PAY FILE ....5"; gotoxy(22,15);
cout<<"REPORTS ....6"; gotoxy(22,16);
cout<<"EXIT ....7"; gotoxy(25,20);
cout<<"ENTER YOUR CHOICE NO.--->"; cin>>main_choice;
switch(main_choice) {
case 1 : emp.add_object();//call function to register a new employee break;
case 2 : emp.del_object();//call function to delete the record of // an employee
break;
case 3 : emp.modify_object();//this function can modify information break;
case 4 : emp.search_object();//this function searches information // about an employee
break;
case 5 : pay.update_pay_file();//this function generates // monthly pay file
break;
case 6 : pay.reports();//this function generate reports break;
case 7 : clrscr(); gotoxy(25,10);
cout< <"YOU ENDED THE SESSION "; gotoxy(27,12);
cout<<"THANK YOU!"; delay(1000);
} }
while(main_choice!=7);