#ifndef BANK_H #define BANK_H #define MAX_LOGS 100 // 日志队列最大容量,防止无限增长 #define MAX_ACCOUNTS 50 //系统规格为50个账户 #define NAME_LEN 31 //用户名字最长30字符,因此需要多1个字符串结束符 // 账户信息,每个账户id对应了名字、账户余额等信息,是不是用数据结构定义比较合适? typedef struct strAccount { int id; char name[NAME_LEN]; double balance; int password; int quanxian;//1,admin:2,user } STACCOUNT; // strAccount STACCOUNT; // 函数声明,main函数中调用的各模块函数需要在程序公用的.h中声明 // 公开出来被其他模块调用的函数,也应该在公用的.h中声明 //创建账户的函数 void CreateAccount(int quanxian); //实现存款的函数 void Deposit(int id); //实现取款的函数 void Withdraw(int id); //查询余额的函数 void QueryBalance(int id); //显示全部账户的函数 void ShowAccounts(); //数据持久化函数 void SaveData(); //加载数据的函数 void LoadData(); //根据ID查找账户数组id的函数 int FindAccount(int iD); //登录函数,返回用户权限 int LoginAccount(int temp_id); //销户 void DeleteAccount(int id); void InitAdminAccount(); // 日志条目结构 typedef struct { int account_id; // 涉及的账户ID int target_id; // 转账目标账户ID,非转账为-1 char type[10]; // 操作类型: "Deposit","Withdraw","Transfer","Receive" double amount; // 交易金额 double balance; // 交易后的余额 char timestamp[20]; // 时间戳 (格式: YYYY-MM-DD HH:MM:SS) char location[50]; // 地点信息 } LogEntry; // 环形队列结构 typedef struct { LogEntry logs[MAX_LOGS]; int front; // 队头指针 int rear; // 队尾指针 } LogQueue; // 全局日志队列变量 (在 bank.c 中定义,在其他文件中 extern 引用) extern LogQueue g_logQueue; // 日志函数声明 void InitLogQueue(); // 初始化队列 int IsLogQueueFull(); // 检查队列是否满 int IsLogQueueEmpty(); // 检查队列是否空 int EnqueueLog(int id, const char* type, double amt, double bal, int target); // 入队 void ShowTransactionLogs(); // 显示所有日志 void SearchLogs(const char* pattern);//日志搜索 // 转账功能 void Transfer(int from_id); // 资金关系图分析 void ShowTransferGraph(); void ShowAccountRelations(int id); void ShowMostActiveNodes(); void FindTransferPaths(int from_id, int to_id); void GenerateDummyData(); #endif