User类 新增共有属性Current ID

一、题目描述

每个用户有用户编号(id),用户名(name),密码(passwd)三个属性。其中:

  • 用户编号(id)由系统自动顺序编号,用户名和密码都是字母、数字、符合的组合,新用户密码,默认“111111”。
  • User类所有对象有一个共有属性Current ID,用来记录当前已经被使用的最大id号(初始值999)。每当新增一个用户时,CurrentID的值加1,同时将这个值作为新用户的id号。

二、解答内容

//user.h

 1 #ifndef HEADER_U
 2 #define HEADER_U
 3 #include<string>
 4 #include<iostream>
 5 using namespace std;
 6 
 7 //User类声明
 8 class User {
 9 public:
10     void setInfo(string name0, string passwd0 = "111111", int id0 = 1);//支持设置用户信息
11     void changePasswd();                               //支持修改密码
12     void printInfo();                                  //支持打印用户信息
13     User(){}                                           //默认构造函数
14     User(const User &v);                               //复制最新用户信息
15 private:
16     int id;
17     static int CurrentID;
18     string name;
19     string passwd;
20 };
21 int User::CurrentID = 999;                             //静态成员初始化
22 
23 void User::setInfo(string name0, string passwd0, int id0) {
24     id = ++CurrentID;
25     name = name0;
26     passwd = passwd0;
27 }
28 
29 void User::changePasswd() {
30     string passwd1, passwdN;
31     int n = 1;
32     cout << "Enter the old passwd:";
33     cin >> passwd1;
34     while (n <= 3) {
35         if ( passwd == passwd1) {
36             cout << "Enter the new passwd:";
37             cin >> passwdN;
38             break;
39         }
40         else if (n < 3 && (passwd != passwd1)) {
41             cout << "passwd input error,Please re-Enter again:";
42             cin >> passwd1;
43             n++;
44         }
45         else if (n == 3 && (passwd != passwd1)) {
46             cout << "Please try after a while." << endl;
47             break;
48         }
49     }
50 }
51 
52 void User::printInfo() {
53     cout << "CurrentID:	" << CurrentID << endl;
54     cout << "id:		" << id << endl;
55     cout << "name:		" << name << endl;
56     cout << "passwd:		" << "******" << endl;
57 }
58 
59 User::User(const User &v):id(v.id),name(v.name),passwd(v.passwd){
60     printInfo();
61 }
62 
63 #endif

//User.cpp

 1 #include<iostream>
 2 #include"user.h"
 3 using namespace std;
 4 
 5 int main() {
 6     cout << "testing 1......" << endl << endl;
 7     User user1;
 8     user1.setInfo("Leonard");
 9     user1.printInfo();
10 
11     cout << endl << "testing 2......" << endl << endl;
12     User user2;
13     user2.setInfo("Jonny", "92197");
14     user2.changePasswd();
15     user2.printInfo();
16 
17     cout << endl << "testing 3......" << endl << endl;
18     User userN(user2);
19 
20     system("pause");
21     return 0;
22 }

效果如下:

User类 新增共有属性Current ID

三、题后小结

  1. 静态数据成员声明在类内,初始化在外部。
  2. setInfo函数的参数注意把id放于最后并设置默认参数。