C语言课程设计通讯录.docx
《C语言课程设计通讯录.docx》由会员分享,可在线阅读,更多相关《C语言课程设计通讯录.docx(8页珍藏版)》请在冰豆网上搜索。
![C语言课程设计通讯录.docx](https://file1.bdocx.com/fileroot1/2023-2/3/1e3fc25d-c6cb-4869-bc31-355cdfadd7e5/1e3fc25d-c6cb-4869-bc31-355cdfadd7e51.gif)
C语言课程设计通讯录
#include
#include
structperson
{
charname[8];
chartel[15];
charaddr[50];
};
charfilename[20];
FILE*fp;
voidcreat();
voidoutput();
voidsearch();
voidappend();
voidmodify();
voiddeleted();
intmain()
{
intm;
creat();
while
(1)
{
printf("\n\n添加,请按1");
printf("\n查找,请按2");
printf("\n修改,请按3");
printf("\n删除,请按4");
printf("\n输出,请按5");
printf("\n退出,请按0\n");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case1:
append();
break;
case2:
search();
break;
case3:
modify();
break;
case4:
deleted();
break;
case5:
output();
break;
case0:
break;
}
printf("\n\n操作完毕,请再次选择!
");
}
else
printf("\n\n选择错误,请再次选择!
");
}
return0;}
voidcreat()
{
structpersonone;
longs1;
printf("\n请输入通讯簿名:
");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("\n不能建立通讯簿!
");
}
fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","住址");
printf("\n请输入姓名、电话号码及住址(以0结束)\n");
scanf("%s",one.name);
while(strcmp(one.name,"0"))
{
scanf("%s%s",one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
scanf("%s",one.name);
}
fclose(fp);
}
voidoutput()
{
structpersonone;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\n不能打开通讯簿!
");
}
printf("\n\n%20s\n","通讯簿");
while(!
feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);
}
fclose(fp);
}
voidappend()
{
structpersonone;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打开通讯簿!
");
}
printf("\n请输入添加的姓名、电话号码及住址\n");
scanf("%s%s%s",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
fclose(fp);
}
voidsearch()
{
intk=0;
charnamekey[8];
structpersonone;
printf("\n请输入姓名:
");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n不能打开通讯簿!
");
}
while(!
feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
printf("\n\n已查到,记录为:
");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
k=1;
}
}
if(!
k)
printf("\n\n对不起,通讯簿中没有此人的记录。
");
fclose(fp);
}
voidmodify()
{
intm,k=0;
longoffset;
charnamekey[8];
structpersonone;
printf("\n请输入姓名:
");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯簿!
");
}
while(!
feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,记录为:
");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n请输入新姓名、电话号码及住址:
");
scanf("%s%s%s",one.name,one.tel,one.addr);
fseek(fp,offset,SEEK_SET);
printf("%ld",ftell(fp));
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
}
else
printf("\n对不起,通讯簿中没有此人的记录。
");
fclose(fp);
}
voiddeleted()
{
intm,k=0,flag;
longoffset1,offset2;
charnamekey[8],valid[4];
structpersonone;
printf("\n请输入姓名:
");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯簿!
");
}
while(!
feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,记录为");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n确实要删除,按1;不删除,按0:
");
scanf("%d",&m);
if(m)
{
fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-10s%-20s%-50s\n","","","");
}
}
else
printf("\n对不起,通讯簿中没有此人的记录。
");
fclose(fp);
}