• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

第14周项目2-用文件保存的学生名单

武飞扬头像
Ticking
帮助1

问题描述:

文件score.dat中保存的是若干名学生的姓名和C 课、高数和英语成绩。
(1)定义学生类,其中包含姓名、C 课、高数和英语成绩及总分数据成员。

1.   //定义学生类
2.   class
3.   public:  
4.       //声明必要的成员函数
5.   private:  
6.  
7.       double
8.       double
9.       double
10.      double
11.      static int stu_num;  //学生人数,处理为类的静态成员合适
12.      static double total_sum; //学生总分和
13.

(2)用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。

1.   int
2.  
3.       Student stud[200],t; //stud[200]为保存数据的对象数组
4.  
5.       double
6.       int
7.       //从文件score.dat中读入数据,保存到对象数组中
8.  
9.  
10.      //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中
11.      return
12.

代码:

#include <iostream>
#include <fstream>
#include<cstdlib>
using namespace std;
//定义学生类
class Student
{
public:
    //声明必要的成员函数
    Student() {}
    ~Student();
    void input();
    friend ostream& operator<<(ostream &out,Student &s);
    friend istream& operator>>(istream &in,Student &s);
     double gettotal()
    {
        return total;
    }
    static int getnum()
    {
        return stu_num;
    }
    static double getsum()
    {
        return total_sum;
    }
    bool pass()
    {
        if(cpp>=60&&math>=60&&english>=60)
            return true;
        else return false;
    }
private:
    string name;
    double cpp;
    double math;
    double english;
    double total;
    static int stu_num;  //学生人数,处理为类的静态成员合适
    static double total_sum; //学生总分和
};
int Student::stu_num=0;
double Student::total_sum=0;
Student::~Student()
{
    stu_num-=1;
    total_sum-=total;
}
istream& operator>>(istream &in, Student &s)
{
    in>>s.name>>s.cpp>>s.math>>s.english;
    s.total=s.cpp s.math s.english;
    Student::stu_num  ;
    Student::total_sum =s.total;
    return in;
}

ostream &operator<<(ostream &out, Student &s)
{
    out<<s.name<<"\t";
    out<<s.cpp<<"\t";
    out<<s.math<<"\t";
    out<<s.english<<"\t";
    out<<s.total;
    return out;
}

int main( )
{
    Student stud[200],t; //stud[200]为保存数据的对象数组
    string sname;
    double total_avg;
    int i=0;
    //从文件score.dat中读入数据,保存到对象数组中
    ifstream input;
    input.open("score.dat",ios::in);
    if(input.eof())
    {cout<<"error:"<<endl;
    exit(1);}
    while(!input.eof())
        input>>stud[i  ];
    input.close();


    //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中
    double ave=Student::getsum()/Student::getnum();
    ofstream outfile("pass_score.dat");
    if(!outfile)
    {
        cout<<"error"<<endl;
        exit(0);
    }
    else
        for(i=0;i<Student::getnum();i  )
        {
            if(stud[i].gettotal()>ave&&stud[i].pass())
                outfile<<stud[i]<<endl;
        }
    outfile.close();
    cout<<"ok"<<endl;

    return 0;
}

运行结果:

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhibgagb
系列文章
更多 icon
同类精品
更多 icon
继续加载