内存:128  时间:1

题目描述

小平做的手机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

样例输出

错误的密码提示问题

提示

代码如下


#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 = "错误的用户名";
                //cout<<"1:"<<user.Username<<" "<<Username<<endl;
            }
            else if(!user.CmpPromptQuestion(PromptQuestion))
            {
                tmpPassword = "错误的密码提示问题";
                break;
                //cout<<"2:"<<user.PromptQuestion<<" "<<PromptQuestion<<endl;
            }
            else if(user.CmpUsername(Username)&&user.CmpPromptQuestion(PromptQuestion))
            {
                getline(fin,tmpPassword);
                break;
            }
            getline(fin,tmpUsername);
        }
    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;
}

代码来源于互联网,仅供参考!