Description 定义类Accounts,记录若干个用户的用户名和密码,假定所有用户名不重复。判断用户输入的用户名和密码能否登录。 如果用户名不存在,则输出:user name error 如果用户名正确,但是密码错误,则输出:password error 如果用户名、密码均正确,则输出:welcome Accounts类的addUser方法用于增加新用户,两个参数依次是用户名和密码;login方法用于尝试登录系统,两个参数依次是用户名和密码。 Input 输入分两部分。 第一部分第一行输入一个正整数N,表示后面有N行输入,每行包括两个字符串,分别是用户名和密码,均不含空白符。用于建立账户信息。 第二部分第一行输入一个正整数M,表示后面有M行输入,每行包括两个字符串,分别是用户名和密码,均不含空白符。用于测试能否登录。 Output 输出有M行,与第二部分输入的M行一一对应,输出结果为: 如果用户名不存在,则输出:user name error 如果用户名正确,但是密码错误,则输出:password error 如果用户名、密码均正确,则输出:welcome Sample Input 4 tom tom jack tom mary jack richar 123 3 tom jack jack tom richard 123 Sample Output password error welcome user name error用c++实现代码
时间: 2024-03-30 16:33:30 浏览: 50
VC++获取WinNT-Win2k当前用户名和密码.zip
以下是用 C++ 实现的代码,可以通过本地编译器或在线编译器运行:
```cpp
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
class Accounts {
private:
unordered_map<string, string> users;
public:
void addUser(string username, string password) {
users[username] = password;
}
string login(string username, string password) {
if (users.find(username) == users.end()) {
return "user name error";
} else if (users[username] != password) {
return "password error";
} else {
return "welcome";
}
}
};
int main() {
Accounts accounts;
int n, m;
cin >> n;
for (int i = 0; i < n; i++) {
string username, password;
cin >> username >> password;
accounts.addUser(username, password);
}
cin >> m;
for (int i = 0; i < m; i++) {
string username, password;
cin >> username >> password;
string result = accounts.login(username, password);
cout << result << endl;
}
return 0;
}
```
在这个实现中,我们使用了 `unordered_map` 来存储用户的账户信息,其中键是用户名,值是密码。在 `addUser` 方法中,我们简单地将键值对存入 `users` 中。在 `login` 方法中,我们首先检查用户名是否存在,如果不存在,则返回 "user name error";如果存在,但密码不正确,则返回 "password error";否则,返回 "welcome"。在主函数中,我们首先读入账户信息,然后分别读入要测试的用户名和密码,并调用 `login` 方法进行测试。最终,我们按照题目要求输出相应的结果。
阅读全文