本項目是一個基於控制台的教師信息與學生成績管理系統,採用 C 語言開發,實現了教師資料的增刪改查、文件持久化存儲、動態內存管理等核心功能。系統界面直觀,操作邏輯清晰,適合作為 C 語言課程設計或入門項目參考。
realloc() 實現教師數組的動態擴容typedef struct {
char number[20]; // 工號
char name[30]; // 姓名
char sex[10]; // 性別
char addr[50]; // 地址
char married[10]; // 婚姻狀態
} Teacher;
add_tea()支持覆蓋或追加模式,自動擴容內存:
void add_tea(Teacher tea[]) {
// ... 交互式輸入教師數量與信息
if (numtea > lens) {
lens += 10;
tea = (Teacher *)realloc(tea, lens * sizeof(Teacher));
}
// 逐條錄入教師工號、姓名、性別、地址、婚姻狀態
// 性別、婚姻狀態自動轉換為中文描述
}
display_tea()支持空記錄時自動提示打開文件,格式化輸出所有字段。
find_tea() / adjust()提供按工號、姓名、地址三種查找方式,找到後可選擇刪除或修改。
writetoTXT() / openfileTXT()int writetoTXT(Teacher tea[]) {
// 將內存數據寫入文本文件,格式:數量 + 每條記錄各字段
fprintf(fp, "%d\n", numtea);
while (i < numtea) {
fprintf(fp, "%s %s %s %s %s\n",
tea[i].number, tea[i].name, tea[i].sex, tea[i].addr, tea[i].married);
i++;
}
}
gets() 存在緩衝區溢出風險,建議改用 fgets()系統包含主菜單、登錄驗證、教師/學生子系統、文件操作、系統信息顯示等模塊,總計 500+ 行代碼,結構清晰,適合學習參考。