iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现简易通讯录管理系统
  • 582
分享到

C++实现简易通讯录管理系统

2024-04-02 19:04:59 582人浏览 八月长安
摘要

目录前言结构体联系人结构体通讯录结构体函数模块菜单添加联系人显示联系人判断联系人删除联系人查找联系人清空所有联系人main函数源代码运行结果本文实例为大家分享了c++实现简易通讯录管

本文实例为大家分享了c++实现简易通讯录管理系统的具体代码,供大家参考,具体内容如下

前言

建议收藏,亲手写一遍代码,感受指针神奇的魅力;
可以帮助你更好的巩固知识体系,熟悉指针,结构体与函数一起使用时的妙处

完成通讯录管理系统所需知识体系

1.结构体
2.指针
3.函数的封装
4.指针与函数的结合使用
5.指针与结构体的结合使用

结构体

联系人结构体

struct person
{
    string name;//姓名
    string sex; //性别
    int age;  //年龄
    string phone;//手机号
    string home;//地址

};

通讯录结构体

struct addressbook
{
    struct person personArray[MAX]; //通讯录扩展到100;
    int size=0;  //当前联系人个数(后面就相当于i++)
};

函数模块

void menu();//菜单
void putit(addressbook* add);//添加联系人
void showperson(addressbook* add);// 显示联系人
int if_include(addressbook* add, string name);//判断联系人
void deleteperson(addressbook* add, int i);//删除联系人
void findPerson( addressbook* add);//查找联系人
void cleanperson(struct addressbook* add);//清空所有联系人

菜单

void menu()
{
    cout << endl;
    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;
}

添加联系人

void putit(addressbook* add)//添加联系人功能
{
    if (add->size == MAX)
        cout << "通讯录已满" << endl;
    else
    {
        string name;
        string sex;
        int age;
        string phone;
        string home;
        cout << "请输入姓名" << endl;
        cin >> name;
        add->personArray[add->size].name = name;
        cout << "请输入姓别" << endl;
        cin >> sex;
        add->personArray[add->size].sex = sex;
        cout << "请输入年龄" << endl;
        cin >> age;
        add->personArray[add->size].age = age;
        cout << "请输入电话号码" << endl;
        cin >> phone;
        add->personArray[add->size].phone = phone;
        cout << "请输入家庭住址" << endl;
        cin >> home;
        add->personArray[add->size].home = home;
        add->size++;
        cout << "添加联系人成功" << endl;
        
    }
    system("pause");
    system("cls");
    menu();
}

有人问添加联系人函数中为什么要使用指针?
因为值传递中形参无法改变实参;
而利用指针的地址传递可以通过函数中的形参改变实参;
具体原理可以参考博主之前的指针基础和指针进阶内容]

显示联系人

void showperson(addressbook* add)
{
    for (int i = 0; i <add->size; i++)
    {
        cout << "姓名:  " << add->personArray[i].name;
        cout << "\t姓别:  " << add->personArray[i].sex;
        cout << "\t年龄:  " << add->personArray[i].age;
        cout << "\t电话号码:  " << add->personArray[i].phone;
        cout << "\t家庭住址:  " << add->personArray[i].home << endl;
    }
    system("pause");
    system("cls");
    menu();
}

判断联系人

int if_include(addressbook* add, string name)
{
    for (int i = 0; i < add->size; i++)
    {
        if (name == add->personArray[i].name)
        {
            return i;
        }
        else
        {
            return -1;
        }
    }

}

删除联系人

void deleteperson(addressbook* add, int i)
{
    for (; i < add->size; i++)
    {
        add->personArray[i] = add->personArray[i + 1];
    }
    system("pause");
    system("cls");
}

查找联系人

void findPerson( addressbook* add)
{
    cout << "请输入您想要查找的联系人:" << endl;
    string name;
    cin >> name;
    int ret = if_include(add, name);
    if (ret == -1)
    {
        cout << "查无此人" << endl;
    }
    else
    {   //查到此人,进行显示操作
        int i = ret;
        cout << "姓名:" << add->personArray[i].name << "\t";
        cout << "性别:" << add->personArray[i].sex << "\t";
        cout << "年龄:" << add->personArray[i].age << "\t";
        cout << "联系方式:" << add->personArray[i].phone << "\t";
        cout << "地址:" << add->personArray[i].home << endl;
    }
    //按任意键清屏
    system("pause");
    system("cls");
}

