第十七周实验报告1

程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:     成绩排序

* 作    者:     王智凯                       
* 完成日期:  2012年   6.13

* 版 本 号:  凯子微笑

 

#include<iostream>     
#include<string>     
#include<iomanip>   
#include<fstream>     
using namespace std;    
    
class Student    
{    
public:    
    Student();    
    Student(string name, double cpp, double math, double English);    
    double all_score();    
    double ave_score();    
    void read_score(ifstream &in);    
    void write_score(ofstream &out);    
    void display();    
private:    
    string name;    
    double score_cpp;    
    double score_math;    
    double score_English;    
    double score_all;    
    double score_average;    
};    
    
Student::Student()    
{    
    this->name = "0000";    
    this->score_cpp = 0;    
    this->score_math = 0;    
    this->score_English = 0;    
}    
    
Student::Student(string name, double cpp, double math, double English)    
{    
    this->name = name;    
    this->score_cpp = cpp;    
    this->score_math = math;    
    this->score_English = English;    
}    
    
void Student::display()    
{    
    this->all_score();   
  
    this->ave_score();  
  
    cout << setiosflags(ios::left) << setw(12) << this->name << setw(8) << this->score_cpp << setw(8) << this->score_math << setw(8) << this->score_English << setw(8) << this->score_all <<setw(8)<<this->score_average<< endl;    
}    
    
double Student::all_score()    
{    
    this->score_all = this->score_cpp + this->score_math + this->score_English;    
    return this->score_all;    
}    
    
double Student::ave_score()    
{    
    this->score_average = (this->score_cpp + this->score_math + this->score_English) / 3;    
    return this->score_average;    
}    
    
void Student::read_score(ifstream &in)    
{    
    in >> this->name >> this->score_cpp >> this->score_math >> this->score_English;    
}    
  
    
void Student::write_score(ofstream &out)    
{    
    out << this->name << '\t' << this->score_cpp << '\t' << this->score_math << '\t' << this->score_English << endl;    
}    
    
void readfile(Student * s, int num)    
{    
    ifstream infile("score.dat",ios::in);    
    
    if(!infile)    
    {    
        cerr << "open error!" << endl;    
        exit(1);    
    }    
    
    for(int i = 0; i < num; ++i)    
    {    
        s[i].read_score(infile);    
    }    
    infile.close();    
}    
    
void Readfile(Student * s, int num)    
{    
    ifstream infile("binary_score.dat",ios::in|ios::binary);    
    
    if(!infile)    
    {    
        cerr << "open error!" << endl;    
        abort();    
    }    
    
    for(int i = 0; i < num; ++i)    
    {    
        infile.read((char *) & s[i], sizeof(s[i]));    
    }    
    
    infile.close();    
}    
    
void writefile(Student * s, int num)    
{    
    ofstream outfile("binary_score.dat",ios::out|ios::binary);    
    
    if(!outfile)    
    {    
        cerr << "open error!" << endl;    
        abort();    
    }    
    
    for(int i = 0; i < num; ++i)    
    {    
        outfile.write((char *) & s[i], sizeof(s[i]));    
    }    
    
    outfile.close();    
}    
    
void Writefile(Student * s, int num)    
{    
    ofstream outfile("binary_score2.dat",ios::out);    
    
    if(!outfile)    
    {    
        cerr << "open error!" << endl;    
        abort();    
    }    
    
    for(int i = 0; i < num; ++i)    
    {    
        s[i].write_score(outfile);    
    }    
    
    outfile.close();    
}    
    
int main()    
{    
    Student stu[100], stu1[101], my_score("王智凯", 100, 100, 100);    
    
    readfile(stu, 100);    
    
    writefile(stu, 100);    
    
    Readfile(stu1, 100);    
    
    stu1[100] = my_score;    
  
    cout << setiosflags(ios::left) << setw(12) << "姓名" << setw(8) << "C++" << setw(8) << "高数" << setw(8) << "英语" << setw(8) <<"总分" << setw(8) << "平均分" << endl;   
    
    for(int i = 0; i < 101; ++i)    
    {    
        stu1[i].display();   
    }    
    
    Writefile(stu1, 101);    
    
    system("pause");    
    return 0;    
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值