数据结构课程设计通讯录系统设计整套代码
时间: 2025-01-04 22:35:24 浏览: 6
### 数据结构课程设计中的通讯录系统完整代码实现
#### 1. 结构体定义
为了存储联系人的信息,可以创建一个 `Contact` 结构体来表示单个联系人。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
#define PHONE_NUMBER_LENGTH 20
#define CONTACTS_MAX_SIZE 100
typedef struct {
char name[MAX_NAME_LENGTH];
char phone[PHONE_NUMBER_LENGTH];
} Contact;
```
#### 2. 创建顺序表
使用数组作为底层容器来管理多个联系人记录。这有助于快速访问和遍历数据。
```c
typedef struct {
Contact contacts[CONTACTS_MAX_SIZE]; // 存储联系人的列表
int size; // 当前已存入的联系人数目
} AddressBook;
void initAddressBook(AddressBook *book) {
book->size = 0;
}
```
#### 3. 增加新联系人功能
提供向地址簿中增加新的联系人的方法。此操作采用尾部插入的方式完成。
```c
int addContact(AddressBook *book, const Contact *contact) {
if (book->size >= CONTACTS_MAX_SIZE) { // 检查容量是否超出限制
printf("The address book is full.\n");
return -1;
}
strcpy(book->contacts[book->size].name, contact->name);
strcpy(book->contacts[book->size++].phone, contact->phone);
return 0;
}
```
#### 4. 删除指定名称的联系人
允许用户根据姓名删除特定条目的逻辑如下:
```c
int deleteContactByName(AddressBook *book, const char* targetName) {
for(int i=0;i<book->size;++i){
if(strcmp(targetName, book->contacts[i].name)==0){ // 找到了要移除的目标项
memmove(&book->contacts[i], &book->contacts[i+1],
sizeof(Contact)*(book->size-i-1));
--(book->size); // 更新当前数量计数器
return 0;
}
}
printf("No such person named %s\n",targetName);
return -1;
}
```
#### 5. 查找并显示某个人的信息
当需要查询某个具体的人时,可以通过名字来进行匹配查找,并打印其电话号码等详情。
```c
void findAndPrintContact(const AddressBook *book, const char* searchKey) {
for(int i=0 ; i<book->size ; ++i){
if(strcasecmp(searchKey, book->contacts[i].name)==0){
printf("Found: Name=%s Phone=%s\n",
book->contacts[i].name,
book->contacts[i].phone);
break ;
}else{
continue ;
}
}
}
```
#### 6. 显示全部联系人
最后还需要有一个选项用来展示所有的现有成员及其联系方式。
```c
void listAllContacts(const AddressBook *book) {
puts("\nCurrent Contacts:");
for(int i=0 ; i<book->size ; ++i){
printf("%d.Name:%s\tPhone Number:%s\n",
i+1 , book->contacts[i].name ,
book->contacts[i].phone );
}
}
```
以上就是基于C语言的数据结构——线性表的应用实例之一:简易版通信录管理系统[^1]。该案例展示了如何利用基本的数据结构概念构建实用的小型应用程序。
阅读全文