Sunday 9 September 2012

File creation, sorting and searching of its records

#include<stdio.h>
#include<conio.h>
#include<fstream.h>
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
void  create();
void sort();
void search();
int n;
  class student
    {
      public:
         char name[10],marks[10],attendence[10];
         char rollno[10];
         void getdata()
           {
         cout<<"enter student name:"<<endl;
         gets(name);
         cout<<"enter student rollno:"<<endl;
         cin>>rollno;
         cout<<"enter student marks:"<<endl;
         cin>>marks;
         cout<<"enter student attendence:"<<endl;
         cin>>attendence;
           }
      };
    class index
     {
       public:
          int ref;
          char inno[10];
          void putdata()
          {
            cout<<inno<<"\t"<<ref<<endl;;
          }
      };
     void main()
       {
     int ch;
     clrscr();
     while(1)
       {
         cout<<"\n";
         cout<<"MENU"<<endl;
         cout<<"1.CREATIVE"<<endl;
         cout<<"2.SORT"<<endl;
         cout<<"3.SEARCh"<<endl;
         cout<<"4.exit"<<endl;
         cout<<"enter ur choice:"<<endl;
         cin>>ch;
         switch(ch)
           {
         case 1:create();
            break;
         case 2:sort();
            break;
        case 3:search();
             break;
         case 4:exit(0);
         default:cout<<"invalid choice"<<endl;
           }
      }
     }
    void create()
     {
       student s;
       index x,y;
       fstream f,f1;
       f.open("da.d",ios::out);
       f1.open("sort.s",ios::out);
       cout<<"enter how many records do u want:"<<endl;
       cin>>n;
       for(int i=0;i<n;i++)
     {
        s.getdata();
        strcpy(x.inno,s.rollno);
        x.ref=f.tellp();
        f<<s.name<<"|"<<s.rollno<<"|"<<s.marks<<"|"<<s.attendence<<"|";
        f1.write((char *)&x,sizeof(x));
     }
     f.close();
     f1.close();
     }
   void sort()
     {
       fstream f1;
       index x,y;
       f1.open("sort.s",ios::out|ios::in);
       for(int i=0;i<n;i++)
     {
       for(int j=i+1;j<n;j++)
         {
           f1.seekg(i*sizeof(x));
           f1.read((char *)&x,sizeof(x));
           f1.seekg(j*sizeof(y));
           f1.read((char *)&y,sizeof(y));
           if(strcmp(x.inno,y.inno)>0)
         {
           f1.seekp(i*sizeof(y));
           f1.write((char *)&y,sizeof(y));
           f1.seekp(j*sizeof(x));
           f1.write((char *)&x,sizeof(x));
         }
           }
        }
    f1.close();
    f1.open("sort.s",ios::in);
    while(f1.read((char *)&x,sizeof(x)))
     {
       x.putdata();
     }
     f1.close();
     }
     void search()
       {
      fstream f,f1;
      student s;
      index x;
      char k[10];
      char str[10];
      f.open("da.d",ios::in|ios::out);
      f1.open("sort.s",ios::in|ios::out);
      cout<<"enter ur key rollno for search:"<<endl;
      cin>>k;
      int mid,l=0,h=n,flag=0;
      while(l<=h)
        {
        mid=(l+h)/2;
        f1.seekg(mid*sizeof(x),ios::beg);
        f1.read((char *)&x,sizeof(x));
        if(strcmp(k,x.inno)==0)
          {
        flag=1;
        break;
          }
       else if(strcmp(x.inno,k)<0)
         l=mid+1;
       else
          h=mid-1;
      }
         if(flag)
           {
         ifstream fin("da.d");
         cout<<"record is found:"<<endl;
         fin.seekg(x.ref,ios::beg);
         fin.getline(s.name,20,'|');
         fin.getline(s.rollno,20,'|');
         fin.getline(s.marks,20,'|');
         fin.getline(s.attendence,20,'|');
         cout<<s.name<<"\t"<<s.rollno<<"\t"<<s.marks<<"\t"<<s.attendence;
         fin.close();
         f1.close();
           }
          else
         cout<<"no record is found"<<endl;
     }



No comments:

Post a Comment