⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex9_a.cpp

📁 c++程序设计教材第二版书上即课后习题源代码
💻 CPP
字号:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Person{
	string name;    //姓名
	char sex;         //性别	
public:
	Person(string n="noname",char s='m'){      //构造函数
		name=n;
		sex=s;
	}
	friend ostream& operator<<(ostream& dest,Person& ps);//输出姓名、性别
};
ostream& operator<<(ostream& dest,Person& ps){
	dest<<ps.name<<'\t'<<ps.sex<<'\t';
	return dest;
}

class Student:public Person{
	int id;                //学号       
	int Eng,Math,Phy;      //三门课成绩
	double ave;           //平均成绩
	ofstream ofile;
public:
	Student(string n="noname",int i=0,char s='m',int e=0,int m=0,int p=0):Person(n,s){
		id=i;   Eng=e;   Math=m;   Phy=p;   CalAve();
	};
	~Student();
    void CalAve(){ave=double(Eng+Math+Phy)/3;}  ;        //计算平均成绩
	friend ostream& operator<<(ostream& dest,Student& st);//输出姓名、性别、号、三门课成绩、平均成绩
};
Student::~Student(){
	ofile.open("myfile.txt");
	ofile<<"name"<<'\t'<<"sex"<<'\t'<<"id"<<'\t';
	ofile<<"Eng"<<'\t'<<"Math"<<'\t'<<"Phy"<<'\t'<<"ave"<<endl;
	ofile<<*this;
	ofile.close();
}
ostream& operator<<(ostream& dest,Student& st){
	Person *p=&st;
	dest<<*p;				//利用赋值兼容原则输出st的基类成员
	dest<<st.id<<'\t'<<st.Eng<<'\t'<<st.Math<<'\t'<<st.Phy<<'\t'<<st.ave;
	return dest;
}
int main(){
	Student st("wang",22061,'m',90,80,85); 
	cout<<"name"<<'\t'<<"sex"<<'\t'<<"id"<<'\t';
	cout<<"Eng"<<'\t'<<"Math"<<'\t'<<"Phy"<<'\t'<<"ave"<<endl;
	cout<<st<<endl;
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -