#include<bits/stdc++.h>
using namespace std;
class Score//基本信息类
{
string subject;
string id;
float score;
public:
float getScore()
{
return score;
};
string getSubject()
{
return subject;
};
friend istream&operator>>(istream&in,Score&s);
friend ostream&operator<<(ostream&out,Score&s);
};
istream&operator>>(istream&in,Score&s)
{
in>>s.subject;
in>>s.id;
in>>s.score;
return in;
}
ostream&operator<<(ostream&out,Score&s)
{
out<<s.subject<<" ";
out<<s.id<<" ";
out<<s.score;
return out;
}
class Subject
{
vector<Score>score;
int n;
string subject;
public:
friend istream&operator>>(istream&in,Subject&s);
friend ostream&operator<<(ostream&out,Subject&s);
};
istream&operator>>(istream&in,Subject&s)
{
in>>s.subject;
in>>s.n;
Score ss;
for(int i=0; i<s.n; i++)
{
in>>ss;
s.score.push_back(ss);
}
return in;
}
ostream&operator<<(ostream&out,Subject&s)
{
out<<s.subject<<" ";
out<<s.n<<" ";
out<<endl;
for(int i=0; i<s.n; i++)
{
out<<s.score[i];
out<<endl;
}
return out;
}
class Student
{
vector<Score>score;
vector<Score>::iterator it;
multimap<string,int>m1;
multimap<string,int>::iterator m1p;
string name;
int n;
public:
int searchSubject(string subject)
{
m1p=m1.find(subject);
int i=m1p->second;
if(m1p!=m1.end())
{
return i;
}
else
{
return -1;
}
}
void show()
{
for(int i=0; i<n; i++)
{
cout<<score[i];
cout<<endl;
}
}
void search(int i)
{
cout<<score[i];
cout<<endl;
}
string getName()
{
return name;
};
friend istream&operator>>(istream&in,Student&s);
friend ostream&operator<<(ostream&out,Student&s);
};
istream&operator>>(istream&in,Student&s)
{
in>>s.name;
in>>s.n;
Score ss;
for(int i=0; i<s.n; i++)
{
in>>ss;
s.score.push_back(ss);
s.m1.insert(make_pair(ss.getSubject(),i));
}
return in;
}
ostream&operator<<(ostream&out,Student&s)
{
out<<s.name<<" ";
out<<s.n<<" ";
out<<endl;
for(int i=0; i<s.n; i++)
{
out<<s.score[i];
out<<endl;
}
return out;
}
class Operate:public Student
{
Student s;
vector<Subject>subject;
public:
Operate(string name)
{
load(name);
}
void search(string subject)
{
int i=s.searchSubject(subject);
s.search(i);
}
void load(string name);
void show();
};
void Operate::show()
{
s.show();
}
void Operate::load(string name)
{
Student ss;
int i;
ifstream infile("e:\\20171789.txt",ios::in);
if(!infile)
return;
while(infile>>ss)
{
if(ss.getName()==name)
{
s=ss;
break;
}
else
{
}
}
infile.close();
}
int main()
{
/*Score s;
cin>>s;
cout<<s;
Subject s;
cin>>s;
cout<<s;
Student s;
cin>>s;
cout<<s;
int i=s.searchSubject("yuwen");
s.search(i);*/
Operate o("xiaoli");
o.search("wuli");
o.show();
}