用c语言写注册登录查看个人信息
时间: 2023-12-08 11:30:23 浏览: 33
以下是一个简单的注册登录查看个人信息的示例程序,使用了C语言和文件操作:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_USERS 100 // 最大用户数量
#define MAX_NAME_LEN 20 // 最大用户名长度
#define MAX_PASS_LEN 20 // 最大密码长度
// 用户结构体
typedef struct {
char name[MAX_NAME_LEN + 1]; // 用户名
char pass[MAX_PASS_LEN + 1]; // 密码
} User;
// 用户数组
User users[MAX_USERS];
int num_users = 0;
// 读取用户数据
void load_users() {
FILE *file = fopen("users.dat", "rb");
if (file == NULL) {
return;
}
fread(&num_users, sizeof(num_users), 1, file);
fread(users, sizeof(User), num_users, file);
fclose(file);
}
// 保存用户数据
void save_users() {
FILE *file = fopen("users.dat", "wb");
if (file == NULL) {
return;
}
fwrite(&num_users, sizeof(num_users), 1, file);
fwrite(users, sizeof(User), num_users, file);
fclose(file);
}
// 注册新用户
void register_user() {
if (num_users == MAX_USERS) {
printf("已达到最大用户数量,无法注册新用户。\n");
return;
}
char name[MAX_NAME_LEN + 1];
char pass[MAX_PASS_LEN + 1];
printf("请输入用户名(不超过%d个字符):", MAX_NAME_LEN);
scanf("%s", name);
for (int i = 0; i < num_users; i++) {
if (strcmp(users[i].name, name) == 0) {
printf("用户名已存在,请重新输入。\n");
return;
}
}
printf("请输入密码(不超过%d个字符):", MAX_PASS_LEN);
scanf("%s", pass);
User user;
strcpy(user.name, name);
strcpy(user.pass, pass);
users[num_users++] = user;
printf("注册成功!\n");
save_users();
}
// 登录
void login() {
char name[MAX_NAME_LEN + 1];
char pass[MAX_PASS_LEN + 1];
printf("请输入用户名:");
scanf("%s", name);
for (int i = 0; i < num_users; i++) {
if (strcmp(users[i].name, name) == 0) {
printf("请输入密码:");
scanf("%s", pass);
if (strcmp(users[i].pass, pass) == 0) {
printf("登录成功!\n");
return;
} else {
printf("密码错误,请重新输入。\n");
return;
}
}
}
printf("用户名不存在,请重新输入或注册新用户。\n");
}
// 查看个人信息
void view_profile() {
char name[MAX_NAME_LEN + 1];
printf("请输入用户名:");
scanf("%s", name);
for (int i = 0; i < num_users; i++) {
if (strcmp(users[i].name, name) == 0) {
printf("用户名:%s\n", users[i].name);
printf("密码:%s\n", users[i].pass);
return;
}
}
printf("用户名不存在,请重新输入。\n");
}
int main() {
load_users();
while (1) {
printf("请选择操作:\n");
printf("1. 注册\n");
printf("2. 登录\n");
printf("3. 查看个人信息\n");
printf("4. 退出\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
register_user();
break;
case 2:
login();
break;
case 3:
view_profile();
break;
case 4:
save_users();
exit(0);
default:
printf("无效的选择,请重新输入。\n");
break;
}
}
return 0;
}
```
这个程序使用了一个用户结构体存储用户名和密码,通过文件读写实现用户数据的持久化。在主函数中,通过一个菜单来选择不同的操作,包括注册、登录、查看个人信息和退出。其中注册和登录需要输入用户名和密码,查看个人信息需要输入用户名,程序会根据输入的信息来查询用户数据并输出。