本书涵盖了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 文件及函数说明
源文件
函数名或其他部分