演講比賽流程管理系統
比賽規則
- 學校舉行一場演講比賽,共有12個人參加。比賽共兩輪,第一輪爲淘汰賽,第二輪爲決賽。
- 比賽方式:分組比賽,每組6個人;選手每次要隨機分組,進行比賽
- 每名選手都有對應的編號,如 10001 ~ 10012
- 第一輪分爲兩個小組,每組6個人。 整體按照選手編號進行抽籤後順序演講。
- 當小組演講完後,淘汰組內排名最後的三個選手,前三名晉級,進入下一輪的比賽。
- 第二輪爲決賽,前三名勝出
- 每輪比賽過後需要顯示晉級選手的信息
程序功能
#pragma once
#include
using namespace std;
//選手類
class Speaker
{
public:
string m_Name; //姓名
double m_Score[2]; //分數 最多有兩輪得分
};
speechManager.h :
#pragma once
#include
using namespace std;
#include
#include
speechManager.cpp :
#include "speechManager.h"
//構造函數
SpeechManager::SpeechManager()
{
//初始化容器和屬性
this->initSpeech();
//創建12名選手
this->createSpeaker();
//加載往屆記錄
this->loadRecord();
}
//菜單功能
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::exitSystem()
{
cout << "歡迎下次使用" << endl;
system("pause");
exit(0);
}
void SpeechManager::initSpeech()
{
//容器都置空
this->v1.clear();
this->v2.clear();
this->vVictory.clear();
this->m_Speaker.clear();
//初始化比賽輪數
this->m_Index = 1;
//將記錄的容器 也清空
this->m_Record.clear();
}
//創建12名選手
void SpeechManager::createSpeaker()
{
string nameSeed = "ABCDEFGHIJKL";
for (int i = 0; i < nameSeed.size(); i++)
{
string name = "選手";
name += nameSeed[i];
//創建具體選手
Speaker sp;
sp.m_Name = name;
for (int j = 0; j < 2; j++)
{
sp.m_Score[j] = 0;
}
//創建選手編號 並且放入到v1容器中
this->v1.push_back(i + 10001);
//選手編號以及對應選手 放入到map容器中
this->m_Speaker.insert(make_pair(i + 10001, sp));
}
}
//開始比賽 比賽整個流程控制函數
void SpeechManager::startSpeech()
{
//第一輪開始比賽
//1、抽籤
this->speechDraw();
//2、比賽
this->speechContest();
//3、顯示晉級結果
this->showScore();
//第二輪開始比賽
this->m_Index++;
//1、抽籤
this->speechDraw();
//2、比賽
speechContest();
//3、顯示最終結果
this->showScore();
//4、保存分數到文件中
this->saveRecord();
//重置比賽 ,獲取記錄
//初始化容器和屬性
this->initSpeech();
//創建12名選手
this->createSpeaker();
//加載往屆記錄
this->loadRecord();
cout << "本屆比賽完畢!" << endl;
system("pause");
system("cls");
}
//抽籤
void SpeechManager::speechDraw()
{
cout << "第 << " << this->m_Index << " >> 輪比賽選手正在抽籤" << endl;
cout << "--------------------------" << endl;
cout << "抽籤後演講順序如下: " << endl;
if (this->m_Index == 1)
{
//第一輪比賽
random_shuffle(v1.begin(), v1.end());
for (vector::iterator it = v1.begin(); it != v1.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
else
{
//第二輪比賽
random_shuffle(v2.begin(), v2.end());
for (vector::iterator it = v2.begin(); it != v2.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
cout << "--------------------------" << endl;
system("pause");
cout << endl;
}
//比賽
void SpeechManager::speechContest()
{
cout << "----------- 第" << this->m_Index << " 輪比賽正式開始 --------------" << endl;
//準備臨時容器 存放小組成績
multimap
演講比賽流程管理系統.cpp :
#include
using namespace std;
#include "speechManager.h"
#include
#include
int main()
{
//隨機數種子
srand((unsigned int)time(NULL));
//創建管理類對象
SpeechManager sm;
//測試12名選手創建
//for (map
運行效果:
最後歡迎大家訪問我的個人博客青蛙聽禪的個人博客