7-1 磁盘文件的读写

编程构建一个Student类,并在main函数中创建5个对象(对象信息如输入样例所示),其中每个对象的数据包括学号num、姓名name、年龄age以及数学maths、英语english、语文chinese三门功课的分数,然后求出每个人的平均分数ave,将学号、姓名和平均分数输出到磁盘文件STUD.DAT中,最后从STUD.DAT文件中读出这些数据,并显示在屏幕上。

输入格式:

5个学生的数据(学号、姓名、年龄以及数学、英语、语文三门功课的分数)。

输出格式:

从STUD.DAT文件中读出学号、姓名和平均分数。

样例">样例">样例">输入样例:

在这里给出一组输入。例如:

Student stu1(1,'A',19,80,79,67);
Student stu2(2,'B',20,90,68,43);
Student stu3(3,'C',19,56,48,29);
Student stu4(4,'D',20,93,44,57);
Student stu5(5,'E',19,33,55,74);

输出样例:

在这里给出相应的输出。例如:

1 A 75.3333
2 B 67
3 C 44.3333
4 D 64.6667
5 E 54

我知道你们都是来自同一所学校,中国xx大学

废话少说直接上代码

#include<iostream>
#include<algorithm>
#include<string>
#include<fstream>
using namespace std;

class Student
{
public:
    int num;
    char name;
    int age;
    int maths;
    int english;
    int chinese;
    double ave;
public:
    Student(int Num,char N,int a,int m,int e,int c)
    {
        num=Num;
        name=N;
        age=a;
        maths=m;
        english=e;
        chinese=c;
        ave=(double)(maths+english+chinese)/3;
    }
    ~Student()
    { }
};

struct per
{
    int n;
    char na;
    double av;
};

per input(Student s)
{
    per p;
    p.n=s.num;
    p.na=s.name;
    p.av=s.ave;
    return p;
}

void output(per p)
{
    cout<<p.n<<" "<<p.na<<" "<<p.av<<endl;
}

int main()
{
    Student stu1(1,'A',19,80,79,67);
    Student stu2(2,'B',20,90,68,43);
    Student stu3(3,'C',19,56,48,29);
    Student stu4(4,'D',20,93,44,57);
    Student stu5(5,'E',19,33,55,74);
    ofstream out_file;
    out_file.open("STUD.DAT",ios::out|ios::binary);
    per p=input(stu1);
    out_file.write((char *)&p,sizeof(per));
    per p1=input(stu2);
    out_file.write((char *)&p1,sizeof(per));
    per p2=input(stu3);
    out_file.write((char *)&p2,sizeof(per));
    per p3=input(stu4);
    out_file.write((char *)&p3,sizeof(per));
    per p4=input(stu5);
    out_file.write((char *)&p4,sizeof(per));
    ifstream in_file;
    in_file.open("STUD.DAT",ios::in|ios::binary);
    in_file.read((char *)&p,sizeof(per));
    output(p);
    in_file.read((char *)&p1,sizeof(per));
    output(p1);
    in_file.read((char *)&p2,sizeof(per));
    output(p2);
    in_file.read((char *)&p3,sizeof(per));
    output(p3);
    in_file.read((char *)&p4,sizeof(per));
    output(p4);
}

这个题的输入,只能自己用类定义,才能输入进去,其实认真看看还是,cout,我相信你们已经被这道题折磨疯了,我叫xht,不用谢我

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值