Question

In: Computer Science

Implementation of a Payroll Management System Introduction Payroll management system project in C++ is a console...

Implementation of a Payroll Management System Introduction Payroll management system project in C++ is a console application with the use of Object Oriented Programming with graphics. The project has multiple classes and sub-classes with many features within them. Basic operations: users can perform via this program project that are based on file handling are adding new employee record, modifying employee record and deleting record, displaying one or all employee’s record. Besides these, payroll management also allows users to print the salary slip for a particular employee.

Requirement 1. Uses the concept of following c/c++ topics: o Pointers o Loops o Functions o If Else o Switch o Classes o File handling o C++ Graphics o Function overriding and overloading o composition 2. The Project has 3 main classes and with functions in menu

Class 1: LINES

o LINE_HOR

o LINE_VER

o BOX

o CLEARUP

o CLEARDOWN

Class 2: MENUS

o MAIN_MENU

o EDIT_MENU

o INTRODUCTION

Class #3: EMPLOYEE

o NEW_EMPLOYEE

o MODIFICATION

o DELETION

o DISPLAY

o LIST

o SALARY_SLIP

o ADD_RECORD

o MODIFY_RECORD

o DELETE_RECORD

o LASTCODE

o CODEFOUND

o RECORDNO

o FOUND_CODE

o DISPLAY_RECORD

o VALID_DATE

3. Required Features

o Addition of New Employee: This feature is under the public functions of class employee. The information handled in this feature are employee code number, name, address, phone number, joining date (day, month and year), designation, grade and loan.

o Modify Employee Record: This System in C++ asks for employee code from the user for this function to work. Modifications that can be made are the employee code number itself, joining date (day, month and year), name, address, phone number, designation, grade, house allowance and loan given to the employee. Employee’s grades are categorized as A, B, C, D and E. o Delete Employee Record: Deletion is done of an employee record from Payroll management system project by entering the employee code. A confirmation message is asked stating whether the user really wants to delete the record from the file.

o Print Employee Salary Slip: This feature too asks for the employee code; the employee code has been used to unlock or perform operations in many features of this payroll management system project in C++. This function lists all the months of the year, and asks for date, employee name, designation and grade from the user. To print the salary slip, the user further needs to provide information such as number of days worked in the month by the employee and the number of hours worked over time. The slip enlists basic salary, allowance, deductions and net salary of the employee.

o Display Employee Record: Providing the employee code number, users can access all the provided information related to a particular employee via this function. The employee record information displayed are the ones provided while adding a new employee record.

o Display List of Employees: This feature displays the record of all employees added in file. The records are displayed in a tabular pattern containing information such as code name of the employee, phone number, date of joining, designation, grade and salary.

Don't copy and paste from website if you know to do this please try to do it on your own. For classes lines and menu, you can use your own implementation. Just make sure to use those classes as there is no required features about it but rest of other which have required features try to do accordingly.

Write the code in C++ language .. ?

Thank you

Solutions

Expert Solution

Payroll Management System

C++ Code

============================================

#include<Windows.h>

#include <iostream>

#include <fstream>

#include <process.h>

#include <string.h>

#include <stdlib.h>

#include <stdio.h>

#include <ctype.h>

#include <conio.h>

#include <time.h>

using namespace std;

void gotoxy (int x, int y)

{

COORD c = { x, y };

SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);

}

class LINES

{

public:

void LINE_HOR(int, int, int, char);

void LINE_VER(int, int, int, char);

void BOX(int, int, int, int, char);

void CLEARUP(void);

void CLEARDOWN(void);

};

class MENU

{

public:

void MAIN_MENU(void);

private:

void EDIT_MENU(void);

void INTRODUCTION(void);

};

class EMPLOYEE

{

public:

void NEW_EMPLOYEE(void);

void MODIFICATION(void);

void DELETION(void);

void DISPLAY(void);

void LIST(void);

void SALARY_SLIP(void);

private:

void ADD_RECORD(int, char[], char[], char[], int, int, int, char[], char, char, char, float, float);

void MODIFY_RECORD(int, char[], char[], char[], char[], char, char, char, float, float);

void DELETE_RECORD(int);

int LASTCODE(void);

int CODEFOUND(int);

int RECORDNO(int);

int FOUND_CODE(int);

void DISPLAY_RECORD(int);

int VALID_DATE(int, int, int);

int   code, dd, mm, yy;

char name[26], address[31], phone[10], desig[16];

char grade, house, convense;

float loan, basic;

};

void MENU::MAIN_MENU(void)

{

char ch;

LINES L;

L.CLEARUP();

while (1)

{

system("cls");

gotoxy(14, 3);

cout << "     C++ Project for Payroll Management System";

L.BOX(25, 7, 57, 9, 218);

L.BOX(10, 5, 71, 21, 218);

L.BOX(11, 6, 70, 20, 219);

gotoxy(29, 8);

cout << "PAYROLL MANAGEMENT SYSTEM";

gotoxy(30, 11);

cout << "1: NEW EMPLOYEE";

gotoxy(30, 12);

cout << "2: DISPLAY EMPLOYEE";

gotoxy(30, 13);

cout << "3: LIST OF EMPLOYEES";

gotoxy(30, 14);

cout << "4: SALARY SLIP";

gotoxy(30, 15);

cout << "5: EDIT";

gotoxy(30, 16);

cout << "0: QUIT";

gotoxy(30, 18);

cout << "ENTER YOUR CHOICE :";

gotoxy(5, 23);

ch = _getch();

if (ch == 27 || ch == '0')

   break;

else if (ch == '1')

{

   EMPLOYEE E;

   E.NEW_EMPLOYEE();

}

else if (ch == '2')

{

   EMPLOYEE E;

   E.DISPLAY();

}

else if (ch == '3')

{

   EMPLOYEE E;

   E.LIST();

}

else if (ch == '4')

{

   EMPLOYEE E;

   E.SALARY_SLIP();

}

else if (ch == '5')

   EDIT_MENU();

}

L.CLEARUP();

}

void MENU::EDIT_MENU(void)

{

char ch;

LINES L;

L.CLEARDOWN();

while (1)

{

system("cls");

L.BOX(28, 8, 49, 10, 218);

L.BOX(10, 5, 71, 21, 218);

L.BOX(11, 6, 70, 20, 219);

gotoxy(31, 9);

cout << "E D I T M E N U";

gotoxy(30, 13);

cout << "1: DELETE RECORD";

gotoxy(30, 14);

cout << "2: MODIFY RECORD";

gotoxy(30, 15);

cout << "0: EXIT";

gotoxy(30, 17);

cout << "ENTER YOUR CHOICE :";

ch = _getch();

if (ch == 27 || ch == '0')

   break;

else if (ch == '1')

{

   EMPLOYEE E;

   E.DELETION();

}

else if (ch == '2')

{

   EMPLOYEE E;

   E.MODIFICATION();

}

}

L.CLEARDOWN();

}

void LINES::LINE_HOR(int column1, int column2, int row, char c)

{

for (column1; column1 <= column2; column1++)

{

gotoxy(column1, row);

cout << c;

}

}

void LINES::LINE_VER(int row1, int row2, int column, char c)

{

for (row1; row1 <= row2; row1++)

{

gotoxy(column, row1);

cout << c;

}

}

void LINES::BOX(int column1, int row1, int column2, int row2, char c)

{

char ch = 218;

char c1, c2, c3, c4;

char l1 = 196, l2 = 179;

if (c == ch)

{

c1 = 218;

c2 = 191;

c3 = 192;

c4 = 217;

l1 = 196;

l2 = 179;

}

else

{

c1 = c;

c2 = c;

c3 = c;

c4 = c;

l1 = c;

l2 = c;

}

gotoxy(column1, row1);

cout << c1;

gotoxy(column2, row1);

cout << c2;

gotoxy(column1, row2);

cout << c3;

gotoxy(column2, row2);

cout << c4;

column1++;

column2--;

LINE_HOR(column1, column2, row1, l1);

LINE_HOR(column1, column2, row2, l1);

column1--;

column2++;

row1++;

row2--;

LINE_VER(row1, row2, column1, l2);

LINE_VER(row1, row2, column2, l2);

}

// THIS FUNCTION CLEAR THE SCREEN LINE BY LINE UPWARD

void LINES::CLEARUP(void)

{

for (int i = 25; i >= 1; i--)

{

sleep(20);

gotoxy(1, i);

clreol();

}

}

void LINES::CLEARDOWN(void)

{

for (int i = 1; i <= 25; i++)

{

delay(20);

gotoxy(1, i);

clreol();

}

}

// BELOW FUNCTION ADDS THE USER DATA IN THE EMPLOYEE'S FILE

void EMPLOYEE::ADD_RECORD(int ecode, char ename[26], char eaddress[31], char ephone[10], int d, int m, int y, char edesig[16], char egrade, char ehouse, char econv, float eloan, float ebasic)

{

fstream file;

file.open("EMPLOYEE.DAT");

code = ecode;

strcpy(name, ename);

strcpy(address, eaddress);

strcpy(phone, ephone);

dd = d;

mm = m;

yy = y;

strcpy(desig, edesig);

grade = egrade;

house = ehouse;

convense = econv;

loan = eloan;

basic = ebasic;

file.write((char *) this, sizeof(EMPLOYEE));

file.close();

}

// BELOW FUNCTION MODIFIES THE GIVEN DATA IN THE EMPLOYEE'S FILE

void EMPLOYEE::MODIFY_RECORD(int ecode, char ename[26], char eaddress[31], char ephone[10], char edesig[16], char egrade, char ehouse, char econv, float eloan, float ebasic)

{

int recno;

recno = RECORDNO(ecode);

fstream file;

file.open("EMPLOYEE.DAT", ios::out | ios::ate);

strcpy(name, ename);

strcpy(address, eaddress);

strcpy(phone, ephone);

strcpy(desig, edesig);

grade = egrade;

house = ehouse;

convense = econv;

loan = eloan;

basic = ebasic;

int location;

location = (recno - 1) * sizeof(EMPLOYEE);

file.seekp(location);

file.write((char *) this, sizeof(EMPLOYEE));

file.close();

}

//BELOW FUNCTION DELETES THE RECORD IN THE EMPLOYEE FILE

// FOR THE GIVEN EMPLOYEE CODE

void EMPLOYEE::DELETE_RECORD(int ecode)

{

fstream file;

file.open("EMPLOYEE.DAT", ios::in);

fstream temp;

temp.open("temp.dat", ios::out);

file.seekg(0, ios::beg);

while (!file.eof())

{

file.read((char *) this, sizeof(EMPLOYEE));

if (file.eof())

   break;

if (code != ecode)

   temp.write((char *) this, sizeof(EMPLOYEE));

}

file.close();

temp.close();

file.open("EMPLOYEE.DAT", ios::out);

temp.open("temp.dat", ios::in);

temp.seekg(0, ios::beg);

while (!temp.eof())

{

temp.read((char *) this, sizeof(EMPLOYEE));

if (temp.eof())

   break;

file.write((char *) this, sizeof(EMPLOYEE));

}

file.close();

temp.close();

}