清空所有联系人

void cleanperson(struct addressbook* add)//清空所有联系人
{
    cout << "是否确认清空?" << endl;
    cout << "1 --- 是" << endl;
    cout << "2 --- 否" << endl;
    int a;
    cin >> a;
    if (a == 1)
    {
        add->size = 0;//将当前记录联系人数量置为0,做逻辑上的清空操作
        cout << "通讯录已清空" << endl;
    }
    system("pause");
    system("cls");
}

main函数

int main()
{
    menu();
    addressbook add;//定义一个通讯录
    int choice=1;
    while (choice != 0)
    {
        cin >> choice;
        switch (choice)//选择
        {
        case 1: putit(&add);
            break;
        case 2: showperson(&add);
            break;
        case 3: {cout << "请输入你要删除的人的名字" << endl;
            string aname;
            cin >> aname;
            if (if_include(&add, aname) == -1)
            {
                cout << "查无此人" << endl;
                break;
            }
            if (if_include(&add, aname))
            {
                deleteperson(&add, if_include(&add, aname));
            }
        }
            break; 
        case 4:
            break;
        case 5:
            break;
        case 6:
            break;
        case 0: cout << "欢迎下次使用" << endl;
            return 0;
            break;
        default: {cout << "输入不合法,请重新输入" << endl;
            break; }
        }
    }
}

源代码

#include<iOStream>
using namespace std;
#include<string>
#define MAX 100

struct person
{
    string name;//姓名
    string sex; //性别
    int age;  //年龄
    string phone;//手机号
    string home;//地址

};
struct addressbook
{
    struct person personArray[MAX]; //通讯录扩展到100;
    int size=0;  //当前联系人个数(后面就相当于i++)
};
void menu();//菜单
void putit(addressbook* add);
void showperson(addressbook* add); 
int if_include(addressbook* add, string name);
void deleteperson(addressbook* add, int i);
void findPerson(struct addressbooks* add);//查找联系人
void cleanperson(struct addressbook* add);//清空所有联系人
int main()
{
    menu();
    addressbook add;
    int choice=1;
    while (choice != 0)
    {
        cin >> choice;
        switch (choice)
        {
        case 1: putit(&add);
            break;
        case 2: showperson(&add);
            break;
        case 3: {
            cout << "请输入你要删除的人的名字" << endl;
            string aname;
            cin >> aname;
            if (if_include(&add, aname) == -1)
            {
                cout << "查无此人" << endl;
                break;
            }
            if (if_include(&add, aname))
            {
                deleteperson(&add, if_include(&add, aname));
            }
        }
            break; 
        case 4:
            break;
        case 5:
            break;
        case 6:
            break;
        case 0: cout << "欢迎下次使用" << endl;
            return 0;
            break;
        default: {cout << "输入不合法,请重新输入" << endl;
            break; }
        }
    }
}
void menu()
{
    cout << endl;
    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;
}
void putit(addressbook* add)//添加联系人功能
{
    if (add->size == MAX)
        cout << "通讯录已满" << endl;
    else
    {
        string name;
        string sex;
        int age;
        string phone;
        string home;
        cout << "请输入姓名" << endl;
        cin >> name;
        add->personArray[add->size].name = name;
        cout << "请输入姓别" << endl;
        cin >> sex;
        add->personArray[add->size].sex = sex;
        cout << "请输入年龄" << endl;
        cin >> age;
        add->personArray[add->size].age = age;
        cout << "请输入电话号码" << endl;
        cin >> phone;
        add->personArray[add->size].phone = phone;
        cout << "请输入家庭住址" << endl;
        cin >> home;
        add->personArray[add->size].home = home;
        add->size++;
        cout << "添加联系人成功" << endl;
        
    }
    system("pause");
    system("cls");
    menu();
}
void showperson(addressbook* add)
{
    for (int i = 0; i <add->size; i++)
    {
        cout << "姓名:  " << add->personArray[i].name;
        cout << "\t姓别:  " << add->personArray[i].sex;
        cout << "\t年龄:  " << add->personArray[i].age;
        cout << "\t电话号码:  " << add->personArray[i].phone;
        cout << "\t家庭住址:  " << add->personArray[i].home << endl;
    }
    system("pause");
    system("cls");
    menu();
}
int if_include(addressbook* add, string name)
{
    for (int i = 0; i < add->size; i++)
    {
        if (name == add->personArray[i].name)
        {
            return i;
        }
        else
        {
            return -1;
        }
    }

}
void deleteperson(addressbook* add, int i)
{
    for (; i < add->size; i++)
    {
        add->personArray[i] = add->personArray[i + 1];
    }
    system("pause");
    system("cls");
}

