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

C++实现简单版通讯录管理系统攻略

一、需求分析

通讯录是日常生活中广泛使用的一种记录联系人信息的工具。本次需求是实现一个简单的通讯录管理系统,主要包含如下功能:

  • 添加联系人
  • 显示所有联系人
  • 查找联系人
  • 删除联系人
  • 修改联系人

根据以上需求,我们可以设计通讯录管理系统的主要数据结构是一个联系人类 Contact 类,包含姓名、手机、性别、等私有成员,以及相应的公有成员函数。

二、代码实现

1. Contact类

#include <iostream>
#include <cstring>

using namespace std;

class Contact{
public:
    char name[20];
    char mobile[12];
    char gender;
    char hobby[50];

    Contact(){}
    Contact(char na[],char mob[],char gen,char hob[]){
        strcpy(name,na);
        strcpy(mobile,mob);
        gender=gen;
        strcpy(hobby,hob);
    }

    void show(){
        cout << "姓名: " << name << endl;
        cout << "手机: " << mobile << endl;
        cout << "性别: " << gender << endl;
        cout << "爱好: " << hobby << endl;
    }
};

2. ContactBook类

#include <iostream>
#include <cstdio>
#include <cstring>

#include "Contact.h"

using namespace std;

class ContactBook{
public:
    Contact contacts[100];
    int size = 0;

    void add(Contact contact){
        contacts[size++] = contact;
    }

    int search(char name[]){
        for (int i=0; i<size; ++i){
            if (strcmp(contacts[i].name,name) == 0){
                return i;
            }
        }
        return -1;
    }

    void erase(char name[]){
        int index = search(name);
        if (index == -1){
            cout << "通讯录中没有找到此人!" << endl;
        }
        else{
            for (int i = index; i < size-1; i++){
                contacts[i] = contacts[i+1];
            }
            size--;
            cout << "已删除" << endl;
        }
    }

    void modify(char name[]){
        int index = search(name);
        if (index == -1){
            cout << "通讯录中没有找到此人!" << endl;
        }
        else{
            char mob[12], gen, hob[50];
            cout << "请输入姓名: ";
            cin >> name;
            cout << "请输入手机号码: ";
            cin >> mob;
            cout << "请输入性别: ";
            cin >> gen;
            cout << "请输入爱好: ";
            cin >> hob;

            Contact contact(name, mob, gen, hob);
            contacts[index] = contact;
            cout << "已修改" << endl;
        }
    }

    void showAll(){
        if (size == 0){
            cout << "通讯录为空!" << endl;
        }
        else{
            for (int i=0; i<size; ++i){
                cout << "第" << i+1 << "个联系人:" << endl;
                contacts[i].show();
                cout << endl;
            }
        }
    }

    void showByName(char name[]){
        int index = search(name);
        if (index == -1){
            cout << "通讯录中没有找到此人!" << endl;
        }
        else{
            cout << "找到联系人:" << endl;
            contacts[index].show();
        }
    }

};

3. 主函数

#include <iostream>
#include "ContactBook.h"

using namespace std;

int main(){

    ContactBook contactBook;

    while (true){
        system("cls");
        cout << "通讯录管理系统" << endl;
        cout << "-----------------" << endl;
        cout << "1. 添加联系人" << endl;
        cout << "2. 显示所有联系人" << endl;
        cout << "3. 查找联系人" << endl;
        cout << "4. 删除联系人" << endl;
        cout << "5. 修改联系人" << endl;
        cout << "6. 退出程序" << endl;
        cout << "-----------------" << endl;
        cout << endl;

        int op;
        cin >> op;

        switch (op)
        {
        case 1:{
            char name[20], mob[12], gen, hob[50];
            cout << "请输入姓名: ";
            cin >> name;
            cout << "请输入手机号码: ";
            cin >> mob;
            cout << "请输入性别: ";
            cin >> gen;
            cout << "请输入爱好: ";
            cin >> hob;

            Contact contact(name, mob, gen, hob);
            contactBook.add(contact);
            cout << "已添加" << endl;
            system("pause");
            break;
        }

        case 2:{
            contactBook.showAll();
            system("pause");
            break;
        }

        case 3:{
            char name[20];
            cout << "请输入要查找的姓名:";
            cin >> name;
            contactBook.showByName(name);
            system("pause");
            break;
        }

        case 4:{
            char name[20];
            cout << "输入要删除的联系人姓名:";
            cin >> name;
            contactBook.erase(name);
            system("pause");
            break;
        }

        case 5:{
            char name[20];
            cout << "输入要修改的联系人姓名:";
            cin >> name;
            contactBook.modify(name);
            system("pause");
            break;
        }

        case 6:{
            cout << "感谢您的使用!" << endl;
            system("pause");
            return 0;
        }
        }
    }

    return 0;
}

三、示例说明

1. 添加联系人

输入3个联系人,查看上传是否成功。命令如下:

