请好心的师傅帮帮忙,急求一个运动会的C++程序,每个模块要有详细的注释,我的分全给你了

要求:运动会分数统计
【问题描述】:参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号内分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。
【基本要求】:产生各学校的成绩单,内容包括各校所取得的各项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。
师傅,头文件有错呀 ....怎么修改一下,还有能不能解释一下模块,我是个笨蛋,师傅帮帮吗,好吗?

现在可以了, 你再试试吧

/*学校运动会管理系统
问题描述:
(1) 初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数;
(2) 各项目名次取法有如下几种:
取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1;
(3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。
(4) 所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。
(5) 原始数据需保存到磁盘文件中。
*/

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

#define N 4
#define M 3
#define W 3

struct Student
{
Student(){}
Student(vector<string>* departments):depars(departments){}
void Input();
void Print();

friend ofstream& operator<<(ofstream& ofs, Student& stu);
friend ifstream& operator>>(ifstream& ifs, Student& stu);

string name;
string department;
int points;
private:
vector<string>* depars;
};

ofstream& operator<<(ofstream& ofs, Student& stu)
{
ofs << stu.name <<"\t"<< stu.department<<"\t" << stu.points;
return ofs;
}
ifstream& operator>>(ifstream& ifs, Student& stu)
{
ifs >> stu.name >> stu.department >> stu.points;
return ifs;
}
void Student::Input()
{
cout<<"输入名字:"<<endl;
cin >> name;

bool invalid(true);
do
{
string d;
cout<<"输入院系名称:"<<endl;
cin >> d;
vector<string>::iterator found=find(depars->begin(),depars->end(),d);
if(found != depars->end())
{
invalid = false;
department = d;
} else {
cout<<"无效院系名称,请重新输入。"<<endl;
}
} while(invalid);
}

void Student::Print()
{
cout<< name <<"\t"<<department<<endl;
}

// Forward declaration
class GameInfo;

class SportEvent
{
public:
static int GetPoint(int ranking);
void InputWinners(GameInfo& g);
void Print();

friend ofstream& operator<<(ofstream& ofs, SportEvent& se);
friend ifstream& operator>>(ifstream& ifs, SportEvent& se);

public:
vector<Student> winners;
string name;
};

ofstream& operator<<(ofstream& ofs, SportEvent& se)
{
ofs << se.name << endl;
ofs << se.winners.size() << endl;
for(unsigned int i(0);i<se.winners.size();i++)
{
ofs << se.winners.at(i) <<"\t";
}
return ofs;
}
ifstream& operator>>(ifstream& ifs, SportEvent& se)
{
ifs >> se.name;
unsigned int count(0);
ifs >> count;
se.winners.clear();
for(unsigned int i(0);i<count;i++)
{
Student student;
ifs >> student;
se.winners.push_back(student);
}
return ifs;
}

int SportEvent::GetPoint(int ranking)
{
switch(ranking)
{
case 1:
return 7;
break;
case 2:
return 5;
break;
case 3:
return 3;
break;
case 4:
return 2;
break;
case 5:
return 1;
break;
}
return 0;
}

void SportEvent::Print()
{
// #1 student_name department_name
for(int i(0);i<5;i++)
{
cout <<"#"<<(i+1)<<"\t";
winners.at(i).Print();
}
}

class GameInfo
{
public:
void Init();
void InputResult();
void QueryDep(string depart);
void QueryStu(string student);
void QueryEve(string eventname);

void Save(ofstream&);
void Load(ifstream&);

public:
vector<string> departments;
vector<SportEvent> mevents;
vector<SportEvent> wevents;

};

void SportEvent::InputWinners(GameInfo& g)
{
for(int i(0);i<5;i++)
{
Student s(&g.departments);
cout<<"输入第"<<(i+1)<<"个获奖者"<<endl;
s.Input();
winners.push_back(s);
}
}

void GameInfo::Save(ofstream& fout)
{
//保存院系名称
fout << departments.size() << endl;
for(unsigned int i(0);i<departments.size();i++)
{
fout << departments.at(i) <<"\t";
}
fout << endl;

//保存男子项目
fout << mevents.size() << endl;
for(unsigned int i(0);i<mevents.size();i++)
{
fout << mevents.at(i) <<"\t";
}
fout << endl;

//保存女子项目
fout << wevents.size() << endl;
for(unsigned int i(0);i<wevents.size();i++)
{
fout << wevents.at(i) <<"\t";
}
fout << endl;
}

void GameInfo::Load(ifstream& fin)
{
}

