用c++代码写一个用户使用计算器功能,可以记录不同用户使用计算器情况,记录以文件形式保存在计算机内,每次程序运行时要求输入用户名
时间: 2024-05-20 21:15:44 浏览: 58
抱歉,我可以回答您的问题。以下是一个简单的用C代码实现计算器和记录用户使用情况并保存记录在文件中的示例:
#include <stdio.h>
#include <stdlib.h>
#define MAX_USERS 100 // 最大用户数量
#define MAX_OPERATIONS 1000 // 每个用户最大计算次数
#define FILENAME "calc_records.txt" // 记录文件名
// 记录用户信息
typedef struct user {
char name[20]; // 用户名
int operation_count; // 计算次数
char operations[MAX_OPERATIONS][50]; // 用户计算表达式和结果的字符串记录
} User;
int main() {
User users[MAX_USERS]; // 存储所有用户信息
int user_count = 0; // 当前用户数量
// 读取记录文件
FILE *fp = fopen(FILENAME, "r");
if (fp) {
while (!feof(fp)) {
// 从文件中读取每个用户的信息
User u;
fread(&u, sizeof(User), 1, fp);
if (u.name[0])
users[user_count++] = u; // 添加到用户列表中
}
fclose(fp);
}
printf("请输入您的用户名:\n");
char username[20];
scanf("%s", username);
// 查找当前用户是否已经存在
User *current_user = NULL;
for (int i = 0; i < user_count; i++) {
if (strcmp(users[i].name, username) == 0) {
current_user = &users[i];
break;
}
}
// 如果不存在,则创建一个新用户
if (!current_user) {
User u = {0};
strncpy(u.name, username, sizeof(u.name) - 1);
users[user_count++] = u;
current_user = &users[user_count - 1];
}
// 计算器循环
printf("请输入您要计算的表达式,按 q 退出:\n");
while (1) {
char expression[50];
scanf("%s", expression);
if (strcmp(expression, "q") == 0) // 如果用户输入了 q 则退出
break;
current_user->operation_count++; // 增加用户计算次数
// 计算表达式并记录结果
char result[50];
snprintf(result, sizeof(result), "%d", (int)strtol(expression, NULL, 0)); // 假设只支持整数计算
// 记录表达式和结果字符串
snprintf(current_user->operations[current_user->operation_count - 1], sizeof(current_user->operations[0]), "%s = %s", expression, result);
printf("结果:%s\n", result);
}
// 保存记录文件
fp = fopen(FILENAME, "w");
for (int i = 0; i < user_count; i++)
fwrite(&users[i], sizeof(User), 1, fp);
fclose(fp);
return 0;
}
阅读全文