binary文件形式并使用随机读写处理方式对自定义CStudent类的对象数据进行存储与读写处理
需求分析:
学生的信息输出到屏幕上。要求成员函数完成以下功能:
(1) 从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。
(2) 按编号对学生信息进行检索并将检索结果显示在屏幕上。
(3) 按姓名对学生信息进行检索并将检索结果显示在屏幕上。
(4) 计算某编号学生的总成绩与平均成绩。
(5) 列出所有总成绩超过270分的男同学的有关信息。 
8.2程序执行的结果: 
8.3概要设计
本程设计思路: 设计数据结构student,将学生信息保存到该数据结构中,注意二进制文件的读写是以字节为单位的所以要将student的指针转化位char*来输入到文件中
程序流程图(如左图):
 8.3  详细设计与编码:
见上传程序。 
8.4调试分析:
     本题要注意的地方是对文件指针的操作,对给定的编号要能将文件指针移动到相应的位置上。
8.5 用户使用说明:
      用户输入保存的文件路径后就可以录入学生的信息,然后指定学生编号读取相应学生的信息。
8.6设计心得:
本题加强了我对二进制文件操作的理解。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
struct student
{
 unsigned int ID;
 char  name[10];
 char  sex;
 unsigned int age;
 unsigned int mathScore;
 unsigned int computerScore;
 unsigned int englishScore;
 
};
ostream& operator <<(ostream& out,student& stu) 
{
 out<<stu.ID<<std::endl;
 out<<stu.name<<std::endl;
 out<<stu.age<<std::endl;
 out<<stu.sex<<std::endl;
 out<<stu.mathScore<<std::endl;
 out<<stu.computerScore<<std::endl;
 out<<stu.englishScore<<std::endl;
 return out;
};
void main()
{
 char quite;
 static int num=0;
 char filename[20];
 cin>>filename;
 FILE* file=fopen(filename,"wb");
 if(!file)
  std::cout<<"error"<<std::endl;
 cin>>quite;
 std::cout<<"输入任意字符开始('Q'键退出)"<<std::endl;
 while(quite!='Q')
 {
  student stu;
  memset(&stu,0,sizeof(stu));
  std::cin>>stu.ID;
  std::cin>>stu.name;
  std::cin>>stu.age;
  std::cin>>stu.sex;
  std::cin>>stu.mathScore;
  std::cin>>stu.computerScore;
  std::cin>>stu.englishScore;
  std::cout<<"你输入的数据如下:"<<std::endl;
  std::cout<<stu;
原文请找腾讯752018766辣,文-论'文.网http://www.751com.cn  }
 fclose(file);
 std::cout<<"共输入"<<num<<"个数据,请择读第几个?"<<std::endl;
 int index=0;
 std::cin>>index;
 file=fopen(filename,"rb");
 student test;
 memset(&test,0,sizeof(test));
 fseek(file,(index-1)*sizeof(test),SEEK_SET);
 if(!fread((char*)&test,sizeof(test),1,file))
  std::cout<<"error"<<std::endl;
 std::cout<<test;1812