C++

C++ Project on Salary Management

SALARY MANAGMENT

//**********************************************************
//	PROJECT SALARY MANAGMENT
//**********************************************************

//********************************************************** // INCLUDED HEADER FILES //**********************************************************

#include #include #include #include #include #include #include #include

//********************************************************** // THIS CLASS CONTAINS ALL THE DRAWING FUNCTIONS //**********************************************************

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) ;

} ;

//********************************************************** // THIS CLASS CONTROL ALL THE FUNCTIONS IN THE MENU //**********************************************************

class MENU {

public :
		void MAIN_MENU(void) ;
private :
		void EDIT_MENU(void) ;
		void INTRODUCTION(void) ;

} ;

//********************************************************** // THIS CLASS CONTROL ALL THE FUNCTIONS RELATED TO EMPLOYEE //**********************************************************

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 ;

} ;

//********************************************************** // THIS FUNCTION CONTROL ALL THE FUNCTIONS IN THE MAIN MENU //**********************************************************

void MENU :: MAIN_MENU(void) {

char ch ;
LINES L ;
L.CLEARUP() ;
while (1)
{	int textcolor[15];
	int textbackground[1];
	clrscr() ;
	L.BOX(28,7,51,9,218) ;
	L.BOX(10,5,71,21,218) ;
	L.BOX(11,6,70,20,219) ;
	gotoxy(31,8) ;
	cout < <" INDIAN PVT. LTD." ;
	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 :" ;
	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() ;

}

//********************************************************** // THIS FUNCTION CONTROL ALL THE FUNCTIONS IN THE EDIT MENU //**********************************************************

void MENU :: EDIT_MENU(void) {

char ch ;
LINES L ;
L.CLEARDOWN() ;
while (1)
{
	clrscr() ;
	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() ;

}

//********************************************************** // THIS FUNCTION DRAWS THE HORRIZONTAL LINE //**********************************************************

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

for ( column1; column1<=column2; column1++ )
{
	gotoxy(column1,row) ;
	cout <=1; i--)
{
	//delay(20) ;
	gotoxy(1,i) ; clreol() ;
}

}

//********************************************************** // THIS FUNCTION CLEAR THE SCREEN LINE BY LINE DOWNWORD //**********************************************************

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 //**********************************************************

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", ios::app) ;
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() ;

}

//********************************************************** // THIS FUNCTION MODIFY 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() ;

}

//********************************************************** // THIS FUNCTION DELETE 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() ;

}

//********************************************************** // 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 //**********************************************************

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 ;

}

//********************************************************** // THIS FUNCTION RETURNS RECORD NO. OF THE GIVEN 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 ;

}

//********************************************************** // THIS FUNCTION DISPLAYS THE LIST OF THE EMPLOYEES //**********************************************************

void EMPLOYEE :: LIST(void) {

clrscr() ;
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 &lt;<code> to exit" ;
		ch = getch() ;
		if (ch == 27)
			break ;
		clrscr() ;
		gotoxy(31,2) ;
		cout &lt; &lt;"LIST OF EMPLOYEES" ;
		gotoxy(30,3) ;
		cout &lt;&lt;"~~~~~~~~~~~~~~~~~~~" ;
		gotoxy(1,4) ;
		cout &lt;&lt;"CODE NAME                     PHONE    DOJ         DESIGNATION    GRADE  SALARY" ;
		gotoxy(1,5) ;
		cout &lt;&lt;"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ;
	}
	else
		row++ ;
}
if (!found)
{
	gotoxy(5,10) ;
	cout &lt;&lt;"\7Records not found" ;
}
if (!flag)
{
	gotoxy(1,25) ;
	cout &lt;&lt;"Press any key to continue..." ;
	getche() ;
}
file.close () ;

}

//********************************************************** // THIS FUNCTION DISPLAYS THE RECORD 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 &lt;&lt;"Employee Code # " &lt;<code>=EXIT" ;
gotoxy(28,3) ;
cout &lt; &lt;"ADDITION OF NEW EMPLOYEE" ;
gotoxy(5,5) ;
cout &lt;&lt;"Employee Code # " ;
gotoxy(5,6) ;
cout &lt;&lt;"~~~~~~~~~~~~~" ;
gotoxy(5,7) ;
cout &lt;&lt;"Name         : " ;
gotoxy(5,8) ;
cout &lt;&lt;"Address      : " ;
gotoxy(5,9) ;
cout &lt;&lt;"Phone no.    : " ;
gotoxy(5,11) ;
cout &lt;&lt;"JOINING DATE" ;
gotoxy(5,12) ;
cout &lt;&lt;"~~~~~~~~~~~~" ;
gotoxy(5,13) ;
cout &lt;&lt;"Day   : " ;
gotoxy(5,14) ;
cout &lt;&lt;"Month : " ;
gotoxy(5,15) ;
cout &lt;&lt;"Year  : " ;
gotoxy(5,17) ;
cout &lt;&lt;"Designation  : " ;
gotoxy(5,18) ;
cout &lt;&lt;"Grade        : " ;
gotoxy(5,21) ;
cout &lt;&lt;"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 &lt; 25)
	{
		valid = 0 ;
		gotoxy(5,25) ; clreol() ;
		cout &lt; &lt;"\7Enter correctly (Range: 1..25)" ;
		getch() ;
	}
} while (!valid) ;
do
{
	valid = 1 ;
	gotoxy(5,25) ; clreol() ;
	cout &lt;&lt;"Enter Address of the Employee" ;
	gotoxy(20,8) ; clreol() ;
	gets(eaddress) ;
	strupr(eaddress) ;
	if (eaddress[0] == '0')
		return ;
	if (strlen(eaddress) &lt; 1 || strlen(eaddress) &gt; 30)
	{
		valid = 0 ;
		gotoxy(5,25) ; clreol() ;
		cout &lt; &lt;"\7Enter correctly (Range: 1..30)" ;
		getch() ;
	}
} while (!valid) ;
do
{
	valid = 1 ;
	gotoxy(5,25) ; clreol() ;
	cout &lt;&lt;"Enter Phone no. of the Employee or Press  for none" ;
	gotoxy(20,9) ; clreol() ;
	gets(ephone) ;
	if (ephone[0] == '0')
		return ;
	if ((strlen(ephone) &lt; 7 &amp;&amp; strlen(ephone) &gt; 0) || (strlen(ephone) &gt; 9))
	{
		valid = 0 ;
		gotoxy(5,25) ; clreol() ;
		cout &lt; &lt;"\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 &lt;&lt;"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 &lt;&lt;"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 &lt;&lt;"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&gt;31 || d&lt;1)
		valid = 0 ;
	else
	if (((y%4)!=0 &amp;&amp; m==2 &amp;&amp; d&gt;28) || ((y%4)==0 &amp;&amp; m==2 &amp;&amp; d&gt;29))
		valid = 0 ;
	else
	if ((m==4 || m==6 || m==9 || m==11) &amp;&amp; d&gt;30)
		valid = 0 ;
	else
	if (y&lt;1990 || y&gt;2020)
		valid = 0 ;
	if (!valid)
	{
		valid = 0 ;
		gotoxy(5,25) ; clreol() ;
		cout &lt; &lt;"\7Enter correctly" ;
		getch() ;
		gotoxy(13,14) ; clreol() ;
		gotoxy(13,15) ; clreol() ;
	}
} while (!valid) ;
do
{
	valid = 1 ;
	gotoxy(5,25) ; clreol() ;
	cout &lt;&lt;"Enter Designation of the Employee" ;
	gotoxy(20,17) ; clreol() ;
	gets(edesig) ;
	strupr(edesig) ;
	if (edesig[0] == '0')
		return ;
	if (strlen(edesig) &lt; 1 || strlen(edesig) &gt; 15)
	{
		valid = 0 ;
		gotoxy(5,25) ; clreol() ;
		cout &lt; &lt;"\7Enter correctly (Range: 1..15)" ;
		getch() ;
	}
} while (!valid) ;
do
{
	gotoxy(5,25) ; clreol() ;
	cout &lt;&lt;"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 &lt; 'A' || egrade &gt; 'E') ;
if (egrade != 'E')
{
	gotoxy(5,19) ;
	cout &lt; &lt;"House (y/n)    : " ;
	gotoxy(5,20) ;
	cout &lt;&lt;"Convense (y/n) : " ;
	gotoxy(5,22) ;
	cout &lt;&lt;"Basic Salary   : " ;
	do
	{
		gotoxy(5,25) ; clreol() ;
		cout &lt;&lt;"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' &amp;&amp; ehouse != 'N') ;
	do
	{
		gotoxy(5,25) ; clreol() ;
		cout &lt;&lt;"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' &amp;&amp; econv != 'N') ;
}
do
{
	valid = 1 ;
	gotoxy(5,25) ; clreol() ;
	cout &lt;&lt;"ENTER LOAN AMOUNT IF ISSUED" ;
	gotoxy(22,21) ; clreol() ;
	gets(t1) ;
	t2 = atof(t1) ;
	eloan = t2 ;
	if (eloan &gt; 50000)
	{
		valid = 0 ;
		gotoxy(5,25) ; clreol() ;
		cout &lt; &lt;"\7SHOULD NOT GREATER THAN 50000" ;
		getch() ;
	}
} while (!valid) ;
if (egrade != 'E')
{
	do
	{
		valid = 1 ;
		gotoxy(5,25) ; clreol() ;
		cout &lt;&lt;"ENTER BASIC SALARY OF THE EMPLOYEE" ;
		gotoxy(22,22) ; clreol() ;
		gets(t1) ;
		t2 = atof(t1) ;
		ebasic = t2 ;
		if (t1[0] == '0')
			return ;
		if (ebasic &gt; 50000)
		{
			valid = 0 ;
			gotoxy(5,25) ; clreol() ;
			cout &lt; &lt;"\7SHOULD NOT GREATER THAN 50000" ;
			getch() ;
		}
	} while (!valid) ;
}
gotoxy(5,25) ; clreol() ;
do
{
	gotoxy(5,24) ; clreol() ;
	cout &lt;&lt;"Do you want to save (y/n) " ;
	ch = getche() ;
	ch = toupper(ch) ;
	if (ch == '0')
		return ;
} while (ch != 'Y' &amp;&amp; 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) {

clrscr() ;
char t1[10] ;
int t2, ecode ;
gotoxy(72,2) ;
cout &lt;&lt;"&lt;0&gt;=EXIT" ;
gotoxy(5,5) ;
cout &lt; &lt;"Enter code of the Employee  " ;
gets(t1) ;
t2 = atoi(t1) ;
ecode = t2 ;
if (ecode == 0)
	return ;
clrscr() ;
if (!FOUND_CODE(ecode))
{
	gotoxy(5,5) ;
	cout &lt;&lt;"\7Record not found" ;
	getch() ;
	return ;
}
DISPLAY_RECORD(ecode) ;
gotoxy(5,25) ;
cout &lt;&lt;"Press any key to continue..." ;
getch() ;

}

//********************************************************** // THIS FUNCTION GIVE DATA FOR THE MODIFICATION OF THE // EMPLOYEE RECORD //**********************************************************

void EMPLOYEE :: MODIFICATION(void) {

clrscr() ;
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 &lt;&lt;"&lt;0&gt;=EXIT" ;
gotoxy(5,5) ;
cout &lt; &lt;"Enter code of the Employee  " ;
gets(t1) ;
t2 = atoi(t1) ;
ecode = t2 ;
if (ecode == 0)
	return ;
clrscr() ;
if (!FOUND_CODE(ecode))
{
	gotoxy(5,5) ;
	cout &lt;&lt;"\7Record not found" ;
	getch() ;
	return ;
}
gotoxy(72,2) ;
cout &lt;&lt;"&lt;0&gt;=EXIT" ;
gotoxy(22,3) ;
cout &lt; &lt;"MODIFICATION OF THE EMPLOYEE RECORD" ;
DISPLAY_RECORD(ecode) ;
do
{
	gotoxy(5,24) ; clreol() ;
	cout &lt;&lt;"Do you want to modify this record (y/n) " ;
	ch = getche() ;
	ch = toupper(ch) ;
	if (ch == '0')
		return ;
} while (ch != 'Y' &amp;&amp; ch != 'N') ;
if (ch == 'N')
	return ;
clrscr() ;
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 &lt;&lt;"Employee Code # " &lt; FOR NO CHANGE" ;
	gotoxy(20,7) ; clreol() ;
	gets(ename) ;
	strupr(ename) ;
	if (ename[0] == '0')
		return ;
	if (strlen(ename) &gt; 25)
	{
		valid = 0 ;
		gotoxy(5,25) ; clreol() ;
		cout &lt; &lt;"\7Enter correctly (Range: 1..25)" ;
		getch() ;
	}
} while (!valid) ;
if (strlen(ename) == 0)
{
	strcpy(ename,name) ;
	gotoxy(20,7) ;
	cout &lt; FOR NO CHANGE" ;
	gotoxy(20,8) ; clreol() ;
	gets(eaddress) ;
	strupr(eaddress) ;
	if (eaddress[0] == '0')
		return ;
	if (strlen(eaddress) &gt; 30)
	{
		valid = 0 ;
		gotoxy(5,25) ; clreol() ;
		cout &lt; &lt;"\7Enter correctly (Range: 1..30)" ;
		getch() ;
	}
} while (!valid) ;
if (strlen(eaddress) == 0)
{
	strcpy(eaddress,address) ;
	gotoxy(20,8) ;
	cout &lt; FOR NO CHANGE" ;
	gotoxy(20,9) ; clreol() ;
	gets(ephone) ;
	if (ephone[0] == '0')
		return ;
	if ((strlen(ephone) &lt; 7 &amp;&amp; strlen(ephone) &gt; 0) || (strlen(ephone) &gt; 9))
	{
		valid = 0 ;
		gotoxy(5,25) ; clreol() ;
		cout &lt; &lt;"\7Enter correctly" ;
		getch() ;
	}
} while (!valid) ;
if (strlen(ephone) == 0)
{
	strcpy(ephone,phone) ;
	gotoxy(20,9) ;
	cout &lt; FOR NO CHANGE" ;
	gotoxy(20,10) ; clreol() ;
	gets(edesig) ;
	strupr(edesig) ;
	if (edesig[0] == '0')
		return ;
	if (strlen(edesig) &gt; 15)
	{
		valid = 0 ;
		gotoxy(5,25) ; clreol() ;
		cout &lt; &lt;"\7Enter correctly (Range: 1..15)" ;
		getch() ;
	}
} while (!valid) ;
if (strlen(edesig) == 0)
{
	strcpy(edesig,desig) ;
	gotoxy(20,10) ;
	cout &lt; 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 &lt;  'E') ;
if (egrade != 'E')
{
	gotoxy(5,12) ;
	cout &lt; &lt;"House (y/n)    : " ;
	gotoxy(5,13) ;
	cout &lt;&lt;"Convense (y/n) : " ;
	gotoxy(5,15) ;
	cout &lt;&lt;"Basic Salary   : " ;
	do
	{
		gotoxy(5,25) ; clreol() ;
		cout &lt;&lt;"ALLOTED HOUSE ALLOWANCE ? or  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 &lt;  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 &lt;  FOR NO CHANGE" ;
	gotoxy(22,14) ; clreol() ;
	gets(t1) ;
	t2 = atof(t1) ;
	eloan = t2 ;
	if (eloan &gt; 50000)
	{
		valid = 0 ;
		gotoxy(5,25) ; clreol() ;
		cout &lt; &lt;"\7SHOULD NOT GREATER THAN 50000" ;
		getch() ;
	}
} while (!valid) ;
if (strlen(t1) == 0)
{
	eloan = loan ;
	gotoxy(22,14) ;
	cout &lt; FOR NO CHANGE" ;
		gotoxy(22,15) ; clreol() ;
		gets(t1) ;
		t2 = atof(t1) ;
		ebasic = t2 ;
		if (t1[0] == '0')
			return ;
		if (ebasic &gt; 50000)
		{
			valid = 0 ;
			gotoxy(5,25) ; clreol() ;
			cout &lt; &lt;"\7SHOULD NOT GREATER THAN 50000" ;
			getch() ;
		}
	} while (!valid) ;
	if (strlen(t1) == 0)
	{
		ebasic = basic ;
		gotoxy(22,15) ;
		cout &lt;=EXIT" ;
gotoxy(5,5) ;
cout &lt; &lt;"Enter code of the Employee  " ;
gets(t1) ;
t2 = atoi(t1) ;
ecode = t2 ;
if (ecode == 0)
	return ;
clrscr() ;
if (!FOUND_CODE(ecode))
{
	gotoxy(5,5) ;
	cout &lt;&lt;"\7Record not found" ;
	getch() ;
	return ;
}
gotoxy(72,2) ;
cout &lt;&lt;"&lt;0&gt;=EXIT" ;
gotoxy(24,3) ;
cout &lt; &lt;"DELETION OF THE EMPLOYEE RECORD" ;
DISPLAY_RECORD(ecode) ;
do
{
	gotoxy(5,24) ; clreol() ;
	cout &lt;&lt;"Do you want to delete this record (y/n) " ;
	ch = getche() ;
	ch = toupper(ch) ;
	if (ch == '0')
		return ;
} while (ch != 'Y' &amp;&amp; ch != 'N') ;
if (ch == 'N')
	return ;
DELETE_RECORD(ecode) ;
LINES L ;
L.CLEARDOWN() ;
gotoxy(5,23) ;
cout &lt;&lt;"\7Record Deleted" ;
gotoxy(5,25) ;
cout &lt;&lt;"Press any key to continue..." ;
getch() ;

}

//********************************************************** // THIS FUNCTION RETURN 0 IF THE GIVEN DATE IS INVALID //**********************************************************

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

int valid=1 ;
if (d1&gt;31 || d1&lt;1)
	valid = 0 ;
else
if (((y1%4)!=0 &amp;&amp; m1==2 &amp;&amp; d1&gt;28) || ((y1%4)==0 &amp;&amp; m1==2 &amp;&amp; d1&gt;29))
	valid = 0 ;
else
if ((m1==4 || m1==6 || m1==9 || m1==11) &amp;&amp; d1&gt;30)
	valid = 0 ;
return valid ;

}

//********************************************************** // THIS FUNCTION PRINTS THE SALARY SLIP FOR THE EMPLOYEE //**********************************************************

void EMPLOYEE :: SALARY_SLIP(void) {

clrscr() ;
char t1[10] ;
int t2, ecode, valid ;
gotoxy(72,2) ;
cout &lt; &lt;"&lt;0&gt;=EXIT" ;
gotoxy(5,5) ;
cout &lt; &lt;"Enter code of the Employee  " ;
gets(t1) ;
t2 = atoi(t1) ;
ecode = t2 ;
if (ecode == 0)
	return ;
clrscr() ;
if (!FOUND_CODE(ecode))
{
	gotoxy(5,5) ;
	cout &lt;&lt;"\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(&amp;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 &lt;&lt;"SAM'S PVT. LTD." ;
L.LINE_HOR(3,78,3,196) ;
gotoxy(34,4) ;
cout &lt;&lt;"SALARY SLIP" ;
gotoxy(60,4) ;
cout &lt;&lt;"Date: " &lt; 8 || hours &lt; 0)
		{
			valid = 0 ;
			gotoxy(10,21) ;
			cout &lt;&lt;"\7ENTER CORRECTLY                     " ;
			getch() ;
			gotoxy(10,13) ;
			cout &lt;&lt;"                    " ;
		}
	} while (!valid) ;
	gotoxy(10,21) ;
	cout &lt;&lt;"                                               " ;
	gotoxy(10,11) ;
	cout &lt;&lt;"                        " ;
	gotoxy(10,13) ;
	cout &lt;&lt;"                        " ;
}
gotoxy(10,10) ;
cout &lt;&lt;"Basic Salary         : Rs." ;
gotoxy(10,12) ;
cout &lt;&lt;"ALLOWANCE" ;
if (grade != 'E')
{
	gotoxy(12,13) ;
	cout &lt;&lt;"HRA  : Rs." ;
	gotoxy(12,14) ;
	cout &lt;&lt;"CA   : Rs." ;
	gotoxy(12,15) ;
	cout &lt;&lt;"DA   : Rs." ;
}
else
{
	gotoxy(12,13) ;
	cout &lt;&lt;"OT   : Rs." ;
}
gotoxy(10,17) ;
cout &lt;&lt;"DEDUCTIONS" ;
gotoxy(12,18) ;
cout &lt;&lt;"LD   : Rs." ;
if (grade != 'E')
{
	gotoxy(12,19) ;
	cout &lt;&lt;"PF   : Rs." ;
}
gotoxy(10,21) ;
cout &lt;&lt;"NET SALARY           : Rs." ;
gotoxy(6,24) ;
cout &lt;&lt;"CASHIER" ;
gotoxy(68,24) ;
cout &lt;&lt;"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 &lt;</code></code></pre>
Share: