You are on page 1of 4

#include<iostream.

h>
#include<conio.h>
#include<fstream.h>
#include<stdio.h>
class Item
{
char iname[20];
int ino;
float price;
public:
void get()
{
cout<<"Enter ino,iname &price\n";
cin>>ino>>iname>>price;
}
void show()
{
cout<<" "<<ino<<" ";
cout<<iname<<" "<<price;
}
void append()
{
fstream ff;
ff.open("item.doc",ios::app);
ff.write((char*)this,sizeof(Item));
ff.close();
}
void traverse();
void search();
void insert();
void delete1();
void update();
void sort();
}; void Item::traverse()
{
Item t;
ifstream fin("item.doc");
if(fin.fail())
{
cout<<"File not found\n";
return;
}
while(!fin.eof())
{
fin.read((char*)&t,sizeof(t));
t.show();
}
fin.close();
}
void Item::search()
{
Item t;
ifstream fin("item.doc");
if(fin.fail())
{
cout<<"File not found\n";
return;
}
int val;
cout<<"Enter searching element\n";
cin>>val;
while(!fin.eof())
{
fin.read((char*)&t,sizeof(t));
if(t.ino==val)
{
cout<<"Found\n";
t.show();
fin.close();
return;
}
}
cout<<"Record not found\n";
fin.close();
}

void Item::delete1()
{
Item t;
int flag=0,val;
ifstream fin("item.doc");
ofstream fout("temp.doc");
if(fin.fail())
{
cout<<"File not found\n";
return;
}
cout<<"Enter no to be deleted\n";
cin>>val;
while(fin.read((char*)&t,sizeof(t)))
{
if(t.ino!=val)
{
fout.write((char*)&t,sizeof(t));
flag=1;
}
}
if(flag==0)
cout<<"Record not found\n";
fin.close();
fout.close();
remove("item.doc");
rename("temp.doc","item.doc");
}
void Item::update()
{
fstream ff("item.doc",ios::in|ios::out);;
int val,c=0,pos;
int flag=0;
if(ff.fail())
{
cout<<"File not found\n";
return;
}
cout<<"Enter ino to be updated\n";
cin>>val;
Item I;
while(ff.read((char*)&I,sizeof(I)))
{
if(I.ino==val)
{
pos=(c*sizeof(I));
ff.seekp(pos,ios::beg);
cout<<"Enter new price\n";
cin>>I.price;
ff.write((char*)&I,sizeof(I));
cout<<"Record updated";
flag=1;
}
c++;
}
if(flag==0)
cout<<"Record not found\n";
ff.close();
}
void Item::insert()
{
Item t,I;
ifstream fin("item.doc");
ofstream fout("temp.doc");
if(fin.fail())
{
cout<<"File not found";
return;
}
int val;
cout<<"Enter no after which ;
cout<< you want to insert element\n";
cin>>val;
while(fin.read((char*)&t,sizeof(t)))
{
fout.write((char*)&t,sizeof(t));
if(t.ino==val)
{
cout<<"Enter new record\n";
I.get();
fout.write((char*)&I,sizeof(I));
}
}
fin.close();
fout.close();
cout<<"Record inserted";
remove("item.doc");
rename("temp.doc","Comp");
} void Item::sort()
{
Item *p,t;
int i=0,j;
ifstream fin("item.doc");
int nor;
fin.seekg(0,ios::end);
nor=fin.tellg();
p=new Item[nor];
fin.seekg(0,ios::beg);
while(fin.read((char*)&t,sizeof(t)))
p[i++]=t;
for(i=0;i<nor-1;i++)
{
for(j=i+1;j<nor;j++)
{
if(p[j].price<p[i].price)
{
t=p[j];
p[j]=p[i];
p[i]=t;
}
}
}
cout<<"Sorted file is\n";
for(i=0;i<nor;i++)
p[i].show();
fin.close();
delete[]p;
}
void main()
{
Item i1;
int ch;
clrscr();
do
{
cout<<"\n1 Append";
cout<<"\n2 Traverse";
cout<<"\n3 Search";
cout<<"\n4 Insert";
cout<<"\n5 Delete";
cout<<"\n6 Update";
cout<<"\n7 Sort";
cout<<"\n 0 exit";
cout<<"\n Enter your choice";
cin>>ch;
switch(ch)
{
case 1: i1.get();
i1.append();break;
case 2: i1.traverse();break;
case 3: i1.search();break;
case 4: i1.insert();break;
case 5: i1.delete1();break;
case 6: i1.update();break;
case 7: i1.sort();break;
case 0: return;
default : cout<<"\n Invalid Choice";
}
}while(ch!=0);
getch();
}

You might also like