c++通讯录简单构造

#include <iostream>
#include <string>
#define MAX 1000

using namespace std;


菜单界面

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;
    //性别 1 男 2 女 
    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
{
    //添加具体联系人
    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)
    {
        //若输入是1或2,可以退出循环,因为输入的是正确值
        //如果输入有误,重新输入
        abs->personArray[abs->m_Size].m_Sex=sex;
        break;
    }
    cout<<"输入有误,请重新输入"<<endl;
    }
    //年龄
    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 address;
    cin>>address;
    abs->personArray[abs->m_Size].m_addr=address;
    //更新通讯录人数
    abs->m_Size++;
    cout<<"添加成功"<<endl;
    system("pause");//请按任意键继续
    system("cls");//清屏操作
}
};



检测联系人是否存在,如果存在返回联系人所在数组中的具体位置

//不存在返回-1
//参数1 通讯录 参数2 对比姓名
int isExist(Addressbooks*abs,string name)
{
    //找到用户输入的姓名了
    for(int i=0;i<abs->m_Size;i++)
    
    if(abs->personArray[i].m_Name ==name)
    {
        return i;
    }
    else
    return -1;//如果遍历结束都没有找到,返回-1;
}



显示所有的联系人

void showPerson(Addressbooks * abs)
{
    //判断通讯录中人数是否为0,如果为零,提示记录为空,如果不为
    //显示记录中的联系人信息
    if(abs->m_Size==0)
    {
        cout<<"当前记录为空"<<endl;
    }
    else
    {
        for(int i=0;i<abs->m_Size;i++)
        {
            cout<<"姓名"<<abs->personArray[i].m_Name<<"\t";
            cout<<"性别"<<(abs->personArray[i].m_Age==1?"男":"女")<<"\t";
            cout<<"电话"<<abs->personArray[i].m_Phone<<"\t";
            cout<<"地址"<<abs->personArray[i].m_addr<<endl;
        }
    }

    system("pause");//按任意键继续
    system("cls");//清屏
}

    删除指定联系人

 void deletePerson(Addressbooks*abs)
    {
        cout<<"请输入您要删除的联系人"<<endl;
        string name;
        cin>>name;
    int 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 findPerson(Addressbooks *abs)
{
    cout<<"请输入您要查找的联系人"<<endl;
    string name;
    cin>>name;
    //判断联系人是否在通讯录中
    int ret = isExist(abs,name);
    if(ret != -1)//找到联系人
    {
        cout<<"姓名"<<abs->personArray[ret].m_Name<<"\t";
        cout<<"性别"<<abs->personArray[ret].m_Sex<<"\t";
        cout<<"年龄"<<abs->personArray[ret].m_Age<<"\t";
        cout<<"电话"<<abs->personArray[ret].m_Phone<<"\t";
        cout<<"住址"<<abs->personArray[ret].m_addr<<endl;
    }
    else//未找到联系人
    {
        cout<<"查无此人"<<endl;
    }
    system("pause");
    system("cls");
}


    修改指定联系人信息

void modifyPerson(Addressbooks *abs)
    {
        cout<<"请输入您要修改的联系人"<<endl;
    string name;
    cin>>name;
    int ret=isExist(abs,name);
    if(ret !=-1)//找到联系人
    {
        //姓名
        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<<"输入有误,请重新输入!"<<endl;
        }
    //年龄
        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;
    }
    else//未找到联系人
    {
        cout<<"查无此人"<<endl;
    }
    //按任意键清屏
    system("pause");
    system("cls");
    }
        //6.清空联系人
        void cleanPerson(Addressbooks *abs)
        {
            abs->m_Size=0;
            cout<<"数据已全部清空"<<endl;
            system("pause");
            system("cls");
        }

主函数

int main()
{
    //创建通讯录结构体变量
    Addressbooks abs;
    //初始化通讯录中当前人员个数
    abs.m_Size=0;
    int select=0;//创建用户选择输入的变量
    while(true)
    {//菜单调用
        showMenu();
    cin>>select;
    switch(select)
    {
        case 1://1.添加联系人
        addPerson(&abs);//利用地址传递,可以修饰实参
        break;
        case 2://显示联系人
        showPerson(&abs);
        break;
        case 3://删除联系人
        /*{
            cout<<"请输入联系人"<<endl;
        string name;
        cin>>name;
        if(isExist(&abs,name) == -1)
        {
            cout<<"查无此人";
        }
        else
        cout<<"找到此人"<<endl;
        }*/
        deletePerson(&abs);
        break;
        case 4://查找联系人
        findPerson(&abs);
        break;
        case 5://修改联系人
        modifyPerson(&abs);
        break;
        case 6://清空联系人
        cleanPerson(&abs);
        break;
        case 0://退出通讯录
        cout<<"欢迎下次使用"<<endl;
        system("pause");
        return 0;
        break;
        default:
        break;
    }
    }
    system("pause");
    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

煎饼果子小鸢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值