C++演讲比赛管理系统实现流程实例
系统需求
演讲比赛管理系统要求具有以下功能:
- 实现学生信息的录入:包括学号、姓名、年龄等信息。
- 实现教师信息的录入:包括工号、姓名、年龄、职称等信息。
- 实现选手报名:包括姓名、年龄、比赛成绩等信息。
- 实现比赛的评分:包括裁判打分、选手得分等信息。
- 实现比赛成绩的排序和输出:包括选手名次、得分等信息。
类的设计
根据系统需求,我们需要设计如下几个类:
学生类(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++;
}
}
};
系统实现流程
系统的实现流程如下:
- 编写程序主体,包括类的定义和相关函数的实现等。
- 在 main 函数中,定义学生、教师、裁判和选手等对象,并进行信息录入。
- 定义比赛对象,添加裁判和选手列表。
- 根据选手报名信息,进行比赛评分,并计算选手得分。
- 实现排序功能,将选手按得分降序排列,并输出名次和得分信息。
示例说明
示例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技术站