zoukankan      html  css  js  c++  java
  • 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++基础--通讯录管理系统

  • 相关阅读:
    HDU4507 吉哥系列故事――恨7不成妻(数位dp)
    UCF Local Programming Contest 2017 G题(dp)
    ICPC Latin American Regional Contests 2019 I题
    UCF Local Programming Contest 2017 H题(区间dp)
    HDU2089 不要62
    AcWing1084 数字游戏II(数位dp)
    UCF Local Programming Contest 2017 F题(最短路)
    Google Code Jam 2019 Round 1A Pylons(爆搜+贪心)
    AcWing1083 Windy数(数位dp)
    Vue
  • 原文地址:https://www.cnblogs.com/lely/p/12187181.html
Copyright © 2011-2022 走看看