grade成绩管理系统



#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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值