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
示例输出:
错误的密码提示问题
提示:
参考答案:
文章评论