1
charles 13913254654 m music
已添加
1
rose 15545678954 f reading
已添加
1
lucy 13312345678 f travelling
已添加
2
第1个联系人:
姓名: charles
手机: 13913254654
性别: m
爱好: music

第2个联系人:
姓名: rose
手机: 15545678954
性别: f
爱好: reading

第3个联系人:
姓名: lucy
手机: 13312345678
性别: f
爱好: travelling

2. 删除联系人

输入两个联系人,删除其中一个联系人,查看是否删除成功,命令如下:

1
green 12016549843 m music
已添加
1
jack 13888999876 m dance
已添加
2
第1个联系人:
姓名: green
手机: 12016549843
性别: m
爱好: music

第2个联系人:
姓名: jack
手机: 13888999876
性别: m
爱好: dance


4
输入要删除的联系人姓名:green
已删除
2
第1个联系人:
姓名: jack
手机: 13888999876
性别: m
爱好: dance

以上是简单版通讯录管理系统的实现,可根据实际需要对代码进行完善和扩展。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现简单版通讯录管理系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 利用Python+eval函数构建数学表达式计算器

    关于如何利用Python+eval函数构建数学表达式计算器,可以按照以下步骤进行: 1.准备工作 在开始构建之前,需要先生成一个用户输入的字符串,例如: input_string = input("请输入数学表达式:") 2.输入处理 对于用户输入的字符串,需要进行处理,去掉其中的空格,并替换其中的特殊符号。可以使用Python内置的re…

    C 2023年5月22日
    00
  • JQuery ajax返回JSON时的处理方式 (三种方式)

    当使用 JQuery 发送 ajax 请求获取 JSON 数据时,我们需要对返回数据进行处理。下面总结了三种常用的方式:使用回调函数、使用 Promise 对象和使用 async/await。 使用回调函数 使用回调函数处理返回的 JSON 数据是最常见的方式,可以通过在 $.ajax() 函数的 success 属性中指定一个回调函数来实现。该回调函数会在…

    C 2023年5月23日
    00
  • C语言常用的编辑器你知道几个

    下面是关于C语言常用的编辑器的攻略。 什么是C语言编辑器? C语言编辑器是一种专门为C语言编写的软件工具,它能够提供代码编辑、编译、调试、代码补全和代码高亮等功能。C语言编辑器通常还支持其他编程语言,如C++,Java,Python等。 常用的C语言编辑器有哪些? 下面是常用的C语言编辑器: 1. Visual Studio Code Visual Stud…

    C 2023年5月23日
    00
  • Qt基础开发之Qt多线程类QThread与Qt定时器类QTimer的详细方法与实例

    首先我们来讲解一下Qt多线程类QThread的使用方法: Qt多线程类QThread的使用方法 1. 创建继承自QThread的子类 在Qt中我们通常使用继承自QThread的子类来创建新的线程。首先我们需要在头文件中#include ,然后创建一个新类,继承自QThread。在新类的run()函数中实现线程的具体逻辑。 示例代码: #include &lt…

    C 2023年5月22日
    00
  • Java日常练习题,每天进步一点点(28)

    题目:给定两个字符串,找到这两个字符串中最长的公共连续子字符串。 示例1: 输入: str1 = “ABCD” ,str2 = “CBCE”输出: “BC” 示例2: 输入: str1 = “ABC” ,str2 = “DEF”输出: “” 分析:题目要求找到两个字符串的最长公共连续子字符串,我们可以通过动态规划算法来解决此类问题。具体思路是,定义一个二维数…

    C 2023年5月23日
    00
  • c语言中&的用法示例代码

    下面是关于 C 语言中 & 的用法攻略,针对此问题,我们需要从以下两个方向进行讲解: 变量声明和引用时的 & 符号使用 当我们声明一个变量时,可以使用 & 符号获取该变量的地址。例如: int x = 10; int *p = &x; 上述代码中,我们声明了一个整型变量 x,并将其初始化为 10。然后,我们使用指针变量 p 来…

    C 2023年5月24日
    00
  • C++实现简易通讯录管理系统

    C++实现简易通讯录管理系统 项目简介 本文主要介绍如何使用C++实现一个简易的通讯录管理系统,基本功能包括添加联系人信息、显示通讯录中的联系人信息、删除联系人信息、查找联系人信息、修改联系人信息。 实现步骤 定义联系人结构体 c++ struct Person { string name; // 姓名 int age; // 年龄 string phone…

    C 2023年5月23日
    00
  • python中的decimal类型转换实例详解

    下面就为大家详细讲解“Python中的decimal类型转换实例详解”的完整攻略。 概述 Python中的decimal类型是用于精确计算的浮点数,可以解决常规浮点数运算产生的误差问题。而在进行decimal类型的转换过程中,需要注意其精度和舍入模式等因素。 基本用法 创建decimal类型 要创建decimal类型,需要调用decimal模块中的Decim…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部