PAYROLLdfdf
PAYROLLdfdf
CONTENTS
Payroll management system explain itself that it’s an accounting package that will provide a financial
solutions for a particular organization or for a particular institutional body. This payroll management
helps account to maintain all records on using predefined rules set by on the organization working
pattern. Its admin module has been developed in such a pattern that allows to change the working rules
any time as per the business requirement. Its automatic rates and salary are fixed which saves
processing time for preparing final ledger. Admin will only have to fill the database with only
employee’s details and select their type of work and their post and final report will be prepared by the
generation module. As codes has been developed by using the concepts of object oriented
programming so, coding reusability can easily be achieved. Even if there will be changes to made in
future, it can be performed by the technical person within few seconds just by changing the working
rules. All working departments within the organization will share the common file to access the
particular data, so there is no chance of data redundancy and helping in maintaining data consistency.
Each working section can be done by selecting only options and its graphical user interface will make
the system unique as compared to other system.
Existing System:
The biggest problem which is faced while using the system is user interface, due to complex business
rules, users faces various difficulties while handling the existing system. Even they are not getting
help on how to deal with errors if occurred while working with the system. Maintaining employee’s
records was not an easy task and while preparing final payroll records, each employees need to be
categorized as per their job category. Its accounting module have to take help of tally package and
whatever information retrieved is used for preparing pay slip for each employees of the organization.
Proposed System:
The new system will help the organization to set rates for each category which will help in preparing
ledger, balance sheet easily and perform automatic processing without human intervention. For
making ledger, it will takes inputs on employees working modules such as type of work, their
designation, rate per day, tax deduction on monthly basis and bonus or increment on fixed interval of
days etc. As salary statement and payment sheet need to be prepared as and when required so each
employees will be differtiated using their employee’s id. Pay slip will give the entire information
which help the working employees to get clear picture for their salary and creating a fair environment
for working organization.
User Requirement
In the above proposed system single category of authenticated users are there that is the staff.
After the product has been delivered the staff will be trained by our development team. We also
propose to provide a help document for the pathent which will help them in using the product
efficiently.
The components of a system encapsulate data and the operations that must be applied to
manipulate data. Communication and coordination between components is accomplished via
message passing.
PRODUCT PRESPECTIVE
This project helps to define internal boundaries achieving the appropriate balance between the
general and the specific, result management giving a positive and efficient workflow to the
staff of the school, thereby helping the business model of the school to expand. In principle the
product exposes a simple and general interface and hides the specific and complex
implementation based. In our example, we want our school design to hide detail that is too
complex or unnecessary, thereby reducing paperwork and increasing efficiency.
Also through this project we aim to reduce operating costs and increase throughput of the staff.
SYSTEM REQUIREMENT
The platform used is C++. Hence we decided to use Microsoft Visual Studio 2008
edition (Professional Edition).
Since BGI graphics aren’t supported in the Visual studio so for actually running the
software we used Borland C++ compiler 3.0 which was recently made free by
Borland Inc.
For optional coding and easy debugging we used Microsoft Visual Studio 2008
edition and made explicit .cpp files.
To Exit
Bjarne Stroustrup began work on "C with Classes" in 1979. The idea of creating a new
language originated from Structure’s experience in programming for his Ph.D. thesis.
Structure found that Simula had features that were very helpful for large software
development, but the language was too slow for practical use, while BCPL was fast but
too low-level to be suitable for large software development. When Structure started
working in AT&T Bell Labs, he had the problem of analyzing the UNIX kernel with
respect to distributed computing. Remembering his Ph.D. experience, Structure set out
to enhance the C language with Simula-like features. C was chosen because it was
general-purpose, fast, portable and widely used. Besides C and Simula, some other
languages that inspired him were ALGOL 68, Ada, CLU and ML. At first, the class,
derived class, strong type checking, inclining, and default argument features were added
to C via Structure’s C++ to C compiler, Front. The first commercial implementation of
C++ was released on October 14, 1985
COADING
#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>
#include <unistd.h>
#include <dos.h>
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);
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::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();
}
}
//**********************************************************
// THIS FUNCTION ADDS THE GIVEN DATA IN THE EMPLOYEE'S FILE
//**********************************************************
//**********************************************************
// THIS FUNCTION MODIFY THE GIVEN DATA IN THE
// EMPLOYEE'S FILE
//**********************************************************
//**********************************************************
// THIS FUNCTION DELETE THE RECORD IN THE EMPLOYEE FILE
// FOR THE GIVEN EMPLOYEE CODE
//**********************************************************
//**********************************************************
// THIS 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;
}
//**********************************************************
// THIS FUNCTION RETURNS 0 IF THE GIVEN CODE NOT FOUND
//**********************************************************
//**********************************************************
// THIS FUNCTION RETURNS RECORD NO. OF THE GIVEN CODE
//**********************************************************
//**********************************************************
// THIS 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();
}
//**********************************************************
// THIS FUNCTION DISPLAYS THE RECORD OF THE EMPLOYEES
//**********************************************************
//**********************************************************
// THIS FUNCTION GIVE 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);
}
//**********************************************************
// THIS FUNCTION GIVE CODE 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();
}
//**********************************************************
// THIS FUNCTION GIVE DATA FOR THE MODIFICATION OF THE
// EMPLOYEE RECORD
//**********************************************************
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();
}
//**********************************************************
// THIS FUNCTION GIVE CODE NO. 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();
}
//**********************************************************
// THIS FUNCTION RETURN 0 IF THE GIVEN DATE IS INVALID
//**********************************************************
//**********************************************************
// THIS FUNCTION PRINTS THE SALARY SLIP FOR THE 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 CALLING MAIN MENU
//**********************************************************
void main(void)
{
MENU menu;
menu.MAIN_MENU();
}
Output
Welcome Screen
Main menu
Limitation
Though we have completed this project with all our effort but has
certain limitation like it cannot be operated in networking. the
working of project is slow in windows operating system.
CONCLUSION