c++通讯录

通讯录管理系统c++学习过程中的一次“晋级赛”,通讯录很大的考验了学生对于c++语法的理解和认识,在指针,实参形参,值传递地址传递和结构体方面的要求较高,对于初学者来说通讯录管理系统是个考验基础能力较好的小程序。

通讯录包括7个功能分别是


菜单功能*
在这里插入图片描述

添加联系人*
在这里插入图片描述

显示联系人*
在这里插入图片描述

删除联系人*
在这里插入图片描述

查找联系人*
在这里插入图片描述

修改联系人*
在这里插入图片描述

清空联系人*
在这里插入图片描述

退出通讯录*
在这里插入图片描述

//
//  main.cpp
//  通讯录
//
//  Created by 龚玉尚 on 2021/3/24.
//

#include <iostream>
using namespace std;
#include<string>
#define max 1000

struct Person
{
    //姓名
    string name;
    //性别 1、男 2、女
    int sex;
    //年龄
    int age;
    //电话
    string phone;
    //住址
    string address;
};
struct Addressbooks
{
    //容量
    struct Person personArray[max];
    //现在的个数
    int count;
    
};

//显示界面
void showMenu()
{
    cout<<"*********************"<<endl;
    cout<<"*****1、添加联系人*****"<<endl;
    cout<<"*****2、显示联系人*****"<<endl;
    cout<<"*****3、删除联系人*****"<<endl;
    cout<<"*****4、查找联系人*****"<<endl;
    cout<<"*****5、修改联系人*****"<<endl;
    cout<<"*****6、清空联系人*****"<<endl;
    cout<<"*****7、推出通讯录*****"<<endl;
    cout<<"*********************"<<endl;
}
//1、添加联系人
void addperson(Addressbooks * abs)
{
    //判断通讯录是否已满,如果满了就不再添加
    if(abs->count==max)
    {
        cout<<"通讯录已满无法添加"<<endl;
        return;
    }
    else
    {
        //添加具体联系人
        
        //姓名
        string name;
        cout<<"请输入姓名"<<endl;
        cin >> name;
        abs->personArray[abs->count].name=name;
        //性别
        int sex;
        cout<<"请输入性别"<<endl;
        cout<<"1--男"<<endl;
        cout<<"2--女"<<endl;
        error_sex:
        cin>>sex;
        //判断是否正确输入
        if(sex==1||sex==2)
        {
            abs->personArray[abs->count].sex=sex;
        }
        else
        {
            cout<<"输入错误,请重新输入"<<endl;
            //输入错误,跳转输入语句
            goto error_sex;
        }
        //年龄
        int age;
        cout<<"请输入年龄"<<endl;
        error_age:
        cin>>age;
        if(age>=0&&age<200)
        {
        abs->personArray[abs->count].age=age;
        }
        else
        {
            cout<<"别开玩笑,正经点,重新输入吧"<<endl;
            goto error_age;
        }
        //电话
        string phone;
        cout<<"请输入电话号码"<<endl;
        cin>>phone;
        abs->personArray[abs->count].phone=phone;
        //住址
        string address;
        cout<<"请输入住址"<<endl;
        cin>>address;
        abs->personArray[abs->count].address=address;
        cout<<"存入联系人成功"<<endl;
        abs->count++;
    }
}
//2、显示联系人
void showPerson(Addressbooks * abs)
{   //判断通讯录是否是空的
    if(abs->count==0)
    {
        cout<<"空空如也"<<endl;
    }
    else
    {   //循环打印每个人的信息
        for(int i=0;i<abs->count;i++)
        {
            cout<<"姓名:"<<abs->personArray[i].name<<"    ";
            cout<<"姓别:"<<abs->personArray[i].sex<<"    ";
            cout<<"年龄:"<<abs->personArray[i].age<<"     ";
            cout<<"电话:"<<abs->personArray[i].phone<<"     ";
            cout<<"地址:"<<abs->personArray[i].address<<"     ";
            cout<<endl;
        }
    }
}

