用户登陆系统用c语言编写
时间: 2023-06-14 16:05:04 浏览: 40
要实现用户登录系统,需要以下步骤:
1. 创建一个用户数据文件来存储用户名和密码。
2. 编写一个注册函数,将新用户的用户名和密码写入到用户数据文件中。
3. 编写一个登录函数,用于验证用户输入的用户名和密码是否与用户数据文件中的相匹配。
以下是一个简单的用户登录系统的C代码示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_USERS 100 // 最大用户数量
#define MAX_NAME_LENGTH 20 // 用户名最大长度
#define MAX_PASSWORD_LENGTH 20 // 密码最大长度
#define USER_DATA_FILE "data.txt" // 用户数据文件名
// 用户结构体
typedef struct {
char name[MAX_NAME_LENGTH+1];
char password[MAX_PASSWORD_LENGTH+1];
} User;
// 读取用户数据文件
int read_users(User users[]) {
FILE *file = fopen(USER_DATA_FILE, "r");
if (file == NULL) {
return 0;
}
int count = 0;
while (count < MAX_USERS && fscanf(file, "%s %s", users[count].name, users[count].password) == 2) {
count++;
}
fclose(file);
return count;
}
// 写入用户数据文件
void write_users(User users[], int count) {
FILE *file = fopen(USER_DATA_FILE, "w");
for (int i = 0; i < count; i++) {
fprintf(file, "%s %s\n", users[i].name, users[i].password);
}
fclose(file);
}
// 注册新用户
void register_user(User users[], int *count) {
if (*count >= MAX_USERS) {
printf("Too many users.\n");
return;
}
char name[MAX_NAME_LENGTH+1];
char password[MAX_PASSWORD_LENGTH+1];
printf("Enter username: ");
scanf("%s", name);
printf("Enter password: ");
scanf("%s", password);
for (int i = 0; i < *count; i++) {
if (strcmp(name, users[i].name) == 0) {
printf("Username already exists.\n");
return;
}
}
User user;
strcpy(user.name, name);
strcpy(user.password, password);
users[*count] = user;
(*count)++;
write_users(users, *count);
printf("User registered successfully.\n");
}
// 验证用户登录
void login(User users[], int count) {
char name[MAX_NAME_LENGTH+1];
char password[MAX_PASSWORD_LENGTH+1];
printf("Enter username: ");
scanf("%s", name);
printf("Enter password: ");
scanf("%s", password);
for (int i = 0; i < count; i++) {
if (strcmp(name, users[i].name) == 0 && strcmp(password, users[i].password) == 0) {
printf("Login successful.\n");
return;
}
}
printf("Invalid username or password.\n");
}
// 主函数
int main() {
User users[MAX_USERS];
int count = read_users(users);
int choice;
do {
printf("1. Register\n2. Login\n3. Quit\n");
printf("Enter choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
register_user(users, &count);
break;
case 2:
login(users, count);
break;
case 3:
break;
default:
printf("Invalid choice.\n");
break;
}
} while (choice != 3);
return 0;
}
```
该程序使用了一个简单的用户结构体来存储用户名和密码,使用文件来存储用户数据。`read_users`函数用于读取用户数据文件,`write_users`函数用于写入用户数据文件。`register_user`函数用于注册新用户,`login`函数用于验证用户登录。主函数使用一个循环菜单来让用户选择注册、登录或退出。