#include #include #include #include #include #define N 15 char inform[1000]; struct person { char information[100]; }per[N]; int load() { FILE *fp; int i,j,a=0; fp=fopen("a.txt","r+"); if(fp==NULL) { printf("打开文件失败\n"); } for(i=0,j=1;(!feof(fp))||(i>N);i++) { fgets(inform,1000,fp); if(i>1) { strcpy(per[j].information,inform); j++; } } fclose(fp); while((strcmp(per[a+1].information,"\0"))!=0&&(j<=N)) { a=a+1; } return (a-1); } void printf_bangong(int p) { int n,m,i; char a[6]; for(i=1;i<=p;i++) { for(n=0,m=56;n<6;n++,m++) { a[n]=per[i].information[m]; } if((strcmp(a,"办公类")==0)) { printf("%s",per[i].information); } } } void printf_geren(int p) { int n,m,i; char a[6]; for(i=1;i<=p;i++) { for(n=0,m=56;n<6;n++,m++) { a[n]=per[i].information[m]; } if((strcmp(a,"个人类")==0)) { printf("%s",per[i].information); } } } void printf_shangwu(int p) { int n,m,i; char a[6]; for(i=1;i<=p;i++) { for(n=0,m=56;n<6;n++,m++) { a[n]=per[i].information[m]; } if((strcmp(a,"商务类")==0)) { printf("%s",per[i].information); } } } int input(int n,int m) { int t=0; FILE *fp; fp=fopen("a.txt","a"); if((n+m)>15) { printf("通信录总录入信息不能超过15条,请重新确定添加人数\n"); printf("函数的第一个参数为从编号几开始添加,函数第二个参数为需要添加的总人数,输入两个参数是注意空一格\n"); scanf("%d %d",&n,&m); input(n,m); } if((m+n)<=15) { int i,j,k,y=0,t=0; char s[100]; for(j=0;j<=m;j++) { if(t>0) { printf("请按以下顺序输入添加人信息\n"); printf("姓名 电话 邮箱 分类\n"); } fgets(s,100,stdin); for(i=18,k=9;k<20;i++,k++) { if(per[j].information[i]==s[k]) { y=y+1; } } if(y==19) { printf("您添加的联系人重复!已返回初始添加阶段!\n\n"); printf("请输入需要从编号几开始添加,以及需要添加的总人数,输入两个参数是注意空一格\n"); scanf("%d %d",&n,&m); input(n,m); } if(y!=19) { if(t>0) { fprintf(fp," %d %s",n,s); printf("添加成功!\n"); n=n+1; } t=t+1; } } } fclose(fp); } void chang(int p) { int i,l,r=0,h,k,t,g,m; char s[6],b[6],x[100]; fgets(s,6,stdin); printf("请输入您需要修改的用户的姓名:\n"); fgets(s,6,stdin); for(i=1;i<=p;i++) { g=0; for(t=0,l=9;t<6;t++,l++) { b[t]=per[i].information[l]; } for(t=0,l=9;t<6;t++,l++) { if(s[t]==b[t]) { g=g+1; } } if(g!=5) { r=r+1; } if(g==5) { fgets(x,100,stdin); printf("请按以下顺序修改信息,其中编号为:%d\n",i); printf("编号 姓名 电话 邮箱 分类\n"); fgets(x,100,stdin); strcpy(per[i].information,x); FILE *fp; fp=fopen("a.txt","w+"); fputs("*************** 手机通讯管理系统 ***************\n",fp); fputs("编号 姓名 电话 邮箱 分类\n",fp); fclose(fp); fp=fopen("a.txt","a"); for(h=1;h<=p;h++) { fputs(per[h].information,fp); } fclose(fp); printf("修改成功!\n"); } } if(r==p) { printf("通讯录中没有此人!\n"); } } void shancu(int p) { int i,l,r=0,h,k,t,g,m; char s[6],b[6],x[100]; fgets(s,6,stdin); printf("请输入您需要删除的用户的姓名:\n"); fgets(s,6,stdin); for(i=1;i<=p;i++) { g=0; for(t=0,l=9;t<6;t++,l++) { b[t]=per[i].information[l]; } for(t=0,l=9;t<6;t++,l++) { if(s[t]==b[t]) { g=g+1; } } if(g!=5) { r=r+1; } if(g==5) { FILE *fp; fp=fopen("a.txt","w+"); fputs("*************** 手机通讯管理系统 ***************\n",fp); fputs("编号 姓名 电话 邮箱 分类\n",fp); fclose(fp); fp=fopen("a.txt","a"); char d='1'; for(h=1;h<=p;h++) { if(h!=i) { per[h].information[1]=d; d=d+1; fputs(per[h].information,fp); } } fclose(fp); printf("删除成功!\n"); } } if(r==p) { printf("通讯录中没有此人!\n"); } } void bohao(int p) { int i,l,j,r=0,h,k,t,g,m,y; char s[6],b[6],x[100]; for(t=0,j=1;j<=p;t++,j++) { printf(per[j].information); } fgets(s,6,stdin); printf("请输入您需要拨号的用户的姓名:\n"); fgets(s,6,stdin); for(i=1;i<=p;i++) { g=0; for(t=0,l=9;t<6;t++,l++) { b[t]=per[i].information[l]; } for(t=0,l=9;t<6;t++,l++) { if(s[t]==b[t]) { g=g+1; } } if(g!=5) { r=r+1; } if(g==5) { for(y=18;y<29;y++) { printf("%c",per[i].information[y]);//打印一个数字 printf("");//响铃一次 Sleep(500);//延时0.5秒 } } if(r==p) { printf("通讯录中没有此人!\n"); } } } int menu_select() { int p,n,m,c; char s,k; system("cls"); printf("\t\t *****手机通讯录管理系统***** \n"); printf("\t\t\t 1.查看功能\n"); printf("\t\t\t 2.增加功能\n"); printf("\t\t\t 3.拨号功能\n"); printf("\t\t\t 4.修改功能\n"); printf("\t\t\t 5.删除功能\n"); printf("\t\t\t 6.退出系统\n"); printf("\t\t\t 请您选择(1-6):"); scanf("%d",&c); p=load(); printf("%d",p); switch(c) { case 1:scanf("%c",&s); printf("请选择您需要查看的类别(A-C):A 办公类 B 个人类 C 商务类\n"); scanf("%c",&s); if(s=='A') { printf_bangong(p); scanf("%c",&k); printf("\n按0返回主菜单,按其他任意键退出系统\n"); scanf("%c",&k); if(k=='0') { menu_select(); } } if(s=='B') { printf_geren(p); scanf("%c",&k); printf("\n按0返回主菜单,按其他任意键退出系统\n"); scanf("%c",&k); if(k=='0') { menu_select(); } } if(s=='C') { printf_shangwu(p); scanf("%c",&k); printf("\n按0返回主菜单,按其他任意键退出系统\n"); scanf("%c",&k); if(k=='0') { menu_select(); } } else { printf("您输入的选项有误,已返回主菜单,请重新选择!"); scanf("%c",&k); if(k=='0') { menu_select(); } printf("\n按0返回主菜单,按其他任意键退出系统\n"); k=getchar(); if(k=='0') { menu_select(); } scanf("%c",&k); if(k=='0') { menu_select(); } scanf("%c",&k); scanf("%c",&k); if(k=='0') { menu_select(); } if(k=='0') { menu_select(); } } break; case 2: printf("请输入需要从编号几开始添加,以及需要添加的总人数,输入两个参数是注意空一格\n"); printf("当前文件中总人数为:%d\n",p); scanf("%d %d",&n,&m); input(n,m); printf("\n按0返回主菜单,按其他任意键退出系统\n"); scanf("%c",&k); if(k=='0') { menu_select(); } break; case 3:bohao(p); scanf("%c",&k); printf("\n按0返回主菜单,按其他任意键退出系统\n"); k=getchar(); if(k=='0') { menu_select(); } scanf("%c",&k); scanf("%c",&k); if(k=='0') { menu_select(); } break; case 4:chang(p); printf("\n按0返回主菜单,按其他任意键退出系统\n"); scanf("%c",&k); if(k=='0') { menu_select(); } case 5:shancu(p); printf("\n按0返回主菜单,按其他任意键退出系统\n"); k=getchar(); if(k=='0') { menu_select(); } scanf("%c",&k); if(k=='0') { menu_select(); } scanf("%c",&k); if(k=='0') { menu_select(); } break; } } void solve() { FILE *fp; fp=fopen("a.txt","w"); if(fp==NULL) { printf("打开文件失败\n"); } if(fp!=NULL) { fprintf(fp,"*************** 手机通讯管理系统 ***************\n"); fprintf(fp,"编号 姓名 电话 邮箱 分类\n"); fprintf(fp," 1 李鑫 15383997816 1819646867@qq.com 商务类\n"); fprintf(fp," 2 方诺基 15017816489 2819486478@qq.com 办公类\n"); fprintf(fp," 3 郑恩泽 18786134851 1817566135@qq.com 个人类\n"); } fclose(fp); } int main(void) { solve(); menu_select(); }