#include <stdio.h>//header file that
contains printf and scanf function
#include<string.h>//header file
contains functions of string
typedef struct Employee//convert any
identifier to a data type
{
char
fname[20];//Structured declared variable of some data type
char
lname[20];
char
sub_taken[20];
char
last_edu[20];
char
join_date[20];
int
id;
int
age;
float
bsal;
}Employee;//Structure Variable
int main(void)//void type of argument is
passed
{
int
id, check;
FILE
*fp,*ft;//File Pointer
char
another,choice;
Employee
emp;
char
fname[20];
char
lname[20];
long
int recsize;
fp=fopen("EMP.DAT","rb+");//file
is opened at read mode
if(fp==NULL)
{
fp=fopen(
"EMP.DAT","wb+");//file is opened at write mode
if(fp==NULL)//checking
the whether the file exists or not
{
printf("Can't
Open File");
}
}
recsize=sizeof(emp);//gives
the size of emp variable using structure
while(1)
{
printf("1.Add
Records 2.Delete Records 3.Modify Records
4.ListRecords 5.Exit");
printf("Enter
your choice");
fflush(stdin);//If
the given stream has a buffered output,fflush writes the output for the stream
to the associated file
scanf("%c",&choice);
switch(choice)//checking
entered choice
{
case'1':
fseek(fp,0,SEEK_END);//sets
the file pointer associated with the stream to a new pointer
another='Y';
while(another=='Y'||
another=='y')
{
printf("Enter
the first name,last name,age and basic salary : ");
scanf("%s
%d %f",emp.fname,&emp.age,&emp.bsal);
printf("Enter
joining date,id,last education,subject taken");
scanf("%s
%d %s %s",emp.join_date,&emp.id,emp.last_edu,
emp.sub_taken);
fwrite(&emp,recsize,1,fp);//writes
to a stream
printf(" Add another Record (Y/N): ");
fflush(stdin);
another=getchar();
}
break;
case
'2':
another='Y';
while(another=='Y'||
another=='y')
{
printf("Enter
the id of the employee to be deleted : ");
scanf("%d",&id);
ft=fopen("TEMP.DAT","wb");//another
file is opened
rewind(fp);//Reposition
file pointers to stream’s beginning
while(fread(&emp,recsize,1,fp)==1)
{
if(emp.id!=id)
fwrite(&emp,recsize,1,ft);//Contents
are added if the file does not have that data
}
fclose(fp);//Fp
File is closed
fclose(ft);//Ft
File is closed
remove("EMP.DAT");//removes
data if found
rename("TEMP.DAT","EMP.DAT");//renames
the file
fp=fopen("EMP.DAT","rb+");
printf("Delete
another Record(Y/N): ");
fflush(stdin);
another=getchar();
}
break;
case '3':
another='Y';
while(another=='Y'||
another=='y')
{
printf("
Enter name of employee to modify : ");
scanf("%s",emp.fname);
rewind(fp);
while(fread(&emp,recsize,1,fp)==1)
{
if(emp.id!=id)
{
printf("Enter new fname,new
lname,age,basicsalary,joining_date,subject taken and last education : ");
scanf("%s%s%d%f%s%s%s",emp.fname,emp.lname,&emp.age,&emp.bsal,emp.join_date,emp.sub_taken,emp.last_edu);
fseek(fp,-recsize,SEEK_CUR);
fwrite(&emp,recsize,1,fp);
break;
}
}
printf("Want to Modify another
record(Y/N): ");
fflush(stdin);
another=getchar();//taking Input
}
break;
case '4':
rewind(fp);
while(fread(&emp,recsize,1,fp)==1)
printf("%s %s %d%g",emp.fname,emp.lname,emp.age,emp.bsal,emp.join_date,emp.last_edu,emp.sub_taken);
break;
case '5':
fclose(fp);//File
is closed
return
0;
}
}
}
No comments:
Post a Comment