用C语言如何写机房上机模拟系统

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

回答来自ChatGPT:

#include <stdio.h>
#include <string.h>
#include <time.h>

// 定义合法的账号和密码
char *accounts[] = {"user1", "user2", "user3"};
char *passwords[] = {"password1", "password2", "password3"};
int num_accounts = 3;

// 定义每小时的费用
float hourly_rate = 1.0;

// 记录用户的上机实践和下机时间
time_t login_time;
time_t logout_time;

// 根据账号和密码验证用户是否合法
int is_valid_user(char *account, char *password) {
    for (int i = 0; i < num_accounts; i++) {
        if (strcmp(account, accounts[i]) == 0 && strcmp(password, passwords[i]) == 0) {
            return 1;  // 用户合法
        }
    }
    return 0;  // 用户非法
}

int main() {
    char account[20], password[20];
    printf("请输入账号:");
    scanf("%s", account);
    printf("请输入密码:");
    scanf("%s", password);
    if (!is_valid_user(account, password)) {
        printf("账号或密码错误,请重试!\n");
        return 0;
    }

    // 用户合法,记录上机时间
    time(&login_time);
    printf("欢迎使用机房上机模拟系统,您已成功登录!\n");

    // 模拟用户上机实践
    printf("请输入任意键开始上机:");
    getchar();
    getchar();

    // 模拟用户下机
    printf("请输入任意键下机:");
    getchar();

    // 计算费用并记录下机时间
    time(&logout_time);
    float duration = difftime(logout_time, login_time) / 3600.0;  // 上机时长(单位:小时)
    float cost = duration * hourly_rate;  // 上机费用
    printf("您的上机时长为%.2f小时,费用为%.2f元。谢谢使用!\n", duration, cost);

    return 0;
}


定义了三个合法的账号和密码,并将每小时费用设为1元。用户输入账号和密码后,通过is_valid_user()函数验证用户是否合法,如果合法则记录上机时间并输出欢迎信息;否则提示用户账号或密码错误并结束程序。

模拟用户上机实践和下机时,我们使用了getchar()函数来等待用户输入任意键,模拟用户进行上机和下机操作。最后,根据记录的上机时间和下机时间,计算用户的上机时长和费用,并输出相应信息。