2201_75590617 2023-03-08 13:30 采纳率: 90%
浏览 32
已结题

c语言机房上机模拟系统

根据用户输入的账号和密码,判断用户是否合法,如果是合法用户则记录用户的账号、上机时间,如果为非法用户则提示账号或密码错误,请重试。用户上机结束后,记录用户的下机时间,并计算费用(设每小时时间费用为1元)。

  • 写回答

2条回答 默认 最新

  • IT小哥哥呀 2023-03-08 13:44
    关注
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    
    #define MAX_USERS 100
    #define MAX_NAME_LENGTH 20
    #define MAX_PASSWORD_LENGTH 20
    
    typedef struct {
        char name[MAX_NAME_LENGTH];
        char password[MAX_PASSWORD_LENGTH];
        time_t login_time;
        time_t logout_time;
        int logged_in;
    } user_t;
    
    user_t users[MAX_USERS];
    int num_users = 0;
    
    int login(char *name, char *password) {
        int i;
        for (i = 0; i < num_users; i++) {
            if (strcmp(users[i].name, name) == 0 && strcmp(users[i].password, password) == 0) {
                if (users[i].logged_in) {
                    printf("Error: User %s is already logged in.\n", name);
                    return 0;
                } else {
                    users[i].logged_in = 1;
                    users[i].login_time = time(NULL);
                    printf("Welcome, %s! You are now logged in.\n", name);
                    return 1;
                }
            }
        }
        printf("Error: Invalid username or password. Please try again.\n");
        return 0;
    }
    
    void logout(char *name) {
        int i;
        for (i = 0; i < num_users; i++) {
            if (strcmp(users[i].name, name) == 0 && users[i].logged_in) {
                users[i].logged_in = 0;
                users[i].logout_time = time(NULL);
                printf("Goodbye, %s! You have been logged out.\n", name);
                int duration = (int)difftime(users[i].logout_time, users[i].login_time);
                int cost = duration / 3600;
                if (duration % 3600 != 0) {
                    cost++;
                }
                printf("Your total cost is %d yuan.\n", cost);
                return;
            }
        }
        printf("Error: User %s is not logged in.\n", name);
    }
    
    int main() {
        // Add some sample users
        strcpy(users[0].name, "alice");
        strcpy(users[0].password, "password1");
        users[0].logged_in = 0;
        num_users++;
        strcpy(users[1].name, "bob");
        strcpy(users[1].password, "password2");
        users[1].logged_in = 0;
        num_users++;
    
        // Loop until the user quits
        while (1) {
            char name[MAX_NAME_LENGTH];
            char password[MAX_PASSWORD_LENGTH];
            printf("Enter your username (or type 'quit' to exit): ");
            scanf("%s", name);
            if (strcmp(name, "quit") == 0) {
                break;
            }
            printf("Enter your password: ");
            scanf("%s", password);
            login(name, password);
            printf("\n");
            // Wait for user to log out
            while (1) {
                char command[MAX_NAME_LENGTH];
                printf("Enter 'logout' to log out: ");
                scanf("%s", command);
                if (strcmp(command, "logout") == 0) {
                    logout(name);
                    printf("\n");
                    break;
                } else {
                    printf("Unknown command.\n");
                }
            }
        }
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 创建了问题 3月8日

悬赏问题

  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真
  • ¥15 关于#c语言#的问题,请各位专家解答!