南航c语言课程设计报告电话簿管理系统.docx
《南航c语言课程设计报告电话簿管理系统.docx》由会员分享,可在线阅读,更多相关《南航c语言课程设计报告电话簿管理系统.docx(11页珍藏版)》请在冰豆网上搜索。
南航c语言课程设计报告电话簿管理系统
电话簿管理系统
一.程序功能:
电话簿管理系统要求实现一个电话薄系统的基本管理功能,包括录入、删除、查找、和导入/导出功能等。
1.创建电话簿;
2.
#include
#include
#include
#include
structtelebook
{charnum[4];
charname[10];
charphonenum[15];
charemail[20];
structtelebook*next;
};
typedefstructtelebookTeleBook;
intmenu_select();
TeleBook*s;
TeleBook*Create();
voidDisplay(TeleBook*head);
TeleBook*Insert(TeleBook*head,TeleBook*s);
TeleBook*Insert_a_record(TeleBook*head);
TeleBook*Delete(TeleBook*head,char*num);
TeleBook*Delete_a_record(TeleBook*head);
TeleBook*Query(TeleBook*head,char*num);
voidQuery_a_record(TeleBook*head);
TeleBook*AddfromText(TeleBook*head,char*filename);
voidWritertoText(TeleBook*head,char*filename);
voidQuit(TeleBook*head);
TeleBook*DeleteSame(TeleBook*head);
intmenu_select()
{charc;
do{
system("cls");
printf("1.CreateList\n");
printf("2.DisplayAllRecord\n");
printf("3.InsertaReacord\n");
printf("4.DeleteaReacord\n");
printf("5.Query\n");
printf("6.AddRecordsfromaTextFile\n");
printf("7.WritetoaTextFile\n");
printf("8.DeletetheSameRecord\n");
printf("0.Quit\n");
printf("Giveyourchoice(0-8):
\n");
c=getchar();
}
while(c<'0'||c>'8');
return(c-'0');
}
TeleBook*Create()
{TeleBook*s,*head=NULL;
charc='Y';
printf("createanincreasinglist...\n");
printf("pleaseinputnum,name,phonenum,email\n");
while(c=='Y'||c=='y')
{s=(TeleBook*)malloc(sizeof(TeleBook));
system("pause");
gets(s->num);
gets(s->name);
gets(s->phonenum);
gets(s->email);
head=Insert(head,s);
printf("Doyouwanttocontinuetoinput:
(Y/N)?
\n");
c=getchar();
}
return(head);
}
voidDisplay(TeleBook*head)
{TeleBook*p;
inti=0;
p=head;
printf("outputlist:
\n");
printf("num\tname\tphonenum\temail\n");
while(p!
=NULL)
{printf("%s\t%s\t%s\t%s\n",p->num,p->name,p->phonenum,p->email);
p=p->next;
if(++i%10==0)
{printf("\n");
system("pause");
system("cls");
}
}
}
TeleBook*Insert(TeleBook*head,TeleBook*s)
{TeleBook*p1,*p2;
if(head==NULL)
{head=s;
s->next=NULL;
return(head);
}
p2=p1=head;
while(strcmp(s->num,p1->num)>0&&p1->next!
=NULL)
{p2=p1;p1=p1->next;}
if(strcmp(s->num,p1->num)<=0)
{s->next=p1;
if(head==p1)head=s;
elsep2->next=s;
}
else{p1->next=s;s->next=NULL;}
return(head);
}
TeleBook*Insert_a_record(TeleBook*head)
{TeleBook*p;
p=(TeleBook*)malloc(sizeof(TeleBook));
printf("PleaseinputthenewNum,Name,Phonenum,Email\n");
getchar();
gets(p->num);
gets(p->name);
gets(p->phonenum);
gets(p->email);
head=Insert(head,p);
printf("Insertsuccess!
!
\n");
printf("%s\n%s\n%s\n%s\n",p->num,p->name,p->phonenum,p->email);
return(head);
}
TeleBook*Delete(TeleBook*head,char*num)
{TeleBook*p1,*p2;
if(head==NULL)
{printf("Listisnull\n");
return(NULL);
}
p1=head;
while(strcmp(p1->num,num)!
=0&&p1->next!
=NULL)
{p2=p1;
p1=p1->next;
}
if(strcmp(p1->num,num)==0)
{if(p1==head)head=p1->next;
elsep2->next=p1->next;
printf("Thenum%sisdeleted.\n",p1->num);
free(p1);
}
else
printf("Thenum%sisnotfound.\n",num);
return(head);
}
TeleBook*Delete_a_record(TeleBook*head)
{charc;charnum[20];
printf("Doyouwanttodelete?
(y/n)\n");
getchar();
c=getchar();
if(c=='y'||c=='Y')
printf("pleaseinputnum=\n");
getchar();
gets(num);
head=Delete(head,num);
printf("deletesuccess!
\n");
return(head);
}
TeleBook*Query(TeleBook*head,char*num)
{TeleBook*p;
p=(TeleBook*)malloc(sizeof(TeleBook));
p=head;
while(p!
=NULL)
{if(strcmp(p->num,num)==0)return(p);
p=p->next;
}
return(NULL);
}
voidQuery_a_record(TeleBook*head)
{charnum[10];
TeleBook*p;
p=(TeleBook*)malloc(sizeof(TeleBook));
printf("Pleaseinputthenumyouwanttosearch\n");
getchar();
gets(num);
p=Query(head,num);
if(p==NULL)printf("Fail!
\n");
else
{printf("SearchSuccess!
\n");
printf("Num:
%s\nName:
%s\nPhonenum:
%s\nEmail:
%s\n",p->num,p->name,p->phonenum,p->email);
}
}
TeleBook*AddfromText(TeleBook*head,char*filename)
{FILE*fp;
printf("Pleaseinputthefilenameyouwant.....\n");
getchar();
gets(filename);
fp=fopen(filename,"r");
if(fp==NULL)
{printf("Can'topenthefile!
\n");
getchar();
exit
(1);
}
while(feof(fp)==0)
{TeleBook*s;
s=(TeleBook*)malloc(sizeof(TeleBook));
fscanf(fp,"%s%s%s%s",s->num,s->name,s->phonenum,s->email);
head=Insert(head,s);
}
fclose(fp);
printf("Addsuccess\n");
return(head);
}
voidWritertoText(TeleBook*head,char*filename)
{TeleBook*p;
FILE*fp;
printf("Pleaseinputthefilenameyouwanttooutput.....\n");
getchar();
gets(filename);
if((fp=fopen(filename,"w"))==NULL)
{printf("Can'topen");
exit(0);
}
p=head;
printf("Outputlist:
\n");
while(p!
=NULL)
{fprintf(fp,"%s\t%s\t%s\t%s\n",p->num,p->name,p->phonenum,p->email);
p=p->next;
}
fclose(fp);
printf("WriteSuccessful!
\n");
}
voidQuit(TeleBook*head)
{TeleBook*p;
charc;
printf("Doyouwanttoexit?
(YorN)\n");
getchar();
c=getchar();
if(c=='Y'||c=='y')
{while(head!
=NULL)
{p=head;
head=head->next;
free(p);
}
}
}
TeleBook*DeleteSame(TeleBook*head)
{TeleBook*p;
TeleBook*p1,*p2;
if(head==NULL)
{printf("Listisnull\n");
return(NULL);
}
for(p=head;p!
=NULL;p=p->next)
for(p2=p,p1=p->next;p1!
=NULL;p2=p1,p1=p1->next)
{if(strcmp(p->name,p1->name)==0&&strcmp(p->phonenum,p1->phonenum)==0&&strcmp(p->email,p1->email)==0)
{p2->next=p1->next;
free(p1);
printf("DeleteSuccess\n");
}
}
return(head);
}
voidmain()
{TeleBook*head=NULL;
printf("\t******TeleBook*******\n");
for(;;)
{switch(menu_select())
{case1:
printf("\tCreateList\n");
head=Create();
system("pause");
break;
case2:
printf("\tDisplayAllRecord\n");
Display(head);
system("pause");
break;
case3:
printf("\tInsertaReacord\n");
head=Insert_a_record(head);
system("pause");
break;
case4:
printf("\tDeleteaReacord\n");
head=Delete_a_record(head);
system("pause");
break;
case5:
printf("\tQuery\n");
Query_a_record(head);
system("pause");
break;
case6:
printf("\tAddRecordsfromaTextFile\n");
head=AddfromText(head,"filename");
system("pause");
break;
case7:
printf("\tWritetoaTextFile\n");
WritertoText(head,"filename");
system("pause");
break;
case8:
printf("\tDeletetheSameRecord\n");
head=DeleteSame(head);
system("pause");
break;
case0:
printf("Goodbye!
\n");
Quit(head);
system("pause");
exit(0);
}
}
}