// BELOW FUNCTION RETURNS THE LAST EMPLOYEE'S CODE

int EMPLOYEE::LASTCODE(void)

{

fstream file;

file.open("EMPLOYEE.DAT", ios::in);

file.seekg(0, ios::beg);

int count = 0;

while (file.read((char *) this, sizeof(EMPLOYEE)))

count = code;

file.close();

return count;

}

// BELOW FUNCTION RETURNS 0 IF THE GIVEN CODE NOT FOUND

int EMPLOYEE::FOUND_CODE(int ecode)

{

fstream file;

file.open("EMPLOYEE.DAT", ios::in);

file.seekg(0, ios::beg);

int found = 0;

while (file.read((char *) this, sizeof(EMPLOYEE)))

{

if (code == ecode)

{

   found = 1;

   break;

}

}

file.close();

return found;

}

// BELOW FUNCTION RETURNS RECORD NUMBER OF THE CODE

int EMPLOYEE::RECORDNO(int ecode)

{

fstream file;

file.open("EMPLOYEE.DAT", ios::in);

file.seekg(0, ios::beg);

int recno = 0;

while (file.read((char *) this, sizeof(EMPLOYEE)))

{

recno++;

if (code == ecode)

   break;

}

file.close();

return recno;

}

// BELOW FUNCTION DISPLAYS THE LIST OF THE EMPLOYEES

void EMPLOYEE::LIST(void)

{

system("cls");

int row = 6, found = 0, flag = 0;

char ch;

gotoxy(31, 2);

cout << "LIST OF EMPLOYEES";

gotoxy(30, 3);

cout << "~~~~~~~~~~~~~~~~~~~";

gotoxy(1, 4);

cout << "CODE NAME                     PHONE    DOJ         DESIGNATION    GRADE SALARY";

gotoxy(1, 5);

cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";

fstream file;

file.open("EMPLOYEE.DAT", ios::in);

file.seekg(0, ios::beg);

while (file.read((char *) this, sizeof(EMPLOYEE)))

{

flag = 0;

delay(20);

found = 1;

gotoxy(2, row);

cout << code;

gotoxy(6, row);

cout << name;

gotoxy(31, row);

cout << phone;

gotoxy(40, row);

cout << dd << "/" << mm << "/" << yy;

gotoxy(52, row);

cout << desig;

gotoxy(69, row);

cout << grade;

if (grade != 'E')

  {

   gotoxy(74, row);

   cout << basic;

}

else

{

   gotoxy(76, row);

   cout << "-";

}

if (row == 23)

{

   flag = 1;

   row = 6;

   gotoxy(1, 25);

   cout << "Press any key to continue or Press <ESC> to exit";

   ch = getch();

   if (ch == 27)

    break;

   system("cls");

   gotoxy(31, 2);

   cout << "LIST OF EMPLOYEES";

   gotoxy(30, 3);

   cout << "~~~~~~~~~~~~~~~~~~~";

   gotoxy(1, 4);

   cout << "CODE NAME                     PHONE    DOJ         DESIGNATION    GRADE SALARY";

   gotoxy(1, 5);

   cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";

}

else

   row++;

}

if (!found)

{

gotoxy(5, 10);

cout << "\7Records not found";

}

if (!flag)

{

gotoxy(1, 25);

cout << "Press any key to continue...";

getche();

}

file.close();

}

// BELOW FUNCTION DISPLAYS THE RECORDS OF THE EMPLOYEES

void EMPLOYEE::DISPLAY_RECORD(int ecode)

{

fstream file;

file.open("EMPLOYEE.DAT", ios::in);

file.seekg(0, ios::beg);

while (file.read((char *) this, sizeof(EMPLOYEE)))

{

if (code == ecode)

{

   gotoxy(5, 5);

   cout << "Employee Code # " << code;

   gotoxy(5, 6);

   cout << "~~~~~~~~~~~~~";

   gotoxy(5, 7);

   cout << "Name         : " << name;

   gotoxy(5, 8);

   cout << "Address      : " << address;

   gotoxy(5, 9);

   cout << "Phone no.    : " << phone;

   gotoxy(5, 11);

   cout << "JOINING DATE";

   gotoxy(5, 12);

   cout << "~~~~~~~~~~~~";

   gotoxy(5, 13);

   cout << "Day   : " << dd;

   gotoxy(5, 14);

   cout << "Month : " << mm;

   gotoxy(5, 15);

   cout << "Year : " << yy;

   gotoxy(5, 17);

   cout << "Designation : " << desig;

   gotoxy(5, 18);

   cout << "Grade        : " << grade;

   if (grade != 'E')

   {

    gotoxy(5, 19);

    cout << "House (y/n)    : " << house;

    gotoxy(5, 20);

    cout << "Convense (y/n) : " << convense;

    gotoxy(5, 22);

    cout << "Basic Salary   : " << basic;

   }

   gotoxy(5, 21);

   cout << "Loan           : " << loan;

}

}

file.close();

}

// BELOW FUNCTION GIVES DATA TO ADD IN THE FILE

void EMPLOYEE::NEW_EMPLOYEE(void)