void GameInfo::Init()
{
for(int i(0);i<N;i++)
{
string dname;
cout<<"输入第"<<(i+1)<<"个参赛院系名称:";
cin >> dname;
departments.push_back(dname);
}
cout <<endl;
for(int i(0);i<M;i++)
{
SportEvent mevent;
cout<<"输入第"<<(i+1)<<"个男子项目名称:";
cin >> mevent.name;
mevents.push_back(mevent);
}
cout <<endl;
for(int i(0);i<W;i++)
{
SportEvent wevent;
cout<<"输入第"<<(i+1)<<"个女子项目名称:";
cin >> wevent.name;
wevents.push_back(wevent);
}
cout <<endl;
}

void GameInfo::InputResult()
{
for(int i(0);i<M;i++)
{
cout<<"输入第"<<(i+1)<<"个男子项目\"" << mevents.at(i).name<<"\""<<endl;
mevents.at(i).InputWinners(*this);
}
for(int i(0);i<W;i++)
{
cout<<"输入第"<<(i+1)<<"个女子项目\"" << wevents.at(i).name<<"\""<<endl;
wevents.at(i).InputWinners(*this);
}
}

void GameInfo::QueryDep(string depart)
{
cout << depart << endl;
int points(0);
for(int i(0);i<M;i++)
{
vector<Student> w = mevents.at(i).winners;
for(unsigned int n(0);n<w.size();n++)
{
if(w.at(n).department==depart)
{
cout << (w.at(n).name) << "\t";
cout << (mevents.at(i).name);
cout << "\t#" << (n+1); // ranking
int p(SportEvent::GetPoint(n+1));
cout << "\t" << p << "分"<< endl; // point
points+=p;
}
}
}

for(unsigned int i(0);i<W;i++)
{
vector<Student> w = wevents.at(i).winners;
for(unsigned int n(0);n<w.size();n++)
{
if(w.at(n).department==depart)
{
cout << w.at(n).name << "\t";
cout << wevents.at(i).name;
cout << "\t#" << (n+1); // ranking
int p(SportEvent::GetPoint(n+1));
cout << "\t" << p << "分"<< endl; // point
points+=p;
}
}
}
if(points)
cout << "团体总分(男女混合):" << points << "分"<<endl;
}

void GameInfo::QueryStu(string student)
{
cout << student << endl;
int points(0);
string d;
for(int i(0);i<M;i++)
{
vector<Student> w = mevents.at(i).winners;
for(unsigned int n(0);n<w.size();n++)
{
if(w.at(n).name==student)
{
cout << mevents.at(i).name;
cout << "\t#" << (n+1); // ranking
int p(SportEvent::GetPoint(n+1));
cout << "\t" << p << "分"<< endl; // point
points+=p;
d = w.at(n).department;
}
}
}
if(points)
cout <<"隶属于:"<< d <<endl<< "个人总分:" << points << "分"<<endl;

cout << endl;
points =0;
for(int i(0);i<W;i++)
{
vector<Student> w = wevents.at(i).winners;
for(unsigned int n(0);n<w.size();n++)
{
if(w.at(n).name==student)
{
cout << wevents.at(i).name;
cout << "\t#" << (n+1); // ranking
int p(SportEvent::GetPoint(n+1));
cout << "\t" << p << "分"<< endl; // point
points+=p;
d =w.at(n).department;
}
}
}
if(points)
cout <<"隶属于:"<< d <<endl<< "个人总分:" << points << "分"<<endl;
}

void GameInfo::QueryEve(string eventname)
{
for(int i(0);i<M;i++)
{
if(mevents.at(i).name == eventname)
{
mevents.at(i).Print();
}
}
for(int i(0);i<W;i++)
{
if(wevents.at(i).name == eventname)
{
wevents.at(i).Print();
}
}
}

