// 获取用户信息 User getUserInfo(string name) { for (int i = 0; i < users.size(); i++) { if (users[i].name == name) { return users[i]; } } User user = { name, MAXN * MAXM, 0, 0 }; users.push_back(user); return user; } // 更新用户信息 void updateUserInfo(string name, int guessTimes, bool success) { for (int i = 0; i < users.size(); i++) { if (users[i].name == name) { users[i].minGuess = min(users[i].minGuess, guessTimes); users[i].totalGuess += guessTimes; users[i].success += success; break; } } } // 比较函数,用于排行榜排序 bool cmp(const pair<string, int>& a, const pair<string, int>& b) { return a.second < b.second; } // 初始化排行榜 void initRankList() { rankList.clear(); for (int i = 0; i < users.size(); i++) { rankList.push_back(make_pair(users[i].name, users[i].success)); } sort(rankList.begin(), rankList.end(), cmp); } // 显示排行榜 void showRankList() { if (rankList.empty()) { cout << "暂无排行榜!" << endl; return; } cout << "排行榜:" << endl; for (int i = 0; i < rankList.size(); i++) { cout << i + 1 << ". " << rankList[i].first << " (成功次数:" << rankList[i].second << ")" << endl; } } // 保存用户信息和排行榜 void saveData() { ofstream ofs(USERFILE); for (int i = 0; i < users.size(); i++) { ofs << users[i].name << " " << users[i].minGuess << " " << users[i].totalGuess << " " << users[i].success << endl; } ofs.close(); ofs.open(RANKFILE); for (int i = 0; i < rankList.size(); i++) { ofs << rankList[i].first << " " << rankList[i].second << endl; } ofs.close(); } int main() { srand(time(0)); ifstream ifs(USERFILE); if (ifs.is_open()) { while (!ifs.eof()) { string name; int minGuess, totalGuess, success; ifs >> name >> minGuess >> totalGuess >> success; if (name != "") { User user = { name, minGuess, totalGuess, success }; users.push_back(user); } } ifs.close(); } initRankList();
时间: 2024-03-28 15:38:44 浏览: 232
小程序•小故事——获取用户信息
这段代码看起来像是一个猜数字游戏的排行榜,其中包括了以下几个函数:
1. `getUserInfo(string name)` :根据输入的用户名返回用户的信息,如果该用户不存在,则创建一个新用户并返回其信息。
2. `updateUserInfo(string name, int guessTimes, bool success)` :根据输入的用户名、猜测次数和猜测是否成功的信息更新用户的信息。
3. `cmp(const pair<string, int>& a, const pair<string, int>& b)` :比较函数,用于对排行榜进行排序。
4. `initRankList()` :初始化排行榜,将所有用户的成功次数加入排行榜。
5. `showRankList()` :显示排行榜。
6. `saveData()` :保存用户信息和排行榜到文件中。
代码中还包括了一个结构体 `User` ,表示用户的信息,包括用户名、最小猜测次数、总猜测次数和成功次数。排行榜使用了 `vector<pair<string,int>>` 来保存用户名和成功次数的信息,并根据成功次数从小到大排序。
阅读全文