/*time:2020年9月22日
auther:wpp
*/

#include <iostream>
using namespace std;
#include <string>
#include <math.h>
#include <unistd.h>
#define MAX 1000

struct Person
{
    string name;
    int age;
    string phone;
};

struct yellowpage
{
    struct Person personArray[MAX];
    int 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(yellowpage *yp)
{
    if (yp->size == MAX)
    {
        cout << "空间已满" << endl;
        return;
    }
    else
    {
        cout << "姓名:" << endl;
        string name1;
        cin >> name1;
        yp->personArray[yp->size].name = name1;
        cout << "年龄:" << endl;
        int age1;
        cin >> age1;
        yp->personArray[yp->size].age = age1;
        cout << "号码:" << endl;
        string number;
        cin >> number;
        yp->personArray[yp->size].phone = number;
        cout << "导入完成!" << endl;
        yp->size++;
    }
}
// 显示联系人
void printinfo(yellowpage *yp)
{
    if (yp->size == 0)
    {
        cout << "通讯录为空" << endl;
    }
    else
    {
        for (int i = 0; i < yp->size; i++)
        {
            cout << "年龄:" << yp->personArray[i].age << "\t";
            cout << "姓名:" << yp->personArray[i].name << "\t";
            cout << "电话:" << yp->personArray[i].phone << endl;
        }
    }
    system("read -p 'Press Enter to continue...' var");
}

// 检测联系人是否存在,存在返回具体位置,不存在返回-1
int isexist(yellowpage *yp, string name)
{
    for (int i = 0; i < yp->size; i++)
    {
        if (yp->personArray[i].name == name)
        {
            return i;
        }
    }
    return -1;
}

// 删除通讯录中i位置的人
void dropperson(yellowpage *yp)
{
    cout << "请输入要删除人的姓名:" << endl;
    string name;
    cin >> name;
    if (isexist(yp, name))
    {
        cout << "查不到,爬!" << endl;
    }
    else
    {
        for (int i = isexist(yp, name); i < yp->size; i++)
        {
            yp->personArray[i] = yp->personArray[i + 1];
        }
        yp->size--;
        cout << "删除成功!" << endl;
    }
}

// 查找联系人
void selectperson(yellowpage *yp)
{
    cout << "输入查找的姓名:" << endl;
    string name;
    cin >> name;

    if (isexist(yp, name) == -1)
    {
        cout << "查无此人" << endl;
    }
    else
    {
        int ret = isexist(yp, name);
        cout << "姓名" << yp->personArray[ret].name << "\t";
        cout << "年龄" << yp->personArray[ret].age << "\t";
        cout << "电话" << yp->personArray[ret].phone << endl;
    }
    system("read -p 'Press Enter to continue...' var");
}

// 修改联系人
void alterperson(yellowpage *yp)
{
    cout << "输入要修改的姓名:" << endl;
    string name;
    cin >> name;

    if (isexist(yp, name) == -1)
    {
        cout << "查无此人" << endl;
    }
    else
    {
        int ret = isexist(yp, name);
        cout << "姓名:" << endl;
        string name1;
        cin >> name1;
        yp->personArray[ret].name = name1;
        cout << "年龄:" << endl;
        int age1;
        cin >> age1;
        yp->personArray[ret].age = age1;
        cout << "号码:" << endl;
        string number;
        cin >> number;
        yp->personArray[ret].phone = number;
        cout << "修改完成!" << endl;
    }

    system("read -p 'Press Enter to continue...' var");
}

// 清空通讯录
void clearyp(yellowpage *yp)
{
    yp->size = 0;
    cout << "已清空!" << endl;
    system("read -p 'Press Enter to continue...' var");
}

// #define a 100
int main(int argc, char const *argv[])
{
    yellowpage yp;

    int select = 0;

    while (true)
    {
        showMenu();

        cin >> select;

        switch (select)
        {
        case 1:
            addperson(&yp);
            break;
        case 2:
            printinfo(&yp);
            break;
        case 3:
            dropperson(&yp);
            break;
        case 4:
            selectperson(&yp);
            break;
        case 5:
            alterperson(&yp);
            break;
        case 6:
            clearyp(&yp);
            break;
        case 0:
            cout << "拜拜了您内" << endl;
            system("read -p 'Press Enter to continue...' var");
            return 0;
            break;

        default:
            break;
        }
    }

    return 0;
}