帮我写一个C++代码,功能要求如下,设计一个宿舍电话查询系统要求:(1)用户输入用户名及口令,然后在已有的用户名及口令中检查是否合法,合法进入查询界面;对于不合法的用户或口令最多出错3次,超出3次后自动退出程序;(2)进入系统的用户可以浏览所有用户的电话号码及相关资料(如下图所示);(3)参考所给出的程序,自行设定数据库(要求至少包括:宿舍号、班级、电话号码三个字段,其它字段可选),系统菜单及其未说明功能可自行添加设计。
时间: 2024-03-31 12:35:08 浏览: 61
C++宿舍管理系统代码加设计文档
5星 · 资源好评率100%
好的,下面是一个简单的宿舍电话查询系统,实现了上述功能要求:
```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 次,超过次数则自动退出程序。
注意,这个程序只是一个简单的示例,还有很多需要改进的地方,比如用户输入时需要进行输入检查,数据库可以用更为高效的数据结构来实现,系统菜单和其它功能也可以进一步添加。
阅读全文