1. 制作一个排行榜, 每次修改其数据时, 都会在文件中进行对应操作.该排行榜可以展示名次, 昵称, 积分三个属性 每次用户可以输入昵称和积分, 来向排行榜中加入数据. 加入数据时, 如果排行榜中存储数量超过10个, 则删除最后一名的数据. 样例输入: 张三 100 样例输出: 名次| 昵称| 积分 1 测试1 1001 2 测试2 100 3 张三 100 4 测试3 10
时间: 2024-04-17 22:28:09 浏览: 13
好的,根据你的要求,我会帮你编写一个简单的 C++ 程序来实现此排行榜功能。以下是一个示例代码:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
struct Player {
std::string name;
int score;
};
bool comparePlayers(const Player& p1, const Player& p2) {
return p1.score > p2.score;
}
void updateRankings(const std::vector<Player>& rankings) {
std::ofstream file("rankings.txt");
if (!file) {
std::cout << "Failed to open the file." << std::endl;
return;
}
for (const auto& player : rankings) {
file << player.name << " " << player.score << std::endl;
}
}
void displayRankings(const std::vector<Player>& rankings) {
std::cout << "名次\t昵称\t积分" << std::endl;
int rank = 1;
for (const auto& player : rankings) {
std::cout << rank++ << "\t" << player.name << "\t" << player.score << std::endl;
}
}
int main() {
std::vector<Player> rankings;
std::ifstream file("rankings.txt");
if (file) {
std::string name;
int score;
while (file >> name >> score) {
rankings.push_back({name, score});
}
file.close();
}
std::string name;
int score;
std::cout << "请输入昵称和积分(以空格分隔):";
std::cin >> name >> score;
rankings.push_back({name, score});
std::sort(rankings.begin(), rankings.end(), comparePlayers);
if (rankings.size() > 10) {
rankings.pop_back();
}
displayRankings(rankings);
updateRankings(rankings);
return 0;
}
```
请注意,此示例代码假设存在名为 "rankings.txt" 的文件用于存储排行榜数据。如果该文件不存在,程序将自动创建该文件。
你可以根据需要进行修改和扩展,例如添加异常处理、输入验证等。希望这能帮到你!如有疑问,请随时告诉我。