c++ 入门 演讲比赛 需求 整理
课堂笔记链接:https://pan.baidu.com/s/1V7ouCTWPwpqGGFxirCVnTA
提取码:iczm
黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难
https://www.bilibili.com/video/BV1et411b73Z?p=264
基于STL的演讲比赛流程管理系统:
要求分析:
选手个数为12个
选手有编号 10001 – 10012,有名字,分别对应ABCDEFGHIJKL
选手会参加两轮比赛,分别为初赛和决赛,需要记录每次比赛的得分
比赛流程:
1.将12个选手随机分为两组,每组6人
2.每6人一组的选手抽签,然后按照顺序演讲
3.每位初赛选手演讲,十名评委,分别给每一位初赛选手打分
4.去掉最高分,去掉最低分,求得平均分为这位初赛选手的最后得分
5.每组中统计分数,留下前三名,并且显示
6.剩下的人员,开始决赛
7.每位决赛选手演讲,十名评委,分别给每一位决赛选手打分
8.去掉最高分,去掉最低分,求得平均分为这位决赛选手的最后得分
9.统计分数,留下前三名,并且显示
10.比赛结束
评委给分是随机给的
抽象出类来:
选手类变量
1.编号
2.名字
3.初赛得分
4.决赛得分
比赛类变量
1.选手容器 12
2.初赛或决赛变量
3.分组容器A 6
分组容器B 6
4. 十个评委的评分 容器
比赛类动作
参考代码
//菜单功能
void SpeechManager::show_Menu()
{
cout << "********************************************" << endl;
cout << "************* 欢迎参加演讲比赛 ************" << endl;
cout << "************* 1.开始演讲比赛 *************" << endl;
cout << "************* 2.查看往届记录 *************" << endl;
cout << "************* 3.清空比赛记录 *************" << endl;
cout << "************* 0.退出比赛程序 *************" << endl;
cout << "********************************************" << endl;
cout << endl;
}
文件操作
//保存记录
void SpeechManager::saveRecord()
{
ofstream ofs;
ofs.open("speech.csv", ios::out | ios::app); // 用追加的方式写文件
//将每个选手数据 写入到文件中
for (vector<int>::iterator it = vVictory.begin(); it != vVictory.end(); it++)
{
ofs << *it << "," << this->m_Speaker[*it].m_Score[1] << ",";
}
ofs << endl;
//关闭
ofs.close();
cout << "记录已经保存" << endl;
//更改文件不为空状态
this->fileIsEmpty = false;
}
111
33
1.1 比赛规则
- 学校举行一场演讲比赛,共有12个人参加。比赛共两轮,第一轮为淘汰赛,第二轮为决赛。
- 比赛方式:分组比赛,每组6个人;选手每次要随机分组,进行比赛
- 每名选手都有对应的编号,如 10001 ~ 10012
- 第一轮分为两个小组,每组6个人。 整体按照选手编号进行抽签后顺序演讲。
- 当小组演讲完后,淘汰组内排名最后的三个选手,前三名晋级,进入下一轮的比赛。
- 第二轮为决赛,前三名胜出
- 每轮比赛过后需要显示晋级选手的信息
1.2 程序功能
- 开始演讲比赛:完成整届比赛的流程,每个比赛阶段需要给用户一个提示,用户按任意键后继续下一个阶段
- 查看往届记录:查看之前比赛前三名结果,每次比赛都会记录到文件中,文件用.csv后缀名保存
- 清空比赛记录:将文件中数据清空
- 退出比赛程序:可以退出当前程序
3、 创建管理类
speechManager.h 和 speechManager.cpp文件