站点图标 陌路寒暄

A代码完善--密码找回

A代码完善--密码找回

时间: 1ms        内存:128M

描述:

小平做的手机app终于上线了,系统运行一段时间后,经常会有用户忘记密码。已知用户的信息存储在当前路径下的文件"password.dic"中,每个用户的信息按照注册顺序保存为三行,第一行为用户名,第二行为密码提示问题,第三行为密码。例如
zhangsan              该行为用户名
my hometown       该行为密码提示问题
123456                  该行为密码
lisi                 
no answer
abcd
为此请你帮助他编写一个密码查询程序,用户只有输入正确的用户名和密码提示问题后才会显示密码。

注:本题只需要提交修改和完善部分的代码,请按照C++方式提交。

#include <string>
#include <iostream>
#include <fstream>
using namespace std;
class User
{
public:
    User(string Username="",string PromptQuestion="",string Password="");
    string GetUsername();
    string GetPromptQuestion();
    string GetPassword();
    void SetUsername(string Username)
    {
        this->Username=Username;
    }
    void SetPromptQuestion(string PromptQuestion)
    {
        this->PromptQuestion=PromptQuestion;
    }
    void SetPassword(string Password)
    {
        this->Password=Password;
    }
    bool CmpUsername(string Username)
    {
        return this->Username==Username;
    }
    bool CmpPromptQuestion(string PromptQuestion)
    {
        return this->PromptQuestion==PromptQuestion;
    }
    string PasswordGet(string Username,string PromptQuestion);
private:
    string Username;
    string PromptQuestion;
    string Password;
};
User::User(string Username,string PromptQuestion,string Password)
{
    SetUsername(Username);
    SetPromptQuestion(PromptQuestion);
    SetPassword(Password);
}

string User::PasswordGet(string Username,string PromptQuestion)
{
    ifstream fin("password.dic",ios::in);
    string tmpUsername,tmpPromptQuestion,tmpPassword;
    /*    修改和完善该部分代码
     while(getline(fin,tmpUsername)&&fin)
        {
            getline(fin,tmpPromptQuestion);
            User user(tmpUsername,tmpPromptQuestion,tmpPassword);
            if(!user.CmpUsername(Username))
            {
                tmpPassword = "错误的用户名";
            }
            if(!user.CmpPromptQuestion(PromptQuestion))
            {
                tmpPassword = "错误的密码提示问题";
            }
        }
    */
    fin.close();
    return tmpPassword;
}
int main()
{
    User user;
    string Username,PromptQuestion,Password;
    getline(cin,Username);
    getline(cin,PromptQuestion);
    Password=user.PasswordGet(Username,PromptQuestion);
    cout<<Password<<endl;
    return 0;
}

输入:

要查询的用户名和密码提示问题

输出:

用户名和密码提示问题正确,输出密码,结束;
用户名错误,输出"错误的用户名",结束;
密码提示问题错误,输出"错误的密码提示问题",结束。

示例输入:

zhangsan
my name

示例输出:

错误的密码提示问题

提示:

参考答案(内存最优[1504]):


#include <string>
#include <iostream>
#include <fstream>
using namespace std;
class User
{
public:
    User(string Username="",string PromptQuestion="",string Password="");
    string GetUsername();
    string GetPromptQuestion();
    string GetPassword();
    void SetUsername(string Username)
    {
        this->Username=Username;
    }
    void SetPromptQuestion(string PromptQuestion)
    {
        this->PromptQuestion=PromptQuestion;
    }
    void SetPassword(string Password)
    {
        this->Password=Password;
    }
    bool CmpUsername(string Username1)
    {
        return (this->Username==Username1)?true:false;
    }
    bool CmpPromptQuestion(string PromptQuestion)
    {
        return (this->PromptQuestion==PromptQuestion)?true:false;
    }
    string PasswordGet(string Username,string PromptQuestion);
private:
    string Username;
    string PromptQuestion;
    string Password;
};
User::User(string Username,string PromptQuestion,string Password)
{
    SetUsername(Username);
    SetPromptQuestion(PromptQuestion);
    SetPassword(Password);
}

string User::PasswordGet(string Username,string PromptQuestion)
{
    ifstream fin("password.dic",ios::in);
    string tmpUsername,tmpPromptQuestion,tmpPassword;
    while(getline(fin,tmpUsername)&&fin)
    {
        getline(fin,tmpPromptQuestion);
        getline(fin,tmpPassword);
        User user(tmpUsername,tmpPromptQuestion,tmpPassword);
        if(!user.CmpUsername(Username))
        {
            tmpPassword = "错误的用户名";
            continue;
        }
        if(!user.CmpPromptQuestion(PromptQuestion))
        {
            tmpPassword = "错误的密码提示问题";
            break;
        }
        break;
    }
    fin.close();
    return tmpPassword;
}
int main()
{
    User user;
    string Username,PromptQuestion,Password;
    getline(cin,Username);
    getline(cin,PromptQuestion);
    Password=user.PasswordGet(Username,PromptQuestion);
    cout<<Password<<endl;
    return 0;
}

参考答案(时间最优[0]):


#include <string>
#include <iostream>
#include <fstream>
using namespace std;
class User
{
public:
    User(string Username="",string PromptQuestion="",string Password="");
    string GetUsername();
    string GetPromptQuestion();
    string GetPassword();
    void SetUsername(string Username)
    {
        this->Username=Username;
    }
    void SetPromptQuestion(string PromptQuestion)
    {
        this->PromptQuestion=PromptQuestion;
    }
    void SetPassword(string Password)
    {
        this->Password=Password;
    }
    bool CmpUsername(string Username1)
    {
        return (this->Username==Username1)?true:false;
    }
    bool CmpPromptQuestion(string PromptQuestion)
    {
        return (this->PromptQuestion==PromptQuestion)?true:false;
    }
    string PasswordGet(string Username,string PromptQuestion);
private:
    string Username;
    string PromptQuestion;
    string Password;
};
User::User(string Username,string PromptQuestion,string Password)
{
    SetUsername(Username);
    SetPromptQuestion(PromptQuestion);
    SetPassword(Password);
}

string User::PasswordGet(string Username,string PromptQuestion)
{
    ifstream fin("password.dic",ios::in);
    string tmpUsername,tmpPromptQuestion,tmpPassword;
    while(getline(fin,tmpUsername)&&fin)
    {
        getline(fin,tmpPromptQuestion);
        getline(fin,tmpPassword);
        User user(tmpUsername,tmpPromptQuestion,tmpPassword);
        if(!user.CmpUsername(Username))
        {
            tmpPassword = "错误的用户名";
            continue;
        }
        if(!user.CmpPromptQuestion(PromptQuestion))
        {
            tmpPassword = "错误的密码提示问题";
            break;
        }
        break;
    }
    fin.close();
    return tmpPassword;
}
int main()
{
    User user;
    string Username,PromptQuestion,Password;
    getline(cin,Username);
    getline(cin,PromptQuestion);
    Password=user.PasswordGet(Username,PromptQuestion);
    cout<<Password<<endl;
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

退出移动版