c++ 实现添加联系人功能,联系人上限为1000人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址)

//实现添加联系人功能,联系人上限为1000人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址)
//添加联系人实现步骤:设计联系人结构体
// 设计通讯录结构体  main函数中创建通讯录 封装添加联系人函数  测试添加联系人功能
#include<iostream>
#include<string>
#define max 1000
using namespace std;

//封装函数显示界面 void show()   在main函数中调用封装好的函数
void show()
{
    for (int i = 0; i < 23; i++)  {cout << "*";}
    cout << endl;
    cout << "*****" << "1、添加联系人" << "*****" << endl;
    cout << "*****" << "2、显示联系人" << "*****" << endl;
    cout << "*****" << "3、删除联系人" << "*****" << endl;
    cout << "*****" << "4、查找联系人" << "*****" << endl;
    cout << "*****" << "5、修改联系人" << "*****" << endl;
    cout << "*****" << "6、清空联系人" << "*****" << endl;
    cout << "*****" << "0、退出通讯录" << "*****" << endl;
    for (int i = 0; i < 23; i++)  {cout << "*";}
    cout << endl;
    cout << "请输入相应命令使用通讯录"<< endl;
    
}

//联系人结构体
struct lxr
{
    string name, sex;
    int age;
    string tele;
    string address;
};
struct txl//通讯录结构体
{
    struct lxr lxr[max];
    int number;
};
//1、添加联系人
void addlxr( txl *txl)//封装添加联系人函数
{
    //判断通讯录是否已满
    if (txl->number == max)
    {
        cout << "通讯录已满无法继续添加" << endl;
    }
    else
    {
        string name;
        string sex;
        int age;
        string tele;
        string address;
        
        
        cout << "请输入联系人姓名" << endl;
        cin >> name; 
        txl->lxr[txl->number].name = name;//利用当前通讯录中人员个数添加姓名  很巧妙 txl->lxr[txl->number]

        
        cout << "请输入联系人性别" << endl;
        cout << "1---男" << endl;
        cout << "2---女" << endl;
        int shuru;
        
        while(true)
        {
            cin >> shuru;
                
            switch (shuru)
            {
                case 1:
             {
                txl->lxr[txl->number].sex = "男";
                break;
             }
                case 2:
             {
                txl->lxr[txl->number].sex = "女";
                break;
             }
            default:
            {
                cout << "输入有误请重新输入" << endl;
                continue;
            }
           }
            break;
        }
    

        
        cout << "请输入联系人年龄" << endl;
        while (true)
        {
            cin >> age;
            if (  0 < age < 120)
            {
                txl->lxr[txl->number].age = age;
                break;
            }
            cout << "输入有误请重新输入" << endl;
            continue;
        }

        cout << "请输入联系人电话" << endl;
        cin >> tele;
        txl->lxr[txl->number].tele  = tele;

        cout << "请输入联系人地址" << endl;
        cin >> address;
        txl->lxr[txl->number].address = address;
        
        txl->number++;
        cout << "通讯录更新成功" << endl;
        system("pause");  //请按任意键继续
        //system("cls");  //清屏操作
    }
}

