C++演讲比赛管理系统实现流程实例

C++演讲比赛管理系统实现流程实例

系统需求

演讲比赛管理系统要求具有以下功能:

  1. 实现学生信息的录入:包括学号、姓名、年龄等信息。
  2. 实现教师信息的录入:包括工号、姓名、年龄、职称等信息。
  3. 实现选手报名:包括姓名、年龄、比赛成绩等信息。
  4. 实现比赛的评分:包括裁判打分、选手得分等信息。
  5. 实现比赛成绩的排序和输出:包括选手名次、得分等信息。

类的设计

根据系统需求,我们需要设计如下几个类:

学生类(Student)

class Student {
public:
    std::string id;    // 学号
    std::string name;  // 姓名
    int age;           // 年龄
    // 构造函数
    Student (std::string i, std::string n, int a) : id(i), name(n), age(a) {}
};

教师类(Teacher)

class Teacher {
public:
    std::string id;         // 工号
    std::string name;       // 姓名
    int age;                // 年龄
    std::string profession; // 职称
    // 构造函数
    Teacher (std::string i, std::string n, int a, std::string p) : id(i), name(n), age(a), profession(p) {}
};

选手类(Player)

class Player {
public:
    std::string name;     // 姓名
    int age;              // 年龄
    int score;            // 成绩
    // 构造函数
    Player (std::string n, int a) : name(n), age(a) {}
};

裁判类(Referee)

class Referee {
public:
    std::string name;        // 姓名
    int score;               // 打分
    // 构造函数
    Referee (std::string n) : name(n), score(0) {}
};

比赛类(Competition)

class Competition {
public:
    std::vector<Referee> referees; // 裁判列表
    std::vector<Player> players;   // 选手列表
    // 添加裁判
    void addReferee (Referee referee) {
        referees.push_back(referee);
    }
    // 添加选手
    void addPlayer (Player player) {
        players.push_back(player);
    }
    // 获取选手得分
    int getPlayerScore (Player player) {
        int sum = 0;
        for (auto r : referees) {
            sum += r.score;
        }
        player.score = sum / referees.size();
        return player.score;
    }
    // 排序
    void sortPlayers () {
        std::sort(players.begin(), players.end(), [](Player p1, Player p2){ return p1.score > p2.score; });
        int rank = 1;
        for (auto p : players) {
            std::cout << "第" << rank << "名:" << p.name << " 得分:" << p.score << std::endl;
            rank++;
        }
    }
};

系统实现流程

系统的实现流程如下:

  1. 编写程序主体,包括类的定义和相关函数的实现等。
  2. 在 main 函数中,定义学生、教师、裁判和选手等对象,并进行信息录入。
  3. 定义比赛对象,添加裁判和选手列表。
  4. 根据选手报名信息,进行比赛评分,并计算选手得分。
  5. 实现排序功能,将选手按得分降序排列,并输出名次和得分信息。

示例说明

示例1:录入信息并进行比赛评分

// 定义学生、教师、裁判和选手等对象,并进行信息录入
Student s1("1001", "张三", 18);
Teacher t1("2001", "李四", 30, "高级讲师");
Referee r1("王五");
Player p1("赵六", 20);
// 定义比赛对象,添加裁判和选手列表
Competition c;
c.addReferee(r1);
c.addPlayer(p1);
// 进行比赛评分,并计算选手得分
for (auto& r : c.referees) {
    r.score = rand() % 101;
}
int score = c.getPlayerScore(p1);
std::cout << "选手 " << p1.name << " 的得分为:" << score << std::endl;

输出:

选手 赵六 的得分为:42

示例2:比赛成绩排序和输出

// 定义学生、教师、裁判和选手等对象,并进行信息录入
Student s1("1001", "张三", 18);
Student s2("1002", "李四", 19);
Student s3("1003", "王五", 20);
Teacher t1("2001", "张老师", 30, "高级讲师");
Referee r1("张裁判");
Referee r2("李裁判");
Referee r3("王裁判");
Player p1("赵六", 20);
Player p2("钱七", 21);
Player p3("孙八", 22);
// 定义比赛对象,添加裁判和选手列表
Competition c;
c.addReferee(r1);
c.addReferee(r2);
c.addReferee(r3);
c.addPlayer(p1);
c.addPlayer(p2);
c.addPlayer(p3);
// 进行比赛评分,并计算选手得分
for (auto& p : c.players) {
    for (auto& r : c.referees) {
        r.score = rand() % 101;
    }
    int score = c.getPlayerScore(p);
    std::cout << "选手 " << p.name << " 的得分为:" << score << std::endl;
}
// 排序
c.sortPlayers();

