#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;
};
/*名字查询*/
Page* queryName(Page* n, int count, char name[10]);
/*添加用户*/
void setPage(Page* n);
/*显示一个用户*/
void showPage(Page* n);
/*显示通讯录*/
void showAll(Page* n, int count);
const int size_max = 10;
int main()
{
int count = 0;
int b;
Page user[size_max] = {};
do{
/*操作输入*/
printf("输入操作 1-添加,2-通讯录,3-编号查询,4-名字查询,5-退出程序\n");
scanf("%d", &b);
switch (b)
{
case 1:
printf("添加通讯录....\n");
if (count == size_max)
{
printf("通讯录已满,请尝试其他操作!\n");
continue;
}
/*添加操作*/
setPage(&user[count]);
count++;
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;
}
case 4:
printf("查询用户.....\n");
/*空表检测*/
if (count == 0) {
printf("列表中没有用户,请尝试添加后再次查询!\n\n");
continue;
}
else {
printf("请输入你需要查询的用户名字!");
char name[100] = {};
scanf("%s", name);
if (name[0] == 0) {
printf("取消查询!\n\n");
continue;
}
/*查找指定户名*/
Page* qn = queryName(user, count, name);
/*找到就显示*/
if (qn)showPage(qn);
else printf("查无此人!\n\n");
continue;
}
default:
printf("感谢使用!\n");
break;
}
break;
}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);
}
bool is_namesame(char c1[10], char c2[10])
{
while (*c1 && *c2) { if (*c1++ != *c2++)return false; }
return true;
}
Page* queryName(Page* n, int count, char name[10])
{
while (count--) {
Page* p = n + count;
if (is_namesame(p->name, name)) return p;
}
return 0;
}