C++演讲比赛管理系统实现流程实例_第1页
C++演讲比赛管理系统实现流程实例_第2页
C++演讲比赛管理系统实现流程实例_第3页
C++演讲比赛管理系统实现流程实例_第4页
C++演讲比赛管理系统实现流程实例_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第C++演讲比赛管理系统实现流程实例目录演讲比赛系统1.需求分析2.程序和功能3.程序逻辑3.1建立演讲比赛管理类3.2开始演讲比赛程序3.3查看往届比赛结果程序3.4清空记录3.5等待程序和随机产生姓名程序4.程序下载

演讲比赛系统

1.需求分析

学校举行一场比赛,共有12人参加。比赛共两轮,第一轮为淘汰赛,第二轮为决赛。每名选手都有对应的编号:如10001~10012。比赛方式:分组比赛,每组6个人。第一轮分为两个小组,整体按照选手的编号进行抽签后顺序演讲。十个评委分别给每名选手打分,去除最高分和最低分,求的平均分为本轮选手的成绩。当小组演讲完后,淘汰组内排名最后的三名选手,前三名晋级,进入下一轮的比赛。第二轮为决赛,前三名胜出。每轮比赛过后需要显示晋级选手的信息。

2.程序和功能

程序功能开始演讲比赛完成整届比赛的流程,每个比赛阶段需要给用户一个提示,用户按任意键进入下一个阶段。查看往届记录查看之前比赛的前三名,每次比赛都会记录到文件中,文件用.csv后缀名保存。清空比赛记录将文件中的数据清空。退出比赛程序可以退出程序。

3.程序逻辑

3.1建立演讲比赛管理类

voidSaveRecord();

//初始化

voidInitSpeech();

//判断文件是否为空

boolFile_Is_Empty;

//往届数据的容器

mapint,vectorstringM_Record;

~Speech_Manager();

voidCreatSpeaker();

stringCreatName(inta);

voidShowScore();

voidWait_Revolution();

//往届记录

voidShowRecord();

//清空记录

voidClearRecord();

//读取记录

voidLoadRecod();

//创建轮数

intRevolution;

//第一轮比赛人员编号

vectorint

//第二轮比赛人数编号

vectorint

//获胜人编号

vectorintvVictory;

//存放编号和对应具体选手的容器

mapint,SpeakerM_Speker;

//存放届数

};

3.2开始演讲比赛程序

比赛流程分析:

抽签开始第一轮演讲比赛显示第一轮比赛结果抽签开始第二论比赛

显示前三名结果保存分数。

voidSpeech_Manager::SpeechConst()

/*srand((unsignedint)time(NULL));*/

cout"----------------第"this-Revolution"轮比赛开始-----------------"endl;

multimapdouble,int,greaterdoubleGroupScore;

intnum=0;

vectorintV_src;//参赛容器

if(this-Revolution==1)

V_src=v1;

else

V_src=v2;

//遍历选手

for(vectorint::iteratorit=V_src.begin();it!=V_src.end();it++)

num++;

dequedouble

for(inti=0;ii++)

doublescore=(rand()%401+600)/10.f;

d.push_back(score);

sort(d.begin(),d.end(),greaterdouble//降序排列

d.pop_front();

d.pop_back();

doublesum=accumulate(d.begin(),d.end(),0.0f);

doubleaverage=sum/(double)d.size();//平均分

//将平均分放入到map容器当中

this-M_Speker[*it].M_Score[this-Revolution-1]=average;

GroupScore.insert(make_pair(average,*it));

if(num%6==0)

cout"第"num/6"小组比赛名次如下:"endl;

for(multimapdouble,int,greaterdouble::iteratorit=GroupScore.begin();it!=GroupScore.end();it++)

cout"编号:"it-second"姓名:"this-M_Speker[it-second].M_Name

"成绩:"this-M_Speker[it-second].M_Score[this-Revolution-1]endl;

intcount=0;

for(multimapdouble,int,greaterdouble::iteratorit=GroupScore.begin();it!=GroupScore.end()countit++,count++)

if(this-Revolution==1)

v2.push_back((*it).second);

else

vVictory.push_back((*it).second);

GroupScore.clear();

coutendl;

cout"-------------第"this-Revolution"轮比赛结束-------------"endl;

system("pause");

voidSpeech_Manager::ShowScore()

cout"-------------第"this-Revolution"轮晋级选手信息如下:----------"endl;

vectorint

if(this-Revolution==1)

v=v2;

else

v=vVictory;

for(vectorint::iteratorit=v.begin();it!=v.end();it++)

cout"选手编号:"*it"性别:"this-M_Speker[*it].M_Sex"姓名:"this-M_Speker[*it].M_Name

"得分:"this-M_Speker[*it].M_Score[this-Revolution-1]endl;

coutendl;

system("pause");

system("cls");

this-ShowmMenu();

}

3.3查看往届比赛结果程序

voidSpeech_Manager::ShowRecord()

if(this-File_Is_Empty)

cout"显示失败!文件为空或者不存在!";

else

for(inti=0;ithis-M_Record.size();i++)

//coutthis-M_Record.size();

cout"第"i+1"届比赛结果如下:"endl;

cout"冠军编号:"this-M_Record[i][0]"\t""姓名:"this-M_Record[i][1]

"\t""性别:"this-M_Record[i][2]"\t""得分:"this-M_Record[i][3]endl;

cout"亚军编号:"this-M_Record[i][4]"\t""姓名:"this-M_Record[i][5]

"\t""性别:"this-M_Record[i][6]"\t""得分:"this-M_Record[i][7]endl;

cout"季军编号:"this-M_Record[i][8]"\t""姓名:"this-M_Record[i][9]

"\t""性别:"this-M_Record[i][10]"\t""得分:"this-M_Record[i][11]endl;

system("pause");

system("cls");

}

3.4清空记录

voidSpeech_Manager::ClearRecord()

cout"是否清空文件记录"endl;

cout"1.确定"endl;

cout"2.否认"endl;

intselect=0;

cinselect;

if(select==1)

//确认清空

ofstreamofs("File_Name.txt",ios::trunc);

ofs.close();

this-InitSpeech();

this-CreatSpeaker();

//加载往届记录

this-LoadRecod();

cout"清空成功"endl;

system("pause");

system("cls");

}

3.5等待程序和随机产生姓名程序

oidSpeech_Manager::Wait_Revolution()

for(inti=0;ii++)

cout"Wait";

for(intj=0;jj++)

Sleep(1500);

cout"*";

system("cls");

cout"正在抽签,请等待"endl;

stringSpeech_Manager::CreatName(inta)//a随机次数,a不同导致不同结果。

stringname;

stringNA1[]={"赵","钱","孙","李","周","吴","郑","王","冯","陈","褚","卫","蒋"};

stringNA2[]={"伟","刚","勇","毅","俊","峰","秀","娟","英","华","慧"};

srand((unsigne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论