输出:

选手 赵六 的得分为:16
选手 钱七 的得分为:48
选手 孙八 的得分为:41
第1名:钱七 得分:48
第2名:孙八 得分:41
第3名:赵六 得分:16

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++演讲比赛管理系统实现流程实例 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C语言不恰当的指针声明

    请允许我详细讲解一下“C语言不恰当的指针声明”的完整使用攻略。 什么是指针? 在C语言中,指针是一个非常重要的概念,它允许我们在程序执行中动态地修改变量的值,是C语言中的底层机制。指针本身实际上是一个变量,其存储的是某个变量的地址,通过对指针进行操作,可以间接地操作变量本身。 C语言不恰当的指针声明 在C语言中,指针声明必须要明确指明指针指向的数据类型,否则…

    C 2023年5月9日
    00
  • C/C++实现HTTP协议解析的示例代码

    C/C++实现HTTP协议解析的示例代码的完整攻略如下: 一、准备工作 在开始编写HTTP协议解析代码前,需要安装以下工具:- C/C++编译器:例如gcc、Visual Studio等。- cURL库:用于发送HTTP请求和接收HTTP响应。 二、HTTP协议解析 1. TCP连接 在使用HTTP协议进行通信时,首先需要建立TCP连接。可以使用C/C++的…

    C 2023年5月24日
    00
  • C语言实现随机抽奖程序

    实现随机抽奖程序的过程中需要使用C语言中的随机数生成函数和数组等知识点。下面就是实现随机抽奖程序的详细攻略: 步骤一:包含头文件 在程序开始之前,需要先包含头文件<stdio.h>和<stdlib.h>。其中<stdio.h>包含了标准输入输出函数,<stdlib.h>包含了随机数生成函数rand和数组函数bs…

    C 2023年5月23日
    00
  • C++实现简单信息管理系统

    下面是C++实现简单信息管理系统的完整攻略: 1. 确定需求 在开发信息管理系统之前,我们需要确定所需功能。例如,这个信息管理系统需要哪些模块、哪些操作、需要保存哪些信息等等。只有确定了这些需求之后,才能知道如何实现系统。 2. 设计系统框架 在确定了需求之后,可以开始设计系统框架。系统框架包括模块划分、数据结构设计等。可以使用流程图、UML图等工具来完成系…

    C 2023年5月23日
    00
  • C++三色球问题描述与算法分析

    下面是详细讲解C++三色球问题的完整攻略: 问题描述 假设有n个球,其中有红、黄、蓝三种颜色的球,每种颜色至少有一个球。将这n个球排成一列,并记下它们的颜色序列。请问,有多少种不同的颜色序列方式? 算法分析 可以使用递归算法来解决这个问题。 我们可以把球分为两个部分,第一个和剩下的n-1个。那么就可以先求出剩下的n-1个球的颜色排序,然后将第一个球插入到所有…

    C 2023年5月22日
    00
  • Canal监听MySQL的实现步骤

    Canal是一个基于MySQL数据库增量日志解析并监听的系统,可以实时获取MySQL数据库中的变更数据并进行处理。下面我们来详细介绍Canal监听MySQL的实现步骤: 步骤一:安装Canal服务端 Canal服务端可以使用官方发布的下载包进行安装,也可以使用Docker镜像进行部署。 以下是使用官方下载包进行安装配置的步骤: 下载Canal的发布版本,解压…

    C 2023年5月23日
    00
  • Lua教程(六):编译执行与错误

    Lua教程(六):编译执行与错误 Lua是一门解释型脚本语言,它的源代码需要经过编译才能在计算机上运行。本篇教程将介绍如何编译和执行Lua代码,以及如何处理代码中的错误。 编译执行Lua代码 Lua交互模式 在安装了Lua解释器后,打开终端或命令行,输入lua命令即可进入Lua交互模式。在交互模式下,可以逐行输入Lua代码并立即执行,也可以使用dofile或…

    C 2023年5月23日
    00
  • Python实现打砖块小游戏代码实例

    Python实现打砖块小游戏代码实例 1. 简介 本文将介绍如何使用Python编写一个简单的打砖块小游戏代码,该代码使用Pygame库实现。 2. 环境搭建 在开始编写代码之前,我们需要安装Pygame库。这可以通过以下命令在终端中执行来安装: pip install pygame 3. 初始化 我们首先需要导入所需的库和模块,例如: import sys…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部