使用C++设计(20)歌手比赛系统 基本要求: 对歌手比赛的成绩进行管理。 功能要求: 1、设计菜单实现功能选择; 2、可以输入、追加、修改和删除选手数据; 3、可以进行评委打分(输入每个选手的数据包括编号、姓名、十个评委的成绩); 4、能够计算出总成绩和平均成绩(去掉最高分,去掉最低分),并能按照单个评委成绩,总成绩进行排序; 5、可以进行若干场次的唱歌比赛信息管理; 6、能够使用文件读写相关的信息。
时间: 2023-06-25 19:01:59 浏览: 250
C&C++期末课程设计——个人收支管理系统(二)(源代码+详细注释).zip
5星 · 资源好评率100%
这是一个比较完整的项目,需要多个类的设计和实现。
首先,我们需要设计一个 `Singer` 类,用于存储选手的信息,包括编号、姓名、评委成绩等。
```c++
class Singer {
public:
Singer(int id, const string& name) : id_(id), name_(name) {}
int getId() const { return id_; }
string getName() const { return name_; }
void addScore(double score) { scores_.push_back(score); }
double getTotalScore() const;
double getAverageScore() const;
double getMaxScore() const;
double getMinScore() const;
private:
int id_;
string name_;
vector<double> scores_;
};
```
其中,`getTotalScore`、`getAverageScore`、`getMaxScore` 和 `getMinScore` 分别用于计算总成绩、平均成绩、最高分和最低分。
然后,我们需要设计一个 `Judge` 类,用于存储评委的信息,包括编号和姓名。
```c++
class Judge {
public:
Judge(int id, const string& name) : id_(id), name_(name) {}
int getId() const { return id_; }
string getName() const { return name_; }
private:
int id_;
string name_;
};
```
接着,我们需要设计一个 `Competition` 类,用于管理比赛信息,包括选手、评委、比赛场次等。
```c++
class Competition {
public:
void addSinger(const Singer& singer);
void deleteSinger(int id);
Singer* getSinger(int id);
void addJudge(const Judge& judge);
void deleteJudge(int id);
Judge* getJudge(int id);
void addScore(int singerId, int judgeId, double score);
vector<Singer*> sortSingersByTotalScore() const;
vector<Singer*> sortSingersByJudgeScore(int judgeId) const;
private:
vector<Singer> singers_;
vector<Judge> judges_;
vector<vector<double>> scores_;
};
```
其中,`addSinger`、`deleteSinger` 和 `getSinger` 分别用于添加、删除和获取选手信息;`addJudge`、`deleteJudge` 和 `getJudge` 分别用于添加、删除和获取评委信息;`addScore` 用于添加评委给选手的成绩;`sortSingersByTotalScore` 和 `sortSingersByJudgeScore` 分别用于按照总成绩和单个评委成绩进行排序。
最后,我们需要设计一个 `Menu` 类,用于实现菜单功能,包括输入、追加、修改和删除选手数据,进行评委打分,计算总成绩和平均成绩,并能按照单个评委成绩、总成绩进行排序,以及进行若干场次的唱歌比赛信息管理。
```c++
class Menu {
public:
void show() const;
void addSinger();
void deleteSinger();
void modifySinger();
void addJudge();
void deleteJudge();
void addScore();
void calculateScore();
void sortSingersByTotalScore();
void sortSingersByJudgeScore();
void saveToFile() const;
void loadFromFile();
private:
Competition competition_;
};
```
其中,`show` 用于显示菜单;`addSinger`、`deleteSinger` 和 `modifySinger` 分别用于添加、删除和修改选手信息;`addJudge` 和 `deleteJudge` 分别用于添加和删除评委信息;`addScore` 用于进行评委打分;`calculateScore` 用于计算总成绩和平均成绩;`sortSingersByTotalScore` 和 `sortSingersByJudgeScore` 分别用于按照总成绩和单个评委成绩进行排序;`saveToFile` 和 `loadFromFile` 分别用于将比赛数据保存到文件中和从文件中读取比赛数据。
以上就是基本的类设计,接下来需要实现各个类的具体功能,包括文件读写、输入输出等。
阅读全文