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

C語言實現學生信息管理系統:鏈表、文件操作完整教程

     編輯:C 語言問答

從零構建 C 語言學生信息管理系統

學生信息管理系統是 C 語言教學中的經典實戰項目,綜合考察結構體、鏈表、文件讀寫、模組化程式設計等核心知識。本文提供一個完整的控制台版實現,涵蓋增刪改查、數據持久化、菜單交互等功能。

系統功能模組

  • 用戶界面:文字菜單驅動,清晰易用。
  • 信息錄入:支持學號、姓名、電話、年齡、地址等字段,自動檢測學號重複。
  • 信息刪除:按學號精確刪除,自動前移數組元素。
  • 信息查詢:支持按學號、姓名雙模式查詢。
  • 信息修改:可單獨修改姓名、年齡、性別、出生年月、地址、電話、郵箱等任意字段。
  • 數據持久化:程序啟動自動讀取 student.txt,退出前可手動保存,採用文本格式便於人工檢視。
  • 數據排序:按學號升序排列,採用冒泡排序實現。

核心數據結構

#define LEN 15      // 學號/姓名最大長度
#define N 100       // 最大學生人數

struct record {
    char code[LEN+1];   // 學號
    char name[LEN+1];   // 姓名
    int age;            // 年齡
    char sex[3];        // 性別
    char time[LEN+1];   // 出生年月
    char add[30];       // 家庭地址
    char tel[LEN+1];    // 電話
    char mail[30];      // 電子郵件
} stu[N];

關鍵函數設計

函數名功能關鍵技術點
readfile()從文件載入數據fopen、fscanf 循環讀取,錯誤處理
insert()插入新記錄學號唯一性檢查、動態擴展計數器
del()刪除記錄數組元素前移覆蓋、計數器遞減
seek()查詢記錄strcmp 字符串比較、雙模式查詢
modify()修改字段子菜單定位字段、strcpy 更新字符串
sort()按學號排序結構體整體交換、雙層循環冒泡
save()保存到文件fprintf 格式化輸出、fclose 釋放資源
menu()主菜單交互switch-case 分發、全局變量控制循環

編譯與運行建議

  1. 使用支持 C99 標準的編譯器(GCC、MSVC、Clang 均可)。
  2. 確保工作目錄可寫入,以便創建 student.txt。
  3. 首次運行選擇「1.刷新學生信息」初始化空文件,或手動創建符合格式的文本文件。
  4. 輸入包含空格的字段(如地址)時,建議改用 fgets 替換 scanf 避免截斷。

進階優化方向

  • 將靜態數組改為動態鏈表,突破人數上限。
  • 引入二分查找加速學號檢索(前提是保持有序)。
  • 增加數據校驗:電話格式、郵箱格式、日期合法性。
  • 實現二進制文件存儲,提升大數據量讀寫性能。
  • 移植至圖形界面(如 GTK、Qt)或 Web 後端(CGI/FastCGI)。

完整源碼已整合於上方邏輯中,可直接複製編譯運行。此項目適合作為期末課程設計、基礎鞏固練習或面試項目展示。

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