C语言实现简单通讯录系统

需积分: 0 1 下载量 4 浏览量 更新于2024-10-27 收藏 34KB DOC 举报
"这是一个使用C语言编写的通讯录程序,具备添加、查找、显示和删除联系人信息的基本功能。程序通过结构体存储联系人数据,包括编号、姓名和电话,并利用链表作为数据结构进行存储和操作。源代码中包含了文件操作函数,用于读取和保存通讯录数据到磁盘文件`addrbook`。" 在这个C语言课程设计项目中,学生创建了一个简单的通讯录系统。主要知识点包括: 1. **结构体(struct)**: 结构体在C语言中是一种自定义的数据类型,可以用来组合多种类型的数据。在本例中,定义了一个名为`person`的结构体,包含三个成员:`num`(编号)、`who`(姓名)和`phone`(电话),以及一个指向下一个`person`结构体的指针`next`,用于构建链表。 2. **链表数据结构**: 链表是一种动态数据结构,节点由结构体组成,每个节点包含数据和指向下一个节点的指针。在本例中,`head`是链表的头结点,`next`指针用于连接各个节点。链表允许在任意位置插入和删除元素,而无需移动其他元素。 3. **文件操作**: - `load()`函数负责从磁盘文件`addrbook`中加载通讯录数据。如果文件不存在,它会创建一个新的空文件。使用`fopen()`打开文件,`fread()`读取数据,`fclose()`关闭文件。 - `save()`函数将当前链表中的所有联系人数据保存到`addrbook`文件。同样使用`fopen()`打开文件,`fwrite()`写入数据,然后关闭文件。 4. **控制台界面操作**: - 函数`setWindow()`设置控制台窗口的标题、行数、列数和颜色,提供更好的用户交互体验。 - `CLS`宏用于清空控制台屏幕,`PAUSE`宏用于暂停程序,让用户有时间查看输出信息,直到按任意键继续。 5. **内存管理**: - 使用`malloc()`动态分配内存来创建新的`person`结构体实例。 - `free()`释放不再需要的内存,避免内存泄漏。 6. **循环和条件判断**: - 在`load()`和`display()`函数中,使用循环遍历链表,处理链表中的每一个元素。 - `feof()`函数用于检测文件结束。 7. **错误处理**: - 当文件打开失败或读取数据出错时,程序会进行适当的错误处理,如释放已分配的内存并返回。 这个通讯录程序虽然简单,但涵盖了C语言编程的基础知识,包括数据结构、文件操作、内存管理和基本的控制流程,对于初学者来说是一个很好的实践项目。