#include"speechManager.h"
#include"speaker.h"
SpeechManager::SpeechManager()
{
initSpeech();
creatSpeaker();
loadScore();
}
void SpeechManager::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::exit()
{
std::cout << "exit" << std::endl;
}
void SpeechManager::initSpeech()
{
v1.clear();
v2.clear();
vWin.clear();
m.clear();
mRecord.clear();
index = 1;
}
void SpeechManager::creatSpeaker()
{
std::string nameSeed = "ABCDEFGHIJKL";
for (int i = 0; i < 12; i++)
{
std::string name = "speaker";
name += nameSeed[i];
Speaker sp;
sp.name = name;
for (int j = 0; j < 2; j++)
{
sp.score[j] = 0;
}
v1.push_back(i + 10001);
m.insert(std::make_pair(i + 10001, sp));
}
}
void SpeechManager::stareSpeech()
{
for (; index <= 2; index++)
{
drawSpeech();
speechScore();
showScore();
}
saveScore();
initSpeech();
creatSpeaker();
loadScore();
}
void SpeechManager::drawSpeech()
{
std::cout << "round" << index << " draw" << std::endl;
std::vector<int> vDraw;
if (index == 1)
{
vDraw = v1;
}
else
{
vDraw = v2;
}
random_shuffle(vDraw.begin(), vDraw.end());
for (std::vector<int>::iterator it = vDraw.begin(); it != vDraw.end(); it++)
{
std::cout << *it << std::endl;
}
system("pause");
system("cls");
}
void SpeechManager::speechScore()
{
std::cout << "round" << index << " score" << std::endl;
std::vector<int> vScore;
std::multimap<double, int, std::greater<double>> group;
int num = 0;
if (index == 1)
{
vScore = v1;
}
else
{
vScore = v2;
}
for (std::vector<int>::iterator it = vScore.begin(); it != vScore.end(); it++)
{
std::deque<double> d;
for (int i = 0; i < 10; i++)
{
double sc = (rand() % 601 + 400) / 10.0f;
d.push_back(sc);
}
sort(d.begin(), d.end());
d.pop_front();
d.pop_back();
double score = (double)accumulate(d.begin(), d.end(), 0.0f) / (double)d.size();
m[*it].score[index - 1] = score;
group.insert(std::make_pair(score, *it));
num++;
if (!(num % 6))
{
std::cout << "group" << num / 6 << std::endl;
for (std::multimap<double, int, std::greater<int>>::iterator it = group.begin(); it!= group.end(); it++)
{
std::cout << "编号: " << it->second << " 姓名: " << this->m[it -> second].name << " 成绩: "
<< this->m[it->second].score[this->index - 1] <<
std::endl;
}
int count = 0;
for (std::multimap<double, int>::iterator mit = group.begin(); mit != group.end() && count < 3; mit++, count++)
{
std::vector<int>* vNext;
if (index == 1)
{
vNext = &v2;
}
else
{
vNext = &vWin;
}
vNext->push_back(mit->second);
}
group.clear();
}
}
system("pause");
system("cls");
}
void SpeechManager::showScore()
{
std::vector<int> vShow;
if (index == 1)
{
vShow = v2;
}
else
{
vShow = vWin;
}
for (std::vector<int>::iterator it = vShow.begin(); it != vShow.end(); it++)
{
std::cout << *it << m[*it].name << m[*it].score[index - 1] << std::endl;
}
system("pause");
system("cls");
}
void SpeechManager::saveScore()
{
std::ofstream ofs("speech.csv", std::ios::out | std::ios::app);
for (std::vector<int>::iterator it = vWin.begin(); it != vWin.end(); it++)
{
ofs << *it << "," << m[*it].name << "," << m[*it].score[1] << ",";
}
ofs << std::endl;
ofs.close();
fileEmpty = false;
}
void SpeechManager::loadScore()
{
std::ifstream ifs("speech.csv", std::ios::in);
if (!ifs.is_open())
{
std::cout << "no file" << std::endl;
ifs.close();
fileEmpty = true;
return;
}
char ch;
ifs >> ch;
if (ifs.eof())
{
std::cout << "empty" << std::endl;
ifs.close();
fileEmpty = true;
return;
}
ifs.putback(ch);
fileEmpty = false;
std::string data;
int num = 1;
while (ifs >> data)
{
std::vector<std::string> vDate;
int pos = 0;
int start = 0;
while (true)
{
pos = data.find(",", start);
if (pos == -1)
{
break;
}
vDate.push_back(data.substr(start, pos - start));
start = pos + 1;
}
mRecord.insert(make_pair(num, vDate));
num++;
}
ifs.close();
}
void SpeechManager::showRecord()
{
if (fileEmpty)
{
std::cout << "no record" << std::endl;
return;
}
for (std::map<int, std::vector<std::string>>::iterator it = mRecord.begin(); it != mRecord.end(); it++)
{
std::cout << it->first << " ";
for (int i = 1; i <= 3; i++)
{
std::cout << "no." << i << " " << it->second[3 * (i - 1)] << " " << it->second[3 * (i - 1) + 1] << " " << it->second[3 * (i - 1) + 2] << " ";
}
std::cout << std::endl;
}
system("pause");
system("cls");
}
void SpeechManager::clearRecord()
{
std::cout << "yes or no" << std::endl << "1 yes 0 no" << std::endl;
int select = 0;
do
{
std::cin >> select;
if (select == 1)
{
std::ofstream ofs("speech.csv", std::ios::trunc);
ofs.close();
initSpeech();
creatSpeaker();
loadScore();
std::cout << "clear successfully" << std::endl;
break;
}
} while (select);
system("pause");
system("cls");
}
SpeechManager::~SpeechManager()
{
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源介绍】 基于C++实现的演讲管理系统源码+sln解决方案.zip基于C++实现的演讲管理系统源码+sln解决方案.zip基于C++实现的演讲管理系统源码+sln解决方案.zip基于C++实现的演讲管理系统源码+sln解决方案.zip基于C++实现的演讲管理系统源码+sln解决方案.zip基于C++实现的演讲管理系统源码+sln解决方案.zip基于C++实现的演讲管理系统源码+sln解决方案.zip基于C++实现的演讲管理系统源码+sln解决方案.zip 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 欢迎下载交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于C++实现的演讲管理系统源码+sln解决方案.zip (25个子文件)
speechManager
x64
Debug
speechManager2.pdb 4.82MB
speechManager2.exe 315KB
speechManager2
speechManager.cpp 6KB
speechManager2.vcxproj.user 168B
speechManager2.vcxproj.filters 1KB
speechManager.h 685B
x64
Debug
vc143.pdb 668KB
work.obj 84KB
speechManager2.log 1KB
speechManager2.tlog
CL.write.1.tlog 2KB
CL.command.1.tlog 1KB
link.command.1.tlog 1KB
speechManager2.lastbuildstate 158B
link.read.1.tlog 3KB
link.write.1.tlog 660B
CL.read.1.tlog 28KB
speechManager2.ilk 2.41MB
vc143.idb 259KB
speechManager.obj 1.77MB
speechManager2.exe.recipe 300B
speaker.h 122B
work.cpp 514B
speechManager2.vcxproj 7KB
speech.csv 0B
speechManager2.sln 1KB
共 25 条
- 1
资源评论
onnx
- 粉丝: 1w+
- 资源: 5627
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- HTML5实现好看的骑马俱乐部网站源码.zip
- HTML5实现好看的企业邮箱业务网站模板.zip
- HTML5实现好看的汽车改装维修车行网站源码2.zip
- HTML5实现好看的汽车改装维修车行网站源码.zip
- HTML5实现好看的汽车经销商网页源码.zip
- HTML5实现好看的汽车清洗美容公司网站源码.zip
- HTML5实现好看的汽车清洗美容连锁网站源码.zip
- HTML5实现好看的汽车美容洗车店网站模板.zip
- HTML5实现好看的汽车运输公司网站源码.zip
- HTML5实现好看的汽车自驾游网站源码.zip
- HTML5实现好看的汽车修理厂网站源码.zip
- 电动汽车蒙特卡洛模拟一充二充三充,快充慢充蒙特卡洛模拟日充电功率 可自行修改日充电数量的比例,可自行修改快充慢充功率,所见即所得,生成功率预测曲线,功率需求上下限曲线,matlab程序有注释
- HTML5实现好看的浅色清爽美食网站源码.zip
- HTML5实现好看的潜水运动响应式网站源码.zip
- HTML5实现好看的汽车租赁平台网页模板.zip
- HTML5实现好看的清爽博客自媒体网站模板.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功