{

system("cls");

char ch, egrade, ehouse = 'N', econv = 'N';

char ename[26], eaddress[31], ephone[10], edesig[16], t1[10];

float t2 = 0.0, eloan = 0.0, ebasic = 0.0;

int   d, m, y, ecode, valid;

gotoxy(72, 2);

cout << "<0>=EXIT";

gotoxy(28, 3);

cout << "ADDITION OF NEW EMPLOYEE";

gotoxy(5, 5);

cout << "Employee Code # ";

gotoxy(5, 6);

cout << "~~~~~~~~~~~~~";

gotoxy(5, 7);

cout << "Name         : ";

gotoxy(5, 8);

cout << "Address      : ";

gotoxy(5, 9);

cout << "Phone no.    : ";

gotoxy(5, 11);

cout << "JOINING DATE";

gotoxy(5, 12);

cout << "~~~~~~~~~~~~";

gotoxy(5, 13);

cout << "Day   : ";

gotoxy(5, 14);

cout << "Month : ";

gotoxy(5, 15);

cout << "Year : ";

gotoxy(5, 17);

cout << "Designation : ";

gotoxy(5, 18);

cout << "Grade        : ";

gotoxy(5, 21);

cout << "Loan           : ";

ecode = LASTCODE() + 1;

if (ecode == 1)

{

ADD_RECORD(ecode, "null", "null", "null", 0, 0, 0, "null", 'n', 'n', 'n', 0.0, 0.0);

DELETE_RECORD(ecode);

}

gotoxy(21, 5);

cout << ecode;

do

{

valid = 1;

gotoxy(5, 25);

clreol();

cout << "Enter the name of the Employee";

gotoxy(20, 7);

clreol();

gets(ename);

strupr(ename);

if (ename[0] == '0')

   return;

if (strlen(ename) < 1 || strlen(ename) > 25)

{

   valid = 0;

   gotoxy(5, 25);

   clreol();

   cout << "\7Enter correctly (Range: 1..25)";

   getch();

}

} while (!valid);

do

{

valid = 1;

gotoxy(5, 25);

clreol();

cout << "Enter Address of the Employee";

gotoxy(20, 8);

clreol();

gets(eaddress);

strupr(eaddress);

if (eaddress[0] == '0')

   return;

if (strlen(eaddress) < 1 || strlen(eaddress) > 30)

{

   valid = 0;

   gotoxy(5, 25);

   clreol();

   cout << "\7Enter correctly (Range: 1..30)";

   getch();

}

} while (!valid);

do

{

valid = 1;

gotoxy(5, 25);

clreol();

cout << "Enter Phone no. of the Employee or Press <ENTER> for none";

gotoxy(20, 9);

clreol();

gets(ephone);

if (ephone[0] == '0')

   return;

if ((strlen(ephone) < 7 && strlen(ephone) > 0) || (strlen(ephone) > 9))

{

   valid = 0;

   gotoxy(5, 25);

   clreol();

   cout << "\7Enter correctly";

   getch();

}

} while (!valid);

if (strlen(ephone) == 0)

strcpy(ephone, "-");

char tday[3], tmonth[3], tyear[5];

int td;

do

{

valid = 1;

do

{

   gotoxy(5, 25);

   clreol();

   cout << "ENTER DAY OF JOINING";

   gotoxy(13, 13);

   clreol();

   gets(tday);

   td = atoi(tday);

   d = td;

   if (tday[0] == '0')

    return;

} while (d == 0);

do

{

   gotoxy(5, 25);

   clreol();

   cout << "ENTER MONTH OF JOINING";

   gotoxy(13, 14);

   clreol();

   gets(tmonth);

   td = atoi(tmonth);

   m = td;

   if (tmonth[0] == '0')

    return;

} while (m == 0);

do

{

   gotoxy(5, 25);

   clreol();

   cout << "ENTER YEAR OF JOINING";

   gotoxy(13, 15);

   clreol();

   gets(tyear);

   td = atoi(tyear);

   y = td;

   if (tyear[0] == '0')

    return;

} while (y == 0);

if (d>31 || d<1)

   valid = 0;

else if (((y % 4) != 0 && m == 2 && d>28) || ((y % 4) == 0 && m == 2 && d>29))

   valid = 0;

else if ((m == 4 || m == 6 || m == 9 || m == 11) && d>30)

   valid = 0;

else if (y<1990 || y>2020)

   valid = 0;

if (!valid)

{

   valid = 0;

   gotoxy(5, 25);

   clreol();

   cout << "\7Enter correctly";

   getch();

   gotoxy(13, 14);

   clreol();

   gotoxy(13, 15);

   clreol();

}

} while (!valid);

do

{

valid = 1;

gotoxy(5, 25);

clreol();

cout << "Enter Designation of the Employee";

gotoxy(20, 17);

clreol();

gets(edesig);

strupr(edesig);

if (edesig[0] == '0')

   return;

if (strlen(edesig) < 1 || strlen(edesig) > 15)

{

   valid = 0;

   gotoxy(5, 25);

   clreol();

   cout << "\7Enter correctly (Range: 1..15)";

   getch();

}

} while (!valid);

do

{

gotoxy(5, 25);

clreol();

cout << "Enter Grade of the Employee (A,B,C,D,E)";

gotoxy(20, 18);

clreol();

egrade = getche();

egrade = toupper(egrade);

if (egrade == '0')

   return;

} while (egrade < 'A' || egrade > 'E');

if (egrade != 'E')

{

gotoxy(5, 19);

cout << "House (y/n)    : ";

gotoxy(5, 20);

cout << "Convense (y/n) : ";

gotoxy(5, 22);

cout << "Basic Salary   : ";

do

{

   gotoxy(5, 25);

   clreol();

   cout << "ENTER IF HOUSE ALLOWANCE IS ALLOTED TO EMPLOYEE OR NOT";

   gotoxy(22, 19);

   clreol();

   ehouse = getche();

   ehouse = toupper(ehouse);

   if (ehouse == '0')

    return;

} while (ehouse != 'Y' && ehouse != 'N');

do

{

   gotoxy(5, 25);

   clreol();

   cout << "ENTER IF CONVENCE ALLOWANCE IS ALLOTED TO EMPLOYEE OR NOT";

   gotoxy(22, 20);

   clreol();

   econv = getche();

   econv = toupper(econv);

   if (econv == '0')

    return;

} while (econv != 'Y' && econv != 'N');

}

do

{

valid = 1;

gotoxy(5, 25);

clreol();

cout << "ENTER LOAN AMOUNT IF ISSUED";

gotoxy(22, 21);

clreol();

gets(t1);

t2 = atof(t1);

eloan = t2;

if (eloan > 50000)

{

   valid = 0;

   gotoxy(5, 25);

   clreol();

   cout << "\7SHOULD NOT GREATER THAN 50000";

   getch();

}

} while (!valid);

if (egrade != 'E')

{

do

{

   valid = 1;

   gotoxy(5, 25);

   clreol();

   cout << "ENTER BASIC SALARY OF THE EMPLOYEE";

   gotoxy(22, 22);

   clreol();

   gets(t1);

   t2 = atof(t1);

   ebasic = t2;

   if (t1[0] == '0')

    return;

   if (ebasic > 50000)

   {

    valid = 0;

    gotoxy(5, 25);

    clreol();

    cout << "\7SHOULD NOT GREATER THAN 50000";

    getch();

   }

} while (!valid);

}

gotoxy(5, 25);

clreol();

do

{

gotoxy(5, 24);

clreol();

cout << "Do you want to save (y/n) ";

ch = getche();

ch = toupper(ch);

if (ch == '0')

   return;

} while (ch != 'Y' && ch != 'N');

if (ch == 'N')

return;

ADD_RECORD(ecode, ename, eaddress, ephone, d, m, y, edesig, egrade, ehouse, econv, eloan, ebasic);

}

