用c++写一个能记录个人使用轨迹,如使用时长,单词范围等,给设计鼓励体系,在不同的阶段颁发不同的鼓励勋章的代码
时间: 2024-02-06 18:02:57 浏览: 63
以下是一个简单的能够记录个人使用轨迹并根据使用情况颁发鼓励勋章的C++代码:
```c++
#include <iostream>
#include <fstream>
#include <map>
#include <chrono>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;
// 记录个人使用轨迹的类
class UserTrajectory {
public:
UserTrajectory(string name) : name(name) {
loadRecord(); // 加载之前的记录
}
// 记录使用时长和单词范围
void record(int time, string range) {
timeRecord += time;
wordRangeRecord[range]++;
saveRecord(); // 保存记录
}
// 根据使用情况颁发鼓励勋章
void awardMedal() {
int total = timeRecord / 60; // 总使用时长,单位分钟
if (total >= 60 && wordRangeRecord.size() >= 5) {
cout << "恭喜您获得金牌勋章!" << endl;
} else if (total >= 30 && wordRangeRecord.size() >= 3) {
cout << "恭喜您获得银牌勋章!" << endl;
} else if (total >= 10 && wordRangeRecord.size() >= 1) {
cout << "恭喜您获得铜牌勋章!" << endl;
} else {
cout << "再接再厉,加油!" << endl;
}
}
private:
string name; // 用户名
int timeRecord = 0; // 使用时长,单位秒
map<string, int> wordRangeRecord; // 单词范围记录
// 加载之前的记录
void loadRecord() {
ifstream fin(name + ".txt");
if (fin.is_open()) {
fin >> timeRecord;
string range;
int count;
while (fin >> range >> count) {
wordRangeRecord[range] = count;
}
fin.close();
}
}
// 保存记录
void saveRecord() {
ofstream fout(name + ".txt");
if (fout.is_open()) {
fout << timeRecord << endl;
for (const auto& p : wordRangeRecord) {
fout << p.first << " " << p.second << endl;
}
fout.close();
}
}
};
int main() {
string name;
cout << "请输入您的用户名:";
cin >> name;
UserTrajectory user(name);
// 模拟使用过程
srand(time(NULL));
for (int i = 0; i < 10; i++) {
int time = rand() % 1800 + 600; // 随机生成使用时长,单位秒
string range;
switch (rand() % 5) { // 随机生成单词范围
case 0:
range = "A1";
break;
case 1:
range = "A2";
break;
case 2:
range = "B1";
break;
case 3:
range = "B2";
break;
case 4:
range = "C1";
break;
}
user.record(time, range);
user.awardMedal();
this_thread::sleep_for(chrono::seconds(3)); // 暂停3秒
}
return 0;
}
```
该程序定义了一个 `UserTrajectory` 类,用来记录个人使用轨迹。在类中,我们使用一个字符串变量 `name` 来存储用户名,一个整型变量 `timeRecord` 来存储总使用时长,一个 `map` 类型的变量 `wordRangeRecord` 来存储单词范围记录。类中还定义了 `record` 函数来记录使用时长和单词范围,以及 `awardMedal` 函数来根据使用情况颁发鼓励勋章。在 `record` 函数中,我们把使用时长累加到 `timeRecord` 变量上,并使用 `wordRangeRecord` 来记录单词范围。在 `awardMedal` 函数中,我们根据总使用时长和单词范围数量来判断是否符合获得鼓励勋章的条件,并输出相应的鼓励信息。
在 `main` 函数中,我们首先提示用户输入用户名,然后创建一个 `UserTrajectory` 对象来记录该用户的使用轨迹。接下来,我们使用 `rand` 函数模拟用户的使用过程:随机生成使用时长和单词范围,并调用 `record` 函数记录使用情况,然后调用 `awardMedal` 函数来颁发鼓励勋章。在每次使用后,我们暂停3秒钟,以模拟用户的使用间隔。
以上代码只是一个简单的示例,实际应用中可能需要更多的功能和优化。
阅读全文