單檔案 book.c 實作圖書借還管理,功能含:初始化、借書、還書、查詢、歷史記錄。VC6 編譯通過,遵循編碼規範,適合練習 C 語言模組化設計。
#define MAX_BOOK_COUNT 10
#define MIN_BOOK_NUMBER 1000
typedef unsigned char UINT8;
typedef int BookNumber;
typedef enum { BOOK_IN, BOOK_OUT } BOOK_STATE_EM;
typedef enum { BOOK_OP_IN, BOOK_OP_OUT } BOOK_OP_EM;
typedef struct {
UINT8 nHour, nMin, nSec;
} SYS_TIME;
typedef struct {
BookNumber nNum;
BOOK_STATE_EM emState;
char szName[MAX_BOOK_NAME_LEN + 1];
} BOOK_INFO;
typedef struct {
BOOK_INFO *pstBookInfo;
BOOK_OP_EM emBookOption;
SYS_TIME stOptionTime;
} BOOK_HIS_INFO;
typedef struct tagBookHisNode {
BOOK_HIS_INFO stBookHisInfo;
struct tagBookHisNode *pstNext;
} BOOK_HIS_NODE;
cmdBooksInit():初始化 10 本書資料並建立鏈表頭。cmdBooksBorrow/Return/Query/History():對應業務操作,更新狀態並記錄歷史。GetUserCommand():解析使用者指令(init/borrow/return/query/history/exit)。apiPrintBookInfo/History():格式化輸出書本狀態與歷史紀錄。BOOL AddHisNode(BOOK_INFO *pBook, BOOK_OP_EM op) {
BOOK_HIS_NODE *node = malloc(sizeof(BOOK_HIS_NODE));
node->stBookHisInfo.pstBookInfo = pBook;
node->stBookHisInfo.emBookOption = op;
node->stBookHisInfo.stOptionTime = GetSysTime();
node->pstNext = NULL;
// 尾插法加入全域鏈表 g_pstHisLogHead
}

完整程式碼較長,已上傳附件,核心邏輯涵蓋:結構體設計、鏈表操作、時間戳記錄、指令解析與錯誤碼訊息對應表。