题目:一份“用户概况记录(user profile)”内含以下数据:登录记录、实际姓名、登录次数、猜过次数、猜对次数、等级——包括初级、中级、高级、专家,以及猜对百分比(可实时计算获得,或将其值储存起来备用)。请写出一个名为UserProfile的class,提供以下操作:输入、输出、相等测试、不相等测试。其constructor必须能够处理默认的用户等级、默认的登录名称(“guest”)。对于同样名为guest的多个用户,你如何宝恒每个guest有他独有的登录会话,不会与其他人混淆?
知识点:class定义(写数据cout,读取数据cin),构造函数初始化值,重载操作符operator,重载输入输出流 ostream& operator<< 和istream& operator>>,枚举变量定义enum, 类的private里的static数据成员需要初始化。。
#include<iostream>
#include<string>
#include<map>
#include<iterator>
using namespace std;
class UserProfile{
public:
//定义枚举类型ulevel,枚举元素作为常量,是有值的,分别为0,1,2,3,4.....
enum ulevel {
Beginner,Intermediate,Advanced,Guru };
//"有参无默认值"初始化,用于有名字和等级的客户
UserProfile(string login, ulevel = Beginner);
//默认构造函数初始化,用于默认的guest用户初始化
UserProfile();
bool operator==(const UserProfile &);
bool operator!=(const UserProfile &rhs);
//以下函数用来读取数据
string login() const {
return _login; }
string user_name() const{
return _user_name; }
int login_count() const {
return _login_count;}
int guess_count() const {
return _guess_count; }
int guess_correct() const {
return _guess_correct; }
string level() const;
double guess_average() const;
//以下函数用来写入数据
void reset_login(const string &val) {
_login