写实验的313 2021-07-02 22:15 采纳率: 85.7%
浏览 119
已采纳

求改正错误 ' ' : is not a member of 'student_info'

#include<stdio.h>
#include<stdlib.h>
#define N 100

//函数声明
void init();
char welcome();
void InputInfo();
void xiugai();
void view();
void DeLeteInfo();
void paiming(struct student_info student[]);
void ViewAll();
void PaimingView();
void exit();
struct student_info input();
void Sortinfo(struct student_info student[]);
void ViewInfo(struct student_info *sp);
void SaveStruct(struct student_info *sp,int SIZE,int n,char filename[20]);
void LoadStruct(struct student_info *sp,int SIZE,int n,char filename[20]);
void SaveInt(int*p,int size,int n,char filename[20]);
void LoadInt(int*p,int size,int n,char filename[20]);
int NumExist(struct student_info student[],int num);

//定义学生信息结构体
struct student_info 
{
    int num;
    char name[6];
    int writetest, classtest ,teatest;
    double ave ,zongping;
};

//定义全局结构体数据
struct student_info student[N];
int counter,PM;

//主函数
void main()
{
    char select;
    init();
    while(1)
    {
        select=welcome();
        switch(select)
        {
            case'1':system("cls"); InputInfo(); break;//选项1:录入学生信息
            case'2':system("cls"); view();break;//选项2:添加学生信息
            case'3':system("cls"); paiming(student);PM=1;
                getchar(); system("cls"); break;//选项3:学生排名
            case'4':system("cls"); PaimingView();break;//选项4:查询学生信息 
            case'5':system("cls"); xiugai();break;//选项5:修改学生信息
            case'6':system("cls"); DeLeteInfo();break;//选项6:删除学生信息
            case'7':system("cls"); ViewAll();break;//选项7:浏览学生信息
            case'0':system("cls"); exit();break;//选项0:退出
        }
    }
}

//函数初始化
void init()
{
    FILE *fp;
    fp=fopen("counter.dat","rb");
    if(fp!=NULL)
    {
        fclose(fp);
        LoadInt(&counter,sizeof(counter),1,"counter.dat");
    }
    else
    {
        fp=fopen("counter.dat","wb");
        fclose(fp);
        counter=0;
    }
    if(counter!=0)
        LoadStruct(student,sizeof(struct student_info),counter,"student_info.dat");
}

//欢迎函数
char welcome()
{
    char select;
    while(1)
    {
        system("cls");
        printf("\n\n\n\n\t\t☆☆☆☆☆学生数据处理系统☆☆☆☆☆\n\n");
        printf("\n");
        printf("\t\t\t●1.录入成绩数据\n");

        printf("\t\t\t●2.添加学生数据\n");

        printf("\t\t\t●3.综合成绩排名\n");

        printf("\t\t\t●4.查询学生成绩\n");

        printf("\t\t\t●5.修改学生数据\n");

        printf("\t\t\t●6.删除学生数据\n");

        printf("\t\t\t●7.浏览学生数据\n");

        printf("\t\t\t●0.退出\n\n");

        select=getchar();

       if(select=='1'||select=='2'||select=='3'||select=='4'||select=='5'
||select=='6'||select=='7'||select=='9')
            return select;
       system("cls");
       continue;
        }    
}

//录入学生信息

void InputInfo()
{
    int i,n;
    printf("需要录入多少位学生信息:");
    scanf("%d",&n);
    system("cls");
    for(i=1;i<=n;i++)
    {
        student[counter]=input();
        counter++;
    }
    PM=0;
    Sortinfo(student);
    SaveStruct(student,sizeof(struct student_info),counter,"student_info.dat");
    SaveInt(&counter,sizeof(counter),1,"counter.dat");
}

//修改学生信息
void xiugai()
{
    int i,num;
    char YN,select;
    printf("请输入需要修改的学生信息的学号:");
    scanf("%d",&num);
    getchar();
    if((i=NumExist(student,num))==-1)
    {
        printf("不存在该学号,按返回键返回。。。");
        getchar();
        system("cls");
        return;
    }
   ViewInfo(&student[i]);
   printf("是否要修改?(Y/N):");
   scanf("%c",&YN);
   getchar();
   if(YN!='Y'&& YN !='y')
   {
       printf("修改取消...");
       getchar();
       system("cls");
       return;
   }

       system("cls");
        

        printf("1.学号\n");

        printf("2.姓名\n");
         
        printf("3.考试平均成绩\n");

        printf("4.同学互评分\n");

        printf("5.任课老师评分\n");

        scanf("%c",&select);
    switch(select)
    {
            case'1':printf("修改学号"); scanf("%d",&student[i].num);break;
            case'2':printf("修改姓名"); scanf("%d",&student[i].name);break;    
            case'3':printf("考试平均成绩"); scanf("%d",&student[i].writetest);break;
            case'4':printf("修改同学互评分"); scanf("%d",&student[i].classtest);break;
            case'5':printf("修改任课老师评分"); scanf("%d",&student[i].teatest);break;
    }
    Sortinfo(student);
    SaveStruct(student,sizeof(struct student_info),counter,"student_info.dat");
    PM=0;
    printf("修改完成。。。");
    getchar();
    system("cls");
}

