本書涵蓋了C語言的重要基礎知識,重點介紹C語言的綜合運用,通過詳細實例,結合具體的實際應用需求,循序漸進地啟發學生獨立完成實踐題目,培養學生實際分析問題、解決問題的能力。本書設計了10個信息管理實例項目,并介紹了兩種C語言程序開發環境的使用方法,以滿足不同學校和學生的程序實踐要求。
本書不僅可以作為計算機及相關專業的C語言實踐課程教材,而且也可以作為其他C語言教材的參考書,亦可作為高等學校各專業C語言教輔教材。
第5章
設備信息管理
本章設計并實現一個設備信息管理程序,要求實現設備入庫登記、設備領用與歸還登記、設備維修登記、設備變更登記等功能模塊,并且每一個模塊還需要劃分多個子模塊;使用各自不同的結構體來儲存不同的登記信息;使用鏈表來實現各種登記信息的添加、刪除、查詢、修改等操作;使用文件來保存數據,以便下次運行時可以自動將數據從文件讀取到鏈表中。
5.1 實 踐 目 的
(1)掌握帶頭節點的鏈表的工作原理和處理方式。
(2)掌握使用malloc、free等函數對鏈表進行創建、增加、刪除等操作的方法,掌握遍歷鏈表以實現查詢等操作的方法。
(3)加深理解模塊化的編程思想,將一個程序劃分成不同的源文件、函數來編寫,掌握對多個源文件進行處理的方式。
(4)掌握使用C語言對文件進行讀寫操作,掌握將結構體數據直接寫入文件和從文件中讀取結構體數據的方法。
(5)了解設備管理過程中所需要處理的信息以及相關的處理方法。
5.2 基 本 要 求
(1)實現設備入庫登記、設備領用與歸還登記、設備維修登記、設備變更登記四大功能模塊,每個功能模塊又分別對應登記信息的顯示、查詢、增加、刪除和修改等操作子模塊,從而完成一個設備信息管理系統所需功能。
(2)使用4種不同的結構體來分別存儲4大功能模塊中所需登記的信息。
(3)使用鏈表來實現對登記信息的顯示、查詢、增加、刪除等操作。
(4)使用二進制文件完成數據的存取,要求每次運行某個功能模塊時將數據讀入結構體中,并給用戶提供保存選項,可以將結構體中的數據保存在二進制文件中。
(5)系統制作完成后應實現類似圖5.1所示界面。
5.3 算 法 分 析
1. 數據結構
程序需要設計4個結構體來滿足存儲不同類型登記數據的需要,結構體設計參考 如下:
struct ent_node /*存儲入庫登記的結構體*/
{ char id[10];
char type[10];
char brand[16];
char model[16];
long value;
char buy_date[10];
ent_ptr next;
};
struct bor_node /*存儲領用與歸還登記的結構體*/
{ char id[10];
char dev_id[10];
int type;
char applicant[10];
char transactor[10];
char date[10];
bor_ptr next;
};
struct fix_node /*存儲維修登記的結構體*/
{ char id[10];
char dev_id[10];
char reporter[10];
char date[10];
int type;
fix_ptr next;
};
struct mod_node /*存儲變更登記的結構體*/
{ char id[10];
char dev_id[10];
char date[10];
char before[20];
char after[20];
mod_ptr next;
};
2. 函數定義
程序由devman.c、entreg.c、borreg.c、fixreg.c、modreg.c等5個源文件構成,由entreg.h、borreg.h、fixreg.h、modreg.h等4個頭文件構成。其中命名為*reg.*的文件用于定義各模塊所需結構體及相關函數,由于實現功能類似,為節省篇幅,僅以entreg.c及entreg.h舉例,函數說明如表5.1所示。
表5.1 文件及函數說明
源文件
函數名或其他部分