⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yzss.txt

📁 班级管理系统
💻 TXT
📖 第 1 页 / 共 2 页
字号:
        for(i=0;i<n&&cour[i].cno!=num;i++);
        if (i>=n)
        {
            printf("\t>>没有%d课程号的课程\n",num);
            return;
        }
        fclose(fp);
        if (n>1)
        {
            for (j=i;j<n-1;j++)
                cour[i]=cour[i+1];
            fp=fopen("course.dat","wb");
            for (i=0;i<n-1;i++)
                fwrite(&cour[i],sizeof(COURSE),1,fp);
            fclose(fp);
        }
        else dacour();
    }
    else
    {
        printf("\t>>无任何记录\n");
        fclose(fp);
    }
}
void dicour()
{
    FILE *fp;
    int i;
    COURSE cour;
    if ((fp=fopen("course.dat","rb"))==NULL)
    {
        printf("\t>>不能打开course.dat文件\n");
        return;
    }
    fseek(fp,0,2);
    if (ftell(fp)>0)
    {
        rewind(fp);
        printf("   记录号 课程号  课程名  专业号\n");
        i=0;
        while(1)
        {
            fread(&cour,sizeof(COURSE),1,fp);
            if (feof(fp)) break;
            printf(" %6d%6d%10s%5d\n",i+1,cour.cno,cour.cname,cour.zyno);
            i++;
        }
    }
    else
        printf("\t>>无任何记录\n");
}
void dacour()
{
    FILE *fp;
    if((fp=fopen("course.dat","wb"))==NULL)
    {
        printf("\t>>不能打开course.dat文件\n");
        return;
    }
    printf("\t>>全部记录已删\n");
    fclose(fp);
}
void ficour()
    {
        int i=0,num,zynum,a;
        FILE *fp;
        COURSE cour;
        if ((fp=fopen("course.dat","rb"))==NULL)
        {
            printf(" \t>>不能打开course.dat文件\n");
            return;
        }
        fseek(fp,0,2);
        printf("1:按课程号查找 2:按专业号查找\n");
        scanf("%d",&a);
        if(a==1)
        {
        if (ftell(fp)>0)
        {
            printf("  输入课程号:");
            scanf("%d",&num);
                rewind(fp);
            while(1)
            {
                fread(&cour,sizeof(COURSE),1,fp);
                if (feof(fp)||cour.cno==num) break;
                i++;
            }
            if (!feof(fp))
            {
                printf(" 记录号 课程号 课程名 专业号\n");
                printf("%6d%10d%20s%5d\n",i+1,cour.cno,cour.cname,cour.zyno);
            }
            else
                printf("\t>>查无此记录\n");
        }
        else 
            printf("\t>>无任何记录\n");
    }

    else
    {
        if (ftell(fp)>0)
        {
            printf("  输入专业号:");
            scanf("%d",&zynum);
                rewind(fp);
            while(1)
            {
                fread(&cour,sizeof(COURSE),1,fp);
                if (feof(fp)||cour.zyno==zynum) break;
                i++;
            }
            if (!feof(fp))
            {
                printf(" 记录号 课程号 课程名 专业号\n");
                printf("%6d%10d%20s%5d\n",i+1,cour.cno,cour.cname,cour.zyno);
            }
            else
                printf("\t>>查无此记录\n");
        }
        else 
            printf("\t>>无任何记录\n");
    }
    }

