C++ 通讯录案例

这篇具有很好参考价值的文章主要介绍了C++ 通讯录案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代码如下:文章来源地址https://www.toymoban.com/news/detail-537333.html

#include <bits/types/FILE.h>
#include <iostream>
#include <istream>
#include <type_traits>
using namespace std;
#include <string.h>
#define MAX 1000

// 函数的定义
void showMenu(); 
void addPerson(struct AddressBook * ab);
void showPerson(struct AddressBook * ab);

int isExit(AddressBook *ab, string name);
void deletePerson(AddressBook* ab, string name);
void findPerson(AddressBook * ab);
void emptyPerson(AddressBook *ab);
// 联系人的结构体
struct Person {
    string m_Name;  // 姓名
    int m_sex;      // 性别
    int m_Age;      // 年龄
    string m_phone; // 电话
    string m_Addr;  // 地址
};

// 通讯录结构体
struct AddressBook {
    struct Person PersonArray[MAX]; // 通讯录容量
    int m_size;                     // 通讯录中人员数量
};

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;
}

void addPerson(struct AddressBook* ab) {
    // 通讯录是否已经满了
    if (ab->m_size == MAX) {
        cout << "通讯录已经满了" << endl;
    } else {
        string name;
        cout << "请输入用户名:";
        cin >> name;
        ab->PersonArray[ab->m_size].m_Name = name;

        int sex = 0;
        while (true) {
            cout << "请输入性别(1男;2女):";
            cin >> sex;
            if (sex == 1 || sex == 2) {
                ab->PersonArray[ab->m_size].m_sex = sex;
                break;
            }
            cout << "请重新输入!" << endl;
        }

        int age = 0;
        while (true) {
            cout << "请输入年龄:";
            cin >> age;
            if (0 < age && age < 100) {
                ab->PersonArray[ab->m_size].m_Age = age;
                break;
            }
            cout << "请重新输入:" << endl;
        }

        cout << "请输入电话:";
        string phone;
        cin >> phone;
        ab->PersonArray[ab->m_size].m_phone = phone;

        cout << "请输入地址:";
        string addr;
        cin >> addr;
        ab->PersonArray[ab->m_size].m_Addr = addr;

        ab->m_size++;
        cout << "添加成功!" << endl;
        ;
        // system("pause");
        // system("cls");
    }
};
void showPerson(struct AddressBook* ab) {
    // 如果当前联系人为0
    if (ab->m_size == 0) {
        cout << "当前记录为空" << endl;
        ;
    } else {
        for (int i = 0; i < ab->m_size; i++) {
            cout << "------------" << endl;
            ;
            cout << "name: " << ab->PersonArray[i].m_Name << "\t";
            cout << "sex: " << (ab->PersonArray[i].m_sex == 1 ? "男" : "女")
                 << "    ";
            cout << "age: " << ab->PersonArray[i].m_Age << "    ";
            cout << "phone: " << ab->PersonArray[i].m_phone << "    ";
            cout << "addr: " << ab->PersonArray[i].m_Addr << endl;
        }
    }
};
// 检测联系人是否存在
int isExit(AddressBook* ab, string name) {
    for (int i = 0; i < ab->m_size; i++) {
        if (ab->PersonArray[i].m_Name == name) {
            return i;
        }
    }
    return -1;
}
// 删除联系人
void deletePerson(AddressBook* ab) {
    string name;
    cout << "*输入需要查找的用户名:";
    cin >> name;
    if (isExit(ab, name) != -1) {
        cout << "*用户存在" << endl;
        // 数据迁移
        int ret = isExit(ab, name);
        for (int i = ret; i < ab->m_size; i++) {
            ab->PersonArray[i] = ab->PersonArray[i + 1];
        }
        ab->m_size--;
        cout << "*删除成功!" << endl;
    } else {
        cout << "*用户不存在" << endl;
    }
}
// 查找指定联系人
void findPerson(AddressBook* ab) {
    cout << "请输入你要查找的联系人:" << endl;
    string name;
    cin >> name;

    int ret = isExit(ab, name);
    if (ret != -1) {
        cout << "------------" << endl;
        cout << "name: " << ab->PersonArray[ret].m_Name << "\t";
        cout << "sex: " << (ab->PersonArray[ret].m_sex == 1 ? "男" : "女")
             << "    ";
        cout << "age: " << ab->PersonArray[ret].m_Age << "    ";
        cout << "phone: " << ab->PersonArray[ret].m_phone << "    ";
        cout << "addr: " << ab->PersonArray[ret].m_Addr << endl;
    } else {
        cout << "查无此人!" << endl;
        ;
    }
}
// 修改指定联系人信息
void modifyPerson(AddressBook* ab) {
    cout << "请输入你要修改的联系人:" << endl;
    string name;
    cin >> name;

    int ret = isExit(ab, name);
    if (ret != -1) {
        int select;
        int flag = true;
        while (flag) {
            cout << "请输入需要修改的信息(0-退出 1-姓名 2-年龄 3-性别 4-手机 "
                    "5-地址) ->";
            cin >> select;
            switch (select) {
            case 0: {
                flag = false;
                cout << "退出成功!"<< endl;
                break;
            }
            case 1: {
                cout << "修改姓名为:" << endl;
                string new_name;
                cin >> new_name;
                ab->PersonArray[ret].m_Name = new_name;
                cout << "修改成功!" << endl;
                break;
            }
            case 2: {
                cout << "修改年龄为:" << endl;
                int new_age;
                cin >> new_age;
                ab->PersonArray[ret].m_Age = new_age;
                cout << "修改成功!" << endl;
                break;
            }
            case 3: {
                cout << "修改性别为(1-男生 2-女生):" << endl;
                int new_sex;
                cin >> new_sex;
                if (new_sex == 1 || new_sex == 2) {
                    ab->PersonArray[ret].m_sex = new_sex;
                    cout << "修改成功!" << endl;
                } else {
                    cout << "输入信息有误,重新输入!" << endl;
                }

                break;
            }
            case 4: {
                cout << "修改手机号码为:" << endl;
                string new_phone;
                cin >> new_phone;
                ab->PersonArray[ret].m_phone = new_phone;
                cout << "修改成功!" << endl;
                break;
            }
            default:
                cout << "输入信息无效!";
                break;
            }
        }
    } else {
        cout << "查无此人!";
    }
}