//2、显示联系人
void showpeople(txl *txl)//封装显示联系人函数
{
    if (txl->number == 0)
    {
        cout << "当前通讯录为空" << endl;
    }
    else 
    {
        for (int i = 0; i < txl->number; i++)
        {
            cout << "姓名:" << txl->lxr[i].name << "  性别:" << txl->lxr[i].sex << "  年龄:" << txl->lxr[i].age
                << "  电话:" << txl->lxr[i].tele << "  地址:" << txl->lxr[i].address << endl;
        }
    }
    system("pause");
    //system("cls");
}
//3、删除联系人
//3.1查找的联系人是否存在
int peopleexist(txl *txl,string name)//查找联系人是否存在函数  如果存在返回联系人所在数组所在位置  不存在返回-1
{
        for (int i = 0; i < txl->number; i++)
        {
            if (txl->lxr[i].name == name)
            {
                return i;    //打印出姓名代号
            }
        }
        return -1;//不存在
}
//3.2删除联系人
void deletepeople(txl *txl)
{
    if (txl->number == 0)
    {
        cout << "当前通讯录为空" << endl;
    }else

    {
        cout << "请输入您要删除的联系人" << endl;
        string name;
        cin >> name;
        int sure;
        int ret = peopleexist(txl, name);
        if (ret == -1)
        {
            cout << "查无此人" << endl;
            //system("pause");
            //system("cls");
        }
        else
        {
            cout << "找到" << name << endl;
            cout << "确定删除吗?" << endl;
            cout << "1---确定删除" << endl;
            cout << "2---取消删除" << endl;
            cin >> sure;
            switch (sure)
            {
            case 1:
            {
                for (int i = ret; i < txl->number; i++)
                {
                    //数据前移
                    txl->lxr[i] = txl->lxr[i + 1];
                }
                txl->number--;
                cout << "删除成功" << endl;
                break;
            }
            case 2:
                cout << "删除操作取消" << endl;
                break;
            default:
                cout << "输入错误请重新输入" << endl;
                break;
            }

        }
    }
    system("pause");
    //system("cls");
}
//4、查找联系人
void findpeople(txl *txl)
{
    if (txl->number == 0)
    {
        cout << "当前通讯录为空" << endl;
    }
    else
    {
        cout << "请输入您要查找的联系人" << endl;
        string name;
        cin >> name;
        int ret = peopleexist(txl, name);
        if (ret == -1)
        {
            cout << "查无此人" << endl;
            system("pause");
            //system("cls");
        }
        else
        {
            cout << "找到" << name << endl;
            cout << "具体信息为" << endl;
            cout << "姓名:" << txl->lxr[ret].name << "  性别:" << txl->lxr[ret].sex << "  年龄:" << txl->lxr[ret].age
                << "  电话:" << txl->lxr[ret].tele << "  地址:" << txl->lxr[ret].address << endl;

        }
    }
}

