需求:20 名學生進出實驗室簽到/簽退,支持學生查詢個人工時、教師按學號/姓名+時間區間查詢統計排序、數據永久存儲。C 語言實現,無數據庫依賴。
typedef struct {
time_t sign_in; // 簽到時間戳
time_t sign_out; // 簽退時間戳,0 表示未簽退
int student_id; // 學號
char name[32]; // 姓名
} Record;
#define MAX_RECORDS 10000
Record records[MAX_RECORDS];
int record_count = 0;
records.dat,fwrite(&rec, sizeof(Record), 1, fp)sign_in >= start && sign_out <= end && sign_out > 0,累加 sign_out - sign_inqsort 配合比較函數按總工時降序fread 載入內存,退出或定時 fwrite 回寫time(NULL) 獲取當前時間戳(秒級)localtime() / strftime() 格式化顯示difftime(t2, t1) 計算秒數差此設計簡單可靠,適合課程設計;生產環境建議升級 SQLite。