// BELOW FUNCTION CODES FOR THE DISPLAY OF THE RECORD

void EMPLOYEE::DISPLAY(void)

{

system("cls");

char t1[10];

int t2, ecode;

gotoxy(72, 2);

cout << "<0>=EXIT";

gotoxy(5, 5);

cout << "Enter code of the Employee ";

gets(t1);

t2 = atoi(t1);

ecode = t2;

if (ecode == 0)

return;

system("cls");

if (!FOUND_CODE(ecode))

{

gotoxy(5, 5);

cout << "\7Record not found";

getch();

return;

}

DISPLAY_RECORD(ecode);

gotoxy(5, 25);

cout << "Press any key to continue...";

getch();

}

// BELOW FUNCTION GIVES DATA FOR THE MODIFICATION OF THE

// EMPLOYEE RECORDS

void EMPLOYEE::MODIFICATION(void)

{

system("cls");

char ch, egrade, ehouse = 'N', econv = 'N';

char ename[26], eaddress[31], ephone[10], edesig[16], t1[10];

float t2 = 0.0, eloan = 0.0, ebasic = 0.0;

int   ecode, valid;

gotoxy(72, 2);

cout << "<0>=EXIT";

gotoxy(5, 5);

cout << "Enter code of the Employee ";

gets(t1);

t2 = atoi(t1);

ecode = t2;

if (ecode == 0)

return;

system("cls");

if (!FOUND_CODE(ecode))

{

gotoxy(5, 5);

cout << "\7Record not found";

getch();

return;

}

gotoxy(72, 2);

cout << "<0>=EXIT";

gotoxy(22, 3);

cout << "MODIFICATION OF THE EMPLOYEE RECORD";

DISPLAY_RECORD(ecode);

do

{

gotoxy(5, 24);

clreol();

cout << "Do you want to modify this record (y/n) ";

ch = getche();

ch = toupper(ch);

if (ch == '0')

   return;

} while (ch != 'Y' && ch != 'N');

if (ch == 'N')

return;

system("cls");

fstream file;

file.open("EMPLOYEE.DAT", ios::in);

file.seekg(0, ios::beg);

while (file.read((char *) this, sizeof(EMPLOYEE)))

{

if (code == ecode)

   break;

}

file.close();

gotoxy(5, 5);

cout << "Employee Code # " << ecode;

gotoxy(5, 6);

cout << "~~~~~~~~~~~~~";

gotoxy(40, 5);

cout << "JOINING DATE : ";

gotoxy(40, 6);

cout << "~~~~~~~~~~~~~~";

gotoxy(55, 5);

cout << dd << "/" << mm << "/" << yy;

gotoxy(5, 7);

cout << "Name         : ";

gotoxy(5, 8);

cout << "Address      : ";

gotoxy(5, 9);

cout << "Phone no.    : ";

gotoxy(5, 10);

cout << "Designation : ";

gotoxy(5, 11);

cout << "Grade        : ";

gotoxy(5, 14);

cout << "Loan           : ";

do

{

valid = 1;

gotoxy(5, 25);

clreol();

cout << "Enter the name of the Employee or <ENTER> FOR NO CHANGE";

gotoxy(20, 7);

clreol();

gets(ename);

strupr(ename);

if (ename[0] == '0')

   return;

if (strlen(ename) > 25)

{

   valid = 0;

   gotoxy(5, 25);

   clreol();

   cout << "\7Enter correctly (Range: 1..25)";

   getch();

}

} while (!valid);

if (strlen(ename) == 0)

{

strcpy(ename, name);

gotoxy(20, 7);

cout << ename;

}

do

{

valid = 1;

gotoxy(5, 25);

clreol();

cout << "Enter Address of the Employee or <ENTER> FOR NO CHANGE";

gotoxy(20, 8);

clreol();

gets(eaddress);

strupr(eaddress);

if (eaddress[0] == '0')

   return;

if (strlen(eaddress) > 30)

{

   valid = 0;

   gotoxy(5, 25);

   clreol();

   cout << "\7Enter correctly (Range: 1..30)";

   getch();

}

} while (!valid);

if (strlen(eaddress) == 0)

{

strcpy(eaddress, address);

gotoxy(20, 8);

cout << eaddress;

}

do

{

valid = 1;

gotoxy(5, 25);

clreol();

cout << "Enter Phone no. of the Employee or or <ENTER> FOR NO CHANGE";

gotoxy(20, 9);

clreol();

gets(ephone);

if (ephone[0] == '0')

   return;

if ((strlen(ephone) < 7 && strlen(ephone) > 0) || (strlen(ephone) > 9))

{

   valid = 0;

   gotoxy(5, 25);

   clreol();

   cout << "\7Enter correctly";

   getch();

}

} while (!valid);

if (strlen(ephone) == 0)

{

strcpy(ephone, phone);

gotoxy(20, 9);

cout << ephone;

}

do

{

valid = 1;

gotoxy(5, 25);

clreol();

cout << "Enter Designation of the Employee or <ENTER> FOR NO CHANGE";

gotoxy(20, 10);

clreol();

gets(edesig);

strupr(edesig);

if (edesig[0] == '0')

   return;

if (strlen(edesig) > 15)

{

   valid = 0;

   gotoxy(5, 25);

   clreol();

   cout << "\7Enter correctly (Range: 1..15)";

   getch();

}

} while (!valid);

if (strlen(edesig) == 0)

{

strcpy(edesig, desig);

gotoxy(20, 10);

cout << edesig;

}

do

{

gotoxy(5, 25);

clreol();

cout << "Enter Grade of the Employee (A,B,C,D,E) or <ENTER> FOR NO CHANGE";

gotoxy(20, 11);

clreol();

egrade = getche();

egrade = toupper(egrade);

if (egrade == '0')

   return;

if (egrade == 13)

{

   egrade = grade;

   gotoxy(20, 11);

   cout << grade;

}

} while (egrade < 'A' || egrade > 'E');

if (egrade != 'E')

{

gotoxy(5, 12);

cout << "House (y/n)    : ";

gotoxy(5, 13);

cout << "Convense (y/n) : ";

gotoxy(5, 15);

cout << "Basic Salary   : ";

do

{

   gotoxy(5, 25);

   clreol();

   cout << "ALLOTED HOUSE ALLOWANCE ? or <ENTER> FOR NO CHANGE";

   gotoxy(22, 12);

   clreol();

   ehouse = getche();

   ehouse = toupper(ehouse);

   if (ehouse == '0')

    return;

   if (ehouse == 13)

   {

    ehouse = house;

    gotoxy(22, 12);

    cout << ehouse;

   }

} while (ehouse != 'Y' && ehouse != 'N');

do

{

   gotoxy(5, 25);

   clreol();

   cout << "ALLOTED CONVENCE ALLOWANCE or <ENTER> FOR NO CHANGE";

   gotoxy(22, 13);

   clreol();

   econv = getche();

   econv = toupper(econv);

   if (econv == '0')

    return;

   if (econv == 13)

   {

    econv = convense;

    gotoxy(22, 13);

    cout << econv;

   }

} while (econv != 'Y' && econv != 'N');

}

do

{

valid = 1;

gotoxy(5, 25);

clreol();

cout << "ENTER LOAN AMOUNT or <ENTER> FOR NO CHANGE";

gotoxy(22, 14);

clreol();

gets(t1);

t2 = atof(t1);

eloan = t2;

if (eloan > 50000)

{

   valid = 0;

   gotoxy(5, 25);

   clreol();

   cout << "\7SHOULD NOT GREATER THAN 50000";

   getch();

}

} while (!valid);

if (strlen(t1) == 0)

{

eloan = loan;

gotoxy(22, 14);

cout << eloan;

}

if (egrade != 'E')

{

do

{

   valid = 1;

   gotoxy(5, 25);

   clreol();

   cout << "ENTER BASIC SALARY or <ENTER> FOR NO CHANGE";

   gotoxy(22, 15);

   clreol();

   gets(t1);

   t2 = atof(t1);

   ebasic = t2;

   if (t1[0] == '0')

    return;

   if (ebasic > 50000)

   {

    valid = 0;

    gotoxy(5, 25);

    clreol();

    cout << "\7SHOULD NOT GREATER THAN 50000";

    getch();

   }

} while (!valid);

if (strlen(t1) == 0)

{

   ebasic = basic;

   gotoxy(22, 15);

   cout << ebasic;

}

}

gotoxy(5, 25);

clreol();

do

{

gotoxy(5, 18);

clreol();

cout << "Do you want to save (y/n) ";

ch = getche();

ch = toupper(ch);

if (ch == '0')

   return;

} while (ch != 'Y' && ch != 'N');

if (ch == 'N')

return;

MODIFY_RECORD(ecode, ename, eaddress, ephone, edesig, egrade, ehouse, econv, eloan, ebasic);

gotoxy(5, 23);

cout << "\7Record Modified";

gotoxy(5, 25);

cout << "Press any key to continue...";

getch();

}

// BELOW FUNCTION GIVES THE CODE NUMBER. FOR THE DELETION OF THE

// EMPLOYEE RECORD

void EMPLOYEE::DELETION(void)

{

system("cls");

char t1[10], ch;

int t2, ecode;

gotoxy(72, 2);

cout << "<0>=EXIT";

gotoxy(5, 5);

cout << "Enter code of the Employee ";

gets(t1);

t2 = atoi(t1);

ecode = t2;

if (ecode == 0)

return;

system("cls");

if (!FOUND_CODE(ecode))

{

gotoxy(5, 5);

cout << "\7Record not found";

getch();

return;

}

gotoxy(72, 2);

cout << "<0>=EXIT";

gotoxy(24, 3);

cout << "DELETION OF THE EMPLOYEE RECORD";

DISPLAY_RECORD(ecode);

do

{

gotoxy(5, 24);

clreol();

cout << "Do you want to delete this record (y/n) ";

ch = getche();

ch = toupper(ch);

if (ch == '0')

   return;

} while (ch != 'Y' && ch != 'N');

if (ch == 'N')

return;

DELETE_RECORD(ecode);

LINES L;

L.CLEARDOWN();

gotoxy(5, 23);

cout << "\7Record Deleted";

gotoxy(5, 25);

cout << "Press any key to continue...";

getch();

}

