一个简易演讲比赛系统设计(C++详解)

1.1比赛规则
·学校举行一场演讲比赛,共有12个人参加。比赛共两轮,第一轮为淘汰赛,第二轮为决赛。
·每名选手都有对应的编号,如10001~10012
·比赛方式:分组比赛,每组6个人;
·第一轮分为两个小组,整体按照选手编号进行抽签后顺序演讲。
·十个评委分别给每名选手打分,去除最高分和最低分,求的平均分为本轮选手的成绩·当小组演讲完后,淘汰组内排名最后的三个选手,前三名晋级,进入下一轮的比赛。
·第二轮为决赛,前三名胜出
·每轮比赛过后需要显示晋级选手的信息

·开始演讲比赛:完成整届比赛的流程,每个比寒阶段需要给用户一个提,用户按任意键后继续下一个阶段
·查看往届记录:查看之前比赛前三名结果,每次比赛都会记录到文件中,文件用.csv后缀名保存
·清空比寒记录:将文件中数据清空。退出比赛程序:可以退出当前程序

初步顺序:
1.建立一个管理类的头文件和cpp文件
包括构造函数,析构函数,展示函数
2.建立主函数文件,测试管理文件中的函数
3.在主函数建立switch,在管理文件中写退出功能

4.建立一个选手的.h文件,里面包含选手类
5.在管理的文件中添加4个容器,分别存放比赛选手,第一轮晋级的选手,获胜的选手,以及最后带编号存放到文件excel中的选手。并写一个初始化函数对这些容器进行清零初始化,还要将轮数初始化为1,记得把初始化函数写到构造函数中
6.在管理中写一个创建选手的函数,添加选手姓名,分数,并且在第一个容器中插入12名选手的编号,在map容器中添加选手编号和类,最后在构造函数中调用这个接口,进行测试

7.在管理中写一个开始比赛的函数,在函数中依次 抽签–比赛–显示结果 抽签单独再设计一个函数,回头在比赛函数中调用

8.提示第几轮比赛的开始,创建容器,根据比赛轮数的不同将该容器指向v1或者v2,遍历该容器,并在遍历中创建双头数组容器deque,用于给选手打分–sort排序(难)–去掉最高分和最低分–accumulate获取总分–获取平均分–打印输出–将平均分放到map容器中(难)–创建一个按照降序排列的map容器,用来打印小组名次并取出前三名放到v2或者victory容器中,最后把它清空

9.最后记得加入暂停清空
演讲比赛系统主文件.cpp文件:

#include<iostream>
using namespace std;
#include<string>
#include"speakerManager.h"
#include"speaker.h"
#include<ctime>

int main ()
{
	srand((unsigned int)time(NULL));//!不要把time和null的顺序写错了!
	speakerManager sp;
	
	/*for(map<int,speaker>::iterator it=sp.m_speaker.begin();it!=sp.m_speaker.end();it++)
	{
		cout<<"选手编号:"<<it->first<<"  "<<"选手姓名:"<<it->second.name<<"   "<<"选手分数"<<it->second.score[1]<<endl;;
	}*/
	
	int choice =0;


	while(true)
	{
		sp.showMeu();
		cout<<"请输入您的选择:";
		cin>>choice;


		switch(choice)
		{
		case 1://开始比赛
			sp.startSpeech();
			break;
		case 2://查看比赛记录
			sp.ShowRecord();
			break;
		case 3://清空比赛记录
			sp.clearRecord();
			break;
		case 0:
			sp.Exit();
			break;
		default:
			system("cls");
			break;
		}
	
	}
	

	system("pause");
	return 0;
}

speakerManager.h文件

#pragma once
#include<iostream>
using namespace std;
#include"speaker.h"
#include<vector>
#include<map>

class speakerManager
{
public:
	//四个容器
	vector<int>v1;
	vector<int>v2;
	vector<int>victory;
	map<int,speaker>m_speaker;
	speakerManager();

	//比赛轮数
	int index;
	
	void init();
	void showMeu();
	void createSpeaker();
	void Exit();
	voi
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值