#include<stdio.h>
#include<stdlib.h>
#include<string.h>
# define size 1000
int count = 0;
int number;
struct person
{
int no;
char name[20];
int age;
char sex[10];
char tel[20];
};
void CutInfo(struct person *ps[])
{
int i, j, C_flag, quit = 1;
char name[20];
aa: printf("退出删除操作请按0;任意键继续\n");
scanf("%d",&quit);
while(quit)
{
if(count == 0)
{
printf("您还没有联系人快去添加吧!");
goto aa;
}
else if(count == 1)
{
printf("\n请输入要删除的联系人姓名:\n");
scanf("%s",name);
if(strcmp(ps[0]->name,name) == 0)
{
printf("姓名:%s 年龄:%d 性别:%s 联系方式:%s\n",
ps[0]->name,ps[0]->age,ps[0]->sex,ps[0]->tel);
bb: printf("确定删除请按1,返回请按0;\n");
scanf("%d",&C_flag);
if(C_flag == 1)
{
free(ps[0]);
Display(ps);
count--;
goto aa;
}
else if(C_flag == 0)
goto aa;
else
{
printf("输入有误,请尝试重新输入\n");
goto bb;
}
}
else
{
printf("没有相关联系人,请检查是否输入有误");
goto aa;
}
}
else
{
system("clear");
printf("\n请输入要删除的联系人姓名:\n");
scanf("%s",name);
for(i = 0; i < count; i++)
{
if(strcmp(ps[i]->name,name) == 0)
{
cc: printf("确定要删除 姓名:%s 年龄:%d 性别:%s 电话号码:%s\n",
ps[i]->name,ps[i]->age,ps[i]->sex,ps[i]->tel);
printf("确认请按1,返回请按0\n");
scanf("%d",&C_flag);
if(C_flag == 0)
goto aa;
else if(C_flag == 1)
{
for(j = i; j < count - 1; j++)
{
*ps[j] = *ps[j+1];
}
free(ps[j]);
printf("删除成功!\n");
count--;
Display(ps);
goto aa;
}
else
{
printf("请检查输入是否有误\n");
goto cc;
}
}
}
if(i = count)
{
printf("没有找到相关联系人\n");
goto aa;
}
}
}
}
void hello()
{
system("clear");
printf("\n********************************************");
printf("\n*********欢迎进入通讯录(老龄版)************");
printf("\n********************************************\n");
printf("请选择功能 \n\n");
printf("1、添加联系人 2、删除联系人 \n");
printf("3、显示联系人 4、修改信息 \n");
printf("5、排序选择 6、查找联系人 \n");
printf("7、退出\n");
printf("\n********************************************\n");
sleep(0.5);
}
void AddInfo(struct person *ps[])
{
int i, flag, clear = 0;
system("clear");
printf("\n\n*************请输入联系人***************\n\n");
for(i = count; i < 1000; i++)
{
printf("请按照:姓名、年龄、性别、电话号码的顺序来输入中间输入空格\n");
ps[i] = (struct person*)malloc(sizeof(struct person));
scanf("%d ",&ps[i]->no);
if(ps[i]->no == 1000)
break;
scanf("%s%d %s%s",ps[i]->name,
&ps[i]->age,ps[i]->sex,ps[i]->tel);
ps[i]->no = i+1;
printf("序号为:%d\n姓名为:%s\n年龄为:%d\n性别为: %s\n联系方式为:%s\n\n",
ps[i]->no,ps[i]->name,ps[i]->age,ps[i]->sex,ps[i]->tel);
count++;
clear++;
printf("是否需要继续输入?\n继续请按1,退出请按0\n\n");
scanf("%d",&flag);
if(flag != 1)
break;
if(clear == 2)
{
system("clear");
clear = 0;
}
}
}
void Display(struct person *ps[])
{
system("clear");
int i, flag = 1;
while(flag)
{
if(count == 0)
{
printf("联系人为空,快去添加吧 \n");
sleep(3);
}
for(i = 0; i < count; i++)
{
printf("序号为:%d 姓名为:%s 年龄为:%d 性别为: %s 联系方式为:%s\n",
ps[i]->no,ps[i]->name,ps[i]->age,ps[i]->sex,ps[i]->tel);
}
printf("返回请按0\n");
scanf("%d",&flag);
}
}
void Sort(struct person *ps[])
{
int way, i, j, S_flag = 1;
struct person tmp = {0};
while(S_flag)
{
printf("退出请按0\n");
scanf("%d",&S_flag);
printf("请选择排序方式:1、按姓名(升序) 2、按姓名(降序) \n");
scanf("%d",&way);
if(way == 1)
{
for(i == 1; i < count - 1; i++)
{
for(j = 1; j < count - 1 - i; j++)
{
if(strcmp(ps[j]->name, ps[j+1]->name) > 0)
{
tmp = *ps[j+1];
*ps[j+1] = *ps[j];
*ps[j] = tmp;
}
}
}
for(i = 0; i < count; i++)
{
ps[i]->no = i+1;
}
Display(ps);
printf("如需退出请排序0\n");
scanf("%d",&S_flag);
}
else
{
for(i == 1; i < count - 1; i++)
{
for(j = 1; j < count - 1 - i; j++)
{
if(strcmp(ps[j]->name, ps[j+1]->name) < 0)
{
tmp = *ps[j+1];
*ps[j+1] = *ps[j];
*ps[j] = tmp;
}
}
}
for(i = 0; i < count; i++)
{
ps[i]->no = i+1;
}
Display(ps);
printf("如需退出排序请按0\n");
scanf("%d",&S_flag);
}
}
}
void FindInfo(struct person *ps[])
{
char name[20];
int i, F_flag = 1;
dd: Display(ps);
system("clear");
printf("请输入要查找的联系人姓名:\n");
scanf("%s",name);
while(F_flag)
for(i= 0; i < count; i++)
{
if(strcmp(ps[i]->name,name) == 0)
{
printf("已找到!\n");
printf("编号:%d 姓名:%s 年龄:%d 性别:%s 联系方式:%s\n",
ps[i]->no,ps[i]->name,ps[i]->age,ps[i]->sex,ps[i]->tel);
}
}
}
int main()
{
int choice;
struct person *ps[size] = {0};
while(1)
{
hello();
printf("请输入你的选择:\n");
scanf("%d",&choice);
switch (choice)
{
case 1 :
AddInfo(ps);
break;
case 2:
CutInfo(ps);
break;
case 3:
Display(ps);
break;
case 5:
Sort(ps);
break;
case 6:
FindInfo(ps);
break;
case 7:
system("clear");
exit (0);
break;
}
}
return 0;
}