用C语言结构体数组写学生通讯录,总显示有两个无法解析的外部命令,是哪里有问题呢?

学生通讯录程序:要求用面向对象的类实现学生通讯录程序。基本信息包括学号、姓名、班级、籍贯、手机、QQ号、电子邮箱等信息。具体实现的管理功能如下:(1)输入并显示多个学生信息;(2)可实现学生信息的添加;(3)查询(至少提供按姓名和手机查询两种方式);(4)修改(只提供按照姓名进行修改);(5)删除(依据指定的信息删除如姓名、学号等);(6)文件的导入和导出(从文件中读取若干条通讯录,或者将通讯录输出到文件中)。



```c
#define N 100
#define SIZE 40
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include <cstdlib>
struct student//定义结构体
{
    char num[SIZE];
    char name[SIZE];
    char clas[SIZE];
    char city[SIZE];
    char tele[SIZE];
    char qq[SIZE];
    char mail[SIZE];
};
//进行函数的声明
void showlist();//显示菜单
int creatstu(struct student*p,int n);//输入通讯录
void displaystu(struct student*p,int n);//显示通讯录
void searchstu(struct student*p,int n);//查找
void changestu(struct student*p,int n);//修改通讯录
int addstu(struct student*p,int n);//增加通讯录
int deletestu(struct student*p,int n);//删除
void searchtele(struct student*p,int n);//按手机查找
void searchname(struct student*p,int n);//按名字查找
int loadinfo(struct student*p,int n);//载入通讯录信息
int saveinfo(struct student*p,int n);//保存通讯录信息
void main()
{
    char ch,yes_no;//文件定义
    struct student record[N];
    int total=0,flag;//存放共一百条通讯录信息
    total=loadinfo(record,N);//通讯录总数
    //从文件读取记录信息,不超过一百条
    do
    {
        showlist();
        printf("请选择你要进行的操作:");
        scanf("%s",&ch);
        switch(ch)
        {
        case '1':
            total=creatstu(record,total);
            break;
        case '2':
            total=addstu(record,total);
            break;
        case '3':
            searchstu(record,total);
            break;
        case '4':
            changestu(record,total);
            break;
        case '5':
            total=deletestu(record,total);
            break;
        case '6':
            displaystu(record,total);
            break;
        case '7':
            total=loadinfo(record,total);
            break;
        case '8':
            flag=saveinfo(record,total);
            if(flag==1) printf("\n 保存成功!\n");
            else printf("\n保存失败!\n");
            break;
        case'9':
            break;
        }
        if(ch=='0') break;
        printf("\n 要继续进行吗?(Y/N)");
        do
        {
            yes_no=getch();
        }
        while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
    }
    while(yes_no!='Y'||yes_no!='y');
}
void showlist()
{
    printf("                      请选择下面的菜单\n\n");
    printf("1 创建\n");
    printf("2 添加\n");
    printf("3 查询\n");
    printf("4 修改\n");
    printf("5 删除\n");
    printf("6 显示\n");
    printf("7 从文件导入\n");
    printf("8 导出到文件\n");
    printf("9.退出\n");
}
int creatstu(struct student*p,int n)
{
    int i=0;
    int m;
    printf("添加前的记录,共有<%d>个:\n",n);
    printf("\n开始记录\n");
    i=0;
    while((i<n)&&(strcmp(p->num," ")!=0))
    {
        printf("%2d:%15s%15s%15s%15s%15s%15s%15s\n",i+1,p->num,p->name,p->clas,p->city,p->tele,p->qq,p->mail);
        i++;
        p++;
    }
    printf("\n请输入要输入的学生人数(<%d):",N-n);
    scanf("%d",&m);
    FILE *fp;
    for (i = 0; i < m; i++)
    {
            scanf("%s\t%s\t%s\t%s\t%s\t%s\t%s\n", p->num, p->name,p->clas,p->city,p->tele,p->qq,p->mail);
            saveinfo(p, m);
            p++;
    }
    return m+n;
}
int addstu(struct student*p,int n)
{
     int i, flag,q=n;
    char AddNum[25];
    printf("添加通讯录:\n");
    printf("请输入要添加的学号:");
    scanf("%s", AddNum);
    for (i = 0, flag = 0; i < n; i++)
    {
        if (strcmp(AddNum, p->num) == 0)
        {
            flag = 1;
            printf("学号重复!\n");
            return 0;
        }
    }
    if (flag == 0)
    {
        //n++;
        printf("学号不重复!请添加信息:\n");
        printf("请输入要添加的名字:");
        scanf("%s", p->name);
        strcpy(p->num, AddNum);
        printf("请输入要添加的班级:");
        scanf("%s", p->clas);
         printf("请输入要添加的地址:");
        scanf("%s", p->city);
         printf("请输入要添加的电话号码:");
        scanf("%s", p->tele);
         printf("请输入要添加的QQ:");
        scanf("%s", p->qq);
         printf("请输入要添加的邮箱:");
        scanf("%s", p->mail);
        //save(a,n);
        printf("添加信息成功!\n");
        return 1;
        //printf("%d",n);
        q++;
    }
    printf("\n");
    return q;
}
void searchstu(struct student*p,int n)
{
    int a;
    scanf("%d",&a);
    printf("名字(1)or手机号(2)?");
    if(a==1)
    {
        void searchname(struct student*p,int n);
    }
    if(a==2)
    {
        void searchtele(struct student*p,int n);
    }
}
void searchname(struct student*p,int n)
{
    int i, flag;
    char SearchName[25];
    printf("按姓名查询通讯录:\n");
    scanf("%s", SearchName);
    for (i = 0, flag = 0; i < n; i++)
    {
        if (strcmp(SearchName, p->name) == 0)
        {
            printf("%s\t", p->num);
            printf("%s\t", p->name);
            printf("%s\t", p->clas);
            printf("%s\t", p->city);
            printf("%s\t", p->tele);
            printf("%s\t", p->qq);
            printf("%s\n", p->mail);
            flag = 1;
            break;
        }
    }
}
void searchtele(struct student*p,int n)
{
    int i, flag;
    char Searchtele[25];
    printf("按姓名查询通讯录:\n");
    scanf("%s", Searchtele);
    for (i = 0, flag = 0; i < n; i++)
    {
        if (strcmp(Searchtele, p->tele) == 0)
        {
            printf("%s\t", p->num);
            printf("%s\t", p->name);
            printf("%s\t", p->clas);
            printf("%s\t", p->city);
            printf("%s\t", p->tele);
            printf("%s\t", p->qq);
            printf("%s\n", p->mail);
            flag = 1;
            break;
        }
    }
}
void changestu(struct student*p,int n)
{
      int i, flag;
    char SearchName[25];
    printf("按姓名修改通讯录:\n");
    scanf("%s", SearchName);
    for (i = 0, flag = 0; i < n; i++)
    {
        if (strcmp(SearchName, p->name) == 0)
        {
            strcpy(p->name, SearchName);
            printf("请输入要修改的学号:");
            scanf("%s", p->num);
            printf("请输入要修改的班级:");
            scanf("%s", p->clas);
            printf("请输入要修改的地址:");
            scanf("%s", p->city);
            printf("请输入要修改的电话号码:");
            scanf("%s", p->tele);
            printf("请输入要修改的QQ:");
            scanf("%s", p->qq);
            printf("请输入要修改的邮箱:");
            scanf("%s", p->mail);
            saveinfo(p, n);
            printf("信息修改完毕!\n");
            flag = 1;
            break;
        }
    }
    if (flag == 0)
        printf("未找到该姓名信息!");
    printf("\n");
}
int deletestu(struct student*p,int n)
{
    int i, j;
    char SearchName[25];
    printf("按姓名删除通讯录:\n");
    scanf("%s", SearchName);
    for (i = 0; i < n; i++)
    {
        if (strcmp(p->name, SearchName) == 0)
            break;
    }
    if (i >= n)
    {
        printf("未查询到该姓名信息!按姓名删除通讯录失败!\n");
        return 0;
    }
    else
    {
        saveinfo(p, n);
        printf("按姓名删除通讯录成功!\n");
        return 1;
    }

}
void displaystu(struct student*p,int n)
{
    int i=0;
     while((i<n)&&(strcmp(p->num," ")!=0))
    {
        printf("%2d:%15s%15s%15s%15s%15s%15s%15s\n",i+1,p->num,p->name,p->clas,p->city,p->tele,p->qq,p->mail);
        i++;
        p++;
    }

}
int saveinto(struct student*p,int n)
{
    FILE*fp;
    int i,all=0;
    char filename[30]="txt.dat";
    fp=fopen(filename,"w");
    if(fp==NULL)
    {
        printf("不能建立或打开文件\n");
        return 0;
    }
    fprintf(fp, "%d\n", n);
    for (i = 0; i < n; i++)
    {
        fprintf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num, p->name,p->clas,p->city,p->tele,p->qq,p->mail);
    }
    fclose(fp);
    return 1;
}








```

具体报错,截图发出来啊