用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){}这个循环,达到目的停止循环。情况考虑 和 指针的各种调用熟练掌握。

  • 44
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ferry_24

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

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

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

打赏作者

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

抵扣说明:

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

余额充值