C++项目(一):通讯录管理系统-创新互联

文章目录
  • 项目介绍
  • 实现步骤
    • 1. 菜单显示
    • 2. 添加联系人
    • 3.显示联系人
    • 4.删除联系人
    • 5.查找联系人
    • 6.修改联系人
    • 7.清空联系人
  • 总结

创新互联是一家专业提供路北企业网站建设,专注与网站建设、成都做网站、HTML5建站、小程序制作等业务。10年已为路北众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
项目介绍

用C++实现一个通讯录管理系统,实现
1、添加联系人
2、显示联系人
3、删除联系人
4、查找联系人
5、修改联系人
6、清空联系人
0、退出通讯录
以上七个功能。


提示:以下是本篇文章正文内容,下面案例可供参考

实现步骤 1. 菜单显示
void showMenu(){cout<< "***********************"<< endl;
    cout<< "***** 1、添加联系人 *****"<< endl;
    cout<< "***** 2、显示联系人 *****"<< endl;
    cout<< "***** 3、删除联系人 *****"<< endl;
    cout<< "***** 4、查找联系人 *****"<< endl;
    cout<< "***** 5、修改联系人 *****"<< endl;
    cout<< "***** 6、清空联系人 *****"<< endl;
    cout<< "***** 0、退出通讯录 *****"<< endl;
    cout<< "***********************"<< endl;
}
2. 添加联系人

实现步骤:设计联系人结构体,设计通讯录结构体,main函数中创建通讯录,封装添加联系人函数,测试添加联系人功能。

#include#includeusing namespace std;
const int MAX = 1000;

//联系人结构体
struct Person{string m_Name;
    int m_Sex;
    int m_Age;
    string m_Phone;
    string m_Addr;
};

//通讯录结构体
struct AddressBooks{struct Person personArray[MAX];
    int m_size;
};
//添加联系人
void addPerson(AddressBooks *abs){if(abs->m_size == MAX){cout<< "通讯录已满,无法添加"<< endl;
        return;
    }
    else{cout<< "请输入姓名: "<< endl;
        string name;
        cin >>name;
        abs->personArray[abs->m_size].m_Name = name;

        cout<< "请输入性别: "<< endl;
        cout<< "1:男 "<< endl;
        cout<< "2:女 "<< endl;
        int sex = 0;
        while(true){cin >>sex;
            if(sex == 1 or sex == 2){abs->personArray[abs->m_size].m_Sex = sex;
                break;
            }
            else{cout<< "输入有误,请重新输入"<< endl;
            }
        }

        cout<< "请输入年龄: "<< endl;
        int age = 0;
        while(true){cin >>age;
            if(age >= 0 and age<= 200){abs->personArray[abs->m_size].m_Age = age;
                break;
            }
            else{cout<< "输入有误,请重新输入"<< endl;
            }
        }

        cout<< "请输入电话: "<< endl;
        string phone;
        cin >>phone;
        abs->personArray[abs->m_size].m_Phone = phone;

        cout<< "请输入地址: "<< endl;
        string address;
        cin >>address;
        abs->personArray[abs->m_size].m_Addr = address;
    }
    //更新通信录
    abs->m_size ++;
    cout<< "添加成功!"<< endl;
    system("cls"); //清空界面
}
int main() {// 创建通讯录
    AddressBooks abs;
    // 初始化通讯录中人数
    abs.m_size = 0;

    while(true){showMenu();
        int select = 0;
        cin >>select;
        switch(select){case 1:
                addPerson(&abs);
                break;
            case 2:
                showPerson(&abs);
                break;
            case 3:
                deletePerson(&abs);
                break;
            case 4:
                findPerson(&abs);
                break;
            case 5:
                modifyPerson(&abs);
                break;
            case 6:
                cleanPerson(&abs);
                break;
            case 0:
                cout<< "欢迎下次使用"<< endl;
                return 0;
                break;
        }
    }
    return 0;
}

注意事项:通信录大容量为MAX = 1000,且每次更新完需要将通信录size加1.

3.显示联系人

代码如下:

