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

C 語言鏈表實戰:學生管理系統完整源碼與模塊化設計解析

     編輯:關於C語言

系統架構設計

採用單向鏈表作為核心數據結構,每個節點包含學號、姓名、下一節點指針。功能模塊涵蓋創建、文件持久化、遍歷輸出、排序、查詢、增刪改、密碼管理、文件刪除等完整業務閉環。

核心數據結構

struct student {
    char bianhao[16];  // 學號
    char name[16];     // 姓名
    struct student *next; // 下一節點指針
};

關鍵模塊實現解析

1. 鏈表創建 (creat)

動態分配頭節點,循環讀取學號(輸入 "0" 結束)與姓名,尾插法構建鏈表,最後置尾節點 next = NULL。

2. 文件持久化 (save / openfile)

  • 保存:檢查文件存在性提示覆蓋,逐節點寫入學號、姓名換行,末尾寫入 "over" 標記
  • 讀取:fscanf 逐行讀取,遇 "over" 停止並截斷鏈表,重建鏈表結構

3. 排序功能 (sort_hao / sort_name)

採用冒泡排序思想,雙層指針遍歷交換節點數據域(而非調整指針),按學號或姓名字典序排序。注意:交換時需同步交換學號與姓名以保持數據一致性。

4. 查詢 (search)

支持按學號/姓名精確匹配,遍歷鏈表比較,找到輸出詳情並標記,未找到提示。

5. 增刪改 (add / delete_mem / change)

  • 插入:按學號有序插入,處理頭插、中間插、尾插三種情況
  • 刪除:雙指針 p(當前) e(前驅) 遍歷,找到後調整 e->next 跨過目標節點,釋放內存
  • 修改:遍歷匹配學號,直接覆蓋節點數據域

6. 安全與輔助功能

  • mima:密碼創建/驗證,存入文件 "mima"
  • delete_doc:密碼驗證後調用 remove() 刪除指定文件
  • output_use/view:幫助信息與主菜單顯示

主程序流程

void main() {
    struct student *head = NULL;
    char ch;
    // 初始化界面
    do {
        output_view(); // 顯示菜單
        scanf("%c", &ch);
        switch(ch) {
            case '1': head = creat(); break;
            case '2': save(head); break;
            case '3': output(head); break;
            case '4': head = openfile(); break;
            case '5': /* 排序子菜單 */ break;
            case '6': search(head); break;
            case '7': head = add(head); break;
            case '8': head = delete_mem(head); break;
            case '9': head = change(head); break;
            case 'a': mima(); break;
            case 'b': delete_doc(); break;
        }
        getchar(); system("cls"); // 暫停並清屏
    } while(1);
}

代碼亮點與改進建議

  • 亮點:功能完整、模塊劃分清晰、鏈表操作涵蓋增刪改查排核心技能、文件持久化實現數據落地
  • 潛在問題:
    • scanf("%s") 無長度限制,存在緩衝區溢出風險,建議用 scanf("%15s")
    • fflush(stdin) 非標準行為,輸入緩衝區處理建議改用循環 getchar() 清理
    • 排序交換數據域而非節點,大結構體時效率低,可改為指針調整
    • 無內存洩漏檢測,退出前應遍歷釋放所有節點
  • 進階擴展:引入雙向鏈表支持反向遍歷、添加索引加速查詢、實現基於鏈表的合併排序 O(n log n)

本系統是 C 語言指針、鏈表、文件操作、模塊化編程的綜合實戰佳作,適合作為數據結構課程設計或入門項目參考。

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