//3、删除联系人
void deletPerson(Addressbooks * abs)
{   int a=0,i;
    string name;
    cout<<"请输入要删除的联系人"<<endl;
    cin>>name;
    //遍历结构体查找
    for(i=0;i<abs->count;i++)
    {
      if(name==abs->personArray[i].name)
      {
          a++;
          for(int j=i;j<abs->count;j++)
          {
              abs->personArray[j]=abs->personArray[j+1];
          }
          abs->count--;
          cout<<"联系人已删除"<<endl;
      }
      
    }
    //没找到
    if(a==0)
        cout<<"查无此人"<<endl;
    
}
//4、查找联系人
void find(Addressbooks * abs)
{   int a=0;
    string name;
    cout<<"请输入想查找的联系人"<<endl;
    cin>>name;
    //遍历结构体查找
    for(int i=0;i<abs->count;i++)
    {
        if(name==abs->personArray[i].name)
        {
            cout<<"姓名:"<<abs->personArray[i].name<<"    ";
            cout<<"姓别:"<<abs->personArray[i].sex<<"    ";
            cout<<"年龄:"<<abs->personArray[i].age<<"     ";
            cout<<"电话:"<<abs->personArray[i].phone<<"     ";
            cout<<"地址:"<<abs->personArray[i].address<<"     ";
            cout<<endl;
            a++;
        }
    }
    if(!a)
    {
        cout<<"查不到此联系人"<<endl;
    }
    
}
//5、修改联系人
int decide(Addressbooks * abs)
{   string name;
    cout<<"请选择要修改的联系人"<<endl;
    cin>>name;
    //遍历结构体
    for(int i=0;i<=abs->count;i++)
    {
        if(abs->personArray[i].name==name)
        {   //查到此人函数返回序号值
            return i+1;
        }
    }
    //没查到退出函数
    return 0;
}
void changePerson(Addressbooks * abs)
{
    int res=0,select=0,sex,age;
    string name,phone,address;
    res=decide(abs);
    //判断是否查到要删除的联系人
    if(res)
    {
        res-=1;
    while(1)
    {   cout<<"请选择你要修改的项目"<<endl;
        cout<<"1--姓名"<<"  "<<"2--性别"<<"   "<<"3--年龄"<<"   "<<"4--电话"<<"   "<<"5--住址"<<"   "<<"6--退出修改"<<endl;
        cin>>select;
        //选择想要修改的项目
        switch(select)
        {
            case 1:
            {
                cin>>name;
                abs->personArray[res].name=name;
                cout<<"修改成功"<<endl;
            }
                break;
            case 2:
            {
                cin>>sex;
                abs->personArray[res].sex=sex;
                cout<<"修改成功"<<endl;
            }
                break;
            case 3:
            {
                cin>>age;
                abs->personArray[res].age=age;
                cout<<"修改成功"<<endl;
            }
                break;
            case 4:
            {
                cin>>phone;
                abs->personArray[res].phone=phone;
                cout<<"修改成功"<<endl;
            }
                break;
            case 5:
            {
                cin>>address;
                abs->personArray[res].address=address;
                cout<<"修改成功"<<endl;
            }
                break;
            case 6:
                return;
                break;
            default:
                cout<<"输入错误,请重新输入"<<endl;
                break;
            
        }
    }
    }
    else
        cout<<"查无此人"<<endl;

}
//6、清空联系人
void cleanPerson(Addressbooks * abs)
{   int m=0;
    cout<<"是否清空通讯录"<<endl;
    cout<<"1--是     0--否"<<endl;
    cin>>m;
    //一次判断
    if(m)
    {
        cout<<"再次确定是否清空通讯录"<<endl;
        cout<<"1--是     0--否"<<endl;
        cin>>m;
        //再次确认
        if(m)
        {
            abs->count=0;
            cout<<"通讯录已清除"<<endl;
        }
        else
        return;
    }
    else
        return;
}
//7、退出通讯录
int main(int argc, const char * argv[]) {
    //创建通讯录的结构体变量
    Addressbooks abs;
    abs.count=0;
    int select;
    showMenu();
    while(1)
    {
        cin>>select;
        switch(select)
        {
            case 1://添加联系人
                addperson(&abs);
                system("pause");
                break;
            case 2://显示联系人
                showPerson(&abs);
                break;
            case 3://删除联系人
                deletPerson(&abs);
                break;
            case 4://查找联系人
                find(&abs);
                break;
            case 5://修改联系人
                changePerson(&abs);
                break;
            case 6://清空联系人
                cleanPerson(&abs);
                break;
            case 7://推出通讯录
                cout<<"欢迎下次使用"<<endl;
                return 0;
                break;
            default://重新输入
                cout<<"输入错误,请重新输入"<<endl;
                break;
        }
        
       
    }
    return 0;
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老尚嵌入式

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

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

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

打赏作者

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

抵扣说明:

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

余额充值