int main()
{
const char* filename= "data.txt";

GameInfo gi;

//读取
ifstream ifs(filename);
gi.Load(ifs);
ifs.close();

//录入
gi.Init();
gi.InputResult();

int opt(0);
string name;
while(opt!=4)
{
cout << "1.按院系名称查询"<<endl;
cout << "2.按比赛项目查询"<<endl;
cout << "3.按运动员姓名查询"<<endl;
cout << "4.退出"<<endl;
cin >> opt;
switch(opt)
{
case 1:
cout << "请输入院系名称:" << endl;
cin >> name;
gi.QueryDep(name);
break;
case 2:
cout << "请输入比赛项目:" << endl;
cin >> name;
gi.QueryEve(name);
break;
case 3:
cout << "请输入运动员姓名:" << endl;
cin >> name;
gi.QueryStu(name);
break;
}
}

//保存
ofstream ofs(filename, ios::out | ios::app);
gi.Save(ofs);
ofs.close();
return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

我家的师傅与徒弟六年级优秀作文
爸爸是我的`师傅 我爸爸下棋的技术是一流的,我下棋的一些方法就是他教我的,但我爸爸下棋的速度非常慢,一颗棋子拿在手里思前想后,还在棋盘上比比划划,慢悠悠的让人看了心急,我催促快点,爸爸振振有词地说:“下棋也要动脑筋,不动脑筋哪会赢啊!快有啥用,会赢才是硬道理。”结果可想而...

高中高二作文900字:我的师傅
师傅采用“看一遍、做一遍”的教学方法。他经常让我观察他烹饪的过程,并详细解释每一个步骤。然后,他鼓励我尝试自己动手操作,他会在旁边指导和纠正我的错误。师傅通过这种亲身示范的方式,让我更好地理解了烹饪的诀窍和技巧。他还与我分享了许多实战经验,告诉我如何应对各种挑战和突发情况。我对我的...

我的师傅作文怎么写?
每个人都有属于自己的师傅,而我的师傅是一个令我钦佩和尊敬的人。他是我的老师,同时也是我的朋友和榜样。我的师傅是一位极其敬业的教育工作者。他对教学有着深厚的理解和热情,总是尽力为我们创造一个良好的学习环境。他注重培养我们的思考能力和创造力,鼓励我们去发现问题、解决问题,并扩展我们的...

我的老师初一作文
我们班的老师像走马灯一样换来换去,每个老师都有自己的特点,最难忘的要数新接我们班的于老师、可爱如姐姐的刘老师和总是认认真真的李老师。 于老师 于老师——黝黑的皮肤、低沉的声音、粗粗的眉毛、闪亮的眼睛。 清楚地记得第一节课时的情景,于老师在黑板上龙飞凤舞地写了三个大字“于江龙”,班里顿时议论起...

一次让我平凡的日子初一的作文400字左右
小圆妈的自行车坏的很惨,一共补了三个漏眼。张师傅抹了一把汗接过妇女递来的鞋子,小孩子跑过来说:“妈妈,我想来了,不是我让你鞋坏掉的,刚才下坡时地上有好大一堆的玻璃。”妇女把小孩拉了过来,看了看满头大汗的张师傅。鞋子很快修好,妇女递来一张十元的人民币。张师傅推辞说算了。最后...

我的老师作文
我的老师作文1 老师说“师傅领进门,修行在个人。”一二年级就是“师傅领进门”的阶段。许多人长大后远走高飞,就都把一二年级的老师淡忘了。但我没有,一二年的的傅老师给了我无法磨灭的印象,我永远无法忘记她。 傅老师个子高高的,体形偏瘦,扎着马尾辫,是个有耐心又细心的语文老师。她的课总是别有风趣,总能...

我的老师作文
我的老师作文1老师说“师傅领进门,修行在个人。”一二年级就是“师傅领进门”的阶段。许多人长大后远走高飞,就都把一二年级的老师淡忘了。但我没有,一二年的的傅老师给了我无法磨灭的印象,我永远无法忘记她。傅老师个子高高的,体形偏瘦,扎着马尾辫,是个有耐心又细心的语文老师。她的课总是别有风趣,总能吸引...

初一作文我的老师
是你指引我不断向前;是你告诉我不要低头;是你教会我勤劳勇敢。 我亲爱的老师,谢谢你! 初一作文我的老师3 我们大家学习、受教育,离不开老师的教导。我升入初中,课程多了,老师也多了。 各位任课老师的教育方式也不同,下面让我给大家介绍一下我的几位师傅吧! 我的地理老师非常幽默,上地理课,我们班的同学绝对...

感谢我的老师作文
感谢我的老师作文 篇1 “老师是人类心灵的工程师!”每当想起这句话,我就想起了我的老师,心头那种暖暖的感觉! 每当上课时,您总是用眼睛注视着我们每个同学,放学时您总是最后一个离开教室,无论刮风细雨您总是比我们来得早,我们进入梦乡了,您还在为我们批改作业!您为了我们能听好课,声音都沙哑了,您为了我们,不...

初一的老师作文
有一天,我又去给花儿们浇水,这时,我发现那几棵葱的尖端上都或大或小地鼓了起来,像一个个花苞,还有一个“花苞“上裂开了一条缝。我惊讶极了,心想,我的妈呀,我怎么从没听说过葱会开花呀?难道变异了不成?之后,我便天天去花盆旁边观察它们。 这到底是不是葱结的花呢?我越看越觉得像,可却总不敢确认。只有...

相似回答
大家正在搜