m0_68962183 2022-05-16 00:04 采纳率: 100%
浏览 53
已结题

如果你密码输入错误,四次后转入验证码服务,验证码通过了,可以重新设置密码

思路:一个类,有变量用户名,密码,和验证码,有一些函数,读取用户名密码 验证验证码

验证码发送可以是虚拟的,语句提示即可,程序通过也可以是虚拟的,语句提示即可

  • 写回答

1条回答 默认 最新

  • Ltd Pikashu CSDN实力新星 2022-05-16 10:53
    关注
    1. 这时按题目要求做的,基本封装成函数了,只想要读取变量的三个函数,和修改密码的函数,可以把friend三个函数的逻辑放到main里面,不作为函数处理(看第二个代码)
    
    #include <iostream>
    #include <cstring>
    
    using namespace std;
    
    class User
    {
        public:
            User(string un, string pw, int vs) : username(un), password(pw), verifysum(vs) {}
            ~User() {cout << "Exit~" << endl;}
            string  GetUserName();
            string  GetPassWord();
            int     GetVerifySum();
            void    SetPassword(string pw);
            friend bool LoginByPassWord(User& u, string un, string pw);
            friend bool LoginByVerifySum(User& u, string un, int vs);
            friend void ChangePassWord(User& u, string pw);
    
        private:
            string username;
            string password;
            int verifysum;
    };
    
    string  User::GetUserName()
    {
        return username;
    }
    
    string  User::GetPassWord()
    {
        return password;
    }
    
    int     User::GetVerifySum()
    {
        return verifysum;
    }
    
    void    User::SetPassword(string pw)
    {
        password = pw;
    }
    
    bool    LoginByPassWord(User& u, string un, string pw)
    {
        if (u.GetUserName() == un && u.GetPassWord() == pw)
        {
            cout << "Login success." << endl;
            return true;
        }
        return false;
    }
    
    bool    LoginByVerifySum(User& u, string un, int vs)
    {
        if (u.GetUserName() == un && u.GetVerifySum() == vs)
        {
            cout << "Login success." << endl;
            return true;
        }
        return false;
    }
    
    void    ChangePassWord(User& u, string pw)
    {
        u.SetPassword(pw);
        cout << "Change password success." << endl;
    }
    
    int main()
    {
        User u("admin", "admin", 520);      //初始化对象
    
        int first = 4;
        string n_un, n_pw;
        int n_vs;
        while (first--)
        {
            cout << "Please input username and paddword: ";
            cin >> n_un >> n_pw;
            if (LoginByPassWord(u, n_un, n_pw))
            {
                return 0;
            }
            cout << "Login failed,  remaining times: " << first << endl;
        }
    
        cout << "Please use the verification code to verify the login." << endl;
        cout << "Please input verifysum: ";
        cin >> n_vs;
        if (LoginByVerifySum(u, n_un, n_vs))
        {
            cout << "Please change your password: ";
            cin >> n_pw;
            ChangePassWord(u, n_pw);
        }
        else
        {
            cout << "VerifySum is Error." << endl;
        }
        return 0;
    }
    
    1. 只有题目要求得函数
    
    #include <iostream>
    #include <cstring>
    
    using namespace std;
    
    class User
    {
        public:
            User(string un, string pw, int vs) : username(un), password(pw), verifysum(vs) {}
            ~User() {cout << "Exit~" << endl;}
            string  GetUserName();
            string  GetPassWord();
            int     GetVerifySum();
            void    SetPassword(string pw);
    
        private:
            string username;
            string password;
            int verifysum;
    };
    
    string  User::GetUserName()
    {
        return username;
    }
    
    string  User::GetPassWord()
    {
        return password;
    }
    
    int     User::GetVerifySum()
    {
        return verifysum;
    }
    
    void    User::SetPassword(string pw)
    {
        password = pw;
    }
    
    int main()
    {
        User u("admin", "admin", 520);      //初始化对象
    
        int first = 4;
        string n_un, n_pw;
        int n_vs;
        while (first--)
        {
            cout << "Please input username and paddword: ";
            cin >> n_un >> n_pw;
            if (u.GetUserName() == n_un && u.GetPassWord() == n_pw)
            {
                cout << "Login success." << endl;
                return 0;
            }
            cout << "Login failed,  remaining times: " << first << endl;
        }
    
        cout << "Please use the verification code to verify the login." << endl;
        cout << "Please input verifysum: ";
        cin >> n_vs;
        if (u.GetUserName() == n_un && u.GetVerifySum() == n_vs)
        {
            cout << "Login success." << endl;
            cout << "Please change your password: ";
            cin >> n_pw;
            u.SetPassword(n_pw);
        }
        else
        {
            cout << "VerifySum is Error." << endl;
        }
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月24日
  • 已采纳回答 5月16日
  • 创建了问题 5月16日

悬赏问题

  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决