0


用C++实现通讯录管理

#include<iostream>
using namespace std;
#include<string>
#define MAX 1000
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;
}
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(struct Addressbooks *abs )
{   //输入名字
    string name;
    cout<<"请输入名字"<<endl;
    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||sex==2)
        {
            abs->personArray[abs->m_Size].m_Sex=sex;
            break;
        }
        cout<<"输入有误,请重新输入";
    }
     //年龄
     cout<<"请输入年龄"<<endl;
     int age=0;
     cin>>age;
     abs->personArray[abs->m_Size].m_Age=age;
     //电话号码
     cout<<"请输入电话号码"<<endl;
     string phone="";
     cin>>phone;
     abs->personArray[abs->m_Size].m_Phone=phone;
     //地址
      cout<<"请输入地址"<<endl;
     string addr;
     cin>>addr;
     abs->personArray[abs->m_Size].m_Addr=addr;
     //更新通信录
     abs->m_Size++;

     cout<<"添加成功"<<endl;
     system("pause");
     system("cls");

}
int isExist(struct 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 showPerson(struct Addressbooks*abs)
{
    if(abs->m_Size==0)
    {
        cout<<"通讯录为空"<<endl;
    }
    else
    {
        for(int i; 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("pause");
    system("cls");
}

void findPerson(struct Addressbooks*abs)
{

    cout<<"请输入你想要查找的姓名"<<endl;
    string name;
    cin>>name;
    int ret;
    ret=isExist(abs,name);
    if(ret==-1)
    {
        cout<<"查无此人"<<endl;
    }
    else
    {
        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("pause");
system("cls");
}

void deletePerson(struct Addressbooks*abs)
{
    cout<<"请输入你想要删除的名字"<<endl;
    string name ;
    cin>>name;
    int ret;
    ret=isExist(abs,name);
    if(ret!=-1)
    {
        for(int i=ret ;i<abs->m_Size;i++)
        {
            abs->personArray[i]=abs->personArray[i+1];
        }
        abs->m_Size--;
        cout<<"删除完成"<<endl;
    }
    else
    {
        cout<<"查无此人"<<endl;

    }

    system("pause");
    system("cls");

}

void modifyPerson(struct Addressbooks *abs)
{
    cout<<"请输入你想要修改人的名字"<<endl;
    string name ;
    cin>>name ;
    int ret;
    ret=isExist(abs,name);
    if(ret==-1)
    {
        cout<<"查无此人"<<endl;
    }
    else
    {  //姓名
        string name;
        cout << "请输入姓名:" << endl;
        cin >> name;
        abs->personArray[ret].m_Name = name;

        cout << "请输入性别:" << endl;
        cout << "1 -- 男" << endl;
        cout << "2 -- 女" << endl;

        //性别
        int sex = 0;
        while (true)
        {
            cin >> sex;
            if (sex == 1 || sex == 2)
            {
                abs->personArray[ret].m_Sex = sex;
                break;
            }
            cout << "输入有误,请重新输入";
        }

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

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

        //家庭住址
        cout << "请输入家庭住址:" << endl;
        string address;
        cin >> address;
        abs->personArray[ret].m_Addr = address;

        cout << "修改成功" << endl;
    }
    system("pause");
    system("cls");

}

void cleanPerson(struct Addressbooks *abs)
{
    abs->m_Size=0;
    system("pause");
    system("cls");
}

int main()
{
    int select=0; //创建用户选择输入的变量
    struct Addressbooks abs;
    abs.m_Size=0;
    while(true)
    {   //菜单调用
        showMenu();
        cin>>select;
        switch(select)
        {
        case 1:
            addperson(&abs) ;   //1.添加联系人
            break;
        case 2:
            showPerson(&abs); //2.显示联系人
                break;
        case 3: deletePerson(&abs);    //3.删除联系人
            break;

        case 4:  findPerson(&abs);   //4.查找联系人
            break;
        case 5:  modifyPerson(&abs);   //5.修改联系人
            break;
        case 6:   cleanPerson(&abs); //6.清空联系人
                break;
        case 0:    //0.退出通讯录
                cout<<"欢迎下次使用"<<endl;
            system("pause");
            return 0;
            break;
        default:
            break;
        }
    }
    system("pause");
    return 0;
}

总结

主要是使用结构体创建通讯录成员和保存属性 ,利用分支结构进行函数调用来进行各个功能的实现。值得一提的是while(true){}这个循环,达到目的停止循环。情况考虑 和 指针的各种调用熟练掌握。

标签: 算法 c++

本文转载自: https://blog.csdn.net/m0_62636612/article/details/123805616
版权归原作者 Ferry_24 所有, 如有侵权,请联系我们删除。

“用C++实现通讯录管理”的评论:

还没有评论