演講比賽流程管理系統

演講比賽流程管理系統

比賽規則

  • 學校舉行一場演講比賽,共有12個人參加。比賽共兩輪,第一輪爲淘汰賽,第二輪爲決賽。
  • 比賽方式:分組比賽,每組6個人;選手每次要隨機分組,進行比賽
  • 每名選手都有對應的編號,如 10001 ~ 10012
  • 第一輪分爲兩個小組,每組6個人。 整體按照選手編號進行抽籤後順序演講。
  • 當小組演講完後,淘汰組內排名最後的三個選手,前三名晉級,進入下一輪的比賽。
  • 第二輪爲決賽,前三名勝出
  • 每輪比賽過後需要顯示晉級選手的信息

程序功能

  • 開始演講比賽:完成整屆比賽的流程,每個比賽階段需要給用戶一個提示,用戶按任意鍵後繼續下一個階段
  • 查看往屆記錄:查看之前比賽前三名結果,每次比賽都會記錄到文件中,文件用.csv後綴名保存
  • 清空比賽記錄:將文件中數據清空
  • 退出比賽程序:可以退出當前程序
  • 代碼: speaker.h :
    #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 
    #include "speaker.h"
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    
    //設計演講管理類
    class SpeechManager
    {
    public:
    
        //構造函數
        SpeechManager();
    
        //菜單功能
        void show_Menu();
    
        //退出系統
        void exitSystem();
    
        //析構函數
        ~SpeechManager();
    
        //初始化容器和屬性
        void initSpeech();
    
        //創建12名選手
        void createSpeaker();
    
        //開始比賽  比賽整個流程控制函數
        void startSpeech();
    
        //抽籤
        void speechDraw();
    
        //比賽
        void speechContest();
    
        //顯示得分
        void showScore();
    
        //保存記錄
        void saveRecord();
    
        //讀取記錄
        void loadRecord();
    
        //顯示往屆記錄
        void showRecord();
    
        //清空文件
        void clearRecord();
    
    
        //判斷文件是否爲空
        bool fileIsEmpty;
    
        //存放往屆記錄的容器
        map

    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

    運行效果:在這裏插入圖片描述

     
    最後歡迎大家訪問我的個人博客青蛙聽禪的個人博客

    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章