版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- PHP函数面试题及详细答案(实战版)
- 2026年全国高校辅导员素质能力大赛笔试测试卷及参考答案
- PETS三级考试完整题型说明、真题模拟及详细答案解析
- 地铁车站导向标识更新方案
- 2026全国演出经济人考试题目及答案(演出市场政策与经济实务)
- 平衡康复训练跌倒风险动态防控方案共识
- 2026学年吉林省磐石市四年级语文期末自我评估难点突破题(附答案)详细答案和解析
- Oracle数据库高频面试题及详细答案(实战版)
- OC运维工程师笔试真题及详细答案(真实企业版)
- 护士岗位职责培训考试题及答案
- 急性上消化道出血的应急预案演练脚本(3篇)
- 2026年云南公安局团委干事招聘考试练习试卷(含答案)
- 2026年江苏省行政执法人员执法证考试题库及答案
- 新疆交通投资(集团)有限责任公司2026年秋季校园招聘(767人)笔试参考题库及答案详解
- 马工程《教育学原理》(第二版)完整版教学大纲(官方对标)
- 误吸的预防与管理策略研究-蓝色-教育课件
- 服装制作工艺SOP
- 彩钢板围挡施工方案
- 工程项目安全质量交底记录表模板
- 幼儿园大班音乐欣赏教案《我是猫》
- 2026年糖尿病专科护士培训计划
评论
0/150
提交评论