//删除学生信息
void DeLeteInfo()
{
    int i,j,num;
    char YN;
    printf("请输入需要删除的学生信息的学号:");
    scanf("%d",&num);
    getchar();
    if((i=NumExist(student,num))==-1)
    {
        printf("不存在该学号,按返回键返回。。。");
        getchar();
        system("cls");
        return;
    }
   ViewInfo(&student[i]);
   printf("\n确认删除(Y/N):");
   scanf("%c",&YN);
   getchar();
   if(YN!='Y'&& YN !='y')
   {
       printf("修改取消...");
   }
   else
   {
       for(j=i;j<counter-1;j++)
           student[j]=student[j+1];
       counter--;
       PM=0;
       SaveStruct(student,sizeof(struct student_info),counter,"student_info.dat");
       SaveInt(&counter,sizeof(counter),counter,"counter.dat");
       printf("删除完成。。。");
   }

    getchar();
    system("cls");
}

// 综合测评分排名
void paiming(struct student_info student[])
{
    
    struct student_info *p[N],*temp;
    int i,j;
    for(i=0;i<counter;i++)
        p[i]=&student[i];
    for(i=0;i<counter-1;i++)
       for(j=i+1;j<counter;j++)
    {
        if(p[i]->zongping < p[j] ->zongping)
        {
            temp=p[i];
            p[i]=p[j];
            p[j]=temp;
        }
    }
    for(i=0;i<counter;i++)
        p[i]->paiming=i+1;
    printf("综合测评分排名完成。。。\n");
}

//浏览所有学生信息
void viewAll()
{
    int i;
    for(i=0;i<counter;i++)
    {
        ViewInfo(&student[i]);
        printf("\n");
    }
    getchar();
    printf("按回车键返回。。。");
    getchar();
    system("cls");
}

//查询排名
void paimingView()
{
    int i,num;
    printf("请输入需要查询的学生的学号:");
    scanf("%d",&num);
    getchar();
    i=NumExist(student,num);
    if(i==-1)
    {
        printf("不存在该学号。。。");
        getchar();
         return;
    }
    if(PM==0)
    {
        printf("请先进行成绩排名。。。");
        getchar();
         return;
    }
    printf("%s的综合测评分排名%d\n",student[i].name,student[i].paiming);
    printf("按回车键返回。。。");
    getchar();
    return;
}

//退出
void exit()
{
    printf("谢谢使用!\n");
    exit(0);
}

// 输入信息函数
struct student_info input()
{
   struct student_info stu,*sp;
   char YN;
   sp=&stu;
   while(1)
   {
      while(1)
      {
         printf("录入学号:");
         scanf("%d",&sp->num);
         getchar();
        if(NumExist(student,sp->num)!=-1)
        {
           printf("该学号已存在,请重新输入。。。");
           getchar();
           system("cls");
           continue;
        }
        break;
      }
      printf("录入姓名:");
      gets(sp->name);
      printf("录入考试平均成绩:");
      scanf("%d",&sp->writetest);
      printf("录入同学互评分:");
      scanf("%d",&sp->classtest);
      printf("录入任课老师评分:");
      scanf("%d",&sp->teatest);
      getchar();

sp->zongping=(sp->writetest*0.6+sp->classtest*0.2+sp->teatest*0.2);
      printf("录入完毕,确认信息是否正确(Y/N)");
      YN=getchar();
      getchar();
      if(YN=='Y'||YN=='y')
          break;
      else
      {
          printf("按回车键重新录入信息。。");
          getchar();
          system("cls");
          continue;
      }
   }
   system("cls");
   return stu;
}

//排序函数
void Sortinfo(struct student_info student[])
{
    int i,j;
    struct student_info temp;
    for(i=0;i<counter-1;i++)
        for(j=i+1;j<=counter-1;j++)
        {
            if(student[i].num<student[j].num)
            {
                temp=student[i];
                student[i]=student[j];
                student[i]=temp;
            }
        }
}

//显示学生信息
void ViewInfo(struct student_info *sp)
{
    printf("学号\t姓名\n");
    printf("%d\t%s\n",sp->num,sp->name);
    printf("考试平均成绩\t同学互评分\t任课老师评分\n");
    printf("%d\t%d\t%d\n",sp->writetest,sp->classtest,sp->teatest\n);
    printf("综合分\n");
    printf("%.2f\n",sp->zongping);
    if(PM==1)
    {
        printf("综合测评分排名\n");
        printf("%d\n",sp->zongping);
    }
}

//信息存盘(结构体)
void SaveStruct(struct student_info *sp,int SIZE,int n,char filename[20])
{
    FILE *fp;
    fp=fopen(filename,"wb");
    fwrite(sp,SIZE,n,fp);
    fclose(fp);
}

//读取信息(结构体)
void LoadStruct(struct student_info *sp,int SIZE,int n,char filename[20])
{
    FILE *fp;
    fp=fopen(filename,"rb");
    fread(sp,SIZE,n,fp);
    fclose(fp);
}

//信息存盘(整型)
void SaveInt(int*p,int size,int n,char filename[20])
{
    FILE *fp;
    fp=fopen(filename,"wb");
    fwrite(p,size,n,fp);
    fclose(fp);
}

//读取信息(整型)
void LoadInt(int*p,int size,int n,char filename[20])
{
    FILE *fp;
    fp=fopen(filename,"rb");
    fread(p,size,n,fp);
    fclose(fp);
}

//检索学号
int NumExist(struct student_info student[],int num)
{
    int i;
    for(i=0;i<counter;i++)
    {
        if(student[i].num==num)
            return i;
    }
    return -1;
}

//浏览学生信息
void view()
{
    int i,num;
    printf("请输入需要浏览的学生信息的学号:");
    scanf("%d",&num);
    getchar();
    if((i=NumExist(student,num))==-1)
    {
        printf("不存在该学号,按回车键返回。。。");
        getchar();
        system("cls");
        return;
    }
        
    ViewInfo(&student[i]);
    printf("\n按回车键返回。。。");
    getchar();
    system("cls");
    return;
}

  • 写回答

