通讯录管理系统的设计和实现线性表
时间: 2023-09-23 17:02:24 浏览: 258
通讯录管理系统可以使用线性表来实现,下面是该系统的设计和实现:
1. 数据结构设计
采用线性表结构来存储通讯录信息,每个通讯录项包含姓名、电话号码、电子邮件等基本信息。
2. 数据结构定义
定义一个结构体来存储通讯录项信息:
```
typedef struct {
char name[20]; // 姓名
char phone[20]; // 电话号码
char email[30]; // 电子邮件
} Contact;
```
定义一个线性表结构体,包含指向通讯录项数组的指针和表长:
```
#define MAX_SIZE 100 // 最大通讯录项数
typedef struct {
Contact *data; // 指向通讯录项数组的指针
int length; // 线性表长度
} ContactList;
```
3. 基本操作实现
(1)创建通讯录
创建一个空的线性表,初始化表长为0,申请动态内存存储通讯录项数组。如果申请内存失败,返回NULL;否则返回指向线性表结构体的指针。
```
ContactList *createContactList() {
ContactList *list = (ContactList *) malloc(sizeof(ContactList));
if (list == NULL) {
return NULL;
}
list->data = (Contact *) malloc(MAX_SIZE * sizeof(Contact));
if (list->data == NULL) {
free(list);
return NULL;
}
list->length = 0;
return list;
}
```
(2)插入通讯录项
在线性表的末尾插入一个通讯录项,如果插入成功,返回1;否则返回0。
```
int insertContact(ContactList *list, Contact contact) {
if (list->length >= MAX_SIZE) {
return 0;
}
list->data[list->length] = contact;
list->length++;
return 1;
}
```
(3)删除通讯录项
删除指定位置的通讯录项,如果删除成功,返回1;否则返回0。
```
int deleteContact(ContactList *list, int index) {
if (index < 0 || index >= list->length) {
return 0;
}
for (int i = index; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
return 1;
}
```
(4)修改通讯录项
在指定位置修改通讯录项,如果修改成功,返回1;否则返回0。
```
int modifyContact(ContactList *list, int index, Contact contact) {
if (index < 0 || index >= list->length) {
return 0;
}
list->data[index] = contact;
return 1;
}
```
(5)查找通讯录项
根据姓名查找通讯录项,如果找到,返回其在线性表中的位置;否则返回-1。
```
int searchContact(ContactList *list, char *name) {
for (int i = 0; i < list->length; i++) {
if (strcmp(list->data[i].name, name) == 0) {
return i;
}
}
return -1;
}
```
(6)遍历通讯录
遍历整个线性表,输出所有通讯录项的信息。
```
void printContactList(ContactList *list) {
for (int i = 0; i < list->length; i++) {
printf("%d. %s\t%s\t%s\n", i + 1, list->data[i].name, list->data[i].phone, list->data[i].email);
}
}
```
4. 系统界面实现
使用菜单方式实现通讯录管理系统的界面。
```
void menu() {
printf("=============== 通讯录管理系统 ===============\n");
printf("1. 添加联系人\n");
printf("2. 删除联系人\n");
printf("3. 修改联系人\n");
printf("4. 查找联系人\n");
printf("5. 显示所有联系人\n");
printf("0. 退出系统\n");
printf("=============================================\n");
}
```
主函数中调用菜单函数和基本操作函数,实现通讯录管理系统的整体功能。
阅读全文