Isfileexists
Isfileexists
init():
This function creates the file if not exist and copies the
default password (“aticleworld”) in file header structure.
void init()
{
FILE *fp = NULL;
int status = 0;
const char defaultUsername[] ="aticleworld\n";
const char defaultPassword[] ="aticleworld\n";
sFileHeader fileHeaderInfo = {0};
status = isFileExists(FILE_NAME);
if(!status)
{
//create the binary file
fp = fopen(FILE_NAME,"wb");
if(fp != NULL)
{
//Copy default password
strncpy(fileHeaderInfo.password,defaultPassword,sizeof(defaultPassword));
strncpy(fileHeaderInfo.username,defaultUsername,sizeof(defaultUsername));
fwrite(&fileHeaderInfo,FILE_HEADER_SIZE, 1, fp);
fclose(fp);
}
}
}
printMessageCenter():
This function prints the message in the middle of the
head massage. I have passed the message in this
function as per the operation
welcomeMessage():
This function displays the first welcomes screen of the
“Employee Record System Project in C” and asks the
user to press any key to access the library application.
void welcomeMessage()
{
headMessage("www.aticleworld.com");
printf("\n\n\n\n\n");
printf("\n\t\t\t **-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**\n");
printf("\n\t\t\t =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
printf("\n\t\t\t = WELCOME =");
printf("\n\t\t\t = TO =");
printf("\n\t\t\t = Employee Record =");
printf("\n\t\t\t = MANAGEMENT =");
printf("\n\t\t\t = SYSTEM =");
printf("\n\t\t\t =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
printf("\n\t\t\t **-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**\n");
printf("\n\n\n\t\t\t Enter any key to continue.....");
getch();
}
isNameValid():
It validates the user name, author name ..etc. I have
permitted this function to take the space in names.
isValidDate():
This function read the date in the format of dd/mm/yyyy
also it validates the entered date.
menu():
This function displays the library menu and asks the
user to select the option. If the user selects 0, then the
application will close.
void menu()
{
int choice = 0;
do
{
headMessage("MAIN MENU");
printf("\n\n\n\t\t\t1.Add employee");
printf("\n\t\t\t2.Search employee");
printf("\n\t\t\t3.View employee");
printf("\n\t\t\t4.Delete employee");
printf("\n\t\t\t5.Update Password");
printf("\n\t\t\t0.Exit");
printf("\n\n\n\t\t\tEnter choice => ");
scanf("%d",&choice);
switch(choice)
{
case 1:
addEmployeeInDataBase();
break;
case 2:
searchEmployee();
break;
case 3:
viewEmployee();
break;
case 4:
deleteEmployee();
break;
case 5:
updateCredential();
break;
case 0:
printf("\n\n\n\t\t\t\tThank you!!!\n\n\n\n\n");
exit(1);
break;
default:
printf("\n\n\n\t\t\tINVALID INPUT!!! Try again...");
} //Switch Ended
}
while(choice!=0); //Loop Ended
}
addEmployeeInDataBase():
This function opens the binary file in append mode and
writes the employee and the details.
void addEmployeeInDataBase()
{
s_EmployeesInfo addEmployeeInfoInDataBase = {0};
FILE *fp = NULL;
int status = 0;
fp = fopen(FILE_NAME,"ab+");
if(fp == NULL)
{
printf("File is not opened\n");
exit(1);
}
headMessage("ADD NEW EMPLOYEES");
printf("\n\n\t\t\tENTER YOUR DETAILS BELOW:");
printf("\n\t\t\t---------------------------------------------------------------------------\n");
printf("\n\t\t\tEmployee ID = ");
fflush(stdin);
scanf("%u",&addEmployeeInfoInDataBase.employee_id);
do
{
printf("\n\t\t\tFather Name = ");
fflush(stdin);
fgets(addEmployeeInfoInDataBase.fatherName,MAX_FATHER_NAME,stdin);
status = isNameValid(addEmployeeInfoInDataBase.fatherName);
if (!status)
{
printf("\n\t\t\tName contain invalid character. Please enter again.");
}
}
while(!status);
do
{
printf("\n\t\t\tEmployee Name = ");
fflush(stdin);
fgets(addEmployeeInfoInDataBase.employeeName,MAX_EMPLOYEE_NAME,stdin
);
status = isNameValid(addEmployeeInfoInDataBase.employeeName);
if (!status)
{
printf("\n\t\t\tName contain invalid character. Please enter again.");
}
}
while(!status);
do
{
printf("\n\t\t\tEmployee Address = ");
fflush(stdin);
fgets(addEmployeeInfoInDataBase.employeeAddr,MAX_FATHER_NAME,stdin);
status = isNameValid(addEmployeeInfoInDataBase.employeeAddr);
if (!status)
{
printf("\n\t\t\tName contain invalid character. Please enter again.");
}
}
while(!status);
printf("\n\t\t\tEmployee Salary = ");
fflush(stdin);
scanf("%f",&addEmployeeInfoInDataBase.employeeSalary);
do
{
//get date year,month and day from user
printf("\n\t\t\tEnter date in format (day/month/year): ");
scanf("%d/%d/%d",&addEmployeeInfoInDataBase.employeeJoiningDate.dd,&addE
mployeeInfoInDataBase.employeeJoiningDate.mm,&addEmployeeInfoInDataBase.e
mployeeJoiningDate.yyyy);
//check date validity
status = isValidDate(&addEmployeeInfoInDataBase.employeeJoiningDate);
if (!status)
{
printf("\n\t\t\tPlease enter a valid date.\n");
}
}
while(!status);
fwrite(&addEmployeeInfoInDataBase,sizeof(addEmployeeInfoInDataBase), 1, fp);
fclose(fp);
}
searchEmployee():
This function opens the binary file in reading mode and
asks the user to enter the employee id number which
wants to search. If the student info is not available on
the list, it shows the message employee not find in
records.
// search employee
void searchEmployee()
{
int found = 0;
int employeeId =0;
s_EmployeesInfo addEmployeeInfoInDataBase = {0};
FILE *fp = NULL;
fp = fopen(FILE_NAME,"rb");
if(fp == NULL)
{
printf("\n\t\t\tFile is not opened\n");
exit(1);
}
headMessage("SEARCH EMPLOYEE");
//put the control on employee detail
if (fseek(fp,FILE_HEADER_SIZE,SEEK_SET) != 0)
{
fclose(fp);
printf("\n\t\t\tFacing issue while reading file\n");
exit(1);
}
printf("\n\n\t\t\tEnter employee ID NO to search:");
fflush(stdin);
scanf("%u",&employeeId);
while (fread (&addEmployeeInfoInDataBase, sizeof(addEmployeeInfoInDataBase),
1, fp))
{
if(addEmployeeInfoInDataBase.employee_id == employeeId)
{
found = 1;
break;
}
}
if(found)
{
printf("\n\t\t\tEmployee id = %d\n",addEmployeeInfoInDataBase.employee_id);
printf("\n\t\t\tEmployee name = %s",addEmployeeInfoInDataBase.employeeName);
printf("\t\t\tEmployee Salary = %f\n",addEmployeeInfoInDataBase.employeeSalary);
printf("\t\t\tFather Name = %s",addEmployeeInfoInDataBase.fatherName);
printf("\n\t\t\tEmployee Address = %s",addEmployeeInfoInDataBase.employeeAddr);
printf("\t\t\tEmployee Admission Date(day/month/year) =
(%d/%d/%d)",addEmployeeInfoInDataBase.employeeJoiningDate.dd,
addEmployeeInfoInDataBase.employeeJoiningDate.mm,
addEmployeeInfoInDataBase.employeeJoiningDate.yyyy);
}
else
{
printf("\n\t\t\tNo Record");
}
fclose(fp);
printf("\n\n\n\t\t\tPress any key to go to main menu.....");
fflush(stdin);
getchar();
}
deleteEmployee():
void deleteEmployee()
{
int found = 0;
int employeeDelete = 0;
sFileHeader fileHeaderInfo = {0};
s_EmployeesInfo addEmployeeInfoInDataBase = {0};
FILE *fp = NULL;
FILE *tmpFp = NULL;
headMessage("Delete employee Details");
fp = fopen(FILE_NAME,"rb");
if(fp == NULL)
{
printf("File is not opened\n");
exit(1);
}
tmpFp = fopen("tmp.bin","wb");
if(tmpFp == NULL)
{
fclose(fp);
printf("File is not opened\n");
exit(1);
}
fread (&fileHeaderInfo,FILE_HEADER_SIZE, 1, fp);
fwrite(&fileHeaderInfo,FILE_HEADER_SIZE, 1, tmpFp);
printf("\n\t\t\tEnter employee ID NO. for delete:");
scanf("%d",&employeeDelete);
while (fread (&addEmployeeInfoInDataBase, sizeof(addEmployeeInfoInDataBase),
1, fp))
{
if(addEmployeeInfoInDataBase.employee_id != employeeDelete)
{
fwrite(&addEmployeeInfoInDataBase,sizeof(addEmployeeInfoInDataBase), 1,
tmpFp);
}
else
{
found = 1;
}
}
(found)? printf("\n\t\t\tRecord deleted successfully....."):printf("\n\t\t\tRecord not
found");
fclose(fp);
fclose(tmpFp);
remove(FILE_NAME);
rename("tmp.bin",FILE_NAME);
}
updateCredential():
This function opens the file in rb+ mode (reading and
writing). It asks the user for the new username and
password. After taking the password and username it
closes the application. Now user can use the application
with a new password and username.
void updateCredential(void)
{
sFileHeader fileHeaderInfo = {0};
FILE *fp = NULL;
unsigned char userName[MAX_SIZE_USER_NAME] = {0};
unsigned char password[MAX_SIZE_PASSWORD] = {0};
headMessage("Update Credential");
fp = fopen(FILE_NAME,"rb+");
if(fp == NULL)
{
printf("File is not opened\n");
exit(1);
}
fread (&fileHeaderInfo,FILE_HEADER_SIZE, 1, fp);
if (fseek(fp,0,SEEK_SET) != 0)
{
fclose(fp);
printf("\n\t\t\tFacing issue while updating password\n");
exit(1);
}
printf("\n\n\t\t\tNew Username:");
fflush(stdin);
fgets(userName,MAX_SIZE_USER_NAME,stdin);
printf("\n\n\t\t\tNew Password:");
fflush(stdin);
fgets(password,MAX_SIZE_PASSWORD,stdin);
strncpy(fileHeaderInfo.username,userName,sizeof(userName));
strncpy(fileHeaderInfo.password,password,sizeof(password));
fwrite(&fileHeaderInfo,FILE_HEADER_SIZE, 1, fp);
fclose(fp);
printf("\n\t\t\tYour Password has been changed successfully");
printf("\n\t\t\ttLogin Again:");
fflush(stdin);
getchar();
exit(1);
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
//Used macro
#define MAX_YR 9999
#define MIN_YR 1900
#define MAX_SIZE_USER_NAME 30
#define MAX_SIZE_PASSWORD 20
#define FILE_NAME "EmployeeRecordSystem.bin"
// Macro related to the Employees info
#define MAX_FATHER_NAME 50
#define MAX_EMPLOYEE_NAME 50
#define MAX_EMPLOYEE_ADDRESS 300
#define FILE_HEADER_SIZE sizeof(sFileHeader)
//structure to store date
typedef struct
{
int yyyy;
int mm;
int dd;
} Date;
typedef struct
{
char username[MAX_SIZE_USER_NAME];
char password[MAX_SIZE_PASSWORD];
} sFileHeader;
//Elements of structure
typedef struct// to call in program
{
char fatherName[MAX_FATHER_NAME];// declare the character data type
char employeeName[MAX_EMPLOYEE_NAME];// declare the character data type
char employeeAddr[MAX_EMPLOYEE_ADDRESS];// declare the character data
type
Date employeeJoiningDate;// declare the integer data type
unsigned int employee_id; // declare the integer data type
float employeeSalary;
} s_EmployeesInfo;
//Align the message
void printMessageCenter(const char* message)
{
int len =0;
int pos = 0;
//calculate how many space need to print
len = (78 - strlen(message))/2;
printf("\t\t\t");
for(pos =0 ; pos < len ; pos++)
{
//print space
printf(" ");
}
//print message
printf("%s",message);
}
//Head message
void headMessage(const char *message)
{
system("cls");
printf("\t\t\t############################################################
###############");
printf("\n\t\t\t############ ############");
printf("\n\t\t\t############ Employee Record Management System Project in C
############");
printf("\n\t\t\t############ ############");
printf("\n\t\t\t##########################################################
#################");
printf("\n\t\t\t---------------------------------------------------------------------------\n");
printMessageCenter(message);
printf("\n\t\t\t----------------------------------------------------------------------------");
}
//Display message
Void welcomeMessage()
{
headMessage("www.aticleworld.com");
printf("\n\n\n\n\n");
printf("\n\t\t\t **-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**\n");
printf("\n\t\t\t =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
printf("\n\t\t\t = WELCOME =");
printf("\n\t\t\t = TO =");
printf("\n\t\t\t = Employee Record =");
printf("\n\t\t\t = MANAGEMENT =");
printf("\n\t\t\t = SYSTEM =");
printf("\n\t\t\t =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
printf("\n\t\t\t **-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**\n");
printf("\n\n\n\t\t\t Enter any key to continue.....");
getch();
}
//Validate name
int isNameValid(const char *name)
{
int validName = 1;
int len = 0;
int index = 0;
len = strlen(name);
for(index =0; index <len ; ++index)
{
if(!(isalpha(name[index])) && (name[index] != '\n') && (name[index] != ' '))
{
validName = 0;
break;
}
}
return validName;
}
// Function to check leap year.
//Function returns 1 if leap year
int IsLeapYear(int year)
{
return (((year % 4 == 0) &&
(year % 100 != 0)) ||
(year % 400 == 0));
}
// returns 1 if given date is valid.
int isValidDate(Date *validDate)
{
//check range of year,month and day
if (validDate->yyyy > MAX_YR ||
validDate->yyyy < MIN_YR)
return 0;
if (validDate->mm < 1 || validDate->mm > 12)
return 0;
if (validDate->dd < 1 || validDate->dd > 31)
return 0;
//Handle feb days in leap year
if (validDate->mm == 2)
{
if (IsLeapYear(validDate->yyyy))
return (validDate->dd <= 29);
else
return (validDate->dd <= 28);
}
//handle months which has only 30 days
if (validDate->mm == 4 || validDate->mm == 6 ||
validDate->mm == 9 || validDate->mm == 11)
return (validDate->dd <= 30);
return 1;
}
// Add employee in list
void addEmployeeInDataBase()
{
s_EmployeesInfo addEmployeeInfoInDataBase = {0};
FILE *fp = NULL;
int status = 0;
fp = fopen(FILE_NAME,"ab+");
if(fp == NULL)
{
printf("File is not opened\n");
exit(1);
}
headMessage("ADD NEW EMPLOYEES");
printf("\n\n\t\t\tENTER YOUR DETAILS BELOW:");
printf("\n\t\t\t---------------------------------------------------------------------------\n");
printf("\n\t\t\tEmployee ID = ");
fflush(stdin);
scanf("%u",&addEmployeeInfoInDataBase.employee_id);
do
{
printf("\n\t\t\tFather Name = ");
fflush(stdin);
fgets(addEmployeeInfoInDataBase.fatherName,MAX_FATHER_NAME,stdin);
status = isNameValid(addEmployeeInfoInDataBase.fatherName);
if (!status)
{
printf("\n\t\t\tName contain invalid character. Please enter again.");
}
}
while(!status);
do
{
printf("\n\t\t\tEmployee Name = ");
fflush(stdin);
fgets(addEmployeeInfoInDataBase.employeeName,MAX_EMPLOYEE_NAME,stdin
);
status = isNameValid(addEmployeeInfoInDataBase.employeeName);
if (!status)
{
printf("\n\t\t\tName contain invalid character. Please enter again.");
}
}
while(!status);
do
{
printf("\n\t\t\tEmployee Address = ");
fflush(stdin);
fgets(addEmployeeInfoInDataBase.employeeAddr,MAX_FATHER_NAME,stdin);
status = isNameValid(addEmployeeInfoInDataBase.employeeAddr);
if (!status)
{
printf("\n\t\t\tName contain invalid character. Please enter again.");
}
}
while(!status);
printf("\n\t\t\tEmployee Salary = ");
fflush(stdin);
scanf("%f",&addEmployeeInfoInDataBase.employeeSalary);
do
{
//get date year,month and day from user
printf("\n\t\t\tEnter date in format (day/month/year): ");
scanf("%d/%d/%d",&addEmployeeInfoInDataBase.employeeJoiningDate.dd,&addE
mployeeInfoInDataBase.employeeJoiningDate.mm,&addEmployeeInfoInDataBase.e
mployeeJoiningDate.yyyy);
//check date validity
status = isValidDate(&addEmployeeInfoInDataBase.employeeJoiningDate);
if (!status)
{
printf("\n\t\t\tPlease enter a valid date.\n");
}
}
while(!status);
fwrite(&addEmployeeInfoInDataBase,sizeof(addEmployeeInfoInDataBase), 1, fp);
fclose(fp);
}
// search employee
void searchEmployee()
{
int found = 0;
int employeeId =0;
s_EmployeesInfo addEmployeeInfoInDataBase = {0};
FILE *fp = NULL;
fp = fopen(FILE_NAME,"rb");
if(fp == NULL)
{
printf("\n\t\t\tFile is not opened\n");
exit(1);
}
headMessage("SEARCH EMPLOYEE");
//put the control on employee detail
if (fseek(fp,FILE_HEADER_SIZE,SEEK_SET) != 0)
{
fclose(fp);
printf("\n\t\t\tFacing issue while reading file\n");
exit(1);
}
printf("\n\n\t\t\tEnter employee ID NO to search:");
fflush(stdin);
scanf("%u",&employeeId);
while (fread (&addEmployeeInfoInDataBase, sizeof(addEmployeeInfoInDataBase),
1, fp))
{
if(addEmployeeInfoInDataBase.employee_id == employeeId)
{
found = 1;
break;
}
}
if(found)
{
printf("\n\t\t\tEmployee id = %d\n",addEmployeeInfoInDataBase.employee_id);
printf("\n\t\t\tEmployee name = %s",addEmployeeInfoInDataBase.employeeName);
printf("\t\t\tEmployee Salary = %f\n",addEmployeeInfoInDataBase.employeeSalary);
printf("\t\t\tFather Name = %s",addEmployeeInfoInDataBase.fatherName);
printf("\n\t\t\tEmployee Address = %s",addEmployeeInfoInDataBase.employeeAddr);
printf("\t\t\tEmployee Admission Date(day/month/year) =
(%d/%d/%d)",addEmployeeInfoInDataBase.employeeJoiningDate.dd,
addEmployeeInfoInDataBase.employeeJoiningDate.mm,
addEmployeeInfoInDataBase.employeeJoiningDate.yyyy);
}
else
{
printf("\n\t\t\tNo Record");
}
fclose(fp);
printf("\n\n\n\t\t\tPress any key to go to main menu.....");
fflush(stdin);
getchar();
}
// view employees function
void viewEmployee()
{
int found = 0;
s_EmployeesInfo addEmployeeInfoInDataBase = {0};
FILE *fp = NULL;
unsigned int countEmployee = 1;
headMessage("VIEW EMPLOYEE DETAILS");
fp = fopen(FILE_NAME,"rb");
if(fp == NULL)
{
printf("File is not opened\n");
exit(1);
}
if (fseek(fp,FILE_HEADER_SIZE,SEEK_SET) != 0)
{
fclose(fp);
printf("Facing issue while reading file\n");
exit(1);
}
//Print employee count
printf("\n\t\t\tEmployee Count = %d\n\n",countEmployee);
while (fread (&addEmployeeInfoInDataBase, sizeof(addEmployeeInfoInDataBase),
1, fp))
{
printf("\t\t\tEmployee id = %u\n",addEmployeeInfoInDataBase.employee_id);
printf("\t\t\tEmployee Name = %s",addEmployeeInfoInDataBase.employeeName);
printf("\t\t\tEmployee Salary = %f\n",addEmployeeInfoInDataBase.employeeSalary);
printf("\t\t\tFather Name = %s",addEmployeeInfoInDataBase.fatherName);
printf("\t\t\tEmployee Address = %s",addEmployeeInfoInDataBase.employeeAddr);
printf("\t\t\tEmployee Admission Date(day/month/year) =
(%d/%d/%d)\n\n",addEmployeeInfoInDataBase.employeeJoiningDate.dd,
addEmployeeInfoInDataBase.employeeJoiningDate.mm,
addEmployeeInfoInDataBase.employeeJoiningDate.yyyy);
found = 1;
++countEmployee;
}
fclose(fp);
if(!found)
{
printf("\n\t\t\tNo Record");
}
printf("\n\n\t\t\tPress any key to go to main menu.....");
fflush(stdin);
getchar();
}
// Delete employee entry
void deleteEmployee()
{
int found = 0;
int employeeDelete = 0;
sFileHeader fileHeaderInfo = {0};
s_EmployeesInfo addEmployeeInfoInDataBase = {0};
FILE *fp = NULL;
FILE *tmpFp = NULL;
headMessage("Delete employee Details");
fp = fopen(FILE_NAME,"rb");
if(fp == NULL)
{
printf("File is not opened\n");
exit(1);
}
tmpFp = fopen("tmp.bin","wb");
if(tmpFp == NULL)
{
fclose(fp);
printf("File is not opened\n");
exit(1);
}
fread (&fileHeaderInfo,FILE_HEADER_SIZE, 1, fp);
fwrite(&fileHeaderInfo,FILE_HEADER_SIZE, 1, tmpFp);
printf("\n\t\t\tEnter employee ID NO. for delete:");
scanf("%d",&employeeDelete);
while (fread (&addEmployeeInfoInDataBase, sizeof(addEmployeeInfoInDataBase),
1, fp))
{
if(addEmployeeInfoInDataBase.employee_id != employeeDelete)
{
fwrite(&addEmployeeInfoInDataBase,sizeof(addEmployeeInfoInDataBase), 1,
tmpFp);
}
else
{
found = 1;
}
}
(found)? printf("\n\t\t\tRecord deleted successfully....."):printf("\n\t\t\tRecord not
found");
fclose(fp);
fclose(tmpFp);
remove(FILE_NAME);
rename("tmp.bin",FILE_NAME);
}
//function to update credential
void updateCredential(void)
{
sFileHeader fileHeaderInfo = {0};
FILE *fp = NULL;
unsigned char userName[MAX_SIZE_USER_NAME] = {0};
unsigned char password[MAX_SIZE_PASSWORD] = {0};
headMessage("Update Credential");
fp = fopen(FILE_NAME,"rb+");
if(fp == NULL)
{
printf("File is not opened\n");
exit(1);
}
fread (&fileHeaderInfo,FILE_HEADER_SIZE, 1, fp);
if (fseek(fp,0,SEEK_SET) != 0)
{
fclose(fp);
printf("\n\t\t\tFacing issue while updating password\n");
exit(1);
}
printf("\n\n\t\t\tNew Username:");
fflush(stdin);
fgets(userName,MAX_SIZE_USER_NAME,stdin);
printf("\n\n\t\t\tNew Password:");
fflush(stdin);
fgets(password,MAX_SIZE_PASSWORD,stdin);
strncpy(fileHeaderInfo.username,userName,sizeof(userName));
strncpy(fileHeaderInfo.password,password,sizeof(password));
fwrite(&fileHeaderInfo,FILE_HEADER_SIZE, 1, fp);
fclose(fp);
printf("\n\t\t\tYour Password has been changed successfully");
printf("\n\t\t\ttLogin Again:");
fflush(stdin);
getchar();
exit(1);
}
//Display menu
void menu()
{
int choice = 0;
do
{
headMessage("MAIN MENU");
printf("\n\n\n\t\t\t1.Add employee");
printf("\n\t\t\t2.Search employee");
printf("\n\t\t\t3.View employee");
printf("\n\t\t\t4.Delete employee");
printf("\n\t\t\t5.Update Password");
printf("\n\t\t\t0.Exit");
printf("\n\n\n\t\t\tEnter choice => ");
scanf("%d",&choice);
switch(choice)
{
case 1:
addEmployeeInDataBase();
break;
case 2:
searchEmployee();
break;
case 3:
viewEmployee();
break;
case 4:
deleteEmployee();
break;
case 5:
updateCredential();
break;
case 0:
printf("\n\n\n\t\t\t\tThank you!!!\n\n\n\n\n");
exit(1);
break;
default:
printf("\n\n\n\t\t\tINVALID INPUT!!! Try again...");
} //Switch Ended
}
while(choice!=0); //Loop Ended
}
//login password
void login()
{
unsigned char userName[MAX_SIZE_USER_NAME] = {0};
unsigned char password[MAX_SIZE_PASSWORD] = {0};
int L=0;
sFileHeader fileHeaderInfo = {0};
FILE *fp = NULL;
headMessage("Login");
fp = fopen(FILE_NAME,"rb");
if(fp == NULL)
{
printf("File is not opened\n");
exit(1);
}
fread (&fileHeaderInfo,FILE_HEADER_SIZE, 1, fp);
fclose(fp);
do
{
printf("\n\n\n\t\t\t\tUsername:");
fgets(userName,MAX_SIZE_USER_NAME,stdin);
printf("\n\t\t\t\tPassword:");
fgets(password,MAX_SIZE_PASSWORD,stdin);
if((!strcmp(userName,fileHeaderInfo.username)) &&
(!strcmp(password,fileHeaderInfo.password)))
{
menu();
}
else
{
printf("\t\t\t\tLogin Failed Enter Again Username & Password\n\n");
L++;
}
}
while(L<=3);
if(L>3)
{
headMessage("Login Failed");
printf("\t\t\t\tSorry,Unknown User.");
getch();
system("cls");
}
}
//Check file exist or not
int isFileExists(const char *path)
{
// Try to open file
FILE *fp = fopen(path, "rb");
int status = 0;
// If file does not exists
if (fp != NULL)
{
status = 1;
// File exists hence close file
fclose(fp);
}
return status;
}
void init()
{
FILE *fp = NULL;
int status = 0;
const char defaultUsername[] ="aticleworld\n";
const char defaultPassword[] ="aticleworld\n";
sFileHeader fileHeaderInfo = {0};
status = isFileExists(FILE_NAME);
if(!status)
{
//create the binary file
fp = fopen(FILE_NAME,"wb");
if(fp != NULL)
{
//Copy default password
strncpy(fileHeaderInfo.password,defaultPassword,sizeof(defaultPassword));
strncpy(fileHeaderInfo.username,defaultUsername,sizeof(defaultUsername));
fwrite(&fileHeaderInfo,FILE_HEADER_SIZE, 1, fp);
fclose(fp);
}
}
}
int main()
{
init();
welcomeMessage();
login();
return 0;
}