大佬们帮忙看一看,程序哪里出问题了啊,,,,。,

#include<stdio.h>
#include<stdlib.h>
#include<string.h>//需要用到strcmp函数
#pragma warning(disable:4996)
#define N 15//最大储存信息数
int t = 1;//t用来控制整个程序的执行,以及程序的退出; 
//函数声明
void menu();//主菜单 
void increase();//数据添加模块  
void seek();//数据查看模块
void dele();//数据删除模块 
void modify();//数据修改模块  
void exit();//退出函数 
struct communicationMethod
{
    char name[20];    //姓名
    char tel[12];      //电话号码
    int  type;        //分类:0表示办公类,1表示个人类,2表示商务类
    char email[20];   //电子邮件地址
    int num;        //条目编号
}ComMtd[N];
int main()
{
    int num;//num是菜单选项 
    while (t)//t是全局变量,用exit函数来控制循环是否继续 
    {
        menu();//输出主菜单界面 
        printf("请输入编号选择功能:");
        scanf("%d", &num);
        switch (num)
        {
        case 1: seek(); break;   //数据查看模块
        case 2: increase(); break;//数据添加模块  
        case 3: modify(); break;  //数据修改模块
        case 4: dele(); break;      //数据删除模块
        case 5: exit(); break;    //退出系统模块
        default:printf("输入有误,请重新输入!");
        }
    }
    system("pause");
    return 0;
}
void menu()
{
    printf("\n\t\t\t\t手机通信录管理系统\n");
    printf("\t\t*********************菜单**************************\n");
    printf("\t\t*                 1-数据查看                      *\n");
    printf("\t\t*                 2-数据添加                      *\n");
    printf("\t\t*                 3-数据修改                      *\n");
    printf("\t\t*                 4-数据删除                      *\n");
    printf("\t\t*                 5-退出系统                      *\n");
    printf("\t\t***************************************************\n");
}
void increase()  //数据添加模块
{
    int i, j, k = 0, flag, m = 0;//k代表人数 
    FILE* in, * out;
    if ((in = fopen("D:\\手机通信录.txt", "r")) == NULL)//打开文件 
    {
        printf("打开文件失败!\n");
        exit(0);
    }
    for (i = 0; i < N; i++)//N是最大的人数,可在程序开头进行更改 
    {
        if (fread(&ComMtd[i], sizeof(struct communicationMethod), 1, in) == 1)
            k++;           //记录人数 
    }
    if (k == 0)
    {
        printf("当前通讯录有0人!\n");
    }
    else
    {
        printf("当前通讯录有%d人\n",k);
    }
    fclose(in);
    i = k; 
    if (k == 15)
    {
        printf("通信录已满!\n");
        return;
    }
    printf("\n请输入待增加的联系人人数:\n");
    scanf("%d", &m);
    if (m > 0)
    {
        do {
            flag = 1;
            while (flag)
            {
                flag = 0;
                printf("请输入第%d位联系人姓名\n", i + 1);
                scanf("%s", ComMtd[i].name);
                for (j = 0; j < i; j++)
                {
                    if (strcmp(ComMtd[i].name, ComMtd[j].name)==0)
                    {
                        printf("数据已经存在,请重新输入或者取消!");
                        flag = 1;
                        break;
                    }
                }//判断是否重复
            }
            printf("请输入第%d位联系人电话号码\n", i + 1);
            scanf("%s", ComMtd[i].tel);
            printf("请输入第%d位联系人的分类(0表示办公类,1表示个人类,2表示商务类):\n", i + 1);
            scanf("%d", ComMtd[i].type);
            printf("请输入第%d位联系人的电子邮件地址:\n", i + 1);
            scanf("%s", ComMtd[i].email);
            ComMtd[i].num = i+1;
            i++;
        } while (i < k + m);//只要当前人数还没到达添加后的总人数,就得继续添加        
    }
    if ((out = fopen("D:\\手机通信录.txt", "w")) == NULL)
    {
        printf("打开文件失败!\n");
        exit(0);
    }
    for (i = 0; i < k + m; i++)
    {
        if (fwrite(&ComMtd[i], sizeof(struct communicationMethod), 1, out) != 1)
        {
            printf("添加失败!\n");
        }
    }
    printf("添加完成!\n");
    fclose(out);
    system("pause");
}
void seek()  //数据查看模块
{
    int i, k = 0, num, flag;
    FILE* in;
    if ((in = fopen("D:\\手机通信录.txt", "r")) == NULL)//打开文件 
    {
        printf("打开文件失败!\n");
        exit(0);
    }
    for (i = 0; i < N; i++)//N是最大的人数,可在程序开头进行更改 
    {
        if (fread(&ComMtd[i], sizeof(struct communicationMethod), 1, in) == 1)
            k++;           //记录人数 
    }
    if (k == 0)
    {
        printf("当前通讯录有0人,请添加后查看!\n");
        return;
    }
    else
    {
        printf("当前通讯录有%d人\n", k);
    }
    fclose(in);
    printf("\t\t*****************************\n");
    printf("\t\t**-------0-办公类查询------**\n");
    printf("\t\t**-------1-个人类查询------**\n");
    printf("\t\t**-------2-商务类查询------**\n");
    printf("\t\t**-------3-退出本菜单------**\n");
    printf("\t\t*****************************\n");
    while (1)
    {
        flag = 0;
        printf("请输入编号选择功能:");
        scanf("%d", &num);
        switch (num)
        {
        case 0:
            for (i = 0; i < k; i++)
            {
                if (ComMtd[i].type == 0)
                {
                    flag = 1;
                    printf("姓名\t\t电话号码\t\t类别\t\t电子邮箱\t\t条目编号\n");
                    printf("%s\t\t%s\t\t%d\t\t%s\t\t%d\n", ComMtd[i].name, ComMtd[i].tel, ComMtd[i].type, ComMtd[i].email, ComMtd[i].num);
                }
            }break;
        case 1:
            for (i = 0; i < k; i++)
            {
                if (ComMtd[i].type == 1)
                {
                    flag = 1;
                    printf("姓名\t\t电话号码\t\t类别\t\t电子邮箱\t\t条目编号\n");
                    printf("%s\t\t%s\t\t%d\t\t%s\t\t%d\n", ComMtd[i].name, ComMtd[i].tel, ComMtd[i].type, ComMtd[i].email, ComMtd[i].num);
                }
            }break;
        case 2:
            for (i = 0; i < k; i++)
            {
                if (ComMtd[i].type == 2)
                {
                    flag = 1;
                    printf("姓名\t\t电话号码\t\t类别\t\t电子邮箱\t\t条目编号\n");
                    printf("%s\t\t%s\t\t%d\t\t%s\t\t%d\n", ComMtd[i].name, ComMtd[i].tel, ComMtd[i].type, ComMtd[i].email, ComMtd[i].num);
                }
            }break;
        case 3: return;
        default: printf("请在0--3之间输入\n");
        }
        if (flag == 0)
        {
            printf("找不到符合的记录!\n请重新输入!");
        }
    }
}
void dele()//数据删除模块
{
    int i, j, flag, k = 0;
    char s1[20];
    FILE* in, * out;
    if ((in = fopen("D:\\手机通信录.txt", "r")) == NULL)//打开文件 
    {
        printf("打开文件失败!\n");
        exit(0);
    }
    for (i = 0; i < N; i++)//N是最大的人数,可在程序开头进行更改 
    {
        if (fread(&ComMtd[i], sizeof(struct communicationMethod), 1, in) == 1)
            k++;
    }
    if (k == 0)
    {
        printf("当前通讯录有0人,请先添加!\n");
        return;
    }
    else
    {
        printf("当前通讯录有%d人!\n",k);
    }
    printf("请输入需要删除的联系人的名字:\n");
    scanf("%s", s1);
    flag = 0;
    for (i = 0; i < k; i++)
    {
        if (strcmp(s1, ComMtd[i].name) == 0)
        {
            flag = 1;
            for (j = i; j < k - 1; j++)
            {
                ComMtd[j] = ComMtd[j + 1];//直接把后面都往前移动一位 
            }
        }
        if (flag == 1)
        {
            break;      //说明已经找到了需要删除的联系人,结束循环
        }
    }
    if (flag == 0)
    {
        printf("该联系人不存在!\n");
    }
    if (flag == 1)
    {
        if ((out = fopen("D:\\手机通信录.txt", "w")) == NULL)
        {
            printf("打开文件失败!\n");
            exit(0);
        }
        for (i = 0; i < k - 1; i++)
        {
            if (fwrite(&ComMtd[i], sizeof(struct communicationMethod), 1, out) != 1)
            {
                printf("删除失败!\n");
            }
        }
        printf("删除成功!\n");
        fclose(out);
    }
    system("pause");
}
void modify()//数据修改模块
{
    int i, flag, k = 0;
    char name2[20];    //姓名
    char tel2[12];      //电话号码
    int  type2;        //分类:0表示办公类,1表示个人类,2表示商务类
    char email2[20];   //电子邮件地址
    int num;          //编号
    FILE* in, * out;
    if ((in = fopen("D:\\手机通信录.txt", "r")) == NULL)//打开文件 
    {
        printf("打开文件失败!\n");
        exit(0);
    }
    for (i = 0; i < N; i++)//N是最大的人数,可在程序开头进行更改 
    {
        if (fread(&ComMtd[i], sizeof(struct communicationMethod), 1, in) == 1)
            k++;           //记录人数 
    }
    if (k == 0)
    {
        printf("当前通讯录有0人,请先添加!\n");
        return;
    }
    else
    {
        printf("当前通讯录有%d人!\n", k);
    }
    printf("请输入需要修改的联系人姓名:\n");
    getchar();
    gets(name2);
    while (1)
    {
        flag = 0;
        for (i = 0; i < k; i++)
        {
            if (strcmp(name2, ComMtd[i].name) == 0)
            {
                flag = 1;
                int num;
                printf("***************************************************\n");
                printf("*----------------1-修改电话号码--------------------*\n");
                printf("*----------------2-修改分类------------------------*\n");
                printf("*----------------3-修改电子邮件地址-----------------*\n");
                printf("*----------------4-修改条目编号---------------------*\n");
                printf("*----------------5-退出本菜单-----------------------*\n");
                printf("****************************************************\n\n");
                printf("请输入编号选择功能:");
                scanf("%d", &num);
                switch (num)
                {
                case 1:
                    printf("请输入新的电话号码:\n");
                    getchar();
                    gets(tel2);
                    strcpy(ComMtd[i].tel, tel2); break;
                case 2:
                    getchar();
                    printf("请输入新的分类(0表示办公类,1表示个人类,2表示商务类):\n");
                    scanf("%d", &type2);
                    ComMtd[i].type = type2; break;
                case 3:
                    printf("请输入新的电子邮件地址:\n");
                    getchar();
                    gets(email2);
                    strcpy(ComMtd[i].email, email2); break;
                case 4:
                    printf("请输入新的条目编号:\n");
                    scanf("%d", &num);
                    ComMtd[i].num = num; break;
                case 5:
                    return; break;
                default:
                    printf("请在1--5之间选择!\n");
                }
                if (num > 0 && num < 5)
                {
                    if ((out = fopen("D:\\手机通信录.txt", "w")) == NULL)
                    {
                        printf("打开文件失败!\n");
                        exit(0);
                    }
                    for (i = 0; i < k; i++)
                    {
                        if (fwrite(&ComMtd[i], sizeof(struct communicationMethod), 1, out) != 1)
                        {
                            printf("修改失败!\n");
                        }
                    }
                    printf("修改成功!\n");
                    fclose(out);
                }
                break;      //找到联系人,结束循环;
            }
        }
        if (flag == 0)
        {
            printf("没有找到该联系人,请重新输入需要修改信息的联系人姓名:\n");
            gets(name2);
        }
    }
    system("pause");
}
void exit()                     //退出系统模块
{
    int g;                      //控制是否确认退出 
    printf("即将退出,确认请按1,取消请按0\n");
    scanf("%d", &g);
    if (g == 1)
    {
        t = 0;//t是main函数中while函数是否继续执行的控制条件,是一个全局变量,程序开头已经定义并且赋值位 1
        printf("成功退出!\n");
    }
    if (g == 0)
    {
        printf("退出已取消!\n");
        system("pause");
    }
}