首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言學生簽到系統設計:文件存儲結構、時間戳處理、統計查詢完整方案

     編輯:程式設計疑難解答

需求: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;

核心功能實現要點

  1. 簽到/簽退:追加寫入二進制文件 records.dat,fwrite(&rec, sizeof(Record), 1, fp)
  2. 時間區間統計:遍歷所有記錄,判斷 sign_in >= start && sign_out <= end && sign_out > 0,累加 sign_out - sign_in
  3. 排序輸出:qsort 配合比較函數按總工時降序
  4. 持久化:程序啟動 fread 載入內存,退出或定時 fwrite 回寫

時間處理關鍵 API

  • time(NULL) 獲取當前時間戳(秒級)
  • localtime() / strftime() 格式化顯示
  • difftime(t2, t1) 計算秒數差

此設計簡單可靠,適合課程設計;生產環境建議升級 SQLite。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved