6 7 8怎么实现呢
// 用C++ STL设计学生成绩存储管理程序(第2阶段:对实验13中的学生成绩存储管理程序进行扩展)
// (1)基本数据结构:
//学生类CStudent,包括以下数据成员:
//学号nID(整型),姓名strName(字符串),成绩mapScores(用map容器存储修读过的各门课程的课程号(整型)和成绩);
//课程类Course,包括以下数据成员:
//课程号nNo(整型),课程名strCourseName(字符串),学分fCredit(float型)
//(2)数据存储:用某种适当的STL容器存储所有学生的数据;
//(3)增加三个学生数据(每个学生修读若干门课程)到容器中,输出容器中所有学生的信息;
//(4)数据维护:实现对学生数据的增、删、改、查功能(包括增、删、改、查学生信息,以及各科成绩);
//(5)用某种适当的STL容器存储所有课程的信息(称为“课程数据表”);
//(6)输入学生成绩时需参照“课程数据表”(“课程数据表”中存在的课程才能输入成绩);
//(7)统计“课程数据表”中每门课程的平均分;(如果某门课程还没有学生成绩,则输出0)
//(8)对所有学生进行排序,排序规则为:根据该生成绩平均分从大到小排序,
//如果平均分相同,则根据学号从小到大排序。(可利用STL的sort算法)
#include<bits/stdc++.h>
using namespace std;
class CStudent
{
int nID;
string strName;
map<int, double> mapScores; //存储多门课程成绩
public:
CStudent(int _nID, string _strName);
void setID(int _nID);
int getID();
void setName(string _name);
string getName();
map<int, double> getScores();
void insertScore(int cno, double score); //增加一门课程成绩 cno是课程编号
void eraseScore(int cno); //删除一门课程成绩
void find(int cno);
void modify(int cno,double score);
void display(); //输出学生学号、姓名和各科成绩
};
class Course
{
int nNo;
string coursename;
float fcredit;
};
CStudent::CStudent(int _nID,string _strName)
{
nID=_nID;
strName=_strName;
}
void CStudent::setID(int _nID)
{
nID=_nID;
}
int CStudent::getID()
{
return nID;
}
void CStudent::setName(string _name)
{
strName=_name;
}
string CStudent::getName()
{
return strName;
}
map<int,double> CStudent::getScores()
{
return mapScores;
}
void CStudent::insertScore(int cno, double score)
{
mapScores.insert(map<int,double>::value_type(cno,score));
}
void CStudent::eraseScore(int cno){
for(map<int,double>::iterator it=mapScores.begin();it!=mapScores.end();it++)
{
if(it->first==cno){
mapScores.erase(it);
break;
}
}
}
void CStudent::find(int cno){
map<int,double>::iterator iter= mapScores.find (cno);
if (iter!=mapScores.end())
cout<<"It is:"<<iter->second<<endl;
else cout<<"Not Found"<<endl;
}
void CStudent::modify(int cno,double score)
{
map<int,double>::iterator iter=mapScores.find(cno);
if (iter!=mapScores.end())
iter->second=score;
}
void CStudent::display(){
cout<<"Student ID:"<<nID<<" Name:"<<strName<<endl;
cout<<"Grades of all subjects: "<<endl;
for(map<int,double>::iterator iter=mapScores.begin();iter!=mapScores.end();iter++)
{
cout<<"Course number:"<<iter->first<<"Scores:"<<iter->second<<" "<<endl;
}
cout<<endl;
}
int main()
{
list<CStudent> v1;
list<Course> v2;
CStudent stu1(1001,"Phoebe");
stu1.insertScore(101,100);
stu1.insertScore(102,99);
stu1.insertScore(103,98);
stu1.insertScore(106,99.5);
stu1.display();
CStudent stu2(1002,"Lilith");
stu2.insertScore(101,95);
stu2.insertScore(104,93);
stu2.display();
stu2.eraseScore(101);//测试eraseScore
stu2.display();
stu1.find(102);
stu1.find(105);
stu1.modify(106,97);
stu1.display();
}