int findrel(int sno,int cno,char sna[],char cna[]);
void degree()                   
{
 void indegr();
 void updegr();
 void dedegr();
 void didegr();
 void dadegr();
 void fidegr();
 void stdegr();
 int sell;
 do
 {
     printf(" 成绩记录操作:1:添加 2:修改 3:显示 4:查找 5:删除 6:全删 7:统计 0:返回=>");
     scanf("%d",&sell);
     switch(sell)
     {
     case 1:indegr();break;
     case 2:updegr();break;
     case 3:didegr();break;
     case 4:fidegr();break;
     case 5:dedegr();break;
     case 6:dadegr();break;
     case 7:stdegr();break;
     case 0:break;
     default:printf("\t**选择错误\n");break;
     }
 }while(sell!=0);
}
void stdegr()
{                                               
 void stdegr1();
 void stdegr2();
 void stdegr3();
 void stdegr4();
 int sel2;
 do
 {
   printf(" 成绩统计:1:均分(学号) 2:均分(课程) 3:不及格(学号)4:不及格(课程) 0:返回=>");
   scanf("%d",&sel2);
   switch(sel2)
   {
     case 1:stdegr1();break;
     case 2:stdegr2();break;
     case 3:stdegr3();break;
     case 4:stdegr4();break;
     case 0:break;
     default:printf("\t**选择错误\n");break;
   }
 }while(sel2!=0);
}
void stdegr1()                     
{
 int i=0,snum,total=0;
 FILE *fp;
 DEGREE degr;
 if((fp=fopen("degree.dat","rb"))==NULL)
 {
  printf("\t>>不能打开degree.dat文件\n");
  return;
 }
 fseek(fp,0,2);
 if(ftell(fp)>0)              
 {
  printf("要查找的学号:");
  scanf("%d",&snum);
  rewind(fp);
  while(1)
  {
   if(fread(&degr,sizeof(DEGREE),1,fp)!=1)
      break;
   if(degr.sno==snum)
   {
    i++;
    total+=degr.deg;
    printf("%8d%8d(%-10s)%8d(%-20s)%5d\n",i+1,degr.sno,
            degr.sname,degr.cno,degr.cname,degr.deg);
   }
  }
  if(i>0)
    printf("\t平均分:%6.lf\n",total*1.0/i);
  else
    printf("\t>>查无此人\n");
  }
 else
    printf("\t>>无任何记录\n");
}
void stdegr2()
{             
 int i=0,cnum,total=0;
 FILE *fp;
 DEGREE degr;
 if((fp=fopen("degree.dat","rb"))==NULL)
 {
  printf("\t>>不能打开degree.dat文件\n");
  return;
 }
 fseek(fp,0,2);
 if(ftell(fp)>0)                
 {
  printf("要查找的课程号:");
  scanf("%d",&cnum);
  rewind(fp);
  while(1)
  {
   if(fread(&degr,sizeof(DEGREE),1,fp)!=1)
      break;
   if(degr.cno==cnum)
   {
    i++;
    total+=degr.deg;
    printf("%8d%8d(%-10s)%8d(%-20s)%5d\n",i+1,degr.sno,
        degr.sname,degr.cno,degr.cname,degr.deg);
   }
  }
  if(i>0)
    printf("\t平均分:%6.lf\n",total*1.0/i);
  else
    printf("\t>>查无此人\n");
 }
 else
    printf("\t>>无任何记录\n");
}
void stdegr3()
{
    int snum,i=0;
    FILE *fp;
    DEGREE degr;
    if((fp=fopen("degree.dat","rb"))==NULL)
    {
        printf("\t>>不能打开degree.dat文件\n");
        return;
    }
 fseek(fp,0,2);
 if (ftell(fp)>0)                  
 {
  printf("要查找的学号:");
  scanf("%d",&snum);
  rewind(fp);
  while(1)
  {
   if(fread(&degr,sizeof(DEGREE),1,fp)!=1)
      break;
   if(degr.sno==snum&&degr.deg<60)
   {
       i++;
       printf("%8d%8d(%-10s)%8d(%-20s)%5d\n",i+1,degr.sno,degr.sname,degr.cno,degr.cname,degr.deg);
   }
  }
  if(i>0)
      printf("\t不及格人数:%d\n",i);
  else
     printf("\t>>无及格课程\n");
}
 else
     printf("\t>>无任何记录\n");
 }
 void stdegr4()
{
    int cnum,i=0;
    FILE *fp;
    DEGREE degr;
    if((fp=fopen("degree.dat","rb"))==NULL)
    {
        printf("\t>>不能打开degree.dat文件\n");
        return;
    }
    fseek(fp,0,2);
    if (ftell(fp)>0)
    {
        printf("要查找的课程号:");
        scanf("%d",&cnum);
        rewind(fp);
        while(1)
        {
            if(fread(&degr,sizeof(DEGREE),1,fp)!=1)
                break;
            if(degr.cno==cnum&&degr.deg<60)
            {
                i++;
                printf("%8d%8d(%-10s)%8d(%-20s)%8d(%-20s)%5d\n",i+1,degr.sno,degr.sname,degr.cno,degr.cname,degr.deg);
            }
        }
        if(i>0)
            printf("\t不及格人数:%d\n",i);
        else
            printf("\t>>无不及格者\n");
    }
    else
        printf("\t>>无任何记录\n");
}
    void indegr()
    {
        FILE *fp;
        char sn[10],cn[20];
        DEGREE degr;
        if((fp=fopen("degree.dat","ab+"))==NULL)
            if((fp=fopen("degree.dat","wb+"))==NULL)
            {
                printf("\t>>不能建立degree.dat文件\n");
                return;
            }
            printf("    输入格式:学号 课程号 分数 班号\n");
            printf("    学生记录:");
            scanf("%d%d%d%d",&degr.sno,&degr.cno,&degr.deg,&degr.classno);
            if(findrel(degr.sno,degr.cno,sn,cn)==1)
            {
                strcpy(degr.sname,sn);
                strcpy(degr.cname,cn);
                fwrite(&degr,sizeof(DEGREE),1,fp);
            }
            else
                printf("\t>>学号或课程号错误\n");
            fclose(fp);
    }
    void updegr()
    {
        FILE *fp;
        DEGREE degr,ndegr;
        int i,snum,cnum;
        if ((fp=fopen("degree.dat","rb+"))==NULL)
        {
            printf("\t>>不能打开degree.dat文件\n");
            return;
        }
        fseek(fp,0,2);
        if(ftell(fp)>0)
        {
            rewind(fp);
            printf("要修改的学号和课程号:");
            scanf("%d%d",&snum,&cnum);
            for(i=0;!feof(fp)&&fread(&degr,sizeof(DEGREE),1,fp)==1;i++)
                if(degr.sno==snum && degr.cno==cnum) break;
                if(feof(fp))
                {
                    printf("\t>>没有指定的成绩记录\n");
                    return;
                }
                printf("\t>>成绩记录:%d(%s),%d,%s,%d\n",degr.sno,degr.sname,degr.cno,degr.cname,degr.deg);
                printf(" 输入格式:分数:");
                scanf("%d",&ndegr.deg);
                ndegr.sno=degr.sno;
                strcpy(ndegr.sname,degr.sname);
                ndegr.cno=degr.cno;
                strcpy(ndegr.cname,degr.cname);
                fseek(fp,-(long)sizeof(DEGREE),SEEK_CUR); 
                fwrite(&ndegr,sizeof(DEGREE),1,fp);
                fclose(fp);
        }
        else
        {
            printf("\t>>无任何记录\n");
            fclose(fp);
        }
    }
void dedegr()         
 {
    void dadegr();
    FILE *fp;
    DEGREE degr[MAX];
    int i,j,n,snum,cnum;
    if ((fp=fopen("degree.dat","rb"))==NULL)
    {
         printf("\t>>不能打开degree.dat文件\n");
         return;
    }
    fseek(fp,0,2);
    if (ftell(fp)>0)          
    {
         rewind(fp);
         for(n=0;!feof(fp)&&fread(&degr[n],sizeof(DEGREE),1,fp);n++)
         printf(" 要删除的学号和课程号:");
         scanf("%d%d",&snum,&cnum);
         for(i=0;i<n&&(degr[i].sno!=snum||degr[i].cno!=cnum);i++)
         if(i>=n)
         {
             printf("\t>>没有指定的成绩学生\n");
             return;
         }
         fclose(fp);          
         if(n>1)               
         {
            for(j=i;j<n-1;j++)    
               degr[i]=degr[i+1];
            fp=fopen("degree.dat","wb");
            for(i=0;i<n-1;i++)
               fwrite(&degr[i],sizeof(DEGREE),1,fp);
            fclose(fp);
         }
          else dadegr();

     }    
     else
     {
        printf("\t>>无任何记录\n");
        fclose(fp);
      }
 }
  void didegr()    
  {
      FILE *fp;
      int i;
      DEGREE degr;
      if((fp=fopen("degree.dat","rb"))==NULL)
      {
          printf("\t>>不能打开degree.dat文件\n");
          return;
       }
       fseek(fp,0,2);
       if(ftell(fp)>0)    
       {
           rewind(fp);
           printf("记录号 学号  (姓名)   课程号(课程)  分数\n");
           i=0;
           while(1)
           {
                fread(&degr,sizeof(DEGREE),1,fp);
                if(feof(fp)) break;
                printf("%5d%8d(%-8s)%6d(%-8s)%5d\n",i+1,degr.sno,degr.sname,degr.cno,degr.cname,degr.deg);
                i++;
           }
       }
        else
            printf("\t>>无任何记录\n");
   }
    void dadegr()         
     {
       FILE *fp;
       if((fp=fopen("degree.dat","wb"))==NULL)
        {
           printf("\t>>不能打开degree.dat文件\n");
           return;
        }
            printf("t>>全部记录删除\n");
            fclose(fp);
   }
    void fidegr()
    {
        int i=0,snum,cnum;
        FILE *fp;
        DEGREE degr;
        if((fp=fopen("degree.dat","rb"))==NULL)
         {
             printf("\t>>不能打开degree.dat文件\n");
             return;
         }
         fseek(fp,0,2);
         if(ftell(fp)>0)    
         {
            printf(" 要查找的班号和课程号:");
            scanf("%d%d",&snum,&cnum);
            rewind(fp);
            while (1)
            {
                 fread(&degr,sizeof(DEGREE),1,fp);
                 if(feof(fp) ||degr.classno==snum && degr.cno==cnum) break;
                 i++;
             }
              if(!feof(fp))
               {
                  printf(" 记录号  学号   (姓名)     课程号(课程)   分数\n");
                  printf("%8d%8d(%-8s)%8d(%-8s)%5d\n",i+1,degr.sno,degr.sname,degr.cno,degr.cname,degr.deg);
                }
                 else
                     printf("\t>>查无此记录\n");
            }
             else
                   printf("t>>无任何记录\n");
        }
    int findrel(int sno,int cno, char sna[],char cna[])
    {
        FILE *fstud,*fcour;
        STUDENT stud;
        COURSE cour;
        int flag;
        if((fstud=fopen("student.dat","rb"))==NULL)
        {
            printf("\t>>不能打开student.dat文件\n");
            return 0;
        }
        if((fcour=fopen("course.dat","rb"))==NULL)
        {
            printf("\t>>不能打开course.dat文件\n");
            return 0;
        }
        fseek(fstud,0,2);
        if(ftell(fstud)>0)
        {
            rewind(fstud);
            flag=0;
            while(!feof(fstud))
            {
                fread(&stud,sizeof(STUDENT),1,fstud);
                if (stud.sno==sno)
                {
                    flag=1;
                    break;
                }
            }
            if (flag==1)
                strcpy(sna,stud.sname);
            else return 0;
        }
        else return 0;
        fclose(fstud);
        fseek(fcour,0,2);
        if (ftell(fcour)>0)
        {
            rewind(fcour);
            flag=0;
            while(!feof(fcour))
            {
                fread(&cour,sizeof(COURSE),1,fcour);
                if(cour.cno==cno)
                {
                    flag=1;
                    break;
                }
            }
            if (flag==1)
                strcpy(cna,cour.cname);
            else return 0;
        }
        else return 0;
        fclose(fcour);
        return 1;     
    }






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -