From 74e467e111f65a193244f448ed1e47398e0e2ce1 Mon Sep 17 00:00:00 2001 From: Idiot-awa <14024116+idiot-awa@user.noreply.gitee.com> Date: Fri, 8 May 2026 12:39:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 +++++ file_io.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ log.c | 2 +- 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 file_io.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1f51ab1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.o +*.exe +bank.dat +.vscode/launch.json +.vscode/tasks.json diff --git a/file_io.c b/file_io.c new file mode 100644 index 0000000..ba986d2 --- /dev/null +++ b/file_io.c @@ -0,0 +1,55 @@ +#include +#include +#include "bank.h" +#include + +#define FILE_NAME bank.bat + +//要操作的全局变量,但不在本模块定义需要声明为外部引入 +extern STACCOUNT g_astAccounts[]; +extern int g_iAccCount; + +/* 函数功能:数据持久化,将内存中的账户数据保存到文件中 + 保存方式为二进制 + 保存到文件bank.bat中,该文件名只在本模块用使用 + * 参数:无 + * 保存信息来自全局变量g_astAccounts + * 返回值:无 + * 保存是失败怎么处理? + */ +void SaveData() +{ + FILE *file = fopen("bank.dat", "wb"); + fwrite(g_astAccounts, sizeof(STACCOUNT), 50, file); + fclose(file); + LoadData(); +} + + +/* 函数功能:从文件bank.bat中把账户数据读取到内存 + 操作的文件名仅在本模块中使用 + * 参数:无 + * 信息读取后放入全局变量g_astAccounts + * 返回值:无 + * 读取失败怎么处理? + */ +void LoadData() +{ + int i; + int result=0; + FILE *file = fopen("bank.dat", "rb"); + if (file == NULL) { + InitAdminAccount(); + g_iAccCount= 1; + } + else { + fread(g_astAccounts, sizeof(STACCOUNT), 50, file); + } + fclose( file); + for (i = 0; i < 50; i++) { + if (g_astAccounts[i].id != 0) { + result++; + } + } + g_iAccCount= result; +} diff --git a/log.c b/log.c index 7550a7b..e7a9aa0 100644 --- a/log.c +++ b/log.c @@ -45,7 +45,7 @@ int EnqueueLog(int id, const char* type, double amt, double bal) { g_logQueue.logs[pos].amount = amt; g_logQueue.logs[pos].balance = bal; GetCurrentTimeStr(g_logQueue.logs[pos].timestamp); - strcpy(g_logQueue.logs[pos].location, "四川省 德阳市"); // 根据你的需求固定地点 + strcpy(g_logQueue.logs[pos].location, "宇宙总行"); // 根据你的需求固定地点 // 队尾指针后移 g_logQueue.rear = (g_logQueue.rear + 1) % MAX_LOGS;