c语言编程笔录

首页 > C语言 > c语言

c语言

基于C语言实现个人通讯录管理系统

更新时间:2023-08-09

需求描述

个人通讯录管理系统需要实现以下功能:

- 添加联系人:可以输入联系人的姓名、手机号码、电子邮件地址以及其他相关信息。

- 查找联系人:可以根据姓名或手机号码查找联系人。

- 编辑联系人:可以修改联系人各个字段的信息。

- 删除联系人:可以根据姓名或手机号码删除联系人。

- 显示联系人列表:可以列出所有联系人的信息。

- 排序联系人:可以按照姓名或手机号码对联系人进行升序或降序排序。

代码实现

以下是基于C语言实现个人通讯录管理系统的代码:

#include 
#include 
#include 

// 联系人结构体
typedef struct {
    char name[50];
    char phone[20];
    char email[50];
    // 其他字段...
} Contact;

// 全局变量
Contact contacts[100];  // 最多存储100个联系人
int numContacts = 0;    // 当前联系人数量

// 添加联系人
void addContact(Contact contact) {
    if (numContacts >= 100) {
        printf("联系人数量已达到上限");
        return;
    }
    contacts[numContacts++] = contact;
    printf("联系人添加成功");
}

// 查找联系人
void searchContact(char *searchKey) {
    int found = 0;
    for (int i = 0; i < numContacts; i++) {
        if (strcmp(contacts[i].name, searchKey) == 0 || strcmp(contacts[i].phone, searchKey) == 0) {
            printf("姓名:%s\n", contacts[i].name);
            printf("手机号码:%s\n", contacts[i].phone);
            printf("电子邮件地址:%s\n", contacts[i].email);
            // 其他字段...
            found = 1;
        }
    }
    if (!found) {
        printf("未找到相关联系人");
    }
}

// 编辑联系人
void editContact(char *searchKey, Contact newContact) {
    int found = 0;
    for (int i = 0; i < numContacts; i++) {
        if (strcmp(contacts[i].name, searchKey) == 0 || strcmp(contacts[i].phone, searchKey) == 0) {
            contacts[i] = newContact;
            printf("联系人信息已更新");
            found = 1;
        }
    }
    if (!found) {
        printf("未找到相关联系人");
    }
}

// 删除联系人
void deleteContact(char *searchKey) {
    int found = 0;
    for (int i = 0; i < numContacts; i++) {
        if (strcmp(contacts[i].name, searchKey) == 0 || strcmp(contacts[i].phone, searchKey) == 0) {
            for (int j = i; j < numContacts - 1; j++) {
                contacts[j] = contacts[j + 1];
            }
            numContacts--;
            printf("联系人已删除");
            found = 1;
        }
    }
    if (!found) {
        printf("未找到相关联系人");
    }
}

// 显示联系人列表
void displayContacts() {
    if (numContacts == 0) {
        printf("联系人列表为空");
        return;
    }
    for (int i = 0; i < numContacts; i++) {
        printf("姓名:%s\n", contacts[i].name);
        printf("手机号码:%s\n", contacts[i].phone);
        printf("电子邮件地址:%s\n", contacts[i].email);
        // 其他字段...
        printf("\n");
    }
}

// 排序联系人
void sortContacts(int sortBy, int sortOrder) {
    // sortBy=0表示按姓名排序,sortBy=1表示按手机号码排序
    // sortOrder=0表示升序,sortOrder=1表示降序
    // 使用合适的排序算法对contacts数组进行排序
    // 根据排序结果打印联系人列表
}

int main() {
    // 主程序逻辑,根据用户输入调用相应的函数进行操作
    // 包括菜单显示、参数输入、函数调用等

    return 0;
}

代码解释

上述代码实现了一个简单的个人通讯录管理系统。首先定义了Contact结构体,用于存储联系人的信息,包括姓名、手机号码、电子邮件地址等字段。

然后通过全局变量contacts来存储所有联系人的信息,并使用numContacts记录当前联系人的数量。

代码中实现了几个基本的功能函数:

- addContact函数用于添加联系人,将传入的Contact结构体添加到contacts数组中。

- searchContact函数用于查找联系人,通过遍历contacts数组,比较传入的搜索关键字与联系人的姓名和手机号码,找到匹配的联系人并打印信息。

- editContact函数用于修改联系人,通过搜索关键字找到需要修改的联系人,并用传入的新Contact结构体替换原有的联系人信息。

- deleteContact函数用于删除联系人,通过搜索关键字找到需要删除的联系人,并将后续的联系人信息向前移动,同时减少numContacts数量。

- displayContacts函数用于显示联系人列表,遍历contacts数组,打印所有联系人的信息。

另外,代码中还提供了sortContacts函数的函数框架,用于对联系人进行排序,实现方式可以根据实际需求选择合适的排序算法。

总结

个人通讯录管理系统的代码实现了基本的增删查改功能,并提供了显示联系人列表和排序联系人的函数框架。

通过该系统,用户可以方便地管理个人联系人,添加、查找、编辑和删除联系人的操作都得到了支持。

开发人员可以结合实际需求,完善和扩展该系统,添加更多的功能和字段,提高用户体验和系统的可用性。