[说明及要求]
根据用户输入的账号和密码,判断用户是否合法,如果是合法用户则记录用户的账号、上机实践,如果为非法用户则提示账号或密码错误,请重试。用户上机结束后,记录用户的下机时间并计算费用(设每小时时间费用为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()函数来等待用户输入任意键,模拟用户进行上机和下机操作。最后,根据记录的上机时间和下机时间,计算用户的上机时长和费用,并输出相应信息。