当前位置:文档之家› 手机通讯录源代码

手机通讯录源代码

#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define N 15 //最大容量为15typedef struct //定义一个结构{char name[10];char haoma[15];char leibie[10];char dizhi[20];}ren;//菜单void menu() //目录{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(" ~~请选择相应的功能~~:");}void input() //查询{int help=0; //帮助指令,如果查找所找的类别中没有数据,显示ren ry;FILE *fp;char leibie[10];system("cls");printf("\n 输入要查人员的类别: ");scanf("%s",leibie);//要查询的类别查找失败if((fp=fopen("ren.dat","rb"))==NULL) {printf("can't open file!\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.haoma,ry.leibie,ry.dizhi);}fread(&ry,sizeof(ren),1,fp);}if(help==0){printf(" 查找失败!!!");}}// else printf(" 查找失败!!!");fclose(fp);getch();}//修改:输入人员的,查找该人员,若找到则修改该人员的信息,并显示修改前后的结果;//添加void search(){int n;FILE *fp; //定义文件指针ren ry,s; // 定义两个ren结构体的量 if((fp=fopen("ren.dat","ab+"))==NULL){printf("can't open file!\n");exit(0);}printf("\n录入格式类别。

当输入为#结束录入\n");while(1){ printf("请输入:");scanf("%s",);if(strcmp(,"#")==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(,)==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(); //接受一个输入}void modi() //拨号{ ren ry;FILE *fp;char name[10];system("cls");printf("\n 输入要拨人员的: ");scanf("%s",name);if((fp=fopen("ren.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);}while(!feof(fp)){ fread(&ry,sizeof(ren),1,fp);if(strcmp(,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();}void dele(){ ren ry;FILE *fp;char name[10];system("cls");if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\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.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't open file!\n");exit(0);}while(!feof(fp)){ fread(&ry,sizeof(ren),1,fp);if(strcmp(,name)==0){ printf(" 修改前人员的信息如下:\n");printf("\n%10s %15s %10s %20s \n","","","类别","");printf("%10s %15s %10s %20s \n",,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.haoma,ry.leibie,ry.dizhi);fseek(fp,sizeof(ren),1); //指针向前一位定位fwrite(&ry,sizeof(ren),1,fp);}elseprintf("\n\n 此人不存在,修改失败!!");fclose(fp);getch();}//删除:输入人员,若该人员存在,则删除,并显示删除后余下的人员的信息void bohao(){ ren ry[N];FILE *fp;char name[10];int i,len,k=-1;system("cls");printf("\n 输入要删除的人员: ");scanf("%s",name);i=0;if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\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't open file!\n");exit(0);}for(i=0;i<len;i++){ if(i==k) continue;fwrite(&ry[i],sizeof(ren),1,fp);}fclose(fp);printf("\n\n 删除成功!!!\n");}else printf(" \n\n 删除失败!!!\n");getch();}//菜单选择void choice(){char ch;while(1){menu();// 显示菜单ch=getch();//选择菜单if(ch=='0') break;switch(ch)//判断功能项{case '1': input();break; case '2':search();break; case '3':modi();break;case '4':dele();break;case '5':bohao();break; }}printf("\n欢迎使用!!!\n"); }//主函数int main(){choice();//调用菜单选择}。

相关主题