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

📄 班级成绩管理系统.txt

📁 班级成绩管理系统
💻 TXT
📖 第 1 页 / 共 3 页
字号:

     }
}




 sort(StudentList h)/*对学生成绩进行排序*/
{int count;int k=0;
 student *p,*p1,*p2;
  int   i,j,x;
  float f;
  char a[10];
  if(h==NULL)
  printf("\n没有任何学生资料!\n");
  p=p2=p1=h;
  count=amount(h);/*统计下学生个数*/
  

   printf("<1>按学生学号排序\n<2>按语文成绩排序\n");
   printf("<3>按英语成绩排序\n<4>按数学成绩排序\n<5>按总分排序\n");
   scanf("%d",&x);
   getchar();
if(x==1)   
 {              for(i=1;i<=count;i++)
               {
             for(j=i+1;j<=count;j++)
                 {
       p2=p1;
       p1=p1->next;
      
        if(p2->studentnumber>p1->studentnumber)
               {
               k=p2->studentnumber;
              p2->studentnumber=p1->studentnumber;
               p1->studentnumber=k;
         /*交换前后结点中的学号值*/
        
               strcpy(a,p2->name);
               strcpy(p2->name,p1->name);
               strcpy(p1->name,a);
     /*交换前后结点中的姓名*/
               f=p2->chinese;
              p2->chinese=p1->chinese;
               p1->chinese=f;
                 /*交换前后结点中的语文成绩*/
      
               f=p2->English;
               p2->English=p1->English;
               p1->English=f;
    /*交换前后结点中的英语成绩*/
       
               f=p2->math;
               p2->math=p1->math;
               p1->math=f;
                /*交换前后结点中的数学成绩*/
                 }

                 }
   p2=h;p1=h;/*重新使max,p指向链表头*/
           }
          printf("\n\n学号\t姓名\t语文\t英语\t数学\t平均分\t总分\n");

      while (p!=NULL)
          {printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t\n",p->studentnumber,p->name,p->chinese,p->English,p->math,p->average,p->sum);
          p=p->next;
          } 
           printf("\n\n\n");     
 }

if(x==2)     
{for(i=1;i<count;i++)
                {for(j=i+1;j<=count;j++)
                 {p2=p1;
      p1=p1->next;
      if(p2->chinese<p1->chinese)
        {
       f=p2->chinese;
         p2->chinese=p1->chinese;
          p1->chinese=f;
 /*交换前后结点中的语文成绩,使得语文成绩高者移到后面的结点中*/
                     
       k=p2->studentnumber;
     p2->studentnumber=p1->studentnumber;
      p1->studentnumber=k; 
  /*交换前后结点中的学号,使之与语文成绩相匹配*/

                     strcpy(a,p2->name);
      strcpy(p2->name,p1->name);
      strcpy(p1->name,a);
  /*交换前后结点中的姓名,使之与语文成绩相匹配*/

          f=p2->English;
       p2->English=p1->English;
       p1->English=f;
  /*交换前后结点中的英语成绩,使之与语文成绩相匹配*/

       f=p2->math;
     p2->math=p1->math;
       p1->math=f;
    /*交换前后结点中的数学成绩,使之与语文成绩相匹配*/
        }
                 }
                  p1=h;
           p2=h;
                }

   
           printf("\n\n学号\t姓名\t语文\t英语\t数学\t平均分\t总分\n");
      p=h;
      while (p!=NULL)
          {printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t\n",p->studentnumber,p->name,p->chinese,p->English,p->math,p->average,p->sum);
          p=p->next;
          } 
           printf("\n\n\n");
}
if(x==3)
{      for(i=1;i<count;i++)
                {for(j=i+1;j<=count;j++)
                 {p2=p1;
      p1=p1->next;
      if(p2->English<p1->English)
        {
      f=p2->English;
        p2->English=p1->English;
         p1->English=f;
 /*交换前后结点中的英语成绩,使得英语成绩高者移到后面的结点中*/
      
      k=p2->studentnumber;
     p2->studentnumber=p1->studentnumber;
      p1->studentnumber=k;
 /*交换前后结点中的学号,使之与英语成绩相匹配*/

         strcpy(a,p2->name);
      strcpy(p2->name,p1->name);
      strcpy(p1->name,a);
  /*交换前后结点中的姓名,使之与英语成绩相匹配*/

         f=p2->chinese;
      p2->chinese=p1->chinese;
      p1->chinese=f;
 /*交换前后结点中的语文成绩,使之与英语成绩相匹配*/
         f=p2->math;
      p2->math=p1->math;
      p1->math=f;
 /*交换前后结点中的数学成绩,使之与英语成绩相匹配*/
        }
                 }
                  p1=h;
            p2=h;
                }

   
      printf("\n\n学号\t姓名\t语文\t英语\t数学\t平均分\t总分\n");
      p=h;
      while (p!=NULL)
          {printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t\n",p->studentnumber,p->name,p->chinese,p->English,p->math,p->average,p->sum);
          p=p->next;
          } 
           printf("\n\n\n");
} 

  if(x==4) 
  {      for(i=1;i<count;i++)
                {for(j=i+1;j<=count;j++)
                 {p2=p1;
      p1=p1->next;
      if(p2->math<p1->math)
        {
      f=p2->math;
         p2->math=p1->math;
         p1->math=f; 
      /*交换前后结点中的数学成绩,使得数学成绩高者移到后面的结点中*/

      k=p2->studentnumber;
    p2->studentnumber=p1->studentnumber;
      p1->studentnumber=k; 
      /*交换前后结点中的学号,使之与数学成绩相匹配*/

         strcpy(a,p2->name);
      strcpy(p2->name,p1->name);
      strcpy(p1->name,a); 
      /*交换前后结点中的姓名,使之与数学成绩相匹配*/

         f=p2->chinese;
   p2->chinese=p1->chinese;
      p1->chinese=f;
      /*交换前后结点中的语文成绩,使之与数学成绩相匹配*/


         f=p2->English;
     p2->English=p1->English;
      p1->English=f;
      /*交换前后结点中的英语成绩,使之与数学成绩相匹配*/
        }
     }
                  p1=h;
           p2=h;
                }
                      
     printf("\n\n学号\t姓名\t语文\t英语\t数学\t平均分\t总分\n");
      p=h;
      while (p!=NULL)
          {printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t\n",p->studentnumber,p->name,p->chinese,p->English,p->math,p->average,p->sum);
          p=p->next;
          } 
           printf("\n\n\n"); 

 
  }
   if(x==5) 
  {      for(i=1;i<count;i++)
                {for(j=i+1;j<=count;j++)
                 {p2=p1;
      p1=p1->next;
      if(p2->sum<p1->sum)
        {
      f=p2->math;
         p2->math=p1->math;
         p1->math=f; 
      /*交换前后结点中的数学成绩,使得数学成绩高者移到后面的结点中*/

      k=p2->studentnumber;
    p2->studentnumber=p1->studentnumber;
      p1->studentnumber=k; 
      /*交换前后结点中的学号,使之与数学成绩相匹配*/

         strcpy(a,p2->name);
      strcpy(p2->name,p1->name);
      strcpy(p1->name,a); 
      /*交换前后结点中的姓名,使之与数学成绩相匹配*/

         f=p2->chinese;
   p2->chinese=p1->chinese;
      p1->chinese=f;
      /*交换前后结点中的语文成绩,使之与数学成绩相匹配*/


         f=p2->English;
     p2->English=p1->English;
      p1->English=f;
      /*交换前后结点中的英语成绩,使之与数学成绩相匹配*/
        }
     }
                  p1=h;
           p2=h;
                }
                      
     printf("\n\n学号\t姓名\t语文\t英语\t数学\t平均分\t总分\n");
      p=h;
      while (p!=NULL)
          {printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t\n",p->studentnumber,p->name,p->chinese,p->English,p->math,p->average,p->sum);
          p=p->next;
          } 
           printf("\n\n\n"); 

 
  }
  }




