#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int count = 0;
struct info
{
char name[20];
char phone[20];
char tel[20];
char address[20];
};
typedef struct info Info;
void welcome()
{
system("clear");
printf("\t\t*****************************************************************\n\n");
printf("\t\t\t\t\tWELCOME\n\n");
printf("\t\t*****************************************************************\n\n");
sleep(1);
}
void menu()
{
system("clear");
printf("\t\t******************************************************************\n\n");
printf("\t\t**************************主菜单**********************************\n\n");
printf("\t\t1、增加联系人 2、显示联系人\n");
printf("\t\t3、查询联系人 4、修改联系人\n");
printf("\t\t5、删除联系人 6、退出\n");
printf("\t\t******************************************************************\n\n");
printf("请选择:\n");
}
void menu1()
{
system("clear");
printf("\t\t******************************************************************\n\n");
printf("\t\t***************************修改菜单*******************************\n\n");
printf("\t\t1、选择联系人 2、修改联系人姓名\n");
printf("\t\t3、修改联系人phone 4、修改联系人tel\n");
printf("\t\t5、修改联系人address 6、退出\n");
printf("\t\t******************************************************************\n\n");
printf("请选择:\n");
}
int compare(char *str,char *ptr)
{
int i,len1 = 0,len2 = 0,t;
len1 = strlen(str);
len2 = strlen(ptr);
if(len1 < len2)
{
t = 0;
}
for (i = 0;i < len1 - len2 + 1;i++)
{
if (0 == strncmp(str + i,ptr,len2))
{
t = 1;
break;
}
}
if (len1 - len2 + 1 == i)
{
t = 0;
}
return t;
}
void addinfo(Info user[])
{
printf("please input name:\n");
scanf("%s",user[count].name);
printf("please input phone:\n");
scanf("%s",user[count].phone);
printf("please input tel:\n");
scanf("%s",user[count].tel);
printf("please input address:\n");
scanf("%s",user[count].address);
count++;
getchar();
getchar();
}
void listinfo(Info user[])
{
int i;
for (i = 0;i < count;i++)
{
printf("%dname: %s ",i+1,user[i].name);
printf("phone: %s ",user[i].phone);
printf("tel: %s ",user[i].tel);
printf("address:%s\n",user[i].address);
}
//sleep(1);
getchar();
getchar();
}
void searchinfo(Info user[])
{
int i,j = 0,len = 0;
char str[100] = {0};
printf("请输入要查询的信息 :\n");
scanf("%s",str);
len = strlen(str);
for (i = 0;i <count;i++)
{
if (compare(user[i].name,str)||compare(user[i].phone,str)||
compare(user[i].tel,str)||compare(user[i].address,str))
{
printf("%d name:%s phone:%s tel:%s address:%s\n",
i + 1,user[i].name,user[i].phone,user[i].tel,user[i].address);
j++;
//sleep(2);
getchar();
getchar();
}
}
if (0 == j)
{
printf("nonexistence!\n");
//sleep(2);
getchar();
getchar();
}
}
void modifyinfo(Info user[])
{
char choice[10] = {0};
int num;
while(1)
{
menu1();
scanf("%s",choice);
if(1 == strlen(choice))
{
switch(choice[0])
{
case '1':{
printf("输入联系人序号:\n");
scanf("%d",&num);
break;
}
case '2': {
printf("输入联系人姓名:\n");
scanf("%s",user[num -1].name);
break;
}
case '3':{
printf("输入联系人phone:\n");
scanf("%s",user[num -1].phone);
break;
}
case '4': {
printf("输入联系人tel:\n");
scanf("%s",user[num -1].tel);
break;
}
case '5': {
printf("输入联系人address:\n");
scanf("%s",user[num -1].address);
break;
}
case '6': {
break;
}
default:
{
while(getchar() != '\n');
printf("输入错误,输入回车键返回!\n");
//sleep(1);
//char a[10];
//fgets(a, 10, stdin);
getchar();
break;
}
}//switch
if ('6' == choice[0])
{
printf("返回主菜单\n");
break;
}
continue;
}//if
else
{
while(getchar() != '\n');
printf("输入错误,输入回车键返回!\n");
//sleep(1);
//char a[10];
//fgets(a, 10, stdin);
getchar();
continue;
}
}//while
}
void deleteinfo(Info user[])
{
int i,num;
printf("输入要删除的联系人序号:\n");
scanf("%d",&num);
for (i = num - 1;i < count - 1;i++)
{
strcpy(user[num - 1].name , user[num].name );
strcpy(user[num - 1].phone , user[num].phone );
strcpy(user[num - 1].tel ,user[num].tel );
strcpy(user[num - 1].address , user[num].address );
}
count--;
}
int main()
{
char choice[100];
Info user[1000];
welcome();
while(1)
{
menu();
scanf("%s",choice);
if(1 == strlen(choice))
{
switch(choice[0])
{
case '1':
addinfo(user);break;
case '2':
listinfo(user);break;
case '3':
searchinfo(user);break;
case '4':
modifyinfo(user);break;
case '5':
deleteinfo(user);break;
case '6':
exit(0);break;
default:
{
while(getchar() != '\n');
printf("输入错误,输入回车键返回!\n");
// sleep(1);
// char a[10];
// fgets(a, 10, stdin);
getchar();
break;
}
}//switch
continue;
}//if
else
{
while(getchar() != '\n');
printf("输入错误,输入回车键返回!\n");
// sleep(1);
// char a[10];
// fgets(a, 10, stdin);
getchar();
continue;
}
}//while
return 0;
}