该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#define maxlen 100
struct persons
{ char name[10];
char addr[20];
char phnum[10];
}persons[maxlen];
;
;
;
typedef struct lnode{
char name[10];
char addr[20];
char phnum[10];
struct lnode *next;
}listnode,*linklist;
;
;
;
linklist head=NULL,r=NULL;
listnode *s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7;
int i;
char name1[10],ch;
char str1[20];
FILE *fp; ;
void creat()
{ int j;
long k;
fp=fopen("people.txt","r+t");
if(fp!=NULL)
{for(i=1;i
{ j=fgetc(fp);
if(j==EOF)
return;
k=i-1;
fseek(fp,k*sizeof(struct persons),0);
fread(&persons[i],sizeof(struct persons),1,fp);
s=(linklist)malloc(sizeof(listnode));
strcpy(s->name,persons[i].name);
strcpy(s->addr,persons[i].addr);
strcpy(s->phnum,persons[i].phnum);
if(head==NULL)
head=s;
else
r->next=s;
r=s;}
}
else
{ fp=fopen("people.txt","w"); i=1;
}
}
;
;
;
void List()
{ p1=head;
while(p1!=NULL)
{ printf("\n\n\tname:%s\n",p1->name);
printf("\n\n\taddr:%s",p1->addr);
printf("\n\n\tphnum:%s",p1->phnum);
p1=p1->next;
}
}
;
;
;
void Delete()
{ printf("\n\n\tplease input the name:");
gets(name1); p4=head;
if(strcmp(p4->name,name1)==0)
{ p4=p4->next;
head=p4;
}
else
{ while(strcmp(p4->next->name,name1)!=0)
p4=p4->next;
p5=p4->next;
p4->next=p5->next;
free(p5);
}
}
;
;
;
void Find()
{ printf("\n\n\tplease input the name:");
p0=head;
gets(name1);
while(strcmp(name1,p0->name)!=0&&p0!=NULL)
p0=p0->next;
if(p0==NULL)
printf("\n\n\tIt is not exit in the addr-book!");
else
{ printf("\n\n\tname:%s\n",p0->name);
printf("\n\n\taddr:%s",p0->addr);
printf("\n\n\tphnum:%s",p0->phnum);
}
}
;
;
;
void Input()
{ s=(linklist)malloc(sizeof(listnode));
printf("\n\n\tplease input the sb's meg:");
printf("\n\n\t\tname:");
scanf("%s",s->name);
printf("\n\n\t\tAddr:");
scanf("%s",s->addr);
printf("\n\n\t\tphnum:");
scanf("%s",s->phnum);
if(head==NULL)
head=s;
else
r->next=s;
r=s;
}
;
;
;
void Alter()
{
int j;
printf("\n\n\tPlease input the name:");
gets(name1);
p3=head;
while(strcmp(name1,p3->name)!=0&&p3!=NULL)
p3=p3->next;
if(p3==NULL)
printf("\n\n\tIt is not exit in the addr-book!");
else
{ printf("\n\n\tplease input the new meg!");
printf("\n\n\t\tname:");
scanf("%s",name1);
strcpy(p3->name,name1);
printf("\n\n\t\tAddr:");
scanf("%s",name1);
strcpy(p3->addr,name1);
printf("\n\n\t\tphnum:");
scanf("%s",name1);
strcpy(p3->phnum,name1);
}
}
;
;
;
void Save()
{ int j;
fp=fopen("people.txt","w");
for(p2=head,j=0;p2!=NULL;j++,p2=p2->next)
{ strcpy(persons[j].name,p2->name);
strcpy(persons[j].addr,p2->addr);
strcpy(persons[j].phnum,p2->phnum);
fwrite(&persons[j],sizeof(struct persons),1,fp);
}
}
;
;
;
void main()
{ creat();
do
{printf("\n\t***********************************************\n");
printf("\n\n\tWELCOME TO USE XIESHENGQING's Address book\n");
printf("\n\t**********************************************\n");
printf("\n\n\t\tPlease make a choice below:");
printf("\n\t\t1.List all the meg");
printf("\n\t\t2.Delete a piece of meg");
printf("\n\t\t3.Find a piece of meg");
printf("\n\t\t4.Add a piece of meg");
printf("\n\t\t5.Alter a piece of meg");
printf("\n\t\t6.Save and Quit");
printf("\n\t\t7.Create an address book");
printf("\n\n\n");
printf("\tInput Your Choice:");
ch=getche();
switch(ch)
{ case '1': List(); break;
case '2': Delete();
break;
case '3': Find();
break;
case '4': Input();
break;
case '5': Alter();
break;
case '7': Save();
break;
case '6': creat();
fclose(fp);
exit(0);
break;
default:
printf("\n\t********************************************\n");
printf("\n\t The num should 1-4!!! \n");
printf("\n\t********************************************\n");
break;
}
}while(1);
}