// 清空联系人
void emptyPerson(AddressBook *ab){
    ab->m_size = 0;
    cout << "通讯录已经清空" << endl;
}
int main() {
    // 通讯录
    AddressBook ab;
    ab.m_size = 0;

    // 创建用户选择的标量
    int select = 0;

    showMenu();
    while (true) {
        cout << "*请输入相关操作:";
        cin >> select;
        switch (select) {
        case 1:
            addPerson(&ab);
            break;
        case 2:
            showPerson(&ab);
            break;
        case 3: {
            deletePerson(&ab);
            break;
        }
        case 4:
            findPerson(&ab);
            break;
        case 5:
            modifyPerson(&ab);
            break;
        case 6:
            emptyPerson(&ab);
            break;
        case 0:
            cout << "*欢迎下次使用!";
            return 0;
            break;
        default:
            break;
        }
    };

    return 0;
}

到了这里,关于C++ 通讯录案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言——通讯录

    相信大家都有过通讯录,今天我来带大家实现以下最简单的通讯录,通过本篇文章,相信可以让大家对C语言有进一步的认识。 话不多说,我们先放函数的实现  是不是看到这里会感到很害怕??不用怕,跟着我的思路,你也可以实现它,我带着你一步一步实现每一个功能  

    2024年02月13日
    浏览(29)
  • 【通讯录】--C语言

    💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃 个人主页 :阿然成长日记 👈点击可跳转 📆 个人专栏: 🔹数据结构与算法🔹C语言进阶 🚩 不能则学,不知则问,耻于问人,决无长进 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍 用c语言实现一个通讯

    2024年02月15日
    浏览(30)
  • C语言—通讯录

    通讯录中是存放人的信息的,人的信息包括:姓名、年龄、性别、电话、住址。可以把人的信息定义成结构体,因为每个联系人的信息都有这几个要素。 注:用#define定义的标识符常量,使用修改时可以降低维护成本。如联系人的信息中名字的宽度为20,以便之后需要修改时只

    2024年02月05日
    浏览(54)
  • C语言通讯录

            在本博客中,我们将介绍如何使用C语言构建一个基本的通讯录。主要涉及C语言的指针、结构体、动态内存管理、文件操作等方面的知识。我们还将学习如何使用C语言的各种功能和技巧来实现通讯录的各种操作,如添加联系人、编辑联系人、删除联系人和搜索联系

    2024年02月16日
    浏览(30)
  • 【C语言】通讯录

    目录 一、关于通讯录 二、代码逻辑 三、通讯录实现 1.菜单设计 2.逻辑主要功能设计 3.增加联系人功能实现 4.显示全部联系人信息   5.删除联系人 6.查找联系人 7.修改联系人信息 8.对联系人进行排序  9.一键清空所有联系人 四、完整源码 test.c contact.c contact.h 在通讯录中,我

    2024年02月08日
    浏览(32)
  • C语言---认识动态内存管理并实现一个动态通讯录:静态通讯录别来沾边

    👧个人主页:@小沈熬夜秃头中୧⍤⃝❅ 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 📋专栏:C语言学习 🔑本章内容:动态内存管理 送给各位💌:当你的能力还驾驭不了你的目标时那你就应该沉下心来历练 记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~ 提示:以下是本篇

    2024年02月08日
    浏览(32)
  • 通讯录实现【C语言】

    目录 前言 一、整体逻辑分析 二、实现步骤 1、创建菜单和多次操作问题 2、创建通讯录 3、初始化通讯录 4、添加联系人 5、显示联系人 6、删除指定联系人 ​7、查找指定联系人 8、修改联系人信息 9、排序联系人信息 三、全部源码 我们上期已经详细的介绍了自定义类型,本

    2024年02月11日
    浏览(36)
  • 【c语言】通讯录(静态)

    小张刚学习完结构体,枚举,联合相关的知识,实践实践,写一个通讯录呗! 通讯录的功能 1.通讯录可存放100的信息 2.信息的内容姓名,性别,年龄,电话,地址 3.支持增加联系人 4.支持删除联系人 5.支持查找联系人 6.支持修改联系人 7.支持排序联系人 8.打印数据 文件类型

    2024年02月13日
    浏览(24)
  • 通讯录管理系统 C++

    目录 一、前言 二、设计要求  三、概要设计 3.1 主界面设计 3.1.1 设计图 3.1.2设计代码 3.2 存储结构设计 3.3 系统功能设计 3.3.1 系统流程图​编辑 3.3.2 系统子程序及功能介绍  四、详细设计 4.1 头文件 4.2 数据定义 4.3 系统主要子程序详细设计 4.3.1 主函数 4.3.2 添加联系人 4.3

    2024年02月09日
    浏览(50)
  • 【C语言】实战项目——通讯录

    学会创建一个通讯录,对过往知识进行加深和巩固。 文章很长,要耐心学完哦!                ✨  猪巴戒 :个人主页✨                 所属专栏 :《C语言进阶》         🎈 跟着猪巴戒 ,一起学习C语言🎈 目录 引言 实战 建立文件 包含头文件 结构体的使用 

    2024年02月04日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包