:endl;
system("pause");
system("cls");
}
至此本案例结束!
源代码及文件结构
├─头文件
│ speaker.h
│ speechManager.h
│
├─源文件
│ main.cpp
│ speechManager.cpp
1. 演讲者类 - Speaker
speaker.h
#pragma once
#include <iostream>
class Speaker
{
public:
std::string m_Name; //选手姓名
double m_Score[2]; //选手分数,至多存放两轮
};
2. 演讲比赛管理类 - SpeechManager
speechManager.h
#pragma once
#include <iostream>
#include <vector>
#include <map>
#include <deque>
#include <algorithm>
#include <numeric>
#include <functional>
#include <fstream>
#include "speaker.h"
class SpeechManager
{
public:
//容器1: 存放12位选手的编号
std::vector<int> v1;
//容器2: 存放6位选手的编号
std::vector<int> v2;
//容器3: 存放3位选手的编号
std::vector<int> v_Victory;
//容器4: 存放Speaker的编号和对应的选手
std::map<int, Speaker> m_Speaker;
//文件为空的标志
bool fileIsEmpty;
//往届记录
std::map<int, std::vector<std::string>> m_Record;
//比赛轮数
int m_Round;
//构造函数
SpeechManager();
//菜单界面
void show_Menu();
//初始化容器
void initSpeaker();
//创建选手
void createSpeaker();
//抽签
void speechDraw();
//打分
void speechContest();
//显示分数
void showScore();
//保存比赛分数
void saveRecord();
//读取记录
void loadRecord();
//读取往届信息
void showRecord();
//开始比赛
void startSpeech();
//清空文件
void clearRecord();
//退出界面
void exitSystem();
//析构函数
~SpeechManager();
};
speechManager.cpp
#include "speechManager.h"
SpeechManager::SpeechManager()
{
//初始化
this->initSpeaker();
//创建选手
this->createSpeaker();
//查看往届记录
this->loadRecord();
}
void SpeechManager::show_Menu()
{
std::cout << "********************************************" << std::endl;
std::cout << "************* 欢迎参加演讲比赛 ************" << std::endl;
std::cout << "************* 1.开始演讲比赛 *************" << std::endl;
std::cout << "************* 2.查看往届记录 *************" << std::endl;
std::cout << "************* 3.清空比赛记录 *************" << std::endl;
std::cout << "************* 0.退出比赛程序 *************" << std::endl;
std::cout << "********************************************" << std::endl;
std::cout << std::endl;
}
void SpeechManager::initSpeaker()
{
//清空容器
this->v1.clear();
this->v2.clear();
this->v_Victory.clear();
this->m_Speaker.clear();
this->m_Record.clear();
//第一轮比赛
this->m_Round = 1;
}
void SpeechManager::exitSystem()
{
std::cout << "~欢迎下次使用~" << std::endl;
system("pause");
exit(0);
}
void SpeechManager::createSpeaker()
{
std::string nameSeed = "ABCDEFGHIJKL";
for (int i = 0; i < nameSeed.size(); i++)
{
//初始化选手中的属性
Speaker sp;
sp.m_Name = "选手";
sp.m_Name += nameSeed[i];
for (int j = 0; j < 2; j++)
{
sp.m_Score[j] = 0;
}
//将初始化后的选手放入容器中
this->v1.push_back(i + 1000);
this->m_Speaker.insert(std::pair<int, Speaker>(i + 1000, sp));
}
}
void SpeechManager::speechDraw()
{
std::cout << "第" <<