• C++实现命令行通讯录


    /*
        封装函数显示界面  void showMenu()
    */
    #include<iostream>
    using namespace std;
    #include<string>
    #define MAX 1000
    // 设计联系人结构体
    struct Person
    {
        // name
        string m_Name;
        // sex 1 man 2 woman
        int m_Sex;
        int m_Age;
        string m_Phone;
        string m_Addr;
    };
    
    // 设计通讯录结构体
    struct Addressbooks
    {
        // 通讯录中保存的联系人数组
        struct Person personArray[MAX];
    
        // 通讯录中当前记录联系人个数
        int num;
    };
    
    //菜单界面
    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;
    }
    // 1、添加联系人
    void addPerson(Addressbooks * abs)
    {
        // 判断通讯录是否已满,已满就不添加
        if(abs->num == MAX)
        {
            cout << "通讯录已满,不能添加!" << endl;
            return ;
        }
        else
        {
            // 添加具体联系人
            // 姓名
            string name;
            cout << "请输入姓名:" << endl;
            cin >> name;
            abs->personArray[abs->num].m_Name = name;
    
            // 性别
            int sex = 0;
            cout << "请输入性别:
    1 --- 男
    2 --- 女" << endl;
            while(true)
            {
                cin >> sex;
                if(sex == 1 || sex == 2)
                {
                    abs->personArray[abs->num].m_Sex = sex;
                    break;
                }
                cout << "输入有误,请重新输入" << endl;
            }
    
            // 年龄
            int age = 0;
            cout << "请输入年龄:" << endl;
            cin >> age;
            abs->personArray[abs->num].m_Age = age;
    
            // 电话
            string phone;
            cout << "请输入联系电话:" << endl;
            cin >> phone;
            abs->personArray[abs->num].m_Phone = phone;
    
            // 住址
            string address;
            cout << "请输入家庭住址:" << endl;
            cin >> address;
            abs->personArray[abs->num].m_Addr = address;
        
            abs->num++;
    
            cout << "添加成功" << endl;
    
            system("pause"); // 请按任意键继续
            system("cls"); // 清屏操作
    
        }
    }
    
    // 2、显示联系人
    void showPerson(Addressbooks * abs)
    {
        // 判断通讯录中人数是否为0,如果为0,提示记录为空
        if(abs->num == 0)
        {
            cout << "当前记录为空" << endl;
        }
        else
        {
            for(int i = 0; i < abs->num; i++)
            {
                cout << "姓名: " << abs->personArray[i].m_Name << "	";
                cout << "性别: " << (abs->personArray[i].m_Sex == 1 ? "" : "") << "	";
                cout << "年龄: " << abs->personArray[i].m_Age << "	";
                cout << "电话: " << abs->personArray[i].m_Phone << "	";
                cout << "住址: " << abs->personArray[i].m_Addr << endl;
            }
        }
        system("pause");
        system("cls");
    }
    
    // 3、删除联系人
    // 检测联系人是否存在,若存在,返回联系人所在数组中的具体位置,不存在返回-1
    int isExist(Addressbooks * abs, string name)
    {
        for(int i = 0; i < abs->num; i++)
            if(abs->personArray[i].m_Name == name)
                return i;    
        return -1;
    }
    // 封装删除联系人函数
    void deletePerson(Addressbooks * abs)
    {
        cout << "请输入要删除的联系人名字" << endl;
        string name;
        cin >> name;
    
        int ret = isExist(abs, name);
        // ret == -1 不存在
        // ret != -1 存在,得删
        if(ret != -1)
        {
            for(int i = ret; i < abs->num; i++)
                abs->personArray[i] = abs->personArray[i+1];
            abs->num--;
            cout << "删除成功" << endl;
        }
        else
            cout << "查无此人" << endl;
        system("pause");
        system("cls");
    }
    
    // 4、查找联系人
    void findPerson(Addressbooks * abs)
    {
        cout << "请输入要查找的联系人名字" << endl;
        string name;
        cin >> name;
    
        int ret = isExist(abs, name);
        // ret == -1 不存在
        // ret != -1 存在,得删
        if(ret != -1)
        {
            cout << "姓名: " << abs->personArray[ret].m_Name << "	";
            cout << "性别: " << (abs->personArray[ret].m_Sex == 1 ? "" : "") << "	";
            cout << "年龄: " << abs->personArray[ret].m_Age << "	";
            cout << "电话: " << abs->personArray[ret].m_Phone << "	";
            cout << "住址: " << abs->personArray[ret].m_Addr << endl;
        }
        else
            cout << "查无此人" << endl;
    
        system("pause");
        system("cls");
    }
    
    // 5、修改联系人
    void modifyPerson(Addressbooks * abs)
    {
        cout << "请输入您要修改的联系人" << endl;
        string name;
        cin >> name;
        int ret = isExist(abs, name);
        if(ret != -1)
        {
            // name
            string name;
            cout << "请输入姓名:" << endl;
            cin >> name;
            abs->personArray[ret].m_Name = name;
            // sex
            cout << "请输入性别:
    1 --- 男
    2 --- 女" << endl;
            int sex = 0;
            while(true)
            {
                cin >> sex;
                if(sex == 1 || sex == 2)
                {
                    abs->personArray[ret].m_Sex = sex;
                    break;
                }
                cout << "输入有误,请重新输入" << endl;
            }
            // age
            cout << "请输入年龄:" << endl;
            int age = 0;
            cin >> age;
            abs->personArray[ret].m_Age = age;
            // phone
            cout << "请输入联系电话" << endl;
            string phone;
            cin >> phone;
            abs->personArray[ret].m_Phone = phone;
            // address
            cout << "请输入家庭住址" << endl;
            string address;
            cin >> address;
            abs->personArray[ret].m_Addr = address;
            cout << "修改成功" << endl;
        }
        else
            cout << "查无此人" << endl;
        system("pause");
        system("cls");
    }
    
    //6、清空联系人
    void cleanPerson(Addressbooks * abs)
    {
        cout << "是否确定要清空? 1 是 0 否" << endl;
        int res;
        cin >> res;
        if(res == 1){
            abs->num = 0; // 将当前记录联系人数量置为0,做逻辑清空
            cout << "通讯录已清空" << endl;
        }
        else
            cout << "没有清空通讯录" << endl;
        system("pause");
        system("cls");
    }
    int main()
    {
        // 创建通讯录结构体变量
        Addressbooks abs;
        // 初始化通讯录中当前人员个数
        abs.num = 0;
    
        int select = 0; // 创建用户选择输入的变量
    
        while(true)
        {
            showMenu();
    
        cin >> select;
    
        switch(select)
        {
        case 1: // 1、添加联系人
            addPerson(&abs);
                break;
        case 2: // 2、显示联系人
            showPerson(&abs);
                break;
        case 3: // 3、删除联系人
            deletePerson(&abs);
                break;
        case 4: // 4、查找联系人
            findPerson(&abs);
                break;
        case 5: // 5、修改联系人
            modifyPerson(&abs);
                break;
        case 6: //6、清空联系人
            cleanPerson(&abs);
                break;
        case 0: //0、退出通讯录
                cout << "欢迎下次使用" << endl;
                system("pause");
                return 0;
                break;
        default:
                break;
        }
    
        }
    
        //菜单的调用
        
    
        system("pause");
        return 0;
    }

    C++基础--通讯录管理系统

  • 相关阅读:
    XCOPY命令默认忽略隐藏文件
    SSAS : 如果在MDX查询中没有指定度量值,那么会怎么处理
    .NET : 存取BLOB数据(Oracle)
    jQuery.getJSON(url, [data], [callback])
    SSAS : 在SSAS 2008的自定义存储过程中取得当前用户名
    再来谈谈json
    .NET :在Visual Studio的不同Tab之间切换
    SSAS : 从现有多维数据集创建挖掘结构
    SQL Server : Browser服务是干什么的
    SSAS2008 : 全新的可扩展插件架构
  • 原文地址:https://www.cnblogs.com/lely/p/12187181.html
Copyright © 2020-2023  润新知