Home > C++ > C++ Project on Payroll Management System

C++ Project on Payroll Management System

Download Project
Share Facebook Twitter Orkut SMS

Payroll

		//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
 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);
}
  1. No comments yet.
  1. No trackbacks yet.