
这是一个命令行界面的示例,你可以根据需要将其修改为图形用户界面(GUI)。

#include <stdio.h>
#include <string.h>
#define MAX_USERNAME 255
#define MAX_PASSWORD 255
typedef struct {
char username[MAX_USERNAME];
char password[MAX_PASSWORD];
} User;
User users[100]; // 假设最多有100个用户
int numUsers = 0; // 当前用户数
// 注册新用户
void registerUser() {
User newUser;
printf("Enter username: ");
scanf("%s", newUser.username);
printf("Enter password: ");
scanf("%s", newUser.password);
users[numUsers++] = newUser; // 添加新用户到数组
printf("Registration successful.n");
}
// 用户登录验证
int login(char *username, char *password) {
for (int i = 0; i < numUsers; i++) {
if (strcmp(users[i].username, username) == 0 && strcmp(users[i].password, password) == 0) { // 比较用户名和密码是否匹配
return i; // 返回用户索引,表示登录成功
}
}
return -1; // 未找到匹配的用户,登录失败
}
int main() {
int choice;
while (1) { // 主循环,持续运行直到用户选择退出
printf("1. Registern"); // 注册新用户选项
printf("2. Loginn"); // 用户登录选项
printf("3. Exitn"); // 退出程序选项
printf("Enter your choice: "); // 提示用户选择操作选项并获取输入值,注意这里假设用户输入的是整数,在实际应用中,你可能需要添加错误处理代码来处理非整数输入的情况,例如使用scanf("%d", &choice)来获取整数输入,如果输入的不是整数,你可能需要循环提示用户重新输入直到获取正确的输入为止,或者使用其他方法获取用户输入并验证其有效性,这取决于你的具体需求和设计,在实际应用中,你可能还需要添加更多的功能,例如创建新用户账户、修改现有用户的密码等,这些功能都需要相应的代码来实现,请根据你的需求进行修改和扩展。"); scanf("%d", &choice); // 获取用户选择的操作选项,注意这里假设用户输入的是整数,在实际应用中,你可能需要添加错误处理代码来处理非整数输入的情况,例如使用scanf("%d", &choice)来获取整数输入,如果输入的不是整数,你可能需要循环提示用户重新输入直到获取正确的输入为止,或者使用其他方法获取用户输入并验证其有效性,这取决于你的具体需求和设计,在实际应用中,你可能还需要添加更多的功能,例如创建新用户账户、修改现有用户的密码等,这些功能都需要相应的代码来实现,请根据你的需求进行修改和扩展。"); switch (choice) { case 1: registerUser(); break; case 2: { char username[MAX_USERNAME], password[MAX_PASSWORD]; printf("Enter username: "); scanf("%s", username); printf("Enter password: "); scanf("%s", password); int index = login(username, password); if (index == -1) printf("Invalid username or password.n"); else printf("Login successful. User index: %dn", index); break; } case 3: return 0; default: printf("Invalid choice.n"); break; } } return 0; }```