StudentList alter(StudentList h)/*修改学生数据*/
{ int num,i,n;student *p;
  float m; char a[10];
  p=h;	
  printf("请输入要修改的学生学号:");
  printf("返回功能菜单请按0:");
  scanf("%d",&num);
  while(num!=0)
     {
	while(p->studentnumber!=num&&p!=NULL)
	p=p->next;
	if(p->studentnumber==num)
	{printf("《1》修改语文成绩\n《2》修改英语成绩\n《3》修改数学成绩\n《4》修改学号\n《5》修改姓名\n");
	scanf("%d",&i);
	if(i==1) {printf("请输入修改后的成绩:");scanf("%f",&m);  p->chinese=m;}	
	if(i==2) {printf("请输入修改后的成绩:");scanf("%f",&m);  p->English=m;}
	if(i==3) {printf("请输入修改后的成绩:");scanf("%f",&m);  p->math=m;}	
	if(i==4) {printf("请输入修改后的学号:");scanf("%d",&n);  p->studentnumber=n;}
	if(i==5) {printf("请输入修改后的姓名:");scanf("%s",a);  strcpy(p->name,a);}
	}	
	printf("请输入要修改的学生学号:");
	printf("返回功能菜单请按0:");
       scanf("%d",&num);

     }
return h;
}



