A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 飞哥 中级黑马   /  2015-8-4 22:11  /  454 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//添加联系人
/*
思路:
1)提示用户输入联系人姓名
2)接收联系人
3)提示用户输入电话号码
4)接收电话号码
5)确认添加
6)联系人个数+1
7)把联系人信息写入到文件中

*/
void doAdd(){

    printf("你选择的是添加联系人,请按提示操作:\n");
    printf("请输入联系人姓名:(*主要联系人姓名中间不能有空格)\n");
    scanf("%s",contacts[totalContactCount].name);
    printf("请输入联系人电话号码:(*主要联系人电话号码中间不能有空格)\n");
    scanf("%s",contacts[totalContactCount].telNum);
    int flag;
    printf("您确认要添加数据吗? 1.确认  0.取消\n");
    scanf("%d",&flag);
    if (flag) {
        totalContactCount++;
        writeFile();
    }

}



//删除联系人
/*
思路:
1、提示用户输入一个联系人编号
2、判断编号是否合法,编号不能大于联系人个数
3、提示用户再次确认删除
4、开始删除数组元素
    1)删除的元素正好是数组的最后一个元素
       只需让联系人个数-1
    2) 如果删除的元素不是数组的最后一个元素
        联系人需要移动
        联系人个数-1
5、同步到更新文件中
*/
void doDelete(){
    printf("你选择的是删除联系人,请按提示操作:\n");
    doList();
    int no;
    printf("请输入要删除的联系人的编号:\n");
    scanf("%d",&no);
    if (validateInput(no, 1, totalContactCount)) {
        return;
    }
    int flag ;
    printf("删除联系人后,数据将无法恢复,您确认要删除吗?1.确认  0.取消\n");
    scanf("%d",&flag);
    if (flag) {
        if (no == totalContactCount) {
            totalContactCount--;
        }else{
            for (int i=no; i<totalContactCount; i++) {
                contacts[i-1]=contacts[i];
            }
            totalContactCount--;
        
        
        }
        writeFile();
    }

}

//修改联系人
/*
思路:
1、提示用户输入修改的信息编号
2、验证编号是否合法
3、输入新的用户名和新的电话号码
4、让用户再次确认修改
5、更新数组信息
6、写入到文件中
*/
void doUpdate(){
    printf("你选择的是修改联系人,请按提示操作:\n");
   
    doList();//列出所有的联系人
   
    int no;
    printf("请输入要修改的联系人的编号:\n");
    scanf("%d",&no);
    if (validateInput(no, 1, totalContactCount)) {
        return;
    }
   
    char name1[NAMELEN];
    char tel[NUMLEN];
    printf("请输入联系人新的姓名:(*主要联系人姓名中间不能有空格)\n");
    scanf("%s",name1);
    printf("请输入联系人新的电话号码:(*主要联系人电话号码中间不能有空格)\n");
    scanf("%s",tel);
   
    int flag;
    printf("确认后,信息将永久修改,您确认修改吗? 1.确认  0.取消\n");
    scanf("%d",&flag);
   
    if (flag) {
        strcpy(contacts[no-1].name, name1);
        strcpy(contacts[no-1].telNum, tel);
        
        
        //更新到文件中
        writeFile();
    }
   
}

//查看所有联系人
/*
思路:
前提:系统已经完成了初始化(如果文件存在则读取文件中的所以数据)
1、首先做一个判断
    totalContactCount == 0  // 表示没有联系人

2、如果不等于0
   
   开始遍历,并且输出联系人的信息

*/
void doList(){
    printf("你选择的是查看所有联系人,联系人数据如下:\n");
   
     //判断是否为空
    if(totalContactCount == 0){
        printf("您的通讯录还没有小伙伴~请添加小火伴!\n");
    }else{
        //遍历格式
        printf("编号\t 姓名\t 电话\t \n");
        //遍历联系人数组
        for (int i=0; i<totalContactCount; i++) {
            printf("%d\t %s\t %s\t \n",i+1,contacts[i].name,contacts[i].telNum);
        }
   
    }


}

//搜索联系人
/*
思路:
1、提示用户输入要搜索的联系人姓名
2、按照姓名进行查找(遍历)
    1)输入的姓名和contacts[i].name进行比较
    2)搜索不到
          遍历一遍 都没有这个名称  提示查找不到


3、
4、



*/
void doSerchByName(){
    printf("你选择的是搜索联系人,请按提示操作:\n");
   
    char name[NAMELEN];
    printf("请输入要查找的联系人:\n");
    scanf("%s",name);
    int i;
    for ( i=0; i<totalContactCount; i++) {
        
        if (strcmp(name, contacts[i].name)==0) {
            printf("您搜索的联系人 %s 的电话号码是:%s\n",name,contacts[i].name);
            break;
        }
    }
    if (i==totalContactCount) {
        printf("对不起,查无此人!\n");
    }


}


//通讯录初始化
/*



*/
void init(){
    FILE *fp = fopen(filePath,"r");
   
    if (fp!=NULL) {
        fread(&totalContactCount, sizeof(totalContactCount),1,fp);
        
        for (int i=0; i<totalContactCount; i++) {
            fread(&contacts[i], sizeof(Person), 1, fp);
        }
    }else{
        fp = fopen(filePath,"wb");
        fwrite(&totalContactCount, sizeof(totalContactCount),1,fp);
        printf("通讯录文件创建成功!");
   
   
    }
   //关闭指针文件
    fclose(fp);

}

void writeFile(){
    FILE *fp = fopen(filePath, "wb");
   
    if (fp!=NULL) {
        fwrite(&totalContactCount, sizeof(totalContactCount), 1, fp);
        
    }
    for (int i=0; i<totalContactCount; i++) {
        fwrite(&contacts[i], sizeof(Person), 1, fp);
    }
   
    printf("写文件数据更新成功!\n");
   
    //关闭指针文件
    fclose(fp);

}

2 个回复

倒序浏览
加油!!!
回复 使用道具 举报
要实现的代码比较长啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马