//显示联系人
void showPerson(AddressBooks * abs){if(abs->m_size == 0){cout<< "通信录为空,请添加联系人"<< endl;
    }
    for(int i = 0; i< abs->m_size; i ++){cout<< "姓名: "<< abs->personArray[i].m_Name<< "\t";
        cout<< "性别: "<< (abs->personArray[i].m_Sex == 1 ? "男" : "女")<< "\t";
        cout<< "年龄: "<< abs->personArray[i].m_Age<< "\t";
        cout<< "电话: "<< abs->personArray[i].m_Phone<< "\t";
        cout<< "住址: "<< abs->personArray[i].m_Addr<< endl;
    }
    system("cls"); //清空界面
}
4.删除联系人

实现步骤:先通过名字判断该联系人是否在通讯录中存在,若存在,则删除,若不存在,则提示不存在。
由于删除联系人、查找联系人、修改联系人都需要提前判断联系人是否存在,所以将判断是否存在写成一个函数isExit()函数来进行判断。

代码如下:

//判断联系人是否存在
int isExit(AddressBooks * abs, string name){for(int i = 0; i< abs->m_size; i ++){if(abs->personArray[i].m_Name == name){return i;
        }
    }
    return -1;
}

//删除联系人
void deletePerson(AddressBooks * abs){cout<< "请输入要删除的联系人姓名"<< endl;
    string name;
    cin >>name;
    int ret = isExit(abs, name);
    if(ret == -1){cout<< "通讯录中此人不存在"<< endl;
    }
    else{for(int i = ret; i< abs->m_size; i ++){abs->personArray[i] = abs->personArray[i+1];
        }
        cout<< "查找到此人,删除成功"<< endl;
    }
    abs->m_size--;
    system("cls"); //清空界面
}

注意事项:isExit()函数输入通信录地址和查找的联系人姓名,若联系人存在,则返回联系人所对应的下标,若不存在,则返回-1。
使用该语句:abs->personArray[i] = abs->personArray[i+1];,将从下标(即需要删除的联系人)开始后的联系人,依次覆盖前一个下标,即完成了删除操作。


5.查找联系人

代码如下:

void findPerson(AddressBooks * abs){cout<< "请输入要查找的联系人姓名"<< endl;
    string name;
    cin >>name;
    int ret = isExit(abs, name);
    if(ret == -1){cout<< "通讯录中此人不存在"<< endl;
    }
    else{cout<< "查找到此人"<< endl;
        cout<< "姓名: "<< abs->personArray[ret].m_Name<< "\t";
        cout<< "性别: "<< (abs->personArray[ret].m_Sex == 1 ? "男" : "女")<< "\t";
        cout<< "年龄: "<< abs->personArray[ret].m_Age<< "\t";
        cout<< "电话: "<< abs->personArray[ret].m_Phone<< "\t";
        cout<< "住址: "<< abs->personArray[ret].m_Addr<< endl;
    }
    system("cls"); //清空界面
}
6.修改联系人

代码如下:

//修改联系人
void modifyPerson(AddressBooks * abs){cout<< "请输入要修改的联系人姓名"<< endl;
    string name;
    cin >>name;
    int ret = isExit(abs, name);
    if(ret == -1){cout<< "通讯录中此人不存在"<< endl;
    }
    else{cout<< "查找到此人"<< endl;
        string name;
        cout<< "请重新输入姓名: "<< endl;
        cin >>name;
        abs->personArray[ret].m_Name = name;

        int sex;
        cout<< "请重新输入性别: "<< endl;
        cout<< "1:男 "<< endl;
        cout<< "2:女 "<< endl;
        cin >>sex;
        abs->personArray[ret].m_Sex = sex;

        int age;
        cout<< "请重新输入年龄: "<< endl;
        cin >>age;
        abs->personArray[ret].m_Age = age;

        string phone;
        cout<< "请重新输入电话: "<< endl;
        cin >>phone;
        abs->personArray[ret].m_Phone = phone;

        string address;
        cout<< "请重新输入地址: "<< endl;
        cin >>address;
        abs->personArray[ret].m_Addr = address;
    }
    system("cls"); //清空界面
}
7.清空联系人

代码如下:

//清空联系人
void cleanPerson(AddressBooks * abs){abs->m_size = 0;
    system("cls"); //清空界面
}

将通信录的size置为0,即完成清空操作。


总结

以上则使用C++完成了一个简单的通信录管理系统。完整代码见链接通信录管理系统。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


名称栏目:C++项目(一):通讯录管理系统-创新互联
网站路径:http://myzitong.com/article/ccgpip.html