64,637
社区成员
发帖
与我相关
我的任务
分享
//stuInfo.h
#include<string>
#include<iostream>
using namespace std;
class Info{
protected:
string name;
string help;
int math;
int chinese;
int english;
public:
double average;
Info(string n,string h,int m,int c,int e);
virtual void display(int swt,ofstream& out) const;
friend ostream& operator<<(ostream&,Info&);
friend istream& operator>>(istream&,Info&);
};
/-----------------------------------------------------------------
//stuInfo.cpp
#include"stuInfo.h"
#include"iostream"
#include<string>
#include<fstream>
using namespace std;
Info::Info(string n,string h,int m,int c,int e)
:name(n),help(h),math(m),chinese(c),english(e){average=(m+c+e)/3;}
void Info::display(int swt,ofstream& out) const{
if(swt==0){
cout<<"姓名:"<<name<<",数学:"<<math<<",语文:"<<chinese<<",英语:"<<english<<",平均:"<<average;
}
else if(swt==1)
{
cout<<" "<<math;
out<<" "<<math;
}
else if(swt==2)
{
cout<<" "<<chinese;
out<<" "<<chinese;
}
else if(swt==3)
{
cout<<" "<<english;
out<<" "<<english;
}
else if(swt==4)
{
cout<<" "<<average;
out<<" "<<average;
}
else if(swt==5)
{
cout<<" "<<help<<endl;
out<<" "<<help<<endl;
}
}
/-----------------------------------------------------
//Student.h
#include"stuInfo.h"
#include<string>
using namespace std;
class Student:public Info{
public:
Student(string n="Null",string h="Null",int m=0,int c=0,int e=0):Info(n,h,m,c,e){}
virtual void display(int swt,ofstream& out)const;
friend ostream& operator<<(ostream&,Student&);
friend istream& operator>>(istream&,Student&);
};
/---------------------------------------------------------------------------------------
//student.cpp
#include"student.h"
#include"stuInfo.h"
#include<iostream>
#include<string>
using namespace std;
void Student::display(int swt,ofstream& out)const{
if(swt==0){
cout<<"学生 "<<name<<" 的信息如下:"<<endl;
Info::display(swt,out);
}
else if(swt==1)
{
cout<<" "<<name;
Info::display(swt,out);
}
else if(swt==2)
{
cout<<" "<<name;
Info::display(swt,out);
}
else if(swt==3)
{
cout<<" "<<name;
Info::display(swt,out);
}
else if(swt==4)
{
cout<<" "<<name;
Info::display(swt,out);
}
else if(swt==5)
{
cout<<" "<<name;
Info::display(swt,out);
}
}
istream& operator>>(istream& in,Student& stu){
in>>stu.name>>stu.help>>stu.math>>stu.chinese>>stu.english;
}
/-----------------------------------------------------------------------------------
//graduate.h
#include"stuInfo.h"
#include<string>
using namespace std;
class Graduate:public Info{
protected:
string advisor;
int classHour;
public:
Graduate(string n="Null",string h="Null",int m=0,int c=0,int e=0):Info(n,h,m,c,e),advisor("null"),classHour(0){}
virtual void display(int swt,ofstream& out) const;
friend ostream& operator<<(ostream&,Graduate&);
friend istream& operator>>(istream&,Graduate&);
};
/---------------------------------------------------------------------------
//Graduate.cpp
#include"graduate.h"
#include"stuInfo.h"
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
void Graduate::display(int swt,ofstream& out)const{
if(swt==0)
{
cout<<"姓名:"<<name<<",数学:"<<math<<",语文:"<<chinese<<",英语:"<<english<<",平均:"<<average<<",导师:"<<advisor<<",学时"<<classHour<<endl;
}
else if(swt==1)
{
cout<<" "<<math;
out<<" "<<math;
}
else if(swt==2)
{
cout<<" "<<chinese;
out<<" "<<chinese;
}
else if(swt==3)
{
cout<<" "<<english;
out<<" "<<english;
}
else if(swt==4)
{
cout<<" "<<average;
out<<" "<<average;
}
else if(swt==5)
{
cout<<" "<<help;
out<<" "<<help;
}
else if(swt==6)
{
cout<<" "<<advisor;
out<<" "<<advisor;
}
else if(swt==7)
{
cout<<" "<<classHour<<endl;
out<<" "<<classHour<<endl;
}
}
istream& operator>>(istream& in,Graduate& gs){
in>>gs.name>>gs.help>>gs.math>>gs.chinese>>gs.english>>gs.advisor>>gs.classHour;
}
/-----------------------------------------------------------------------------------------
//执行.cpp
#include<string>
#include<iostream>
#include<fstream>
#include"graduate.h"
#include"student.h"
#include"stuInfo.h"
using namespace std;
void show(Info& b,int swt,ofstream& out)
{
b.display(swt,out);
}
int main()
{
ifstream in("信息.txt");
ofstream out("输出.txt");
int i=0,j=0;
string label;
string type="Null";
Student stu[20];
Graduate gs[20];
getline(in,label);//让文件换行,以便后面输入正文,文件格式大概是第一行为姓名 各科成绩之类的文字标签,然后从第二行开始是各个对象包含的内容。
for(int m=0;m<100;m++)
{
in>>type;
if(type=="本科生")
in>>stu[i],i++;
else if(type=="研究生")in>>gs[j],j++;
else break;
}//这段顺便帮看看,我不太确定我的输入操作符重载是否正确。
show(stu[1],1,out);//测试而已,没什么含义。
[code=c]
好吧,编不下去了。。。。正好在文件输入那有点小问题还没确定,顺便帮忙看看有没有问题吧。。。