This is code is not storing data in file can u help in correcting or finding error in this program. Plz help me.Code:
//Create the File that contain detail of employee.
#include<fstream.h>
#include<string.h>
#include<stdio.h>
#include<conio.h>
class employee
{
private:
char ename[20];
char add[30];
float basic;
int hra,da;
int net_sal;
public:
char emp_no[7];
void getit()
{
cout<<"\nEmployee's name :";
gets(ename);
cout<<"\nAddress :";
gets(add);
cout<<"\nBasic salary :";
cin>>basic;
hra=(basic*20)/100;
da=(basic*10)/100;
net_sal=basic+da+hra;
}
void showit()
{
cout<<"\nEmployee no. :"<<emp_no<<"\n";
cout<<"\nEmployee's name :"<<ename<<"\n";
cout<<"\nAddress :"<<add<<"\n";
cout<<"\nBasic salary :"<<basic<<"\n";
cout<<"\nHra :"<<hra<<"\n";
cout<<"\nDa :"<<da<<"\n";
cout<<"\nNet salary :"<<net_sal<<"\n";
}
void search(employee&);
void modify(employee&);
};
void employee::search(employee &ep)
{
clrscr();
int flag,ch;
ifstream in;
in.open("emp.dat",ios::in);
cout<<"\n******** 1: Search by name ********\n";
cout<<"\n******** 2: Search by empno. *******\n";
cout<<"\n\nEnter your choice :";
cin>>ch;
switch(ch)
{
case 1:
clrscr();
flag=0; char nm[20];
cout<<"\nEnter the name to be searched :";
gets(nm);
in.read((char *)&ep,sizeof(ep));
while(in)
{
if(strcmp(ename,nm)==0)
{
ep.showit();
flag=1;
}
in.read((char *)&ep,sizeof(ep));
}
if(flag==0)
{
cout<<"\nRecord not found \n";
}
getch();
break;
case 2:
clrscr();
flag=0; char num[7];
cout<<"\nEnter the empno. to be searched :";
cin>>num;
in.read((char *)&ep,sizeof(ep));
while(in)
{
if(strcmp(emp_no,num)==0)
{
ep.showit();
flag=1;
}
in.read((char *)&ep,sizeof(ep));
}
if(flag==0)
{
cout<<"\nRecord not found \n";
}
getch();
break;
default :
cout<<"\nYou have entered wrong choice \n";
}
}
void employee::modify(employee &ep)
{
clrscr();
int flag,n,s,ch; char num[7];
fstream fl;
fl.open("emp.dat",ios::in|ios::out);
cout<<"\n******** 1: Update record of specific name **********\n";
cout<<"\n******** 2: Update record after specific name *******\n";
cout<<"\n\nEnter your choice :";
cin>>ch;
switch(ch)
{
case 1:
clrscr();
flag=0;
cout<<"\nEnter the name to be searched :";
cin>>num;
fl.read((char *)&ep,sizeof(ep));
while(fl)
{
if(strcmp(emp_no,num)==0)
{
n=fl.tellg();
flag=1;
break;
}
fl.read((char *)&ep,sizeof(ep));
}
s=sizeof(ep);
if(flag==1)
{
fl.seekp(n-s);
ep.getit();
fl.write((char *)&ep,sizeof(ep));
}
if(flag==0)
{
cout<<"\nRecord not found \n";
}
break;
case 2:
clrscr();
flag=0;
cout<<"\nEnter the name to be searched :";
cin>>num;
fl.read((char *)&ep,sizeof(ep));
while(fl)
{
if(strcmp(emp_no,num)==0)
{
n=fl.tellg();
flag=1;
break;
}
fl.read((char *)&ep,sizeof(ep));
}
if(flag==1)
{
fl.seekp(n);
ep.getit();
fl.write((char *)&ep,sizeof(ep));
}
if(flag==0)
{
cout<<"\nRecord not found \n";
}
break;
default:
cout<<"\nYou have entered wrong choice \n";
}
}
void main()
{
employee emp;
fstream file;
char ch; int n;
file.open("emp.dat",ios::in|ios::out|ios::app);
do
{
clrscr();
cout<<"\n******************* Select the following ***********************\n";
cout<<"\n******************* 1: Add record in file **********************\n";
cout<<"\n***************** 2: Search record in file *********************\n";
cout<<"\n***************** 3: Update record in file *********************\n";
cout<<"\n***************** 4: Display record in file ********************\n";
cout<<"\nEnter your choice :";
cin>>n;
switch(n)
{
case 1:
clrscr();
char eno[7];
x: cout<<"\nEmployee number :";
cin>>eno;
file.read((char *)&emp,sizeof(emp));
while(file)
{
if(strcmp(emp.emp_no,eno)==0)
{
cout<<"\nEmployee number already exist \n";
goto x;
}
file.read((char *)&emp,sizeof(emp));
}
strcpy(emp.emp_no,eno);
emp.getit();
file.write((char *)&emp,sizeof(emp));
break;
case 2:
emp.search(emp);
break;
case 3:
emp.modify(emp);
break;
case 4:
clrscr();
file.seekg(0);
file.read((char *)&emp,sizeof(emp));
while(file)
{
emp.showit();
file.read((char *)&emp,sizeof(emp));
}
getch();
break;
default:
cout<<"\nYou have entered wrong choice \n";
}
cout<<"\n\nDo you want to continue (y/n) :";
cin>>ch;
}while(ch!='n'&&ch!='N');
getch();
}


