学习对象:zgege
网址:https://blog.csdn.net/zgege/article/details/79676582
改了原博主的一些小错误
实现功能:退出 添加联系人
删除联系人 修改联系人
查找联系人 通讯录初始化
通讯录输出 通讯录排序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if 0
参考:zgege
网址:https://blog.csdn.net/zgege/article/details/79676582
改了原博主的一些小错误
#endif // 0
typedef struct peo //定义通讯录联系人结构
{
char name[30];
char sex[10];
int age;
char tele[20];
char address[40];
}Peo;
typedef struct sequence //定义通讯录结构
{
Peo people[1000];
int i;
}Sequence;
int find(Sequence *book, char *names)
{
int n = 0;
while(n < book->i)
{
if(strcmp(book->people[n].name, names) == 0)
break;
n++;
}
if(n > book->i)
return -1;
else //没找到则返回-1
return n; //找到则返回n
}
void Add(Sequence *book)
{
if(book->i >= 1000)
{
printf("通讯录已满!\n");
}
else
{
printf("请输入名字:");
scanf("%s", book->people[book->i].name);
printf("请输入性别:");
scanf("%s", book->people[book->i].sex);
printf("请输入年龄:");
scanf("%d", &book->people[book->i].age);
printf("请输入电话:");
scanf("%s", book->people[book->i].tele);
printf("请输入地址:");
scanf("%s", book->people[book->i].address);
++book->i; //为什么要加1
printf("添加成功!\n");
}
}
void dele(Sequence *book, char *names)
{
if(book->i <= 0)
{
printf("通讯录已空!\n");
}
else
{
int n = 0;
n = find(book, names);
if(n == -1)
{
printf("查无此人!\n");
}
else
{
while(n < book->i)
{
book->people[n] = book->people[n+1];
n++;
}
book->i--;
printf("删除成功!\n");
}
}
}
void change(Sequence *book, char *names)
{
int t = 0;
t = find(book, names);
if(t == -1)
{
printf("查无此人!\n");
}
else
{
printf("请输入名字:");
scanf("%s", book->people[t].name);
printf("请输入性别:");
scanf("%s", book->people[t].sex);
printf("请输入年龄:");
scanf("%d", &book->people[t].age);
printf("请输入电话:");
scanf("%s", book->people[t].tele);
printf("请输入地址:");
scanf("%s", book->people[t].address);
printf("修改成功!\n");
}
}
void output(Sequence *book)
{
if(book->i <= 0)
{
printf("通讯录为空!\n");
}
else
{
int n = 0;
while(n < book->i)
{
printf("名字:%s 性别:%s 年龄:%d 电话:%s 地址:%s\n",
book->people[n].name,
book->people[n].sex,
book->people[n].age,
book->people[n].tele,
book->people[n].address);
n++;
}
}
}
void init(Sequence *book)
{
book->i = 0;
printf("初始化成功!\n");
}
void sort(Sequence *book)
{
if(book->i > 1)
{
int i = 0;
int j = 0;
int flag = 0;
for(i = 0; i < book->i-1; i++)
{
flag = 1;
for(j = 0; j < book->i - i -1; j++)
{
if(strcmp(book->people[j].name, book->people[j + 1].name)<0)
{
char arr[50];
strcpy(arr, book->people[j].name);
strcpy(book->people[j].name, book->people[j+1].name);
strcpy(book->people[j+1].name, arr);
strcpy(arr, book->people[j].sex);
strcpy(book->people[j].sex, book->people[j+1].sex);
strcpy(book->people[j+1].sex, arr);
int tmp = book->people[j].age;
book->people[j].age = book->people[j+1].age;
book->people[j+1].age = tmp;
strcpy(arr, book->people[j].tele);
strcpy(book->people[j].tele, book->people[j+1].tele);
strcpy(book->people[j+1].tele, arr);
strcpy(arr, book->people[j].address);
strcpy(book->people[j].address, book->people[j+1].address);
strcpy(book->people[j+1].address, arr);
flag = 0;
}
}
if(flag)
break;
}
}
printf("排序成功!\n");
}
void execute(Sequence book)
{
int n = 0;
char name[20];
while(1)
{
printf("**********************************\n");
printf("** 0.exit 1.add **\n");
printf("** 2.delate 3.change **\n");
printf("** 4.find 5.init **\n");
printf("** 6.output 7.sort **\n");
printf("请选择:");
scanf("%d",&n);
switch(n)
{
case 0:
exit(1);
break;
case 1:
Add(&book);
break;
case 2:
printf("请输入姓名:");
scanf("%s", name);
dele(&book, name);
break;
case 3:
printf("请输入姓名:");
scanf("%s", name);
change(&book, name);
break;
case 4:
printf("请输入姓名:");
scanf("%s", name);
int t = find(&book, name);
if(t == -1)
printf("查无此人!\n");
else
printf("姓名:%s 性别:%s 年龄:%d 电话:%s 地址:%s\n",
book.people[t].name,
book.people[t].sex,
book.people[t].age,
book.people[t].tele,
book.people[t].address);
break;
case 5:
init(&book);
break;
case 6:
output(&book);
break;
case 7:
sort(&book);
break;
default:
printf("选择无效!\n");
break;
}
}
}
int main()
{
Sequence book;
book.i = 0;
execute(book);
system("pause");
return 0;
}