c++假想且不实用的密码类(程序填空)

//创建一个假想并且不实用的密码类Password。
#include




......




class Password {
public:
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
......
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
private:
char *pwd; //密码(该行不允许修改)
};




......




int main() {
Password s1; //s1被设置为默认密码:Abcd1234
cout<<s1<<endl<<endl;

//密码长度必须在8~32之间,否则密码被置为默认密码:Abcd1234
Password s2("123456");
Password s3("ABCDEFGabcdefg01234567890123456789");
cout<<s2<<','<<s3<<endl<<endl;

//密码必须包含大写字母,小写字母和数字三者。
//否则密码被置为默认密码:Abcd1234
Password s4("ABCD1234");
Password s5("abcde12345");
cout<<s4<<','<<s5<<endl<<endl;

//密码长度在8~32之间,包含大写字母,小写字母和数字三者。
//正确构造用户所需要的密码。
Password s6("Wch54321");
Password s7("ABCDEFG0123456789abcdefg01234567");
cout<<s6<<','<<s7<<endl<<endl;

//拷贝构造
Password s8(s1);
Password s9=s6;
cout<<s8<<','<<s9<<endl<<endl;

//赋值运算
s2=s8=s6=s6;
cout<<s2<<','<<s8<<','<<s6<<endl;
s3=s4=s5=s6;
cout<<s3<<','<<s4<<','<<s5<<endl<<endl;

//将密码修改为默认密码:Abcd1234
s2.chgPWD(); //s2被设置为默认密码:Abcd1234
s3.chgPWD("Abcd1234");
cout<<s2<<','<<s3<<endl<<endl;

//密码长度必须在8~32之间,否则保持密码不变。
s4.chgPWD("123456");
s5.chgPWD("ABCDEFGabcdefg01234567890123456789");
cout<<s4<<','<<s5<<endl<<endl;

//密码长度在8~32之间,包含大写字母,小写字母和数字三者。
//正确修改为用户所需要修改的密码。
s4.chgPWD("Wch88888");
s5.chgPWD("abcde0123456789ABCDEFG0123456789");
cout<<s4<<','<<s5<<endl<<endl;

//密码必须包含大写字母,小写字母和数字三者。
//否则保持密码不变。
s4.chgPWD("ABCD1234");
s5.chgPWD("abcde12345");
cout<<s4<<','<<s5<<endl<<endl;

//输出所有已经构造的密码
cout<<"s1:"<<s1<<',';    cout<<"s2:"<<s2<<',';    cout<<"s3:"<<s3<<endl;
cout<<"s4:"<<s4<<',';    cout<<"s5:"<<s5<<',';    cout<<"s6:"<<s6<<endl;
cout<<"s7:"<<s7<<',';    cout<<"s8:"<<s8<<',';    cout<<"s9:"<<s9<<endl<<endl;

//密码比较==和!=
cout<<"s1==s2:"<<(s1==s2?"TRUE":"FALSE")<<',';
cout<<"s1==s4:"<<(s1==s4?"TRUE":"FALSE")<<endl;
cout<<"s1!=s2:"<<(s1!=s2?"TRUE":"FALSE")<<',';
cout<<"s1!=s4:"<<(s1!=s4?"TRUE":"FALSE")<<endl;

return 0;

}

输入

输出

见“样例输出”

输入样例 1


输出样例 1

(Abcd1234)

(Abcd1234),(Abcd1234)

(Abcd1234),(Abcd1234)

(Wch54321),(ABCDEFG0123456789abcdefg01234567)

(Abcd1234),(Wch54321)

(Wch54321),(Wch54321),(Wch54321)
(Wch54321),(Wch54321),(Wch54321)

(Abcd1234),(Abcd1234)

(Wch54321),(Wch54321)

(Wch88888),(abcde0123456789ABCDEFG0123456789)

(Wch88888),(abcde0123456789ABCDEFG0123456789)

s1:(Abcd1234),s2:(Abcd1234),s3:(Abcd1234)
s4:(Wch88888),s5:(abcde0123456789ABCDEFG0123456789),s6:(Wch54321)
s7:(ABCDEFG0123456789abcdefg01234567),s8:(Wch54321),s9:(Wch54321)

s1==s2:TRUE,s1==s4:FALSE
s1!=s2:FALSE,s1!=s4:TRUE

你的输出是错的

#include <iostream>
#include <cstring>
using namespace std;