student *load(StudentList head)
/*函数load,功能:从文件读入学生记录*/
{     int count; 
      student *p1,*p2;
      int m=0;
      char filepn[10];  FILE *fp;
      count=0;  
      printf("请输入文件路径及文件名:");
      scanf("%s",filepn);/*输入文件路径及名称*/
      if((fp=fopen(filepn,"r+"))==NULL)
       {
        printf("不能打开文件!\n");
        return 0;
       }
     
     fscanf(fp,"学号\t姓名\t语文\t英语\t数学\t平均分\t总分\t\n");
  
     printf("学号\t姓名\t语文\t英语\t数学\t平均分\t总分\t\n");
 
     m=m+1;  
     if(m==1)
       {
       p1=(student *)malloc(sizeof(struct studentnode)) ; /*开辟一个新单元*/
       fscanf(fp,"%d%s%f%f%f%f%f\n",&p1->studentnumber,p1->name,&p1->chinese,&p1->English,&p1->math,&p1->average,&p1->sum);
       printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t\n",p1->studentnumber,p1->name,p1->chinese,p1->English,p1->math,p1->average,p1->sum);
    /*文件读入与显示*/
       head=NULL;
       do
          {
          count=count+1;
          if(count==1) head=p1;
          else p2->next=p1;
          p2=p1;
          p1=(student *)malloc(sizeof(struct studentnode)) ;  /*开辟一个新单元*/    
          fscanf(fp,"%d%s%f%f%f%f%f\n",&p1->studentnumber,p1->name,&p1->chinese,&p1->English,&p1->math,&p1->average,&p1->sum);
          printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t\n",p1->studentnumber,p1->name,p1->chinese,p1->English,p1->math,p1->average,p1->sum);
           /*文件读入与显示*/
          }while(!feof(fp));
          p2->next=p1;
          p1->next=NULL;
          count=count+1; 
       }
   fclose(fp);/*结束读入,关闭文件*/
      
  return (head);
}



save(StudentList p) 
/*功能:保存学生的资料*/
{ 
 FILE *fp;
 
 char filepn[20];/*用来存放文件保存路径以及文件名*/
 
 printf("请输入文件路径及文件名:");
 scanf("%s",filepn);
 if((fp=fopen(filepn,"w+"))==NULL)
   {
    printf("不能打开文件!\n");
    return 0;
   }

 fprintf(fp,"学号\t姓名\t语文\t英语\t数学\t平均分\t总分\t\n");
  

 while(p!=NULL)
   {
    fprintf(fp,"%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t\n",p->studentnumber,p->name,p->chinese,p->English,p->math,p->average,p->sum);
 
    p=p->next;/*下移一个结点*/
 
   }
 fclose(fp);
 printf("文件已经保存!\n");
 return 0;
}



main()
{  StudentList p=NULL;
   int k;
   while(1)
     {k=function_choose();
	
      switch(k)
        {case 1: p=data_creat(p);break;/*输入数据*/
         case 2:sort(p);break;/*排序*/
         case 3: query(p);break;/*查询*/
         case 4: p=delet_data(p);amount(p);break;/*删除*/
         case 5: p=add_data(p);amount(p);break;/*增加数据*/
         case 6: show(p);amount(p);break;/*显示*/
         case 7:statis_data(p);break;/*统计分数*/
         case 8: save(p); break;/*保存资料*/
         case 9:show1(p);break;/*分段显示*/
         case 10:p=load(p);break;/*调入资料*/
         case 11:amount(p);break;/*统计人数*/
         case  12:p=alter(p);break;/*修改数据*/
         case 0: exit(0);break;/*退出系统*/
        }
     }

}

⌨️ 快捷键说明

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