#include <stdio.h>
#include <string.h>
#define N 10
struct Data
{
int id;
char name[N];
long long phone;
};
void add(struct Data *pa, int *length)//增加联系人
{
// printf("请输入ID:");
// scanf("%d", &a[length].id);
int tmp;
srand((unsigned int)time(NULL));
pa[*length].id = rand()%90000+10000;
tmp = *length;
while(tmp)
{
if(pa[*length].id == pa[tmp-1].id)
{
pa[*length].id = rand()%90000+10000;
}
tmp--;
}
printf("请输入姓名:");
scanf("%s", pa[*length].name);
printf("请输入手机号码:");
scanf("%lld", &pa[*length].phone);
printf("\n");
length++;
}
void delete(struct Data *pa, int *length)//删除联系人
{
int i, j;
int way;
char name1[N] = {0};
long long phone1;
printf("请输入删除方式: name 0/phone 1\n");
scanf("%d", &way);
switch (way)
{
case 0:
printf("请输入要删除的姓名:");
scanf("%s", name1);
for (i = 0; i < *length; i++)
{
if (strcmp(pa[i].name, name1))
continue;
else
break;
}
for (j = i; j < *length; j++)
{
pa[j] = pa[j+1];
}
break;
case 1:
printf("请输入要删除的手机号码:");
scanf("%lld", &phone1);
for (i = 0; i < *length; i++)
{
if (pa[i].phone == phone1)
break;
else
continue;
}
for (j = i; j < *length; j++)
{
pa[j] = pa[j+1];
}
break;
default:
printf("删除方式有误,请重新输入");
break;
}
}
void research(struct Data *pa, int *length)//查找联系人
{
int i;
int way;
char name1[N] = {0};
long long phone1;
printf("请输入查找方式: name 0/phone 1\n");
scanf("%d", &way);
switch (way)
{
case 0:
printf("请输入要查找的姓名:");
scanf("%s", name1);
for (i = 0; i < *length; i++)
{
if (strcmp(pa[i].name, name1))
continue;
else
printf("%d\t%s\t%lld\n", pa[i].id, pa[i].name, pa[i].phone);
}
break;
case 1:
printf("请输入要查找的手机号码:");
scanf("%lld", &phone1);
for (i = 0; i < *length; i++)
{
if (pa[i].phone == phone1)
printf("%d\t%s\t%lld\n", pa[i].id, pa[i].name, pa[i].phone);
else
continue;
}
break;
default:
printf("查找方式有误,请重新输入");
break;
}
}
void modify(struct Data *pa, int *length)//修改联系人
{
int i;
int way;
char name1[N] = {0};
char name2[N] = {0};
long long phone1;
long long phone2;
printf("请输入要修改的内容:name 0/phone 1\n");
scanf("%d", &way);
switch (way)
{
case 0:
printf("请输入要修改的姓名:");
scanf("%s", name1);
printf("请输入修改后的姓名:");
scanf("%s", name2);
for (i = 0; i < *length; i++)
{
if (strcmp(pa[i].name, name1))
continue;
else
{
strcpy(pa[i].name, name2);
printf("修改完成\n");
}
}
break;
case 1:
printf("请输入要修改的手机号码:");
scanf("%lld", &phone1);
printf("请输入修改后的手机号码:");
scanf("%lld", &phone2);
for (i = 0; i < *length; i++)
{
if (pa[i].phone == phone1)
{
pa[i].phone = phone2;
printf("修改完成\n");
}
else
continue;
}
break;
default:
printf("修改方式有误,请重新输入");
break;
}
}
void display(struct Data *pa, int *length)//显示联系人
{
int i;
printf("---------------\n");
printf("联系人总共有:%d个\n", *length);
printf("---------------\n");
printf("编号\t姓名\t手机号码\n");
for (i = 0; i < *length; ++i)
{
printf("%d\t%s\t%lld\n", pa[i].id, pa[i].name, pa[i].phone);
}
}
void sort(struct Data *pa, int *length)//排列联系人
{
int i, j, k;
int way;
struct Data tmp;
printf("请选择排序方式:name 0/phone 1\n");
scanf("%d", &way);
switch (way)
{
case 0:
for (i = 0;i < *length; i++)
{
for(j = i+1;j < *length; j++)
{
while (1)
{
if (pa[i].name[k] > pa[j].name[k])
{
tmp = pa[i];
pa[i] = pa[j];
pa[j] = tmp;
break;
}
else if (pa[i].name[0] == pa[j].name[0])
k++;
}
}
}
case 1:
for (i = 0;i < *length; i++)
{
for(j = i+1;j < *length; j++)
{
if (pa[i].phone > pa[j].phone)
{
tmp = pa[i];
pa[i] = pa[j];
pa[j] = tmp;
}
}
}
break;
}
}
int main()
{
struct Data a[N] = {0};
int cmd;
int length = 0;
while (1)
{
printf("---------------\n");
printf("| 1.增加联系人 |\n");
printf("| 2.删除联系人 |\n");
printf("| 3.查找联系人 |\n");
printf("| 4.修改联系人 |\n");
printf("| 5.显示联系人 |\n");
printf("| 6.排列联系人 |\n");
printf("请输入指令:");
scanf("%d", &cmd);
switch (cmd)
{
case 1: //增加联系人
add(a, &length);
break;
case 2: //删除联系人
delete(a, &length);
break;
case 3: //查找联系人
research(a, &length);
break;
case 4: //修改联系人
modify(a, &length);
break;
case 5: //显示联系人
display(a, &length);
break;
case 6: //排列联系人
sort(a, &length);
break;
}
}
return 0;
}