手机通讯录源代码.docx
《手机通讯录源代码.docx》由会员分享,可在线阅读,更多相关《手机通讯录源代码.docx(8页珍藏版)》请在冰豆网上搜索。
![手机通讯录源代码.docx](https://file1.bdocx.com/fileroot1/2022-11/17/99266fe7-6bd6-41a0-a5a6-8b30f133d3f0/99266fe7-6bd6-41a0-a5a6-8b30f133d3f01.gif)
手机通讯录源代码
手机通讯录源代码
#include
#include
#include
#include
#defineN15//最大容量为15
typedefstruct//定义一个结构
{
charname[10];
charhaoma[15];
charleibie[10];
chardizhi[20];
}ren;
//菜单
voidmenu()//目录
{
system("cls");//清屏
printf("#########欢迎使用手机通讯录#########\n");
printf("\n");
printf("==============================================================================\n");
printf("1.~~号码查询~~\n");
printf("2.~~号码添加~~\n");
printf("3.~~号码拨号~~\n");
printf("4.~~号码修改~~\n");
printf("5.~~号码删除~~\n");
printf("0.~~退出~~\n");
printf("==============================================================================\n");
printf("\n");
printf("个人通讯录\n");
printf("\n");
printf("~~请选择相应的功能~~:
");
}
voidinput()//查询
{
inthelp=0;//帮助指令,如果查找所找的类别中没有数据,显示
renry;
FILE*fp;
charleibie[10];
system("cls");
printf("\n输入要查人员的类别:
");scanf("%s",leibie);//要查询的类别查找失败
if((fp=fopen("ren.dat","rb"))==NULL){printf("can'topenfile!
\n");exit(0);}
fread(&ry,sizeof(ren),1,fp);
if(!
feof(fp))
{printf("人员的信息如下:
\n");
printf("说明:
(A办公类B个人类C商务类)");
printf("\n%10s%15s%10s%20s\n","姓名","号码","类别","邮箱");
while(!
feof(fp))
{
if(strcmp(ry.leibie,leibie)==0)//若为该类别则输出
{help++;
printf("%10s%15s%10s%20s\n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
}
fread(&ry,sizeof(ren),1,fp);
}
if(help==0){
printf("查找失败!
!
!
");
}
}
//elseprintf("查找失败!
!
!
");
fclose(fp);
getch();
}
//修改:
输入人员的姓名,查找该人员,若找到则修改该人员的信息,并显示修改前后的结果;
//号码添加
voidsearch()
{
intn;
FILE*fp;//定义文件指针
renry,s;//定义两个ren结构体的量
if((fp=fopen("ren.dat","ab+"))==NULL)
{printf("can'topenfile!
\n");exit(0);}
printf("\n录入格式姓名号码类别邮箱。
当输入姓名为#结束录入\n");
while
(1)
{printf("请输入姓名:
");
scanf("%s",ry.name);
if(strcmp(ry.name,"#")==0)break;//如果输入#则退出添加
printf("请输入电话号码:
");
scanf("%s",ry.haoma);
printf("请输入类别(A办公类B个人类C商务类):
");
scanf("%s",ry.leibie);
printf("请输入邮箱地址:
");
scanf("%s",ry.dizhi);
fseek(fp,0,0);//指针定位到文件开始位置
fread(&s,sizeof(ren),1,fp);
n=0;
while(!
feof(fp))
{
n++;
if(strcmp(s.haoma,ry.haoma)==0)
{printf("号码已经存在,不能记录.\n");break;}//遇到有相同的号码
if(strcmp(s.name,ry.name)==0)
{printf("姓名已经存在,不能记录.\n");break;}//遇到有相同的姓名
fread(&s,sizeof(ren),1,fp);
}
//printf("%d",n);
if(n>N){
break;//内存已满,不能记录.
}
if(feof(fp))//读到自后也没有相同的号码
fwrite(&ry,sizeof(ren),1,fp);//将信息写入文件
}
fclose(fp);//关闭文件
getchar();//接受一个输入
}
voidmodi()//拨号
{renry;
FILE*fp;
charname[10];
system("cls");
printf("\n输入要拨人员的姓名:
");scanf("%s",name);
if((fp=fopen("ren.dat","rb"))==NULL){printf("can'topenfile!
\n");exit(0);}
while(!
feof(fp))
{fread(&ry,sizeof(ren),1,fp);
if(strcmp(ry.name,name)==0)
{printf("\n\a\a\a\a\a\a%15s\a\a\a\a\a\n",ry.haoma);//输出号码和声音
break;
}
}
if(feof(fp))printf("\n\n拨号失败!
!
!
");
fclose(fp);
getch();
}
voiddele()
{renry;
FILE*fp;
charname[10];
system("cls");
if((fp=fopen("ren.dat","rb+"))==NULL){printf("can'topenfile!
\n");exit(0);}
if(!
feof(fp))
{printf("修改前全部人员的信息如下:
\n");
printf("\n%10s%15s%10s%20s\n","姓名","号码","类别","邮箱");
fread(&ry,sizeof(ren),1,fp);
while(!
feof(fp))
{
printf("%10s%15s%10s%20s\n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
fread(&ry,sizeof(ren),1,fp);
}
}
printf("\n输入要修改人员的姓名:
");scanf("%s",name);
if((fp=fopen("ren.dat","rb+"))==NULL){printf("can'topenfile!
\n");exit(0);}
while(!
feof(fp))
{fread(&ry,sizeof(ren),1,fp);
if(strcmp(ry.name,name)==0)
{printf("修改前人员的信息如下:
\n");
printf("\n%10s%15s%10s%20s\n","姓名","号码","类别","邮箱");
printf("%10s%15s%10s%20s\n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
printf("\n请输入该人的号码:
");scanf("%s",ry.haoma);
printf("\n类别:
");scanf("%s",ry.leibie);//新信息输入
printf("\n邮箱:
");scanf("%s",ry.dizhi);
break;//修改完毕退出
}
}
if(!
feof(fp))
{
printf("\n修改后的人的信息如下:
\n");
printf("\n%10s%15s%10s%20s\n","姓名","号码","类别","邮箱");
printf("%10s%15s%10s%20s\n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
fseek(fp,sizeof(ren),1);//指针向前一位定位
fwrite(&ry,sizeof(ren),1,fp);
}
else
printf("\n\n此人不存在,修改失败!
!
");
fclose(fp);
getch();
}
//删除:
输入人员姓名,若该人员存在,则删除,并显示删除后余下的人员的信息
voidbohao()
{renry[N];
FILE*fp;
charname[10];
inti,len,k=-1;
system("cls");
printf("\n输入要删除的人员姓名:
");scanf("%s",name);
i=0;
if((fp=fopen("ren.dat","rb+"))==NULL){printf("can'topenfile!
\n");exit(0);}
while(!
feof(fp))
{fread(&ry[i],sizeof(ren),1,fp);
if(feof(fp))break;
if(strcmp(ry[i].name,name)==0)k=i;
i++;
}
fclose(fp);
//以下是删除后重新写文件
len=i;
if(k>=0)
{if((fp=fopen("ren.dat","wb+"))==NULL){printf("can'topenfile!
\n");exit(0);}
for(i=0;i{if(i==k)continue;
fwrite(&ry[i],sizeof(ren),1,fp);
}
fclose(fp);printf("\n\n删除成功!
!
!
\n");
}
elseprintf("\n\n删除失败!
!
!
\n");
getch();
}
//菜单选择
voidchoice()
{
charch;
while
(1)
{
menu();//显示菜单
ch=getch();//选择菜单
if(ch=='0')brea