首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言項目實戰:教師信息與學生成績管理系統完整源碼解析

     編輯:關於C語言

項目概述

本項目是一個基於控制台的教師信息與學生成績管理系統,採用 C 語言開發,實現了教師資料的增刪改查、文件持久化存儲、動態內存管理等核心功能。系統界面直觀,操作邏輯清晰,適合作為 C 語言課程設計或入門項目參考。

核心功能模塊

  • 教師信息管理:添加、顯示、查找、修改、刪除教師記錄
  • 動態內存分配:使用 realloc() 實現教師數組的動態擴容
  • 文件持久化:支持文本文件讀寫,數據斷電不丟失
  • 交互式菜單:清晰的控制台用戶界面

關鍵數據結構

typedef struct {
    char number[20];  // 工號
    char name[30];    // 姓名
    char sex[10];     // 性別
    char addr[50];    // 地址
    char married[10]; // 婚姻狀態
} Teacher;

核心函數解析

1. 添加教師信息 add_tea()

支持覆蓋或追加模式,自動擴容內存:

void add_tea(Teacher tea[]) {
    // ... 交互式輸入教師數量與信息
    if (numtea > lens) {
        lens += 10;
        tea = (Teacher *)realloc(tea, lens * sizeof(Teacher));
    }
    // 逐條錄入教師工號、姓名、性別、地址、婚姻狀態
    // 性別、婚姻狀態自動轉換為中文描述
}

2. 顯示教師信息 display_tea()

支持空記錄時自動提示打開文件,格式化輸出所有字段。

3. 查找與修改 find_tea() / adjust()

提供按工號、姓名、地址三種查找方式,找到後可選擇刪除或修改。

4. 文件操作 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()
  • ⚠️ 缺少輸入驗證(如工號唯一性、格式檢查)
  • 💡 可擴展:添加學生成績模塊、統計分析、圖形界面(如 ncurses)

完整源碼結構

系統包含主菜單、登錄驗證、教師/學生子系統、文件操作、系統信息顯示等模塊,總計 500+ 行代碼,結構清晰,適合學習參考。

系統主界面
圖1:系統主菜單界面
教師信息錄入
圖2:教師信息錄入界面
查詢結果
圖3:信息查詢結果顯示
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved