Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
why fatal error C1083
//Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64 //********************************************************** // PROJECT PAYROLL //********************************************************** //********************************************************** // INCLUDED HEADER FILES //********************************************************** #include<iostream.h> #include<fstream.h> #include<process.h> #include<string.h> #include<stdlib.h> #include<stdio.h> #include<ctype.h> #include<conio.h> #include<dos.h> //********************************************************** // 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) { clrscr() ; 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); cout<<"http://codewithc.com, Email : prameshpudasaini13@yahoo.com"; 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 <<c ; } } //********************************************************** // THIS FUNCTION DRAWS THE VERTICAL LINE //********************************************************** void LINES :: LINE_VER(int row1, int row2, int column, char c) { for ( row1; row1<=row2; row1++ ) { gotoxy(column,row1) ; cout <<c ; } } //********************************************************** // THIS FUNCTION DRAWS THE BOX //********************************************************** 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--) { 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 <<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 ; clrscr() ; 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 //********************************************************** 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() ; } //********************************************************** // THIS FUNCTION GIVE DATA TO ADD IN THE FILE //********************************************************** void EMPLOYEE :: NEW_EMPLOYEE(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 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) { clrscr() ; 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 ; clrscr() ; 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) { 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 <<"<0>=EXIT" ; gotoxy(5,5) ; cout <<"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 <<"\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 ; 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 <<"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) { clrscr() ; 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 ; clrscr() ; 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 //********************************************************** 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 ; } //********************************************************** // 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 <<"<0>=EXIT" ; gotoxy(5,5) ; cout <<"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 <<"\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() ; }
run
|
edit
|
history
|
help
0
problem_solution_1
Project
solution_problem4
Increment pointer to struct
hangman
Workaround for https://github.com/Project-OSRM/osrm-backend/pull/4385
asock
#18
Hangman
unresolved external symbol