採用單向鏈表作為核心數據結構,每個節點包含學號、姓名、下一節點指針。功能模塊涵蓋創建、文件持久化、遍歷輸出、排序、查詢、增刪改、密碼管理、文件刪除等完整業務閉環。
struct student {
char bianhao[16]; // 學號
char name[16]; // 姓名
struct student *next; // 下一節點指針
};
creat)動態分配頭節點,循環讀取學號(輸入 "0" 結束)與姓名,尾插法構建鏈表,最後置尾節點 next = NULL。
save / openfile)fscanf 逐行讀取,遇 "over" 停止並截斷鏈表,重建鏈表結構sort_hao / sort_name)採用冒泡排序思想,雙層指針遍歷交換節點數據域(而非調整指針),按學號或姓名字典序排序。注意:交換時需同步交換學號與姓名以保持數據一致性。
search)支持按學號/姓名精確匹配,遍歷鏈表比較,找到輸出詳情並標記,未找到提示。
add / delete_mem / change)p(當前) e(前驅) 遍歷,找到後調整 e->next 跨過目標節點,釋放內存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() 清理本系統是 C 語言指針、鏈表、文件操作、模塊化編程的綜合實戰佳作,適合作為數據結構課程設計或入門項目參考。