// BELOW FUNCTION RETURNS 0 IF THE DATE IS INVALID

int EMPLOYEE::VALID_DATE(int d1, int m1, int y1)

{

int valid = 1;

if (d1>31 || d1<1)

valid = 0;

else if (((y1 % 4) != 0 && m1 == 2 && d1>28) || ((y1 % 4) == 0 && m1 == 2 && d1>29))

valid = 0;

else if ((m1 == 4 || m1 == 6 || m1 == 9 || m1 == 11) && d1>30)

valid = 0;

return valid;

}

// BELOW FUNCTION PRINTS SALARY SLIP FOR A EMPLOYEE

void EMPLOYEE::SALARY_SLIP(void)

{

system("cls");

char t1[10];

int t2, ecode, valid;

gotoxy(72, 2);

cout << "<0>=EXIT";

gotoxy(5, 5);

cout << "Enter code of the Employee ";

gets(t1);

t2 = atoi(t1);

ecode = t2;

if (ecode == 0)

return;

system("cls");

if (!FOUND_CODE(ecode))

{

gotoxy(5, 5);

cout << "\7Record not found";

getch();

return;

}

fstream file;

file.open("EMPLOYEE.DAT", ios::in);

file.seekg(0, ios::beg);

while (file.read((char *) this, sizeof(EMPLOYEE)))

{

if (code == ecode)

   break;

}

file.close();

int d1, m1, y1;

struct date d;

getdate(&d);

d1 = d.da_day;

m1 = d.da_mon;

y1 = d.da_year;

char *mon[12] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "November", "December" };

LINES L;

L.BOX(2, 1, 79, 25, 219);

gotoxy(31, 2);

cout << "NADEEM AKHTAR, PGDBA - 200754667";

L.LINE_HOR(3, 78, 3, 196);

gotoxy(34, 4);

cout << "SALARY SLIP";

gotoxy(60, 4);

cout << "Date: " << d1 << "/" << m1 << "/" << y1;

gotoxy(34, 5);

cout << mon[m1 - 1] << ", " << y1;

L.LINE_HOR(3, 78, 6, 196);

gotoxy(6, 7);

cout << "Employee Name : " << name;

gotoxy(6, 8);

cout << "Designation   : " << desig;

gotoxy(67, 8);

cout << "Grade : " << grade;

L.BOX(6, 9, 75, 22, 218);

L.LINE_HOR(10, 71, 20, 196);

int days, hours;

if (grade == 'E')

{

do

{

   valid = 1;

   gotoxy(10, 21);

   cout << "ENTER NO. OF DAYS WORKED IN THE MONTH ";

   gotoxy(10, 11);

   cout << "No. of Days   : ";

   gets(t1);

   t2 = atof(t1);

   days = t2;

   if (!VALID_DATE(days, m1, y1))

   {

    valid = 0;

    gotoxy(10, 21);

    cout << "\7ENTER CORRECTLY                       ";

    getch();

    gotoxy(10, 11);

    cout << "                    ";

   }

} while (!valid);

do

{

   valid = 1;

   gotoxy(10, 21);

   cout << "ENTER NO. OF HOURS WORKED OVER TIME   ";

   gotoxy(10, 13);

   cout << "No. of hours : ";

   gets(t1);

   t2 = atof(t1);

   hours = t2;

   if (hours > 8 || hours < 0)

   {

    valid = 0;

    gotoxy(10, 21);

    cout << "\7ENTER CORRECTLY                     ";

    getch();

    gotoxy(10, 13);

    cout << "                    ";

   }

} while (!valid);

gotoxy(10, 21);

cout << "                                               ";

gotoxy(10, 11);

cout << "                        ";

gotoxy(10, 13);

cout << "                        ";

}

gotoxy(10, 10);

cout << "Basic Salary         : Rs.";

gotoxy(10, 12);

cout << "ALLOWANCE";

if (grade != 'E')

{

gotoxy(12, 13);

cout << "HRA : Rs.";

gotoxy(12, 14);

cout << "CA   : Rs.";

gotoxy(12, 15);

cout << "DA   : Rs.";

}

else

{

gotoxy(12, 13);

cout << "OT   : Rs.";

}

gotoxy(10, 17);

cout << "DEDUCTIONS";

gotoxy(12, 18);

cout << "LD   : Rs.";

if (grade != 'E')

{

gotoxy(12, 19);

cout << "PF   : Rs.";

}

gotoxy(10, 21);

cout << "NET SALARY           : Rs.";

gotoxy(6, 24);

cout << "CASHIER";

gotoxy(68, 24);

cout << "EMPLOYEE";

float HRA = 0.0, CA = 0.0, DA = 0.0, PF = 0.0, LD = 0.0, OT = 0.0, allowance, deduction, netsalary;

if (grade != 'E')

{

if (house == 'Y')

   HRA = (5 * basic) / 100;

if (convense == 'Y')

   CA = (2 * basic) / 100;

DA = (5 * basic) / 100;

PF = (2 * basic) / 100;

LD = (15 * loan) / 100;

allowance = HRA + CA + DA;

deduction = PF + LD;

}

else

{

basic = days * 30;

LD = (15 * loan) / 100;

OT = hours * 10;

allowance = OT;

deduction = LD;

}

netsalary = (basic + allowance) - deduction;

gotoxy(36, 10);

cout << basic;

if (grade != 'E')

{

gotoxy(22, 13);

cout << HRA;

gotoxy(22, 14);

cout << CA;

gotoxy(22, 15);

cout << DA;

gotoxy(22, 19);

cout << PF;

}

else

{

gotoxy(22, 13);

cout << OT;

}

gotoxy(22, 18);

cout << LD;

gotoxy(33, 15);

cout << "Rs." << allowance;

gotoxy(33, 19);

cout << "Rs." << deduction;

gotoxy(36, 21);

cout << netsalary;

gotoxy(2, 1);

getch();

}

// MAIN FUNCTION CALLS MAIN MENU

void main(void)

{

MENU menu;

menu.MAIN_MENU();

}

OUTPUT:


Related Solutions

In c# I need to create a simple payroll management system using visual basic and GUI....
In c# I need to create a simple payroll management system using visual basic and GUI. I also need to connect to SQL database. It needs a log in screen, inside the login screen it needs another screen to enter or edit employee information. It needs somewhere to enter hours worked for that specific employee, and another screen that can access reports.
Car Rental Management System in C++ The aim of this project is to design and implement...
Car Rental Management System in C++ The aim of this project is to design and implement a computerized Car Rental Management System for a company called COEN244Cars. The company rents two types of cars: standard and luxury cars. A car is identified by a car identification number (int), a type (string), and a flag that indicates whether the car is currently available or not. The company distinguishes between three types of customers: regular customers, corporate customers, and VIPs (Very Important...
with C# create a console application project that outputs the number of bytes in memory that...
with C# create a console application project that outputs the number of bytes in memory that each of the following number types use, and the minimum and maximum values they can have: sbyte, byte, short, ushort, int, uint, long, ulong, float, double, and decimal. Try formatting the values into a nice-looking table! More Information: You can always read the documentation, available at https://docs.microsoft.com/en-us/dotnet/standard/base-types/composite-formatting for Composite Formatting to learn how to align text in a console application. Your output should look...
After the introduction of a new information system, a post implementation review is usually carried out....
After the introduction of a new information system, a post implementation review is usually carried out. 1. List and describe three reasons for this review? 2. Describe three assessment/evaluation criteria that may be used in this review? 3. List and describe three factors that the post implementation review considers?
Create a C# .NET Core Console project in Visual Studio. (This is the same kind of...
Create a C# .NET Core Console project in Visual Studio. (This is the same kind of project we have been doing all semester.) Do all of the following in the Program class. You do not need to add any other classes to this project. 2. If it exists, remove the Console.WriteLine(“Hello World!”); line that Visual Studio created in the Program class. 3. At the very top of the Program.cs page you should see using System; On the empty line below...
C# Create a console application project that outputs the number of bytes in memory that each...
C# Create a console application project that outputs the number of bytes in memory that each of the following number types use, and the minimum and maximum values they can have: sbyte, byte, short, ushort, int, uint, long, ulong, float, double, and decimal. Try formatting the values into a nice-looking table! Your output should look something like this: | Type | Bytes of Memory | Min | Max |
In your own words write an essay about the implementation of a Performance Management system into...
In your own words write an essay about the implementation of a Performance Management system into an organization, the importance of this to write 6 main points with explaination with examples in each point?
NETWORK SYSTEM MANAGEMENT. Given the following attributes in a project management:  Project scope & feasibility...
NETWORK SYSTEM MANAGEMENT. Given the following attributes in a project management:  Project scope & feasibility  Documentation  Project planning  Testing and piloting  Risk minimisation Discuss briefly each of them and on how would you use them as the IT manager for the company. Provide a details information support your discussion. Remarks: Total 50 Marks for this questions.
Create a Visual Studio console project (c++) containing a main() program that declares a const int...
Create a Visual Studio console project (c++) containing a main() program that declares a const int NUM_VALUES denoting the array size. Then declare an int array with NUM_VALUES entries. Using a for loop, prompt for the values that are stored in the array as follows: "Enter NUM_VALUES integers separated by blanks:" , where NUM_VALUES is replaced with the array size. Then use another for loop to print the array entries in reverse order separated by blanks on a single line...
Write a C program The Visual Studio project itself must make its output to the Console...
Write a C program The Visual Studio project itself must make its output to the Console (i.e. the Command Prompt using printf) and it must exhibit the following features as a minimum: 3%: Looping Menu with 3 main actions: View Cars, Sell Car, View Sales Note: A Car is defined by its price and model 3%: Must contain at least three arrays to record sales figures (maximum of 10 Car models) Two for recording the price and model of one...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT