C++实战项目:基于STL的演讲比赛流程管理系统

目录

1、 演讲比赛程序需求

1.1 比赛规则

1.2 程序功能

1.3 程序效果图:

2、 项目创建

2.1 创建项目

2.2 添加文件

3、 创建管理类

3.1创建文件

3.2 头文件实现

3.3 源文件实现

4、 菜单功能

4.1 添加成员函数

4.2 菜单功能实现

4.3 测试菜单功能

5、 退出功能

5.1 提供功能接口

5.2 实现退出功能

5.3测试功能

6、演讲比赛功能

6.1 功能分析

6.2 创建选手类

6.3 比赛

6.3.1 成员属性添加

6.3.2 初始化属性

6.3.3 创建选手

6.3.4 开始比赛成员函数添加

6.3.5 抽签

6.3.6 开始比赛

6.3.7 显示比赛分数

6.3.8 第二轮比赛

6.4 保存分数

7、 查看记录

7.1 读取记录分数

7.2 查看记录功能

7.3 测试功能

7.4 bug解决

8、 清空记录

8.1 清空记录功能实现

8.2 测试清空

9、 项目整体代码

9.1 SpeechManager.h

9.2 speaker.h

 9.3 mian.cpp

9.4 SpeechManager.cpp


1、 演讲比赛程序需求

 

1.1 比赛规则

  • 学校举行一场演讲比赛,共有12个人参加。比赛共两轮,第一轮为淘汰赛,第二轮为决赛。

  • 比赛方式:分组比赛,每组6个人;选手每次要随机分组,进行比赛

  • 每名选手都有对应的编号,如 10001 ~ 10012

  • 第一轮分为两个小组,每组6个人。 整体按照选手编号进行抽签后顺序演讲。

  • 当小组演讲完后,淘汰组内排名最后的三个选手,前三名晋级,进入下一轮的比赛。

  • 第二轮为决赛,前三名胜出

  • 每轮比赛过后需要显示晋级选手的信息

1.2 程序功能

  • 开始演讲比赛:完成整届比赛的流程,每个比赛阶段需要给用户一个提示,用户按任意键后继续下一个阶段

  • 查看往届记录:查看之前比赛前三名结果,每次比赛都会记录到文件中,文件用.csv后缀名保存

  • 清空比赛记录:将文件中数据清空

  • 退出比赛程序:可以退出当前程序

1.3 程序效果图:

 

2、 项目创建

创建项目步骤如下:

  • 创建新项目

  • 添加文件

2.1 创建项目

  • 打开vs2017后,点击创建新项目,创建新的C++项目

如图:

  • 填写项目名称以及选取项目路径,点击确定生成项目

 

2.2 添加文件

  • 右键源文件,进行添加文件操作

  • 填写文件名称,点击添加

 

  • 生成文件成功,效果如下图

  • 至此,项目已创建完毕

3、 创建管理类

功能描述:

  • 提供菜单界面与用户交互

  • 对演讲比赛流程进行控制

  • 与文件的读写交互

3.1创建文件

  • 在头文件和源文件的文件夹下分别创建speechManager.h 和 speechManager.cpp文件

 

3.2 头文件实现

在speechManager.h中设计管理类

代码如下:

#pragma once
#include<iostream>
using namespace std;
​
//演讲管理类
class SpeechManager
{
public:
​
    //构造函数
    SpeechManager();
​
​
    //析构函数
    ~SpeechManager();
};

3.3 源文件实现

在speechManager.cpp中将构造和析构函数空实现补全

#pragma once
#include<iostream>
using namespace std;
​
//演讲管理类
class SpeechManager
{
public:
​
    //构造函数
    SpeechManager();
​
​
    //析构函数
    ~SpeechManager();
};
  • 至此演讲管理类以创建完毕

4、 菜单功能

功能描述:与用户的沟通界面

4.1 添加成员函数

在管理类speechManager.h中添加成员函数 void show_Menu();

 

4.2 菜单功能实现

  • 在管理类speechManager.cpp中实现 show_Menu()函数

void SpeechManager::show_Menu()
{
	cout << "********************************************" << endl;
	cout << "*************  欢迎参加演讲比赛 ************" << endl;
	cout << "*************  1.开始演讲比赛  *************" << endl;
	cout << "*************  2.查看往届记录  *************" << endl;
	cout << "*************  3.清空比赛记录  *************" << endl;
	cout << "*************  0.退出比赛程序  *************" << endl;
	cout << "********************************************" << endl;
	cout << endl;
}

4.3 测试菜单功能

  • 在演讲比赛流程管理系统.cpp中测试菜单功能

代码:

#include<iostream>
using namespace std;
#include "speechManager.h"
​
int main() {
​
    SpeechManager sm;
​
    sm.show_Menu();
​
    system("pause");
​
    return 0;
}
  • 运行效果如图:

  • 菜单界面搭建完毕

5、 退出功能

5.1 提供功能接口

  • 在main函数中提供分支选择,提供每个功能接口

代码:

int main() {
​
    SpeechManager sm;
​
    int choice = 0; //用来存储用户的选项
​
    while (true)
    {
        sm.show_Menu();
​
        cout << "请输入您的选择: " << endl;
        cin >> choice; // 接受用户的选项
​
        switch (choice)
        {
        case 1:  //开始比赛
            break;
        case 2:  //查看记录
            break;
        case 3:  //清空记录
            break;
        case 0:  //退出系统
            break;
        default:
            system("cls"); //清屏
            break;
        }
    }
​
    system("pause");
​
    return 0;
}

5.2 实现退出功能

在speechManager.h中提供退出系统的成员函数 void exitSystem();

在speechManager.cpp中提供具体的功能实现

void SpeechManager::exitSystem()
{
    cout << "欢迎下次使用" << endl;
    system("pause");
    exit(0);
}

5.3测试功能

在main函数分支 0 选项中,调用退出程序的接口

 运行测试效果如图:

6、演讲比赛功能

6.1 功能分析

比赛流程分析:

抽签 → 开始演讲比赛 → 显示第一轮比赛结果 →

抽签 → 开始演讲比赛 → 显示前三名结果 → 保存分数

6.2 创建选手类

  • 选手类中的属性包含:选手姓名、分数

  • 头文件中创建 speaker.h文件,并添加代码:

#pragma once
#include<iostream>
using namespace std;
​
class Speaker
{
public:
    string m_Name;  //姓名
    double m_Score[2]; //分数  最多有两轮得分
};

6.3 比赛

6.3.1 成员属性添加
  • 在speechManager.h中添加属性

    //比赛选手 容器  12人
    vector<int>v1;
​
    //第一轮晋级容器  6人
    vector<int>v2;
​
    //胜利前三名容器  3人
    vector<int>vVictory;
​
    //存放编号 以及对应的 具体选手 容器
    map<int, Speaker> m_Speaker;
6.3.2 初始化属性
  • 在speechManager.h中提供开始比赛的的成员函数 void initSpeech();

//初始化属性
	void initSpeech();
  • 在speechManager.cpp中实现void initSpeech();

void SpeechManager::initSpeech()
{
	//容器保证为空
	this->v1.clear();  
	this->v2.clear();
	this->vVictory.clear();
	this->m_Speaker.clear();
	//初始化比赛轮数
	this->m_Index = 1;
}
  • SpeechManager构造函数中调用void initSpeech();

SpeechManager::SpeechManager()
{
	//初始化属性
	this->initSpeech();
}

6.3.3 创建选手
  • 在speechManager.h中提供开始比赛的的成员函数 void createSpeaker();


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值