- #include <stdio.h>
 
 - #include <string.h>
 
 - #define NAMELEN 22
 
 - #define TELLEN 12
 
 - #define CONTECTNUM 100
 
 - void writeFile();
 
 - void init();
 
 - void doAdd();
 
 - void doShow();
 
 - void doDelete();
 
 - void doUpdata();
 
 - void doSearch();
 
 - //定义文件指针
 
 - char *filePath = "telbook_tree.data";
 
  
- typedef struct{
 
 -     char name[NAMELEN];
 
 -     char telNum[TELLEN];
 
 - }Person;
 
 - //定义联系人结构体数组
 
 - Person contacts[CONTECTNUM];
 
 - //定义联系人数量
 
 - int contactsnum = 0;
 
  
- int main(int argc, const char * argv[]) {
 
 -     
 
 -     //初始化通讯录
 
 -     init();
 
 -     printf("通讯录初始化完成!\n");
 
 -     while (1) {
 
 -         printf("**************************\n");
 
 -         printf("****** 欢迎使用通讯录 ******\n");
 
 -         printf("****** 1、添加联系人  ******\n");
 
 -         printf("****** 2、删除联系人  ******\n");
 
 -         printf("****** 3、修改联系人  ******\n");
 
 -         printf("****** 4、查看所有联系人 ****\n");
 
 -         printf("****** 5、搜索联系人  ******\n");
 
 -         printf("****** 6、退出系统    ******\n");
 
 -         printf("**************************\n\n");
 
 -         int no = 0;
 
 -         printf("请输入您要选择的操作序号:");
 
 -         scanf("%d",&no);
 
 -         if (no<1||no>6) {
 
 -             printf("您的操作请求不合法");
 
 -         }else{
 
 -             switch (no) {
 
 -                 case 1:
 
 -                     doAdd();
 
 -                     break;
 
 -                 case 2:
 
 -                     doDelete();
 
 -                     break;
 
 -                 case 3:
 
 -                     doUpdata();
 
 -                     break;
 
 -                 case 4:
 
 -                     doShow();
 
 -                     break;
 
 -                 case 5:
 
 -                     doSearch();
 
 -                     break;
 
 -                 case 6:
 
 -                     printf("系统正在退出...\n系统推出成功\n");
 
 -                     return 0;
 
 -                     break;
 
 -                 default:
 
 -                     break;
 
 -             }
 
 -         }
 
 -         printf("\n");
 
 -     }
 
  
-     return 0;
 
 - }
 
  
- void init(){
 
 -     
 
 -     FILE *fp = fopen(filePath, "r");
 
 -     if (fp!=NULL) {
 
 -         //如果不为空 将文件中的数据更新到程序中
 
 -         fread(&contactsnum, sizeof(contactsnum), 1, fp);
 
 -         for (int i=0; i<contactsnum; i++) {
 
 -         fread(&contacts[i], sizeof(Person), 1, fp);
 
 -         }
 
 -     }else{
 
 -         //如果为空 新建文件 将人员个数写入
 
 -         fp = fopen(filePath, "wb");
 
 -         fwrite(&contactsnum, sizeof(contactsnum), 1, fp);
 
 -         printf(" */文件初始化中/*\n");
 
 -         printf("通讯录文件创建成功\n");
 
 -     }
 
 -     fclose(fp);
 
 - }
 
  
- void writeFile(){
 
 -     FILE *fp = fopen(filePath, "wb");
 
 -     if (fp!=NULL) {
 
 -         fwrite(&contactsnum, sizeof(contactsnum), 1, fp);
 
 -         for (int i=0; i<contactsnum; i++) {
 
 -             fwrite(&contacts[i], sizeof(Person), 1, fp);
 
 -         }
 
 -     }
 
 -     fclose(fp);
 
 - }
 
  
- void doAdd(){
 
  
-     printf("请输入联系人姓名(注意中间不可有空格):\n");
 
 -     scanf("%s",contacts[contactsnum].name);
 
 -     printf("请输入联系人电话(注意中间不可有空格):\n");
 
 -     scanf("%s",contacts[contactsnum].telNum);
 
 -    
 
 -     printf("您确定要添加吗?1.确定 0.取消\n");
 
 -     int flag;
 
 -     scanf("%d",&flag);
 
 -     if (flag) {
 
 -         contactsnum++;
 
 -         writeFile();
 
 -         printf("文件更新成功\n");
 
 -     }else{
 
 -         printf("您的操作已经取消\n");
 
 -     }
 
 - }
 
  
- void doDelete(){
 
 -     doShow();
 
 -     printf("请输入删除的联系人的编号:\n");
 
 -     int no;
 
 -     scanf("%d",&no);
 
 -     if (no == contactsnum) {
 
 -         contactsnum--;
 
 -     }else{
 
 -         for (int i=no-1; i<contactsnum; i++) {
 
 -             contacts[i]=contacts[i+1];
 
 -         }
 
 -         contactsnum--;
 
 -     }
 
 -     writeFile();
 
 -     printf("联系人删除成功\n");
 
 - }
 
  
- void doShow(){
 
 -     
 
 -     if (contactsnum == 0) {
 
 -         printf("您的通讯录里暂时没有联系人,请自行维护。\n");
 
 -     }else{
 
 -         printf("序号\t 联系人\t\t 联系方式\t\n");
 
 -         for (int i=0; i<contactsnum; i++) {
 
 -             printf("%d\t %s\t\t %s\t\n",i+1,contacts[i].name,contacts[i].telNum);
 
 -         }
 
  
-     }
 
 -     
 
 - }
 
  
- void doUpdata(){
 
 -     
 
 -     doShow();
 
 -     printf("请输入您要修改的联系人序号:\n");
 
 -     int no = 0;
 
 -     scanf("%d",&no);
 
 -     printf("请选择您要修改的项目:1.联系人 2.联系方式 3.全部修改 0.取消操作\n");
 
 -     int fno = 0;
 
 -     scanf("%d",&fno);
 
 -     switch (fno) {
 
 -         case 1:
 
 -             printf("请输入新的联系人姓名:\n");
 
 -             char name[NAMELEN];
 
 -             scanf("%s",name);
 
 -             strcpy(contacts[no-1].name,name);
 
 -             break;
 
 -         case 2:
 
 -             printf("请输入新的联系方式:\n");
 
 -             char tel[TELLEN];
 
 -             scanf("%s",tel);
 
 -             strcpy(contacts[no-1].telNum, tel);
 
 -             break;
 
 -         case 3:
 
 -             printf("请输入新的联系人姓名:\n");
 
 -             char name1[NAMELEN];
 
 -             scanf("%s",name1);
 
 -             strcpy(contacts[no-1].name,name1);
 
 -             printf("请输入新的联系方式:\n");
 
 -             char tel1[TELLEN];
 
 -             scanf("%s",tel1);
 
 -             strcpy(contacts[no-1].telNum, tel1);
 
 -             break;
 
 -         case 0:
 
 -             printf("您的操作应经成功取消\n");
 
 -             break;
 
 -         default:
 
 -             break;
 
 -     }
 
 -     writeFile();
 
 -     printf("您的通讯录已经同步更新\n");
 
 - }
 
  
- void doSearch(){
 
 -     
 
 -     printf("请选择您要搜索的方式:1.按姓名搜索 2.按号码搜索\n");
 
 -     int flag = 0;
 
 -     scanf("%d",&flag);
 
 -     if (flag ==1 ) {
 
 -         printf("请输入您要搜索人的姓名:\n");
 
 -         char name[NAMELEN];
 
 -         scanf("%s",name);
 
 -         printf("您的搜索结果是:\n");
 
 -         int i;
 
 -         for (i=0; i<contactsnum; i++) {
 
 -             if (strcmp(name,contacts[i].name)==0) {
 
 -                 printf("序号\t 联系人\t\t 联系方式\t\n");
 
 -                 printf("%d\t %s\t\t %s\t",i+1,contacts[i].name,contacts[i].telNum);
 
 -                 break;
 
 -             }
 
 -             }
 
 -         if (i == contactsnum ) {
 
 -             printf("联系人不存在,请核对后查找\n");
 
 -         }
 
 -     }else if (flag == 2){
 
 -         printf("请输入您要搜索的联系方式:\n");
 
 -         char tel[TELLEN];
 
 -         scanf("%s",tel);
 
 -         printf("您的搜索结果是:\n");
 
 -         int i;
 
 -         for (i=0; i<contactsnum; i++) {
 
 -             while (strcmp(contacts[i].telNum,tel) == 0) {
 
 -                 printf("序号\t 联系人\t\t 联系方式\t\n");
 
 -                 printf("%d\t %s\t\t %s\t",i+1,contacts[i].name,contacts[i].telNum);
 
 -                 break;
 
 -             }
 
 -             }
 
 -         if (i == contactsnum ) {
 
 -             printf("联系人不存在,请核对后查找\n");
 
 -         }
 
 -         
 
 -     }
 
 - }
 
  复制代码 
 
 |   
        
 
    
    
    
     
 
 |