用C++写用户注册登录系统
时间: 2023-12-05 20:06:03 浏览: 266
C++自制登录注册系统
下面是一个简单的用户注册登录系统的C代码,其中使用了文件操作来存储用户信息。请注意,这只是一个示例代码,实际的实现可能需要更多的安全措施和错误处理。
```c
#include <stdio.h>
#include <string.h>
#define MAX_USERS 100 // 最大用户数
#define MAX_USERNAME_LENGTH 20 // 用户名最大长度
#define MAX_PASSWORD_LENGTH 20 // 密码最大长度
#define USERS_FILE "users.dat" // 用户信息文件名
// 用户结构体,包含用户名和密码
typedef struct {
char username[MAX_USERNAME_LENGTH];
char password[MAX_PASSWORD_LENGTH];
} User;
// 用户数组
User users[MAX_USERS];
int num_users = 0;
// 读取用户信息文件
void load_users() {
FILE *fp = fopen(USERS_FILE, "rb");
if (fp) {
fread(&num_users, sizeof(int), 1, fp);
fread(users, sizeof(User), num_users, fp);
fclose(fp);
}
}
// 保存用户信息文件
void save_users() {
FILE *fp = fopen(USERS_FILE, "wb");
if (fp) {
fwrite(&num_users, sizeof(int), 1, fp);
fwrite(users, sizeof(User), num_users, fp);
fclose(fp);
}
}
// 用户注册
void register_user() {
// 获取用户名和密码
char username[MAX_USERNAME_LENGTH];
char password[MAX_PASSWORD_LENGTH];
printf("Username: ");
scanf("%s", username);
printf("Password: ");
scanf("%s", password);
// 检查用户名是否已存在
for (int i = 0; i < num_users; i++) {
if (strcmp(users[i].username, username) == 0) {
printf("Username already exists.\n");
return;
}
}
// 创建新用户
if (num_users < MAX_USERS) {
User user;
strcpy(user.username, username);
strcpy(user.password, password);
users[num_users++] = user;
printf("User registered.\n");
save_users();
} else {
printf("Max number of users reached.\n");
}
}
// 用户登录
void login() {
// 获取用户名和密码
char username[MAX_USERNAME_LENGTH];
char password[MAX_PASSWORD_LENGTH];
printf("Username: ");
scanf("%s", username);
printf("Password: ");
scanf("%s", password);
// 查找用户
for (int i = 0; i < num_users; i++) {
if (strcmp(users[i].username, username) == 0 && strcmp(users[i].password, password) == 0) {
printf("Login successful.\n");
return;
}
}
printf("Invalid username or password.\n");
}
int main() {
// 读取用户信息文件
load_users();
// 用户注册或登录
int choice;
printf("1. Register\n2. Login\n");
scanf("%d", &choice);
if (choice == 1) {
register_user();
} else if (choice == 2) {
login();
} else {
printf("Invalid choice.\n");
}
return 0;
}
```
用户信息被存储在一个二进制文件中,文件格式如下:
```
[4字节] 用户数
[用户结构体] 用户1
[用户结构体] 用户2
...
```
阅读全文