写一个函数;用户输入用户名及口令,然后在已有的用户名及口令中检查是否合法,合法进入查询界面;对于不合法的用户或口令最多出错3次,超出3次后自动退出程序
时间: 2024-03-22 08:40:59 浏览: 33
好的,我可以帮你实现这个功能,以下是 Python 代码:
```python
usernames = ['user1', 'user2', 'user3'] # 已有的用户名列表
passwords = ['pass1', 'pass2', 'pass3'] # 已有的口令列表
def login():
count = 0 # 记录输入错误次数
while count < 3:
username = input('请输入用户名:')
password = input('请输入口令:')
if username in usernames and password == passwords[usernames.index(username)]:
print('登录成功,进入查询界面')
return
else:
print('用户名或口令错误,请重新输入')
count += 1
print('错误次数超过3次,程序自动退出')
login()
```
在这个代码中,我们定义了两个列表,一个存放用户名,一个存放口令。在 `login` 函数中,我们使用一个 `while` 循环,最多可以输入 3 次用户名和口令。如果输入正确,则输出登录成功,并跳出循环;如果输入错误,则输出错误信息,并将错误次数加 1。当错误次数超过 3 次时,输出错误次数超过 3 次,程序自动退出。
相关问题
c++代码;设计一个宿舍电话查询系统 要求:(1)用户输入用户名及口令,然后在已有的用户名及口令中检查是否合法,合法进入查询界面;对于不合法的用户或口令最多出错3次,超出3次后自动退出程序;(2)进入系统的用户可以浏览所有用户的电话号码及相关资料(如下图所示);(3)参考所给出的程序,自行设定数据库(要求至少包括:宿舍号、班级、电话号码三个字段,其它字段可选),系统菜单及其未说明功能可自行添加设计。
下面是一个简单的 C++ 代码示例,实现了宿舍电话查询系统的基本功能:
```
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
// 定义用户结构体
struct User {
char username[20];
char password[20];
};
// 定义电话号码结构体
struct Phone {
char dorm[10];
char cls[10];
char number[20];
};
// 用户名和口令
User users[] = {
{"user1", "password1"},
{"user2", "password2"},
{"user3", "password3"},
};
// 电话号码列表
Phone phones[] = {
{"101", "class1", "12345678"},
{"102", "class2", "23456789"},
{"103", "class3", "34567890"},
};
// 最大尝试次数
const int MAX_TRIES = 3;
// 登录函数
bool login() {
char username[20];
char password[20];
int tries = 0;
do {
cout << "请输入用户名:";
cin >> username;
cout << "请输入口令:";
cin >> password;
for (int i = 0; i < sizeof(users) / sizeof(users[0]); i++) {
if (strcmp(username, users[i].username) == 0 && strcmp(password, users[i].password) == 0) {
return true;
}
}
cout << "用户名或口令不正确,请重新输入!" << endl;
tries++;
} while (tries < MAX_TRIES);
cout << "连续输入错误超过" << MAX_TRIES << "次,程序自动退出!" << endl;
return false;
}
// 查询函数
void query() {
cout << "宿舍号\t班级\t电话号码" << endl;
for (int i = 0; i < sizeof(phones) / sizeof(phones[0]); i++) {
cout << phones[i].dorm << '\t' << phones[i].cls << '\t' << phones[i].number << endl;
}
}
// 主函数
int main() {
if (!login()) {
return 1;
}
cout << "登录成功,欢迎使用宿舍电话查询系统!" << endl;
query();
return 0;
}
```
这个代码示例中,我们定义了一个 `User` 结构体和一个 `Phone` 结构体,分别表示用户和电话号码。我们在代码中预先定义了一些用户和电话号码,实际情况中可能需要从数据库或文件中读取。
在 `login` 函数中,我们让用户输入用户名和口令,并在已有的用户名和口令中查找是否存在匹配项。如果连续输入错误超过最大次数,程序会自动退出。
在 `query` 函数中,我们打印出所有电话号码的宿舍号、班级和电话号码。
在 `main` 函数中,我们首先调用 `login` 函数进行登录,如果成功则打印欢迎消息,并调用 `query` 函数显示电话号码列表。
帮我写一个C++代码,功能要求如下,设计一个宿舍电话查询系统要求:(1)用户输入用户名及口令,然后在已有的用户名及口令中检查是否合法,合法进入查询界面;对于不合法的用户或口令最多出错3次,超出3次后自动退出程序;(2)进入系统的用户可以浏览所有用户的电话号码及相关资料(如下图所示);(3)参考所给出的程序,自行设定数据库(要求至少包括:宿舍号、班级、电话号码三个字段,其它字段可选),系统菜单及其未说明功能可自行添加设计。
好的,下面是一个简单的宿舍电话查询系统,实现了上述功能要求:
```cpp
#include <iostream>
#include <string>
#include <map>
using namespace std;
// 数据库
map<string, map<string, string>> database = {
{"张三", {{"宿舍号", "101"}, {"班级", "一班"}, {"电话号码", "123456"}}},
{"李四", {{"宿舍号", "102"}, {"班级", "二班"}, {"电话号码", "234567"}}},
{"王五", {{"宿舍号", "103"}, {"班级", "三班"}, {"电话号码", "345678"}}},
};
// 用户名和密码
map<string, string> users = {
{"user1", "123"},
{"user2", "456"},
{"user3", "789"}
};
// 登录函数
bool login()
{
int try_cnt = 0; // 尝试次数
string username, password;
while (try_cnt < 3) { // 最多尝试 3 次
cout << "请输入用户名:";
cin >> username;
cout << "请输入密码:";
cin >> password;
if (users.count(username) && users[username] == password) { // 用户名和密码匹配
return true;
} else {
cout << "用户名或密码错误!" << endl;
try_cnt++;
}
}
cout << "错误次数过多,程序退出!" << endl;
return false;
}
// 查询函数
void query()
{
cout << "用户名\t宿舍号\t班级\t电话号码" << endl;
for (auto& item : database) { // 遍历数据库
cout << item.first << "\t"; // 用户名
for (auto& detail : item.second) { // 遍历用户信息
cout << detail.second << "\t"; // 信息内容
}
cout << endl;
}
}
int main()
{
if (!login()) { // 登录失败
return 0;
}
query(); // 查询
return 0;
}
```
程序会先让用户输入用户名和密码,如果用户名和密码匹配,则进入查询界面,显示所有用户的信息,包括宿舍号、班级和电话号码。如果用户名或密码错误,最多允许用户尝试 3 次,超过次数则自动退出程序。
注意,这个程序只是一个简单的示例,还有很多需要改进的地方,比如用户输入时需要进行输入检查,数据库可以用更为高效的数据结构来实现,系统菜单和其它功能也可以进一步添加。
相关推荐
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)