#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 1000
int num = 0;
struct person
{
char name[20];
int age;
char ID;
};
typedef struct person STR;
void delete(STR *per[])
{
char q[20] = {0};
char p[20] = {0};
int i,j,flag;
while(1)
{
system("clear");
printf("请输入你要删除的联系人的姓名\n");
scanf("%s",q);
for(i = 0;i < num; i++)
{
if(!strcmp(q,per[i]->name))
{
free(per[i]);
num--;
flag = 1;
for(j = i;j < num;j++)
{
per[j] = per[j + 1];
}
break;
}
else
{
flag = 0;
}
}
if(flag)
{
printf("删除成功请输入quit退回主菜单或者输入其他内容继续删除联系人\n");
}
else
{
printf("查无此人请输入quit退回主菜单或者输入其他内容继续删除联系人\n");
}
scanf("%s",p);
if(!strcmp(p,"quit"))
{
break;
}
}
}
void transfer(STR *per[])
{
int i,flag;
char b[20] = {0},q[20] = {0};
while(1)
{
system("clear");
printf("请输入要修改的联系人信息的姓名\n");
scanf("%s",b);
for(i = 0; i < num; i++)
{
if(!strcmp(b,per[i]->name))
{
flag = 1;
printf("请输入新的姓名、年龄和ID:\n");
scanf("%s%d %c",per[i]->name,&per[i]->age,&per[i]->ID);
getchar();
break;
}
else
{
flag = 0;
}
}
if(!flag)
{
printf("查无此人\n");
}
else
{
printf("修改成功\n");
}
printf("请输入quit退回主目录,输入其他内容继续修改联系人信息:\n");
scanf("%s",q);
if(!strcmp(q,"quit"))
{
break;
}
}
}
void store(STR *per[])
{
STR *p[1];
int i,j;
p[0] = (STR *) malloc (sizeof(STR));
getchar();
system("clear");
printf("当前通讯录内容:\n");
for(i = 0;i < num - 1; i++)
{
for(j = 0; j < num - 1 - i; j++)
{
if(strcmp(per[j]->name,per[j+1]->name) > 0)
{
p[0] = per[j + 1];
per[j + 1] = per[j];
per[j] = p[0];
}
}
}
for(i = 0;i < num;i++)
{
printf("%s %d %c\n",per[i]->name,per[i]->age,per[i]->ID);
}
printf("请按任意键退出\n");
getchar();
}
void search(STR *per[])
{
int i,flag;
char a[20] = {0};
while(1)
{
printf("请输入你要查找的人的姓名(输入quit退回主菜单):\n");
scanf("%s",a);
system("clear");
for(i = 0; i < num; i++)
{
if(!(strcmp(per[i]->name,a)))
{
printf("%s %d %c\n",per[i]->name,per[i]->age,per[i]->ID);
flag = 1;
break;
}
flag = 0;
}
if(!(strcmp(a,"quit")))
{
break;
}
if(!flag)
{
printf("查无此人\n");
}
}
}
void add(STR *per[])
{
system("clear");
while(1)
{
printf(" 请输入联系人姓名、年龄和ID(输入quit退回主菜单):\n");
per[num] = (STR *) malloc(sizeof(STR));
scanf("%s",per[num]->name);
if(!(strcmp(per[num]->name,"quit")))
{
break;
}
scanf("%d",&per[num]->age);
getchar();
scanf("%c",&per[num]->ID);
++num;
}
}
void welcome()
{
system("clear");
printf("\n\n\n\n\n");
printf(" \033[47;31m 欢迎来到主菜单\033[0m:\n");
sleep(3);
}
int menue()
{
system("clear");
printf("\n\n\n\n 主菜单\n\n\n");
printf("\033[47;31m 1.添加信息\033[0m \033[47;32m 2.查看信息\033[0m\n");
printf("\033[47;33m 3.查找信息\033[0m \033[47;34m 4.删除信息\033[0m\n");
printf("\033[47;35m 5.修改信息\033[0m \033[47;36m 6.退出主菜单\033[0m\n");
printf("请输入序号进入指定功能\n");
sleep(3);
}
int main()
{
STR* per[SIZE] = {0};
int choice,i;
welcome();
while(1)
{
menue();
scanf("%d",&choice);
switch(choice)
{
case 1:
{
add(per);
break;
}
case 2:
{
store(per);
break;
}
case 3:
{
search(per);
break;
}
case 4:
{
delete(per);
break;
}
case 5:
{
transfer(per);
break;
}
case 6:
{
exit (0);
break;
}
}
}
return 0;
}
7.30 运用结构体写通讯录
猜你喜欢
转载自blog.csdn.net/qq_42752746/article/details/81291609
今日推荐
周排行