void findPerson( addressbook* add)
{
    cout << "请输入您想要查找的联系人:" << endl;
    string name;
    cin >> name;
    int ret = if_include(add, name);
    if (ret == -1)
    {
        cout << "查无此人" << endl;
    }
    else
    {   //查到此人,进行显示操作
        int i = ret;
        cout << "姓名:" << add->personArray[i].name << "\t";
        cout << "性别:" << add->personArray[i].sex << "\t";
        cout << "年龄:" << add->personArray[i].age << "\t";
        cout << "联系方式:" << add->personArray[i].phone << "\t";
        cout << "地址:" << add->personArray[i].home << endl;
    }
    //按任意键清屏
    system("pause");
    system("cls");
}
void cleanperson(struct addressbook* add)//清空所有联系人
{
    cout << "是否确认清空?" << endl;
    cout << "1 --- 是" << endl;
    cout << "2 --- 否" << endl;
    int a;
    cin >> a;
    if (a == 1)
    {
        add->size = 0;//将当前记录联系人数量置为0,做逻辑上的清空操作
        cout << "通讯录已清空" << endl;
    }
    system("pause");
    system("cls");
}

由于代码量过大,建议大家可以试着分文件编写代码,也可以方便查看

运行结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C++实现简易通讯录管理系统

本文链接: https://www.lsjlt.com/news/151994.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c语言怎么计算字符串长度
    在C语言中,可以使用内置的strlen()函数来计算字符串的长度。该函数位于string.h头文件中。以下是一个示例代码: #inc...
    99+
    2024-05-15
    c语言
  • c语言怎么判断三个数的大小
    可以通过比较三个数之间的大小关系来判断它们的大小。以下是一个示例代码: #include <stdio.h> int ...
    99+
    2024-05-15
    c语言
  • c++排序函数sort怎么使用
    在C++中,使用sort函数对容器中的元素进行排序,可以按照默认的升序排列,也可以自定义排序规则。 下面是一个简单的例子,对一个ve...
    99+
    2024-05-15
    c++
  • c++中string的compare函数怎么使用
    在C++中,可以使用string的compare函数来比较两个string对象的大小。该函数的原型如下: int compare(c...
    99+
    2024-05-15
    c++
  • c++中string的compare函数有什么用
    c++中string的compare函数用于比较两个字符串的大小关系。该函数返回一个整数值,表示两个字符串的比较结果。 具体来说,如...
    99+
    2024-05-15
    c++
  • c++中print函数的功能有哪些
    在C++中,通常使用std::cout来进行输出操作,而不是使用print函数。std::cout是C++标准库中的一个输出流对象,...
    99+
    2024-05-15
    c++
  • c语言数据结构怎么使用
    在C语言中,数据结构可以通过定义结构体来实现。以下是一些常见的数据结构的使用方法示例: 链表: #include <std...
    99+
    2024-05-15
    c语言
  • c++中print函数的用法是什么
    在C++中没有内置的print函数,但可以使用cout来输出内容到控制台。cout是C++标准库中的一个输出流对象,可以使用<...
    99+
    2024-05-15
    c++
  • c++中concept的用法是什么
    在C++20中,Concept是一种新的语言特性,用于定义类型要求和约束。Concept可以被用来约束函数模板、类模板和普通函数的参...
    99+
    2024-05-15
    c++
  • c++中concept的作用是什么
    在C++中,concept的作用是定义一种通用的约束,用于限制模板参数的类型范围。通过使用concept,可以在编译时对模板参数进行...
    99+
    2024-05-15
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作