//5、修改联系人
//5.1全部信息修改
void changeall(txl* txl)
{
    string name;
    string sex;
    int age;
    string tele;
    string address;
    int ret = peopleexist(txl, name);

    cout << "请输入联系人姓名" << endl;
    cin >> name;
    txl->lxr[ret].name = name;//利用当前通讯录中人员个数添加姓名  很巧妙 txl->lxr[txl->number]


    cout << "请输入联系人性别" << endl;
    cout << "1---男" << endl;
    cout << "2---女" << endl;
    int shuru;

    while (true)
    {
        cin >> shuru;

        switch (shuru)
        {
        case 1:
        {
            txl->lxr[ret].sex = "男";
            break;
        }
        case 2:
        {
            txl->lxr[ret].sex = "女";
            break;
        }
        default:
        {
            cout << "输入有误请重新输入" << endl;
            continue;
        }
        }
        break;
    }

    cout << "请输入联系人年龄" << endl;
    while (true)
    {
        cin >> age;
        if (0 < age < 120)
        {
            txl->lxr[ret].age = age;
            break;
        }
        cout << "输入有误请重新输入" << endl;
        continue;
    }

    cout << "请输入联系人电话" << endl;
    cin >> tele;
    txl->lxr[ret].tele = tele;

    cout << "请输入联系人地址" << endl;
    cin >> address;
    txl->lxr[ret].address = address;
}
//5.2修改后输出地址
void changelate(txl *txl,string name)
{
    cout << "修改后联系人信息为" << endl;
    int ret = peopleexist(txl, name);
    cout << "姓名:" << txl->lxr[ret].name << "  性别:" << txl->lxr[ret].sex << "  年龄:" << txl->lxr[ret].age
        << "  电话:" << txl->lxr[ret].tele << "  地址:" << txl->lxr[ret].address << endl;
}
//5.3修改联系人函数封装
void changepeople(txl *txl)
{
    if (txl->number == 0)
    {
        cout << "当前通讯录为空" << endl;
    }
    else
    {
        cout << "请输入您要修改的联系人" << endl;
        string name;
        int xiugai;
        cin >> name;
        int ret = peopleexist(txl, name);
        if (ret == -1)
        {
            cout << "查无此人" << endl;
            system("pause");
            //system("cls");
        }
        else
        {
            cout << "找到" << name << "具体信息为" << endl;
            cout << "姓名:" << txl->lxr[ret].name << "  性别:" << txl->lxr[ret].sex << "  年龄:" << txl->lxr[ret].age
                << "  电话:" << txl->lxr[ret].tele << "  地址:" << txl->lxr[ret].address << endl;
            cout << "您要修改哪一项" << endl;
            cout << "1.姓名  2.性别   3.年龄  4.电话  5.地址  6.全部修改" << endl;
            cin >> xiugai;
            switch (xiugai)
            {
                case 1://姓名
                {
                    cout << "请输入修改后联系人姓名" << endl;
                    cin >> name;
                    txl->lxr[ret].name = name;
                    changelate(txl, name);
                }break;
                case 2://性别
                {
                    cout << "请输入修改后联系人性别" << endl;
                    cout << "1---男" << endl;
                    cout << "2---女" << endl;
                    int shuru;

                    while (true)
                    {
                        cin >> shuru;

                        switch (shuru)
                        {
                        case 1:
                        {
                            txl->lxr[ret].sex = "男";
                            break;
                        }
                        case 2:
                        {
                            txl->lxr[ret].sex = "女";
                            break;
                        }
                        default:
                        {
                            cout << "输入有误请重新输入" << endl;
                            continue;
                        }
                        }
                        break;
                    }
                    changelate(txl, name);
                }break;
                case 3://年龄
                {
                    int age;
                    cout << "请输入修改后联系人年龄" << endl;
                    while (true)
                    {
                        cin >> age;
                        if (0 < age < 120)
                        {
                            txl->lxr[ret].age = age;
                            break;
                        }
                        cout << "输入有误请重新输入" << endl;
                        continue;
                    }
                    changelate(txl, name);
                }break;
                case 4://电话
                {
                    string tele;
                    cout << "请输入修改后联系人电话" << endl;
                    cin >> tele;
                    txl->lxr[ret].tele = tele;
                    changelate(txl, name);
                }break;

                    
                case 5://地址
                {
                    string address;
                    cout << "请输入修改后联系人地址" << endl;
                    cin >> address;
                    txl->lxr[ret].address = address;
                    changelate(txl, name);
                }break;
                case 6://全部修改
                {
                    changeall (txl);
                    changelate(txl, name);
                }break;

            }
        }
    }
    system("pause");
}
//6.清空联系人
void clean(txl *txl)
{
    int qingkong;
    if (txl->number == 0)
    {
        cout << "当前通讯录已经为空" << endl;
    }
    else
    {
        cout << "你确定要清空通讯录吗?" << endl;
        cout << "1---确定清空" << endl;
        cout << "2---取消清空" << endl;
        cin >> qingkong;

        switch (qingkong)
        {
        case 1:
        {
            txl->number = 0;//通过联系人数量置为0来实现清空
            cout << "通讯录已清空" << endl;
            system("pause");
            break;
        }
        case 2:
            cout << "清空操作取消" << endl;
            break;
        default:
            cout << "输入错误请重新输入" << endl;
            break;
        }
    }
    system("pause");
}
    

int main ()
{
    int select = 0;//用户选择变量
    txl txl;     //创建通讯录结构体变量
    txl.number = 0;   //初始化通讯录中当前人员个数

    while(true)//搭建了一个框架
    {
        show();
        cin >> select;
        switch (select)
        {
        case 1://1、添加联系人
            addlxr(&txl);//利用地值传递改变实参
            continue;
        case 2://2、显示联系人
            showpeople(&txl);
            continue;
        case 3://3、删除联系人
        {
             deletepeople(&txl);
            //cout << "请输入删除联系人姓名" << endl;
            //string name;
            //cin >> name;
            /*if (peopleexist(&txl, name) == -1)
            {
                cout << "查无此人" << endl;

            }
            else
            {
                cout << "找到此人" << endl;

            }*/

        }continue;
        case 4://4、查找联系人
            findpeople(&txl);
            continue;

        case 5://5、修改联系人
            changepeople(&txl);
            continue;
        case 6://6、清空联系人
            clean(&txl);
            continue;
        case 0://0、退出通讯录
            cout << "欢迎下次使用" << endl;
            system ("pause");
            return 0;
            break;
        default:
            cout << "输入有误请重新输入" << endl;
            continue;
        }
        system ("pause");
        return 0;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值