第十七周任务一

来源:互联网 发布:python相对路径import 编辑:程序博客网 时间:2024/05/17 23:39
/* (程序头部注释开始) * 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:二进制文件* 作 者: 张馨* 完成日期: 2012年 06月 13日* 版 本 号: * 对任务及求解方法的描述部分* 输入描述: * 问题描述:* 程序输出: * 程序头部的注释结束
#include <fstream>   #include<iostream>   #include<string>   #include<iomanip>   using namespace std;    //定义学生类   class Student  {  public:      Student(){};      Student(string nam, double c, double m, double e):name(nam),cpp(c),math(m),english(e){total=c+m+e;}      void set_value(string nam, double c, double m, double e);      string get_name(){return name;}      double get_cpp(){return cpp;}      double get_math(){return math;}      double get_english(){return english;}      double get_total(){return total;}      void set_cpp(double c){cpp=c;}      void set_math(double m){math=m;}      void set_english(double e){english=e;}      void set_total(double t){total=t;}  private:      string name;      double cpp;      double math;      double english;      double total;  };    void Student::set_value(string nam, double c, double m, double e)  {      name=nam;      cpp=c;      math=m;      english=e;      total=c+m+e;  }    int main( )  {      Student stud[102],t; //stud[100]为保存数据的对象数组       string sname;      double scpp, smath, senglish;      int i;        //将score.dat文件中的数据读入到对象数组中       ifstream infile("score.dat",ios::in | ios::binary);  //以输入的方式打开文件并定义为二进制文件       if(!infile)       //测试是否成功打开       {          cerr<<"open error!"<<endl;          abort();//退出程序,与exit函数的作用相同       }      for(i=0;i<101;i++)        {            infile>>sname>>scpp>>smath>>senglish;            stud[i].set_value(sname, scpp, smath, senglish);        }        infile.close();            cout<<"请到文件binary_score.dat中查看学生求总分后的成绩结果"<<endl<<endl;、       //以输出方式打开binary_score.dat文件,并定义为二进制类型的文件         ofstream outfile("binary_score.dat",ios::binary);      if(!outfile)        //判断文件是否打开       {          cerr<<"open error!"<<endl;          exit(1);      }        stud[101].set_value("张培培",100,100,100);//调用函数输入我的信息       for(i=0;i<102;i++)      {            outfile.write((char*)&stud[i],sizeof(stud[i]));     //用write函数以二进制形式将信息读入文件       }      outfile.close();          //将binary_score.dat文件中的数据读入到对象数组中       ifstream onfile("binary_score.dat", ios::in|ios::binary);  //以输入的方式打开文件       if(!onfile)       //测试是否成功打开       {          cerr<<"open error!"<<endl;          abort();       //退出程序,与exit函数的作用相同       }        cout << setiosflags(ios::left) << setw(12) << "姓名" << setw(8) << "C++" << setw(8) << "高数" << setw(8) << "英语" << setw(8) <<"总分" << setw(8) <<  endl;          for(int i=0;i<102;i++)      {          onfile.read((char*)&stud[i],sizeof(stud[i]));  //用read函数以二进制形式将信息从文件中读出来           cout<<setiosflags(ios::left)<<setw(12)<<stud[i].get_name()<<setw(8)<<stud[i].get_cpp()<<setw(8)<<stud[i].get_math()<<setw(8)<<stud[i].get_english()<<setw(8)<<stud[i].get_total()<<setw(8)<<endl; //在屏幕上显示分数信息         }        onfile.close();      system("pause");      return 0;  }