#include <stdio.h> #include <stdlib.h> #include <string.h> struct person //每个元素都是结构体类型 { char name[15]; //结构体数组,用于存储姓名 char celephone[22]; char QQ[20]; }per[500]; //定义一个per数组,它有500个元素 int num=0;//*外部变量num为文件中的纪录数*// void mainmenu();//*主菜单*// **模块1** void newrecord();//新添纪录(括写入到文件)*// **模块2** void searchmenu();//*查询菜单*// **模块3** void searchbyname();//*按姓名查询*// **模块3.1** void searchbycelephone();//*按手机号码查询*// **模块3.2** void searchbyqq();//*按QQ查询*// **模块3.3** void xiugaimenu();//*修改菜单*// **模块4** void xiugaibyname();//*按姓名查找修改*// **模块4.1** void xiugaibycelephone();//*按手机号码查找修改*// **模块4.2** void xiugaixiangmu(int a);//*查找后要修改的项目(分名字和号码)*// **模块4.3** void deletemenu();//*删除菜单*// **模块5** void deleteall();//*删除所有信 息*// **模块5.1** void deleteone();//*删除单个*// **模块5.2** void deletebycelephone(); //*按手机号码删除*// **模块5.2.1** void deletebyname();//*按姓名删除*/ **模块5.2.2** void main()//*主函数*// { while (1) { mainmenu(); } } //*主函数结束*// void mainmenu()//*主菜单函数*// **模块1** { int a; //以下模块是主界面 printf("**********欢迎来到【通信录】**********"); printf("\n\n"); printf(" 选择1:新建信息\n"); printf(" 选择2:查询信息\n"); printf(" 选择3:修改信息\n"); printf(" 选择4:删除个人\n"); printf(" 选择5:删除所有\n"); printf(" 选择0:退出系统\n\n"); printf("***************************************\n"); printf("【请选择数字0-5,其他键暂时不起作用】\n"); loop1: scanf("%d",&a); switch (a) { case 1:newrecord();break; case 2:searchmenu();break; case 3:xiugaimenu();break; case 4:deletemenu();break; case 5:deleteall();break; case 0:printf("欢迎再次使用");exit(0); default:printf("对不起!您的输入有误!请重新输入: "); getchar();//读取字符 goto loop1; } } void newrecord()//*添加纪录模块*// **模块2** { char s[81]; int a; loop: printf("\n\n\n\n\t\t 请输入您要添加的联系人的信息: \n"); printf("\n请输入姓名:\n"); name: scanf("%s",&per[num].name);//名字地址 if(strlen(per[num].name)>15)//统计字符长度 { printf("对不起!您的输入有误!请重新输入"); goto name; } printf("\n请输入手机号码:\n"); celephone: scanf("%s",&per[num].celephone); if(strlen(per[num].celephone)!=11) { printf("对不起!您的输入有误!请重新输入\n"); goto celephone; } printf("\n输入QQ号码:"); QQ: scanf("%s",&per[num].QQ); if(strlen(per[num].QQ)!=9) { printf("对不起!您的输入有误!请重新输入"); goto QQ; } num++; printf("\n是否继续添加?\n"); printf("\n请按1和2(1代表继续;2代表不继续)\n"); printf("请输入您的选择 "); scanf("%d",&a); if(a==1) { goto loop; } else { return; } } void searchmenu()//*查询菜单*// **模块3** { int a; printf("\n\t\t 欢 迎 使 用 查 询 菜 单"); printf("\n\t\t 1-按姓名查询"); printf("\n\t\t 2-按手机号码查询"); printf("\n\t\t 3-按QQ查询"); printf("\n\t\t 其他键-返回主菜单"); printf("\n\t\t"); printf("请输入您的选择 "); scanf("%d",&a); switch (a) { case 1:searchbyname();break; case 2:searchbycelephone();break; case 3:searchbyqq();break; default:mainmenu();break; } } void searchbyname()//*:按姓名查询*// **模块3.1** { int mark=0; int i,j,findmark=0; int a=0; char name[15]; printf("\n 按姓名查找 "); printf("\n请输入姓名:"); scanf("%s",name); for(i=a;i<num;i++) { if (strcmp(per[i].name,name)==0) { findmark++; printf("\n\t\t 以下是您查找的联系人的信息 "); printf("\n\t\t________________________________"); printf("\n\t\t名字: %s",per[i].name); printf("\n\t\t手机号码: %s",per[i].celephone); printf("\n\t\tQQ号码:%s",per[i].QQ); printf("\n\t\t________________________________"); if ((i+1)<num) { printf("\n是否继续查找相同名字的联系人的信息?(1代表继续;2代表不继续)"); scanf("%d",&j); if (j==1) { a=i; mark++; continue; } else break; } else { printf("\n请按任意数字键返回主菜单"); scanf("%d",&j); return; } } } if(mark!=0) { printf("\n对不起! 没有相同名字的该联系人的信息!!"); printf("\n请按任意数字键返回主菜单"); scanf("%d",&j); return; } else if(findmark==0) { printf("\n对不起!没有该联系人的信息!"); printf("\n请按任意数字键返回主菜单"); scanf("%d",&j); return; } } void searchbycelephone()//*1:按手机号码查询*// **模块3.2** { int mark=0; int i,j; int a=0; char celephone[11]; printf("\n 按手机号码查找 \n"); printf("\n请输入手机号码:\n"); scanf("%s",celephone); for(i=0;i<num;i++) { if (strcmp(per[i].celephone,celephone)==0) { printf("\n 以下是您查找的联系人的信息 "); printf("\n________________________________"); printf("\n名字: %s",per[i].name); printf("\n手机号码: %s",per[i].celephone); printf("\nQQ号码:%s",per[i].QQ); printf("\n________________________________"); printf("\n请按任意数字键返回主菜单"); mark++; scanf("%d",&j); return; } } if (mark==0) { printf("\n对不起!没有该联系人的信息!"); printf("\n请按任意数字键返回主菜单"); scanf("%d",&j); return; } } void searchbyqq()//*3:按QQ查询*// **模块3.3** { int mark=0; int i,j; char QQ; printf("\n\t\t 按QQ号码查找 \n"); printf("\n请输入QQ号码:"); scanf("%s",&QQ); for(i=0;i<num;i++) { if(per[i].QQ==QQ) { printf("\n\t\t 以下是您查找的联系人的信息 "); printf("\n\t\t________________________________"); printf("\n\t\t名字: %s",per[i].name); printf("\n\t\t手机号码: %s",per[i].celephone); printf("\n\t\tQQ号码:%s",per[i].QQ); printf("\n\t\t________________________________"); printf("\n\t\t请按任意数字键返回主菜单"); mark++; scanf("%d",&j); return; } } if (mark==0) { printf("\n\t\t对不起!没有该联系人的信息!"); printf("\n\t\t请按任意数字键返回主菜单"); scanf("%d",&j); return; } } void xiugaimenu()//*修改菜单*// **模块4** { int i,j; if(num==0) { printf("\n\t\t对不起!文件中无任何纪录!"); printf("\n\t\t请按任意数字键返回主菜单"); scanf("%d",&j); return; } else { printf("\n\t\t 1-按姓名修改 2-按手机号码修改\n"); printf(" 请输入您的数字选择: "); loop6:scanf("%d",&i); switch (i) { case 1:xiugaibyname();break; case 2:xiugaibycelephone();break; default:printf("对不起!您的输入有误!请重新输入: "); getchar(); goto loop6; } } } void xiugaibyname()//*1:按姓名修改*// **模块4.1** { int a=0; int findmark=0; int xiugaimark=0; int i,j; char name[15]; printf("\n\t\t请输入要修改联系人的姓名:"); scanf("%s",name); for (i=a;i<num;i++) { if (strcmp(per[i].name,name)==0) { printf("\n\t\t以下是您要修改的联系人的纪录:"); findmark++; printf("\n\t\t________________________________"); printf("\n\t\t名字: %s",per[i].name); printf("\n\t\t手机号码: %s",per[i].celephone); printf("\n\t\tQQ号码:%s",per[i].QQ); printf("\n\t\t________________________________"); printf("\n\t\t是否修改?(1代表修改;2代表不修改)"); printf(" 请输入您的数字选择: "); scanf("%d",&j); if (j==1) { xiugaixiangmu(i); xiugaimark++; printf("\n\t\t修改成功"); if((i+1)<num) { printf("\n\t\t是否继续修改相同姓名的联系人的信息?(1代表继续;2代表不继续)"); printf(" 请输入您的数字选择: "); scanf("%d",&j); if (j==1) { a=i; findmark++; continue; } } printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)"); printf(" 请输入您的数字选择: "); scanf("%d",&j); if (j==1) xiugaibyname(); return; } } } if ((xiugaimark==0)&&(findmark==0)) { printf("\n\t\t没有该联系人的纪录"); printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)"); printf(" 请输入您的数字选择: "); scanf("%d",&j); if (j==1) xiugaibyname(); return; } else if (findmark!=0) { printf("\n\t\t没有重名信息"); printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)"); printf(" 请输入您的数字选择: "); scanf("%d",&j); if (j==1) xiugaibyname(); return; } } void xiugaibycelephone()//*2:按手机号码修改*// **模块4.2** { int findmark=0; int i,j; char celephone[11]; printf("\n\t\t请输入要修改联系人的手机号码:"); scanf("%s",celephone); for (i=0;i<num;i++) { if (strcmp(per[i].celephone,celephone)==0) { printf("\n\t\t以下是您要修改的联系人的纪录:"); findmark++; printf("\n\t\t________________________________"); printf("\n\t\t名字: %s",per[i].name); printf("\n\t\t手机号码: %s",per[i].celephone); printf("\n\t\tQQ号码:%s",per[i].QQ); printf("\n\t\t________________________________"); printf("\n\t\t是否修改?(1代表修改;2代表不修改)"); printf(" 请输入您的数字选择: "); scanf("%d",&j); if (j==1) { xiugaixiangmu(i); printf("\n\t\t修改成功"); printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)"); printf(" 请输入您的数字选择: "); scanf("%d",&j); printf(" 请输入您的数字选择: "); if (j==1) xiugaixiangmu(i); break; } } } if (findmark==0) { printf("\n\t\t对不起!没有该联系人的纪录!"); printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)"); printf(" 请输入您的数字选择: "); scanf("%d",&j); if (j==1) xiugaibycelephone(); return; } } void xiugaixiangmu(int a)//*修改项目*// **模块4** { int i; printf("\n\t\t 请输入您要修改的项目 "); printf("\n\t\t\n"); printf("\n\t\t1-手机号码\n"); printf("\n\t\t2-姓名\n"); printf("\n\t\t4-QQ号码\n"); printf("\n\t\t8-回主菜单\n"); printf("\n\t\t\n"); printf(" 请输入您的数字选择: "); scanf("%d",&i); loop9: switch (i) { case 1: yiwai: printf("请输入手机号码:"); scanf("%s",&per[a].celephone); if(strlen(per[a].celephone)!=11) { printf("输入错误,请重新输入"); goto yiwai;} break; case 2:printf("请输入姓名:"); scanf("%s",&per[a].name);break; case 4:printf("请输入QQ号码:"); scanf("%s",&per[a].QQ);break; case 8:mainmenu();break; default: printf("对不起!您的输入有误!请重新输入: "); getchar(); goto loop9; } } void deletemenu()//*删除菜单*// **模块5** { int i,j; if(num==0) { printf("\n\t\t对不起!文件中无任何纪录!"); printf("\n\t\t请先添加个人信息!"); printf("\n\t\t请按任意数字键返回主菜单"); scanf("%d",&j); return; } else { printf("\n\t\t 删 除 菜 单 "); printf("\n\t\t 1-删除单个 "); printf("\n\t\t 2-返回主菜单 "); printf("\n\t\t "); printf("\n\t\t请输入您的数字选择: "); loop4: scanf("%d",&i); switch (i) { case 1:deleteone();break; case 2:mainmenu();break; default:printf("对不起!您的输入有误!请重新输入: ");goto loop4; } } } void deleteall()//*删除所有信息*// **模块5.1** { int i,j; printf("\n\t\t确认删除?\n"); printf("请按1和2(1代表确认;2代表不删除)\n "); scanf("%d",&i); if (i==1) { num=0; printf("\n\t\t纪录已删除!"); printf("\n\t\t请按任意数字键返回主菜单"); scanf("%d",&j); return; } } void deleteone()//*删除单个*/ **模块5.2** { int i; printf("\n\t\t1-按手机号码删除 2-按姓名删除"); printf("\n\t\t请输入您的选择:"); loop5:scanf("%d",&i);; switch (i) { case 1:deletebycelephone();break; case 2:deletebyname();break; default:printf("对不起!您的输入有误!请重新输入: "); getchar(); goto loop5; } } void deletebyname()//1:按姓名删除*// **模块5.2.1** { int a=0; int findmark=0; int i,j,k; int deletemark=0; char name[15]; printf("\n\t\t请输入您要删除的联系人的姓名:"); scanf("%s",name); for (i=a;i<num;i++) { if (strcmp(per[i].name,name)==0) { printf("\n\t\t以下是您要删除的联系人的纪录:"); findmark++; printf("\n\t\t________________________________"); printf("\n\t\t名字: %s",per[i].name); printf("\n\t\t手机号码: %s",per[i].celephone); printf("\n\t\tQQ号码:%s",per[i].QQ); printf("\n\t\t________________________________"); printf("\n\t\t是否删除?(1代表删除;2代表不删除)\n"); printf("\n\t\t请输入您的数字选择: "); scanf("%d",&k); if(k==1) { for (j=i;j<num-1;j++) //*纪录移动,从per数组中删除之*// per[j]=per[j+1]; num--; deletemark++; printf("\n\t\t删除成功"); if((i+1)<num) { printf("\n\t\t是否继续删除相同姓名的联系人的信息?(1代表删除;2代表不删除)"); printf("\n\t\t请输入您的数字选择: "); scanf("%d",&k); if(k=1) { a=i; findmark++; continue; } } printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)"); printf("\n\t\t请输入您的数字选择: "); scanf("%d",&k); if(k==1) deleteone(); else break; } } else continue; } if((deletemark==0)&&(findmark==0)) { printf("\n\t\t对不起!没有该联系人的纪录!"); printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)"); printf(" 请输入您的数字选择: "); scanf("%d",&k); if(k==1) deleteone(); } else if(findmark!=0) { printf("\n\t\t对不起!没有重名信息!"); printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)"); printf(" 请输入您的数字选择: "); scanf("%d",&k); if(k==1) deleteone(); } } void deletebycelephone()//*2:按手机号码删除*// **模块5.2.2** { int i,j,h,m; int deletemark=0; char celephone[11]; printf("\n\t\t请输入要删除的联系人的手机号码:"); scanf("%s",celephone); for(i=0;i<num;i++) { if(strcmp(per[i].celephone,celephone)==0) { deletemark++; printf("\n\t\t以下是您要删除的联系人的纪录:"); printf("\n\t\t________________________________"); printf("\n\t\t名字: %s",per[i].name); printf("\n\t\t手机号码: %s",per[i].celephone); printf("\n\t\tQQ号码:%s",per[i].QQ); printf("\n\t\t________________________________"); printf("\n\t\t是否删除?(1代表删除;2代表不删除)\n"); printf(" 请输入您的数字选择: "); scanf("%d",&h); if(h==1) { for (j=i;j<num-1;j++) /*纪录移动,从per数组中删除之*/ per[j]=per[j+1]; num--; printf("\n\t\t删除成功"); printf("\n是否继续删除?(1代表继续;2代表不继续)\n"); printf(" 请输入您的数字选择: "); scanf("%d",&h); if(h==1) deletebycelephone(); } } } if(deletemark==0) { printf("\n\t\t对不起!没有该联系人的纪录!"); printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)\n"); printf(" 请输入您的数字选择: "); scanf("%d",&m); if(m==1) deletebycelephone(); } }
这些东西是我第一弄得这样多
其中有一部分是百度的,但是我也在这其中看到了我的进步!