0% found this document useful (0 votes)
101 views16 pages

Oop

This C++ program defines classes to manage employee payroll data. The payfile class stores payroll information like employee number, name, salary, deductions etc. It includes functions to add, delete, modify payroll records in a data file. The employee class inherits from payfile and includes additional employee details. Functions generate employee numbers, get/show employee data, and add/delete/modify records in the employee data file. Payroll information is processed by calling payfile functions from within employee functions.

Uploaded by

AsifRaza
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
101 views16 pages

Oop

This C++ program defines classes to manage employee payroll data. The payfile class stores payroll information like employee number, name, salary, deductions etc. It includes functions to add, delete, modify payroll records in a data file. The employee class inherits from payfile and includes additional employee details. Functions generate employee numbers, get/show employee data, and add/delete/modify records in the employee data file. Payroll information is processed by calling payfile functions from within employee functions.

Uploaded by

AsifRaza
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 16

#include<iostream>

#include<conio.h>
#include<iomanip>
#include<string.h>
#include<dos.h>
#include<fstream> //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
int n=file.tellg();//tell where we are
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&lt;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
recno=1;
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();
employee_num=get_rec_no();//automatic generation of empship no.
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;
}
}
//this function displays the contents of file of emps
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)
{
cout<<"\n ENTER THE EMPLOYEE NUMBER--------->";
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
void employee::search_object()
{
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);
break;
}
}
while(main_choice!=7);
}

You might also like