编写login()函数,实现登录功能 用户信息保存在userinfo.dat中,要在程序中判断工号和密码是否正确。
时间: 2024-03-26 16:38:36 浏览: 164
登录用户(判断某用户的用户名和密码是否正确).cpp 模拟用户登录API
好的,下面是一个简单的实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义用户信息结构体
typedef struct {
char id[10];
char password[20];
} User;
// 登录函数
void login() {
// 读取用户信息文件
FILE* fp = fopen("userinfo.dat", "rb");
if (!fp) {
printf("用户信息文件打开失败!\n");
return;
}
// 读取用户数量
int count;
fread(&count, sizeof(count), 1, fp);
// 读取每个用户的信息
User* users = (User*)malloc(count * sizeof(User));
fread(users, sizeof(User), count, fp);
// 关闭文件
fclose(fp);
// 输入工号和密码
char id[10], password[20];
printf("请输入工号:");
scanf("%s", id);
printf("请输入密码:");
scanf("%s", password);
// 验证工号和密码
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(id, users[i].id) == 0 && strcmp(password, users[i].password) == 0) {
found = 1;
break;
}
}
// 输出结果
if (found) {
printf("登录成功!\n");
} else {
printf("工号或密码错误!\n");
}
// 释放内存
free(users);
}
```
该函数首先会读取保存了用户信息的二进制文件 `userinfo.dat`,然后要求用户输入工号和密码,最后在读取的用户信息中查找是否有匹配的工号和密码。如果有,输出登录成功,否则输出错误信息。
需要注意的是,`userinfo.dat` 文件的格式应该是先保存一个 `int` 类型的用户数量,然后依次保存每个用户的工号和密码,每个用户的工号和密码都是一个 `User` 结构体。在这里假设每个工号不超过 10 个字符,每个密码不超过 20 个字符。
阅读全文