1条回答 默认 最新

  • yycgis 2021-07-02 22:33
    关注
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #define N 100
    //函数声明
    void init();
    char welcome();
    void InputInfo();
    void xiugai();
    void view();
    void DeLeteInfo();
    void paiming(struct student_info student[]);
    void ViewAll();
    void PaimingView();
    void exit();
    struct student_info input();
    void Sortinfo(struct student_info student[]);
    void ViewInfo(struct student_info *sp);
    void SaveStruct(struct student_info *sp, int SIZE, int n, char filename[20]);
    void LoadStruct(struct student_info *sp, int SIZE, int n, char filename[20]);
    void SaveInt(int*p, int size, int n, char filename[20]);
    void LoadInt(int*p, int size, int n, char filename[20]);
    int NumExist(struct student_info student[], int num);
    //定义学生信息结构体
    struct student_info
    {
        int num;
        char name[6];
        int writetest, classtest, teatest, paiming;
        double ave, zongping;
    };
    //定义全局结构体数据
    struct student_info student[N];
    int counter, PM;
    //主函数
    void main()
    {
        char select;
        init();
        while (1)
        {
            select = welcome();
            switch (select)
            {
            case'1':system("cls"); InputInfo(); break;//选项1:录入学生信息
            case'2':system("cls"); view(); break;//选项2:添加学生信息
            case'3':system("cls"); paiming(student); PM = 1;
                getchar(); system("cls"); break;//选项3:学生排名
            case'4':system("cls"); PaimingView(); break;//选项4:查询学生信息 
            case'5':system("cls"); xiugai(); break;//选项5:修改学生信息
            case'6':system("cls"); DeLeteInfo(); break;//选项6:删除学生信息
            case'7':system("cls"); ViewAll(); break;//选项7:浏览学生信息
            case'0':system("cls"); exit(); break;//选项0:退出
            }
        }
    }
    void ViewAll() {
    
    }
    void PaimingView() {
    
    }
    //函数初始化
    void init()
    {
        FILE *fp;
        fp = fopen("counter.dat", "rb");
        if (fp != NULL)
        {
            fclose(fp);
            LoadInt(&counter, sizeof(counter), 1, "counter.dat");
        }
        else
        {
            fp = fopen("counter.dat", "wb");
            fclose(fp);
            counter = 0;
        }
        if (counter != 0)
            LoadStruct(student, sizeof(struct student_info), counter, "student_info.dat");
    }
    //欢迎函数
    char welcome()
    {
        char select;
        while (1)
        {
            system("cls");
            printf("\n\n\n\n\t\t☆☆☆☆☆学生数据处理系统☆☆☆☆☆\n\n");
            printf("\n");
            printf("\t\t\t●1.录入成绩数据\n");
            printf("\t\t\t●2.添加学生数据\n");
            printf("\t\t\t●3.综合成绩排名\n");
            printf("\t\t\t●4.查询学生成绩\n");
            printf("\t\t\t●5.修改学生数据\n");
            printf("\t\t\t●6.删除学生数据\n");
            printf("\t\t\t●7.浏览学生数据\n");
            printf("\t\t\t●0.退出\n\n");
            select = getchar();
            if (select == '1' || select == '2' || select == '3' || select == '4' || select == '5'
                || select == '6' || select == '7' || select == '9')
                return select;
            system("cls");
            continue;
        }
    }
    //录入学生信息
    void InputInfo()
    {
        int i, n;
        printf("需要录入多少位学生信息:");
        scanf("%d", &n);
        system("cls");
        for (i = 1; i <= n; i++)
        {
            student[counter] = input();
            counter++;
        }
        PM = 0;
        Sortinfo(student);
        SaveStruct(student, sizeof(struct student_info), counter, "student_info.dat");
        SaveInt(&counter, sizeof(counter), 1, "counter.dat");
    }
    //修改学生信息
    void xiugai()
    {
        int i, num;
        char YN, select;
        printf("请输入需要修改的学生信息的学号:");
        scanf("%d", &num);
        getchar();
        if ((i = NumExist(student, num)) == -1)
        {
            printf("不存在该学号,按返回键返回。。。");
            getchar();
            system("cls");
            return;
        }
        ViewInfo(&student[i]);
        printf("是否要修改?(Y/N):");
        scanf("%c", &YN);
        getchar();
        if (YN != 'Y'&& YN != 'y')
        {
            printf("修改取消...");
            getchar();
            system("cls");
            return;
        }
        system("cls");
    
        printf("1.学号\n");
        printf("2.姓名\n");
        printf("3.考试平均成绩\n");
        printf("4.同学互评分\n");
        printf("5.任课老师评分\n");
        scanf("%c", &select);
        switch (select)
        {
        case'1':printf("修改学号"); scanf("%d", &student[i].num); break;
        case'2':printf("修改姓名"); scanf("%s", &student[i].name); break;
        case'3':printf("考试平均成绩"); scanf("%d", &student[i].writetest); break;
        case'4':printf("修改同学互评分"); scanf("%d", &student[i].classtest); break;
        case'5':printf("修改任课老师评分"); scanf("%d", &student[i].teatest); break;
        }
        Sortinfo(student);
        SaveStruct(student, sizeof(struct student_info), counter, "student_info.dat");
        PM = 0;
        printf("修改完成。。。");
        getchar();
        system("cls");
    }
    //删除学生信息
    void DeLeteInfo()
    {
        int i, j, num;
        char YN;
        printf("请输入需要删除的学生信息的学号:");
        scanf("%d", &num);
        getchar();
        if ((i = NumExist(student, num)) == -1)
        {
            printf("不存在该学号,按返回键返回。。。");
            getchar();
            system("cls");
            return;
        }
        ViewInfo(&student[i]);
        printf("\n确认删除(Y/N):");
        scanf("%c", &YN);
        getchar();
        if (YN != 'Y'&& YN != 'y')
        {
            printf("修改取消...");
        }
        else
        {
            for (j = i; j<counter - 1; j++)
                student[j] = student[j + 1];
            counter--;
            PM = 0;
            SaveStruct(student, sizeof(struct student_info), counter, "student_info.dat");
            SaveInt(&counter, sizeof(counter), counter, "counter.dat");
            printf("删除完成。。。");
        }
        getchar();
        system("cls");
    }
    // 综合测评分排名
    void paiming(struct student_info student[])
    {
        struct student_info *p[N], *temp;
        int i, j;
        for (i = 0; i<counter; i++)
            p[i] = &student[i];
        for (i = 0; i<counter - 1; i++)
            for (j = i + 1; j<counter; j++)
            {
                if (p[i]->zongping < p[j]->zongping)
                {
                    temp = p[i];
                    p[i] = p[j];
                    p[j] = temp;
                }
            }
        for (i = 0; i<counter; i++)
            p[i]->paiming = i + 1;
        printf("综合测评分排名完成。。。\n");
    }
    //浏览所有学生信息
    void viewAll()
    {
        int i;
        for (i = 0; i<counter; i++)
        {
            ViewInfo(&student[i]);
            printf("\n");
        }
        getchar();
        printf("按回车键返回。。。");
        getchar();
        system("cls");
    }
    //查询排名
    void paimingView()
    {
        int i, num;
        printf("请输入需要查询的学生的学号:");
        scanf("%d", &num);
        getchar();
        i = NumExist(student, num);
        if (i == -1)
        {
            printf("不存在该学号。。。");
            getchar();
            return;
        }
        if (PM == 0)
        {
            printf("请先进行成绩排名。。。");
            getchar();
            return;
        }
        printf("%s的综合测评分排名%d\n", student[i].name, student[i].paiming);
        printf("按回车键返回。。。");
        getchar();
        return;
    }
    //退出
    void exit()
    {
        printf("谢谢使用!\n");
        exit(0);
    }
    // 输入信息函数
    struct student_info input()
    {
        struct student_info stu, *sp;
        char YN;
        sp = &stu;
        while (1)
        {
            while (1)
            {
                printf("录入学号:");
                scanf("%d", &sp->num);
                getchar();
                if (NumExist(student, sp->num) != -1)
                {
                    printf("该学号已存在,请重新输入。。。");
                    getchar();
                    system("cls");
                    continue;
                }
                break;
            }
            printf("录入姓名:");
            // gets(sp->name);
            printf("录入考试平均成绩:");
            scanf("%d", &sp->writetest);
            printf("录入同学互评分:");
            scanf("%d", &sp->classtest);
            printf("录入任课老师评分:");
            scanf("%d", &sp->teatest);
            getchar();
            sp->zongping = (sp->writetest*0.6 + sp->classtest*0.2 + sp->teatest*0.2);
            printf("录入完毕,确认信息是否正确(Y/N)");
            YN = getchar();
            getchar();
            if (YN == 'Y' || YN == 'y')
                break;
            else
            {
                printf("按回车键重新录入信息。。");
                getchar();
                system("cls");
                continue;
            }
        }
        system("cls");
        return stu;
    }
    //排序函数
    void Sortinfo(struct student_info student[])
    {
        int i, j;
        struct student_info temp;
        for (i = 0; i<counter - 1; i++)
            for (j = i + 1; j <= counter - 1; j++)
            {
                if (student[i].num<student[j].num)
                {
                    temp = student[i];
                    student[i] = student[j];
                    student[i] = temp;
                }
            }
    }
    //显示学生信息
    void ViewInfo(struct student_info *sp)
    {
        printf("学号\t姓名\n");
        printf("%d\t%s\n", sp->num, sp->name);
        printf("考试平均成绩\t同学互评分\t任课老师评分\n");
        printf("%d\t%d\t%d\n", sp->writetest, sp->classtest, sp->teatest);
        printf("综合分\n");
        printf("%.2f\n", sp->zongping);
        if (PM == 1)
        {
            printf("综合测评分排名\n");
            printf("%f\n", sp->zongping);
        }
    }
    //信息存盘(结构体)
    void SaveStruct(struct student_info *sp, int SIZE, int n, char filename[20])
    {
        FILE *fp;
        fp = fopen(filename, "wb");
        fwrite(sp, SIZE, n, fp);
        fclose(fp);
    }
    //读取信息(结构体)
    void LoadStruct(struct student_info *sp, int SIZE, int n, char filename[20])
    {
        FILE *fp;
        fp = fopen(filename, "rb");
        fread(sp, SIZE, n, fp);
        fclose(fp);
    }
    //信息存盘(整型)
    void SaveInt(int*p, int size, int n, char filename[20])
    {
        FILE *fp;
        fp = fopen(filename, "wb");
        fwrite(p, size, n, fp);
        fclose(fp);
    }
    //读取信息(整型)
    void LoadInt(int*p, int size, int n, char filename[20])
    {
        FILE *fp;
        fp = fopen(filename, "rb");
        fread(p, size, n, fp);
        fclose(fp);
    }
    //检索学号
    int NumExist(struct student_info student[], int num)
    {
        int i;
        for (i = 0; i<counter; i++)
        {
            if (student[i].num == num)
                return i;
        }
        return -1;
    }
    //浏览学生信息
    void view()
    {
        int i, num;
        printf("请输入需要浏览的学生信息的学号:");
        scanf("%d", &num);
        getchar();
        if ((i = NumExist(student, num)) == -1)
        {
            printf("不存在该学号,按回车键返回。。。");
            getchar();
            system("cls");
            return;
        }
        ViewInfo(&student[i]);
        printf("\n按回车键返回。。。");
        getchar();
        system("cls");
        return;
    }
    

    img

    编码不易,望采纳哦!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答