C语言实现通讯录系统课程设计
本次课程设计旨在通过实现一个简单的通讯录系统,帮助初学者巩固C语言基础知识,并初步了解数据结构相关操作和应用。
基本功能
通讯录系统主要包含以下功能:
- 添加联系人
- 删除联系人
- 修改联系人信息
- 查找联系人
- 显示所有联系人信息
- 清空联系人
设计思路
通讯录系统主要使用链表数据结构作为存储方式,并且通过读写文件将链表数据结构永久保存到外部存储器中。具体实现步骤如下:
- 定义一个通讯录结构体类型,包含联系人信息,如姓名,性别,电话等。
- 定义一个链表节点结构体类型,每个节点存储一个联系人信息。
- 定义一个链表类型,包含链表头指针和尾指针,便于插入和删除操作。
- 通过读取文件中的数据建立通讯录,初始化链表。
- 完成各个操作函数的实现,具体内容见下文。
代码示例
添加联系人
// 定义一个新的联系人
struct contact new_contact;
// 从用户输入中获取联系人信息
contact_input(&new_contact);
// 判断联系人是否已存在
if (find_contact(&new_contact) != NULL) {
printf("联系人已存在,添加失败。\n");
return;
}
// 新建链表节点,保存联系人信息
struct contact_node* node = (struct contact_node*) malloc(sizeof(struct contact_node));
node->contact = new_contact;
node->next = NULL;
// 将新建节点插入到链表末尾
if (contacts.tail == NULL) {
contacts.head = contacts.tail = node;
} else {
contacts.tail->next = node;
contacts.tail = node;
}
printf("添加联系人成功。\n");
使用上述代码,可以实现向通讯录中添加一个新的联系人。我们首先定义了一个新的联系人结构体,通过调用contact_input()
函数获取用户输入的联系人信息,然后使用find_contact()
函数查找是否存在相同联系人,如果不存在则创建一个新的链表节点,最后通过修改链表的头指针和尾指针来插入新节点。最后输出结果。
查找联系人
// 从用户输入中获取需要查找的联系人姓名
char search_name[MAX_NAME_LEN];
printf("请输入需要查找的联系人姓名:");
fgets(search_name, MAX_NAME_LEN, stdin);
strip(search_name);
// 调用查找函数获取联系人信息
struct contact_node* result = find_contact_by_name(search_name);
if (result != NULL) {
printf("查找到了以下联系人:\n");
print_contact(&result->contact);
} else {
printf("未找到联系人。\n");
}
上述代码中,我们通过fgets()
函数从标准输入中获取需要查找的联系人姓名,并调用find_contact_by_name()
函数查找联系人。如果找到了相应的联系人,则通过print_contact()
函数输出联系人信息,如果未找到则输出相应提示。需要注意的是,为了安全起见,我们在输入后通过strip()
函数清除输入字符串中的空格和换行符。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现通讯录系统课程设计 - Python技术站