初步实现了新建,删除,查找,显示,修改的功能,排序还在修改
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void del();
void print();
struct book *creat();
struct book
{
char name[10];
int tel;
char sex[5];
int age;
struct book *next;
};
struct book *creat() //新建
{
struct book *h,*in,*last;
char na[10]={0},se[5]={0};
int te,ag;
h=(struct book *)malloc(sizeof(struct book));
last=h;
printf("请输入你想要录入的联系人信息,输入(over)结束\n");
printf("姓名 电话 性别 年龄\n");
scanf("%s%d%s%d",na,&te,se,&ag);
while(strncmp(na,"over",4)!=0)
{
printf("______________\n");
in=(struct book *)malloc(sizeof(struct book));
strcpy(in->name,na);
in->tel=te;
strcpy(in->sex,se);
in->age=ag;
last->next=in;
last=in;
scanf("%s%d%s%d",na,&te,se,&ag);
}
last->next='\0';
printf("\n");
printf("\n");
printf("\n");
printf("\n");
return h;
}
void print(struct book *head) //打印
{
struct book *q;
q=head->next;
printf("通讯录内容如下:\n");
if(!q)
{
printf("null\n");
}
else
{
do
{
printf("%s %d %s %d\n", q->name, q->tel, q->sex, q->age);
q=q->next;
}
while(q);
}
}
void del(struct book *head)
{
struct book *p,*q;
int x,y;
char a[10];
p=head->next;
q=head;
// printf("当前已有联系人如下:\n");
print(q);
printf("\n");
printf("请输入你想删除的人的姓名\n");
printf("请输入:");
scanf("%s",a);
while((strcmp(p->name,a)!=0)&&(p!=0))
{
q=p;
p=p->next;
}
if(strcmp(p->name,0)==0)
{
printf("找不到该联系人\n"); //无法使用
// return 0;
del(head);
}
else
{
printf("确认删除该联系人? 1是 2否\n");
printf("请输入:");
scanf("%d",&x);
if(x==1)
{
q->next=p->next;
free(p);
// return 1;
}
else
{
printf("你在逗我???\n");
}
}
printf("是否还要继续删除? 1是 2否\n");
printf("请输入:");
scanf("%d",&y);
if(y==1)
{
del(head);
}
else
{
printf("完成\n");
}
}
void find(struct book *head)
{
struct book *p;
int x,y,k;
char a[10];
p=head->next;
printf("请输入你想使用的查找方式: 1 姓名 2 电话 3 年龄\n");
printf("请输入:");
scanf("%d",&x);
if(x==1)
{
printf("请输入你想查找的姓名:\n");
printf("请输入:");
scanf("%s",a);
while((strcmp(p->name,a)!=0)&&(p!=0))
{
p=p->next;
}
if(p==0)
printf("未找到该联系人:\n");
else
{
printf("姓名: %s 电话: %d 性别: %s 年龄: %d\n", p->name, p->tel, p->sex, p->age);
}
}
if(x==2)
{
printf("请输入你想查找的电话:\n");
printf("请输入:");
scanf("%d",&y);
while((p->tel!=y)&&(p!=0))
{
p=p->next;
}
if(p==0)
printf("未找到该联系人:\n");
{
printf("姓名: %s 电话: %d 性别: %s 年龄: %d\n", p->name, p->tel, p->sex, p->age);
}
}
if(x==3)
{
printf("请输入你想查找的年龄:\n");
printf("请输入:");
scanf("%d",&y);
while((p->age!=y)&&(p!=0))
{
p=p->next;
}
if(p==0)
printf("未找到该联系人:\n");
{
printf("姓名: %s 电话: %d 性别: %s 年龄: %d\n", p->name, p->tel, p->sex, p->age);
}
}
printf("是否还要继续查找? 1 是 2 否");
printf("请输入:");
scanf("%d",&k);
if(k==1)
find(head);
else
printf("完成\n");
}
void change(struct book *head)
{
struct book *p;
int x,y,k,z,i;
char a[10];
p=head->next;
printf("请输入你想使用的查找方式: 1 姓名 2 电话 3 年龄\n");
printf("请输入:");
scanf("%d",&x);
if(x==1)
{
printf("请输入你想查找的姓名:\n");
printf("请输入:");
scanf("%s",a);
while((strcmp(p->name,a)!=0)&&(p!=0))
{
p=p->next;
}
if(p==0)
printf("未找到该联系人:\n");
else
{
printf("姓名: %s 电话: %d 性别: %s 年龄: %d\n", p->name, p->tel, p->sex, p->age);
printf("请选择你想修改的内容:1 姓名 2电话 3性别 4年龄\n");
printf("请输入:");
scanf("%d",&z);
if(z==1)
{
printf("修改为:");
scanf("%s",p->name);
}
if(z==2)
{
printf("修改为:");
scanf("%d",&p->tel);
}
if(z==3)
{
printf("修改为:");
scanf("%s",p->sex);
}
if(z==4)
{
printf("修改为:");
scanf("%d",&p->age);
}
}
}
if(x==2)
{
printf("请输入你想查找的电话:\n");
printf("请输入:");
scanf("%d",&y);
while((p->tel!=y)&&(p!=0))
{
p=p->next;
}
if(p==0)
printf("未找到该联系人:\n");
{
printf("姓名: %s 电话: %d 性别: %s 年龄: %d\n", p->name, p->tel, p->sex, p->age);
printf("请选择你想修改的内容:1 姓名 2电话 3性别 4年龄\n");
printf("请输入:");
scanf("%d",&z);
if(z==1)
{
printf("修改为:");
scanf("%s",p->name);
}
if(z==2)
{
printf("修改为:");
scanf("%d",&p->tel);
}
if(z==3)
{
printf("修改为:");
scanf("%s",p->sex);
}
if(z==4)
{
printf("修改为:");
scanf("%d",&p->age);
}
}
}
if(x==3)
{
printf("请输入你想查找的年龄:\n");
printf("请输入:");
scanf("%d",&y);
while((p->age!=y)&&(p!=0))
{
p=p->next;
}
if(p==0)
printf("未找到该联系人:\n");
{
printf("姓名: %s 电话: %d 性别: %s 年龄: %d\n", p->name, p->tel, p->sex, p->age);
printf("请选择你想修改的内容:1 姓名 2电话 3性别 4年龄\n");
printf("请输入:");
scanf("%d",&z);
if(z==1)
{
printf("修改为:");
scanf("%s",p->name);
}
if(z==2)
{
printf("修改为:");
scanf("%d",&p->tel);
}
if(z==3)
{
printf("修改为:");
scanf("%s",p->sex);
}
if(z==4)
{
printf("修改为:");
scanf("%d",&p->age);
}
}
}
printf("现状如下;\n");
printf("姓名: %s 电话: %d 性别: %s 年龄: %d\n", p->name, p->tel, p->sex, p->age);
printf("是否继续修改? 1是 2否\n");
printf("请输入:");
scanf("%d",&i);
if(i==1)
change(head);
else
printf("完成\n");
}
void paixu(struct book *head)
{
struct book *p,*q,*len,*tmp;
int count=0,i,j,x;
len=head;
tmp=head;
while(len->next!=NULL)
{
count++;
len=len->next;
}
q=head;
p=head->next;
printf("请选择你的排序方式: 1姓名 2电话 3性别 4年龄\n");
printf("请输入:");
scanf("%d",&x);
if(x==1)
{
for(i=0;i<count-1;i++)
{
for(j=0;j<count-1;j++)
{
if(strcmp(q,p)<0)
{
*tmp=*p;
*p=*q;
*q=*tmp
}
}
}
}
}
main()
{
struct book *head;
head=creat();
// print(head);
// del(head);
// find(head);
change(head);
}