黑龙江大学c15吧 关注:9贴子:18
  • 2回复贴,共1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 定义用户角色枚举
typedef enum {
ROLE_READER, // 普通读者
ROLE_LIBRARIAN, // 图书管理员
ROLE_ADMIN, // 系统管理员
ROLE_INVALID // 无效角色
} UserRole;
// 定义用户结构体
typedef struct {
char username[50];
char password[50];
UserRole role;
} User;
// 预定义用户数据
User users[] = {
{"reader", "123456", ROLE_READER},
{"librarian", "123456", ROLE_LIBRARIAN},
{"admin", "123456", ROLE_ADMIN}
};
int userCount = sizeof(users) / sizeof(users[0]);
// 函数声明
int login(char *username, char *password, UserRole *role);
void showMenuByRole(UserRole role);
int main() {
char username[50];
char password[50];
UserRole role;
int loginSuccess = 0;
int attempts = 0;
printf("========================================\n");
printf(" 图书馆管理系统登录界面\n");
printf("========================================\n\n");


IP属地:北京1楼2026-06-02 11:13回复
    //登录循环,最多3次
    while(attempts<3&&!loginSuccess){
    printf("请输入用户名:");
    scanf("%s",username);
    printf("请输入密码:");
    scanf("%s",password);
    if(login(username,password,&role)){
    loginSuccess=1;
    printf("\n登录成功!欢迎,%s!\n",username);
    showMenuByRole(role);
    }else{
    attempts++;
    if(attempts<3){
    printf("\n用户名或密码错误!还剩%d次尝试机会。\n\n",3-attempts);
    }
    }
    }
    if(!loginSuccess){
    printf("\n登录失败次数过多,程序退出!\n");
    }
    return0;
    }
    //登录验证函数
    intlogin(char*username,char*password,UserRole*role){
    for(inti=0;i<userCount;i++){
    if(strcmp(username,users[i].username)==0&&
    strcmp(password,users[i].password)==0){
    *role=users[i].role;
    return1;
    }
    }
    return0;
    }
    //根据角色显示对应的功能菜单(仅提示权限,不实现具体功能)
    voidshowMenuByRole(UserRolerole){
    printf("\n========================================\n");
    switch(role){
    caseROLE_READER:
    printf("普通读者-可用功能\n");
    printf("========================================\n");
    printf("1.用户密码修改\n");
    printf("2.图书信息查询\n");
    printf("========================================\n");
    printf("说明:您拥有【普通读者】权限\n");
    printf("-可修改自己的密码\n");
    printf("-可查询图书信息\n");
    break;
    caseROLE_LIBRARIAN:
    printf("图书管理员-可用功能\n");
    printf("========================================\n");
    printf("1.读者管理\n");
    printf("2.图书管理\n");
    printf("3.图书流通管理\n");
    printf("4.用户密码修改\n");
    printf("========================================\n");
    printf("说明:您拥有【图书管理员】权限\n");
    printf("-可管理读者、图书、图书流通\n");
    printf("-可修改自己的密码\n");
    break;


    IP属地:北京2楼2026-06-02 11:14
    回复
      2026-07-29 12:31:35
      广告
      不感兴趣
      开通SVIP免广告

      caseROLE_ADMIN:
      printf("系统管理员-可用功能\n");
      printf("========================================\n");
      printf("1.用户管理\n");
      printf("2.图书信息查询\n");
      printf("========================================\n");
      printf("说明:您拥有【系统管理员】权限\n");
      printf("-可管理所有用户账户\n");
      printf("-可查询图书信息\n");
      break;
      default:
      printf("未知角色!\n");
      break;
      }
      printf("\n提示:本程序仅实现登录验证功能,\n");
      printf("具体业务功能未包含在此版本中。\n");
      }


      IP属地:北京3楼2026-06-02 11:14
      回复