#include <stdio.h>

/* 年月日*/
struct Year
{
    char year[20];
    char yue[10];
    char day[10];
};
/* 记录页*/
struct Page
{
    char name[60];
    char email[100];
    char add[100];
    char qq[60];
    struct Year date;
};

/*添加用户*/
void setPage(Page* n);
/*显示一个用户*/
void showPage(Page* n);
/*显示通讯录*/
void showAll(Page* n, int count);

int main()
{
    int count = 0;
    int b;
    Page user[20] = {};
    do{
        /*操作输入*/
        printf("输入操作 1-添加,2-通讯录,3-编号查询\n");
        scanf("%d", &b);
        switch (b)
        {
        case 1:
            printf("添加通讯录....#%d号\n",count);
            if (count == 20)
            {
                printf("通讯录已满,请尝试其他操作!\n");
                continue;
            }
            /*添加操作*/
            setPage(&user[count]);
            count = count + 1;
            continue;
        case 2:
            printf("查看通讯录列表.....\n");
            showAll(user, count);
            continue;
        case 3:
            printf("查询用户.....\n");
            /*空表检测*/
            if (count == 0) {
                printf("列表中没有用户,请尝试添加后再次查询!\n\n");
                continue;
            }
            else{
                printf("请输入你需要查询的用户编号[0~9]:");
                int c; scanf("%d", &c);
                if (c >= count) {
                    printf("无此编号的用户!\n\n");
                    continue;
                }
                /*显示指定编号用户*/
                showPage(&user[c]);
                continue;
            }
        default:
            printf("感谢使用!\n");
            return 0;
        }
    }while (1);
    return 0;
}

void setPage(Page* n)
{
    Year a;
    printf("请输入用户姓名:"); scanf("%s", n->name);
    printf(" 手机号:");        scanf("%s", n->add);
    printf(" QQ号码:");        scanf("%s", n->qq);
    printf(" 邮箱:");          scanf("%s", n->email);
    printf("出生日期(年-月-日)\n");
    printf(" 年:");            scanf("%s", a.year);
    printf(" 月:");            scanf("%s", a.yue);
    printf(" 日:");            scanf("%s", a.day);
    printf("\n");
    n->date = a;
}

void showPage(Page* n)
{
    if (n == 0) { return; }

    printf("用户姓名:%s\n", n->name);
    printf("手机号:  %s\n", n->add);
    printf("QQ号码:  %s\n", n->qq);
    printf("电子邮箱:%s\n", n->email);
    printf("出生日期:%s-%s-%s\n\n", n->date.year, n->date.yue, n->date.day);
}
void showAll(Page* n, int count)
{
    if (count == 0) {
        printf("当前列表中没有任何用户,请尝试添加后再次查询!\n");
        return;
    }
    for (int i = 0; i < count; showPage(n + i), ++i);
}