根据用户输入的账号和密码,判断用户是否合法,如果是合法用户则记录用户的账号、上机时间,如果为非法用户则提示账号或密码错误,请重试。用户上机结束后,记录用户的下机时间,并计算费用(设每小时时间费用为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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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语言#的问题,请各位专家解答!