class Password {
public:
    Password()
    {
        chgPWD("Abcd1234");
    }
    Password(char * p)
    {
        chgPWD(p);  
    }
    Password(Password &p)
    {
        chgPWD(p.pwd);  
    }
    void chgPWD(char * p)
    {
        int chk = 0;
        if (strlen(p) >= 8 && strlen(p) <= 32)
        {
            for (int i = 0; i < strlen(p); i++)
            {
                if (p[i] >= 'A' && p[i] <= 'Z') chk |= 1;
                if (p[i] >= 'a' && p[i] <= 'z') chk |= 2;
                if (p[i] >= '0' && p[i] <= '9') chk |= 4;
            }
            if (chk == 7)
            {
                char * p1 = new char[100];
                strcpy(p1, p);
                pwd = p1;
            }
            else
            {
                chgPWD("Abcd1234");
            }
        }
        else
        {
            chgPWD("Abcd1234");
        }
    }
    void chgPWD()
    {
        chgPWD("Abcd1234");
    }
    Password& operator=(Password& p)
    {
        chgPWD(p.pwd);
        return *this;
    }
    bool operator==(Password& p)
    {
        return strcmp(pwd, p.pwd) == 0;
    }
    bool operator!=(Password& p)
    {
        return strcmp(pwd, p.pwd) != 0;
    }
    friend ostream & operator<<(ostream &out,Password p);
private:
    char *pwd; //密码(该行不允许修改)
};

ostream & operator<<(ostream &out,Password p)
{
    out << "(" << p.pwd << ")";
    return out;
}

int main() {
Password s1; //s1被设置为默认密码:Abcd1234
cout<<s1<<endl<<endl;
//密码长度必须在8~32之间,否则密码被置为默认密码:Abcd1234
Password s2("123456");
Password s3("ABCDEFGabcdefg01234567890123456789");
cout<<s2<<','<<s3<<endl<<endl;

//密码必须包含大写字母,小写字母和数字三者。
//否则密码被置为默认密码:Abcd1234
Password s4("ABCD1234");
Password s5("abcde12345");
cout<<s4<<','<<s5<<endl<<endl;

//密码长度在8~32之间,包含大写字母,小写字母和数字三者。
//正确构造用户所需要的密码。
Password s6("Wch54321");
Password s7("ABCDEFG0123456789abcdefg01234567");
cout<<s6<<','<<s7<<endl<<endl;

//拷贝构造
Password s8(s1);
Password s9=s6;
cout<<s8<<','<<s9<<endl<<endl;

//赋值运算
s2=s8=s6=s6;
cout<<s2<<','<<s8<<','<<s6<<endl;
s3=s4=s5=s6;
cout<<s3<<','<<s4<<','<<s5<<endl<<endl;

//将密码修改为默认密码:Abcd1234
s2.chgPWD(); //s2被设置为默认密码:Abcd1234
s3.chgPWD("Abcd1234");
cout<<s2<<','<<s3<<endl<<endl;

//密码长度必须在8~32之间,否则保持密码不变。
s4.chgPWD("123456");
s5.chgPWD("ABCDEFGabcdefg01234567890123456789");
cout<<s4<<','<<s5<<endl<<endl;

//密码长度在8~32之间,包含大写字母,小写字母和数字三者。
//正确修改为用户所需要修改的密码。
s4.chgPWD("Wch88888");
s5.chgPWD("abcde0123456789ABCDEFG0123456789");
cout<<s4<<','<<s5<<endl<<endl;

//密码必须包含大写字母,小写字母和数字三者。
//否则保持密码不变。
s4.chgPWD("ABCD1234");
s5.chgPWD("abcde12345");
cout<<s4<<','<<s5<<endl<<endl;

//输出所有已经构造的密码
cout<<"s1:"<<s1<<',';    cout<<"s2:"<<s2<<',';    cout<<"s3:"<<s3<<endl;
cout<<"s4:"<<s4<<',';    cout<<"s5:"<<s5<<',';    cout<<"s6:"<<s6<<endl;
cout<<"s7:"<<s7<<',';    cout<<"s8:"<<s8<<',';    cout<<"s9:"<<s9<<endl<<endl;

//密码比较==和!=
cout<<"s1==s2:"<<(s1==s2?"TRUE":"FALSE")<<',';
cout<<"s1==s4:"<<(s1==s4?"TRUE":"FALSE")<<endl;
cout<<"s1!=s2:"<<(s1!=s2?"TRUE":"FALSE")<<',';
cout<<"s1!=s4:"<<(s1!=s4?"TRUE":"FALSE")<<endl;

return 0;
}

(Abcd1234)

(Abcd1234),(Abcd1234)

(Abcd1234),(Abcd1234)

(Wch54321),(ABCDEFG0123456789abcdefg01234567)

(Abcd1234),(Wch54321)

(Wch54321),(Wch54321),(Wch54321)
(Wch54321),(Wch54321),(Wch54321)

(Abcd1234),(Abcd1234)

(Abcd1234),(Abcd1234)

(Wch88888),(abcde0123456789ABCDEFG0123456789)

(Abcd1234),(Abcd1234)

s1:(Abcd1234),s2:(Abcd1234),s3:(Abcd1234)
s4:(Abcd1234),s5:(Abcd1234),s6:(Wch54321)
s7:(ABCDEFG0123456789abcdefg01234567),s8:(Wch54321),s9:(Wch54321)

s1==s2:TRUE,s1==s4:TRUE
s1!=s2:FALSE,s1!=s4:FALSE
Press any key to continue . . .