xt13-5.cpp
上传用户:liubin
上传日期:2022-06-13
资源大小:85k
文件大小:2k
源码类别:

书籍源码

开发平台:

Visual C++

  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. struct staff
  5. {int num;
  6.  char name[20];
  7.  int age;
  8.  double  pay;
  9. };
  10. int main()
  11. {staff staf[7]={2101,"Li",34,1203,2104,"Wang",23,674.5,2108,"Fun",54,778,
  12.                   3006,"Xue",45,476.5,5101,"Ling",39,656.6},staf1;
  13.  fstream iofile("staff.dat",ios::in|ios::out|ios::binary);
  14.  if(!iofile)
  15.   {cerr<<"open error!"<<endl;
  16.    abort();
  17.   }
  18.  int i,m,num;
  19.  cout<<"Five staff :"<<endl;
  20.  for(i=0;i<5;i++)
  21.    {cout<<staf[i].num<<" "<<staf[i].name<<" "<<staf[i].age<<" "<<staf[i].pay<<endl;
  22.     iofile.write((char *)&staf[i],sizeof(staf[i]));}
  23.  cout<<"please input data you want insert:"<<endl;
  24.  for(i=0;i<2;i++)
  25.    {cin>>staf1.num>>staf1.name>>staf1.age>>staf1.pay;
  26.     iofile.seekp(0,ios::end);
  27.     iofile.write((char *)&staf1,sizeof(staf1));}
  28.   iofile.seekg(0,ios::beg);
  29.   for(i=0;i<7;i++)
  30.    {iofile.read((char *)&staf[i],sizeof(staf[i]));
  31.     cout<<staf[i].num<<" "<<staf[i].name<<" "<<staf[i].age<<" "<<staf[i].pay<<endl;
  32.    }
  33.  bool find;
  34.  cout<<"enter number you want search,enter 0 to stop.";
  35.  cin>>num;
  36.  while(num)
  37.  {find=false;
  38.   iofile.seekg(0,ios::beg);
  39.   for(i=0;i<7;i++)
  40.    {iofile.read((char *)&staf[i],sizeof(staf[i]));
  41.     if(num==staf[i].num)
  42.      {m=iofile.tellg();
  43.       cout<<num<<" is No."<<m/sizeof(staf1)<<endl;
  44.       cout<<staf[i].num<<" "<<staf[i].name<<" "<<staf[i].age<<" "<<staf[i].pay<<endl;
  45.       find=true;
  46.       break;
  47.      }
  48.    }
  49.   if(!find)
  50.     cout<<"can't find "<<num<<endl;
  51.   cout<<"enter number you want search,enter 0 to stop.";
  52.   cin>>num;
  53.  }
  54.   iofile.close();
  55.   return 0;
  56. }