#include<fstream.h>
#include<iomanip.h>
#include<string.h>
 const int N=5;
 class student
{
 public:
  void input(void);
  void sta(void);
  float get_av(void);
  int get_no(void);
  const char* get_na(void);
  void display(void);
 private:
  int sno;
  char name[20];
  int score[3];
  float aver;
};
 void student::input(void)
{
 int i;
 cout<<"请输入学生的信息："<<endl;
 cin>>sno>>name;
 for(i=0;i<3;i++)
  cin>>score[i];
}
 void student::sta(void)
{
 int i;
 float sum;
 for(i=0,sum=0;i<3;i++)
  sum+=score[i];
 aver=sum/3;
}
 float student::get_av(void)
{
 return(aver);
}
 int student::get_no(void)
{
 return(sno);
}
 const char* student::get_na(void)
{
 return(name);
}
 void student::display(void)
{
 int i;
 cout<<"学号："<<sno<<endl;
 cout<<"姓名："<<name<<endl;
 cout<<"成绩：";
 for(i=0;i<3;i++)
  cout<<setw(3)<<score[i];
 cout<<endl<<"平均成绩："<<aver<<endl;
}
 int main()
{
 ifstream file;
 int i,k,n,sno;
 bool flag;
 char name[20];
 student a[N];
 file.open("sort.dat",ios::in|ios::binary);//二进制方式 
 if(!file)
 {
  cerr<<"文件打开失败！"<<endl;
  return(1);
 }
 for(i=0;!file.eof()&&i<N;i++)
  file.read((char*)(a+i),sizeof(student));
 n=i;
 while(true)
 {
  cout<<"请输入选择：1表示学号，2表示姓名，3表示结束"<<endl;
  cin>>k;
  flag=false;
  if(k==1)
  {
   cout<<"请输入学号："<<endl;
   cin>>sno;
   for(i=0;i<n;i++)
	if(sno==a[i].get_no())
	{
	 flag=true;
	 break;
	}
  }
  else if(k==2)
  {
   cout<<"请输入姓名："<<endl;
   cin>>name;
   for(i=0;i<n;i++)
	if(strcmp(name,a[i].get_na())==0)
	{
	 flag=true;
	 break;
	}
  }
  else if(k==3)
  {
   cout<<"查找结束！"<<endl;
   break;
  }
  if(flag==true)
   a[i].display(); 
  else
   cout<<"没有找到！"<<endl;
 }
 file.close();//关闭文件
 return(0);
}
