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++中包含多种变量类型,包括整型、浮点型、字符型、布尔型等。 整型 整型变量用于存储整数,包括有符号和无符号两种类型。常见的整型类型有: short:短整型,占2个字节,取值范围为-3276…

    C 2023年5月22日
    00
  • vscode+qt5+cmake编译调试过程解析

    vscode+qt5+cmake编译调试过程解析 在本篇文章中,我们将给出一个完整的 vscode+qt5+cmake 的编译调试攻略,希望能够帮助大家更好地开发 Qt5 应用程序。 准备工作 在开始之前,我们需要准备以下环境: Visual Studio Code CMake Qt5 其中,我们需要确保 CMake 和 Qt5 已经正确地安装好了。如果您尚…

    C 2023年5月23日
    00
  • 逍遥自在学C语言 | 位运算符的基础用法

    前言 一、人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。 二、构成和表达方式 位运算符是一组用于在二进制数之间进行操作的运算符 运算符 名称 示例 & 位与 a && b | 位或 a | b ^ 位异或 a ^ b ~ 位取反 ~a << …

    C语言 2023年4月17日
    00
  • C语言实现的学生选课系统代码分享

    C语言实现的学生选课系统代码分享 简介 本文将分享一份用C语言实现的学生选课系统代码,该系统实现了学生的选课、退课、成绩查看等功能。通过学习本系统的代码,可以加深对C语法及数据结构的理解。 功能模块 学生选课系统包含了以下几个功能模块: 学生信息管理 课程信息管理 学生选课 学生退课 成绩查询 数据结构 该系统使用了以下数据结构: 结构体:用于存储学生信息、…

    C 2023年5月23日
    00
  • 华硕ROG 冰刃GX501值得买吗?Max-Q版GTX1080冰刃GX501VIK深度图解评测

    华硕ROG 冰刃GX501值得买吗?Max-Q版GTX1080冰刃GX501VIK深度图解评测 介绍 华硕ROG 冰刃GX501是一款拥有Max-Q版GTX1080显卡、Intel酷睿i7处理器和15.6英寸全高清显示器的游戏笔记本电脑。它的外观设计简约大方,采用了轻薄金属机身和纤薄边框的设计,重厚感并不明显。此外,它还有着出色的散热效果,使得游戏过程中不会…

    C 2023年5月22日
    00
  • 使用C++实现全排列算法的方法详解

    下面是“使用C++实现全排列算法的方法详解”的完整攻略。 一、概述 全排列算法,是指对给定的一组数,求出它们的所有排列组合,例如给定[1,2,3],则所有排列组合为[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]。在程序开发中,全排列算法被广泛应用于排序、组合、递归等领域。 二、算法思路 首先,我们需要明确一个概…

    C 2023年5月22日
    00
  • C语言超详细讲解函数栈帧的创建和销毁

    C语言超详细讲解函数栈帧的创建和销毁 什么是函数栈帧? 函数栈帧也叫做栈帧,是存放函数局部变量、参数、函数返回地址等信息的一段内存空间。在函数被调用时,会动态地在栈上分配一段空间来存放函数栈帧,当函数执行完毕后释放这段空间。 函数栈帧的创建过程 当函数被调用时,会通过以下步骤创建函数栈帧: 将函数调用后下一条指令(即函数体里的第一条语句)的地址压入栈中,这里…

    C 2023年5月23日
    00
  • C++基本算法思想之递推算法思想

    C++基本算法思想之递推算法思想 什么是递推算法 递推算法又称为递归算法,是常用于求解问题的一种算法思想。它通过求出问题的一个基本情况,然后通过逐步迭代、递推,从而得到问题的一个规模更大的解。通俗的说,就是将一个大问题分解成多个相对较小的问题,通过依次解决每个小问题最终得到大问题的解。 如何实现递推算法 递推算法可以通过编写递归代码进行实现,也可以通过循环实…

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