学生成绩管理系统实习

2016-02-19 21:34 15 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - 编程语言 】

#include malloc.h
  #include stdio.h
  #include stdlib.h
  #define LEN sizeof(strUCt scorenode)
  #define DEBUG
  #include string.h
  struct scorenode
  {int number;/*学号*/
  char name[10];/*姓名*/
  float yuwen;/*语文成绩*/
  float yingyu;/*英语成绩*/
  float shuxue;/*数学成绩 */
  struct scorenode *next;
  };
  typedef struct scorenode score;
  int n,k;/*n,k为全局变量,本程序中的函数均可以使用它*/
  /*==================================================================================*/
  score *creat2311(void)
  /*函数creat2311,功能:创建链表,此函数带回一个指向链表头的指针*/
  {
   score*head;
   score *p1,*p2,*p3,*max;
   int i,j;
   float fen;
      char t[10];
    n=0;
       p1=p2=p3=(score *)malloc(LEN);head=p3; /*开辟一个新单元*/
         printf("请输入学生资料,输0退出! ");
  repeat1: printf("请输入学生学号(学号应大于0):");/*输入学号,学号应大于0*/
         scanf("%d",&p1-number);
       while(p1-number0)
     {getchar();
      printf("输入错误,请重新输入学生学号:");
         scanf("%d",&p1-number);}      
    /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
    if(p1-number==0)
     goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/
    else
    {
    p3=head;
    if(n0)
     {for(i=0;in;i++)
             {if(p1-number!=p3-number)
       p3=p3-next;
       else
       {printf("学号重复,请重输! ");
       goto repeat1;
       /*当输入的学号已经存在,程序报错,返回前面重新输入*/
          }
      }    
     }         
    }
         printf("请输入学生姓名:");
         scanf("%s",&p1-name);/*输入学生姓名*/
         printf("请输入语文成绩(0~100):");/*输入语文成绩,成绩应在0-100*/
         scanf("%f",&p1-yuwen);
      while(p1-yuwen0p1-yuwen100)
   {getchar();
    printf("输入错误,请重新输入语文成绩");/*输入错误,重新输入语文成绩直到正确为止*/
              scanf("%f",&p1-yuwen);}
         printf("请输入英语成绩(0~100):");/*输入英语成绩,成绩应在0-100*/
         scanf("%f",&p1-yingyu);
      while(p1-yingyu0p1-yingyu100)
  
    {getchar();
    printf("输入错误,请重新输入英语成绩");/*输入错误,重新输入英语成绩直到正确为止*/
             scanf("%f",&p1-yingyu);}
         printf("请输入数学成绩(0~100):");/*输入数学成绩,成绩应在0-100*/
         scanf("%f",&p1-shuxue);
      while(p1-shuxue0p1-shuxue100)
   {getchar();
    printf("输入错误,请重新输入数学成绩");
              scanf("%f",&p1-shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/
       head=NULL;
   while(p1-number!=0)
    {
      n=n+1;
   if(n==1) 
    head=p1;
   else
   
      p2-next=p1;
      p2=p1;
      p1=(score *)malloc(LEN);
      printf("请输入学生资料,输0退出! ");
  repeat2:printf("请输入学生学号(学号应大于0):");
        scanf("%d",&p1-number);/*输入学号,学号应大于0*/
    
     while(p1-number0)
     {getchar();
      printf("输入错误,请重新输入学生学号:");
         scanf("%d",&p1-number);}     
     /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
    if(p1-number==0)
     goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/
    else
    {
    p3=head;
    if(n0)
     {for(i=0;in;i++)
        {if(p1-number!=p3-number)
      p3=p3-next;
      else
      {printf("学号重复,请重输! ");
       goto repeat2;
       /*当输入的学号已经存在,程序报错,返回前面重新输入*/
      }
      }    
     }         
   
    }
    printf("请输入学生姓名:");
         scanf("%s",&p1-name);/*输入学生姓名*/
       printf("请输入语文成绩(0~100):");
         scanf("%f",&p1-yuwen);/*输入语文成绩,成绩应在0-100*/
       while(p1-yuwen0p1-yuwen100)
    {getchar();
     printf("输入错误,请重新输入语文成绩");
           scanf("%f",&p1-yuwen);}/*输入错误,重新输入语文成绩直到正确为止*/
       printf("请输入英语成绩(0~100):");
        scanf("%f",&p1-yingyu);/*输入英语成绩,成绩应在0-100*/
       while(p1-yingyu0p1-yingyu100)
    {getchar();
     printf("输入错误,请重新输入英语成绩");
           scanf("%f",&p1-yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/
        printf("请输入数学成绩(0~100):");
         scanf("%f",&p1-shuxue);/*输入数学成绩,成绩应在0-100*/
  
        while(p1-shuxue0p1-shuxue100)
    {getchar();
     printf("输入错误,请重新输入数学成绩");
           scanf("%f",&p1-shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/
      
   }end: p1=head;
       p3=p1;
    for(i=1;in;i++)
                 {
               for(j=i+1;j=n;j++)
                   {
         max=p1;
         p1=p1-next;
       
         if(max-numberp1-number)
          {
          k=max-number;
          max-number=p1-number;
          p1-number=k;
           /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
         
          strcpy(t,max-name);
          strcpy(max-name,p1-name);
          strcpy(p1-name,t);
       /*交换前后结点中的姓名,使之与学号相匹配*/
          fen=max-yuwen;
          max-yuwen=p1-yuwen;
          p1-yuwen=fen;
                   /*交换前后结点中的语文成绩,使之与学号相匹配*/
        
          fen=max-yingyu;
          max-yingyu=p1-yingyu;
          p1-yingyu=fen;
      /*交换前后结点中的英语成绩,使之与学号相匹配*/
        
          fen=max-shuxue;
          max-shuxue=p1-shuxue;
          p1-shuxue=fen;
                  /*交换前后结点中的数学成绩,使之与学号相匹配*/
          }                 }
      max=head;p1=head;/*重新使max,p指向链表头*/
    }
  p2-next=NULL;/*链表结尾*/
         printf("输入的学生数为:%d个! ",n);
         return(head);}
  /*=================================================================================*/
  
   /*=================================================================================*/
  score *load2311(score *head)
  /*函数load2311,功能:从文件读入学生记录*/
  {       score *p1,*p2;
          int m=0;
          char filepn[10];
    FILE *fp;
    
    printf("请输入文件路径及文件名:");
       scanf("%s",filepn);/*输入文件路径及名称*/
       if((fp=fopen(filepn,"r+"))==NULL)
   {
    printf("不能打开文件! ");
    return 0;
   }
       fscanf(fp,"            考试成绩治理系统             ");
       fscanf(fp,"作者:周纯钢 班级:  信息023   学号:11 ");
          fscanf(fp,"----------------------------------------- ");
    fscanf(fp,"学号 姓名 语文 英语 数学 ");
          fscanf(fp,"----------------------------------------- ");/*读入表格域*/
    printf("            考试成绩治理系统             ");
       printf("  作者:周纯钢 班级:  信息023   学号:11 ");
          printf("----------------------------------------- ");
    printf("学号 姓名 语文 英语 数学 ");
          printf("----------------------------------------- ");/*打印表格域*/
    m=m+1; 
    if(m==1)
    {
    
    p1=(score *)malloc(LEN); /*开辟一个新单元*/
    fscanf(fp,"%d%s%f%f%f",&p1-number,p1-name,&p1-yuwen,&p1-yingyu,&p1-shuxue);
           printf("%d %s %.1f %.1f %.1f ",p1-number,p1-name,p1-yuwen,p1-yingyu,p1-shuxue);
      /*文件读入与显示*/
    head=NULL;
       do
    {
     n=n+1;
     if(n==1) head=p1;
     else p2-next=p1;
     p2=p1;
     p1=(score *)malloc(LEN);  /*开辟一个新单元*/   
        fscanf(fp,"%d%s%f%f%f ",&p1-number,p1-name,&p1-yuwen,&p1-yingyu,&p1-shuxue);
              printf("%d %s %.1f %.1f %.1f ",p1-number,p1-name,p1-yuwen,p1-yingyu,p1-shuxue);
             /*文件读入与显示*/
    }while(!feof(fp));
    p2-next=p1;
    p1-next=NULL;
  
     n=n+1;
   }printf("----------------------------------------- ");/*表格下线*/
    fclose(fp);/*结束读入,关闭文件*/
       
   return (head);
  }/*================================================================================*/
  /*================================================================================*/
  score *add2311(score *head,score *stu)
  /*函数add2311,功能:追加学生资料,并且将所有学生资料按学号排序*/
  {
   score *p0,*p1,*p2,*p3,*max;
      int i,j;
   float fen;
      char t[10];   p3=stu=(score *)malloc(LEN);/*开辟一个新单元*/
     printf(" 输入要增加的学生的资料!");
    repeat4: printf("请输入学生学号(学号应大于0):");
    scanf("%d",&stu-number);
    /*输入学号,学号应大于0*/
        while(stu-number0)
     {getchar();
      printf("输入错误,请重新输入学生学号:");
         scanf("%d",&stu-number);}/*输入错误,重新输入学号*/
       /******************************************************/
      if(stu-number==0)
     goto end2;/*当输入的学号为0时,转到末尾,结束追加*/
    else
    {
     p3=head;
    if(n0)
     {for(i=0;in;i++)
             {if(stu-number!=p3-number)
       p3=p3-next;
       else
       {printf("学号重复,请重输! ");
       goto repeat4;
       /*当输入的学号已经存在,程序报错,返回前面重新输入*/
          }
      }    
     }            }
    
    /******************************************************/ 
     printf("输入学生姓名:");
           scanf("%s",stu-name);            /*输入学生姓名*/
        printf("请输入语文成绩(0~100):");
           scanf("%f",&stu-yuwen);    /*输入语文成绩,成绩应在0-100*/
        while(stu-yuwen0stu-yuwen100)
     {getchar();
      printf("输入错误,请重新输入语文成绩");
         scanf("%f",&stu-yuwen);}     /*输入错误,重新输入语文成绩直到正确为止*/
        printf("请输入英语成绩(0~100):");
           scanf("%f",&stu-yingyu);/*输入英语成绩,成绩应在0-100*/
        while(stu-yingyu0stu-yingyu100)
     {getchar();
      printf("输入错误,请重新输入英语成绩");
           scanf("%f",&stu-yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/
  
         printf("请输入数学成绩(0~100):");
           scanf("%f",&stu-shuxue);/*输入数学成绩,成绩应在0-100*/
        while(stu-shuxue0stu-shuxue100)
     {getchar();
      printf("输入错误,请重新输入数学成绩");
            scanf("%f",&stu-shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/
  p1=head;
  p0=stu;
  if(head==NULL)
   /*当原来链表为空时,从首结点开始存放资料*/
   else/*原来链表不为空*/
   {
    if(p1-next==NULL)/*找到原来链表的末尾*/
    {
     p1-next=p0;
        p0-next=NULL;/*将它与新开单元相连接*/
    }
       else
    {
      while(p1-next!=NULL)/*还没找到末尾,继续找*/
      {
       p2=p1;p1=p1-next;
      }
          p1-next=p0;
          p0-next=NULL;
    } }
   n=n+1;
  p1=head;
  p0=stu;
    for(i=1;in;i++)
                 {
               for(j=i+1;j=n;j++)
                   {
         max=p1;
         p1=p1-next;
       
         if(max-numberp1-number)
          {
          k=max-number;
          max-number=p1-number;
          p1-number=k;
           /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
         
          strcpy(t,max-name);
          strcpy(max-name,p1-name);
          strcpy(p1-name,t);
       /*交换前后结点中的姓名,使之与学号相匹配*/
          fen=max-yuwen;
          max-yuwen=p1-yuwen;
          p1-yuwen=fen;
                   /*交换前后结点中的语文成绩,使之与学号相匹配*/
        
          fen=max-yingyu;
          max-yingyu=p1-yingyu;
          p1-yingyu=fen;
      /*交换前后结点中的英语成绩,使之与学号相匹配*/
        
          fen=max-shuxue;
  
           max-shuxue=p1-shuxue;
          p1-shuxue=fen;
                  /*交换前后结点中的数学成绩,使之与学号相匹配*/
          }                 }
      max=head;p1=head;/*重新使max,p指向链表头*/
    } end2:
   printf("现在的学生数为:%d个! ",n);
    return(head);}
  /*=============================================================================*/
  /*==============================================================================*/
  score *search2311(score *head)
  /*函数search2311,功能:查询学生成绩*/
  {int number;
   score *p1,*p2;
   printf("输入要查询的学生的学号,");
   scanf("%d",&number);while(number!=0)
  {
     if(head==NULL)
    {printf(" 没有任何学生资料! ");return(head);}   printf("----------------------------------------- ");
     printf("学号 姓名 语文 英语 数学 ");
     printf("----------------------------------------- ");/*打印表格域*/
     p1=head;
       while(number!=p1-number&&p1-next!=NULL)
           if(number==p1-number) 
      {printf("%d %s %.1f %.1f %.1f ",p1-number,p1-name,p1-yuwen,p1-yingyu,p1-shuxue);
            printf("----------------------------------------- ");}/*打印表格域*/
           else
             printf("%d不存在此学生! ",number);
   
           printf("输入要查询的学生的学号,");
           scanf("%d",&number);
  }
  printf("已经退出了! ");
  return(head);}/*==============================================================================*/
  /*==============================================================================*/
  score *del2311(score *head)/*函数del2311,功能:删除学生资料*/
  {
   score *p1,*p2;
  int number;
   printf("输入要删除的学生的学号(输入0时退出):");
   scanf("%d",&number);
   getchar();
   while(number!=0)/*输入学号为0时退出*/
   {
   
    if(head==NULL)
    {
     printf(" 没有任何学生资料! ");
     return(head);
    }
    p1=head;
   
    while(number!=p1-number&&p1-next!=NULL)
     /*p1指向的不是所要找的首结点,并且后面还有结点*/
     /*p1后移一个结点*/
      
    if(number==p1-number) 
     /*找到了*/ 
    {
     if(p1==head)
      head=p1-next;
     /*若p1指向的是首结点,把地二个结点地址赋予head*/
  
      else
        p2-next=p1-next;
     /*否则将下一个结点地址 赋给前一结点地址*/
     printf("删除:%d ",number);n=n-1;
    }
    else
     printf("%d不存在此学生! ",number);
    /*找不到该结点*/
    
    
    printf("输入要删除的学生的学号:");
    scanf("%d",&number);
    getchar();
   }
  #ifdef DEBUG 
   printf("已经退出了! ");
  #endif
  printf("现在的学生数为:%d个! ",n);
   return(head);
  }  /*============================================================================*/
   /*============================================================================*/
  void print2311(score *head)
  /*函数print2311,功能:显示学生成绩*/
  {
   score *p;
   if(head==NULL)     
           {printf(" 没有任何学生资料! ");}
   else
   {printf("%d ",n);
   printf("----------------------------------------- ");
   printf("学号 姓名 语文 英语 数学 ");
   printf("----------------------------------------- ");/*打印表格域*/
   p=head;
       do
      {printf("%d %s %.1f %.1f %.1f ",p-number,p-name,p-yuwen,p-yingyu,p-shuxue);
          printf("----------------------------------------- ");/*打印表格域*/
         p=p-next;}while (p!=NULL);/*打印完成了*/
   }
  }
  /*=========================================================================*/
  /*=========================================================================*/
   score *statistics2311(score *head)
    /*函数statistics2311,功能:统计学生成绩*/
   {
    float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min;
    score *p;
    int x,y=0,i=0;       p=head;
         printf("1个人总分和平均分 2单科平均分 3总分最高分 4总分最低分 ");
           scanf("%d",&x);
        getchar(); switch(x)
    /*用switch语句实现功能选择*/
   {
   case 1: if(head==NULL)
       {printf(" 没有任何学生资料! ");return(head);}/*链表为空*/
         else
    {
       printf("--------------------------------------------------------- ");
          printf("学号 姓名 语文 英语 数学 总分 平均分 ");
          printf("--------------------------------------------------------- ");/*打印表格域*/
       while(p!=NULL)
       {
        sum1=p-yuwen+p-yingyu+p-shuxue;  /*计算个人总分*/                           
  
                  ave1=sum1/3;/*计算个人平均分*/
           
                 printf("%d %s %.1f %.1f %.1f %.1f %.1f ",p-number,p-name,p-yuwen,p-yingyu,p-shuxue,sum1,ave1);
        /*打印结果*/
                 printf("--------------------------------------------------------- ");/*打印表格域*/
           p=p-next;}
      }
             return(head);    break;  case 2: if(head==NULL)
              {printf(" 没有任何学生资料! ");return(head);}/*链表为空*/
         while(p!=NULL)
           {
      sum1=sum1+p-yuwen;
      sum2=sum2+p-yingyu;
      sum3=sum3+p-shuxue;/*计算总分*/
      y=y+1;
                  ave1=sum1/y;
                  ave2=sum2/y;
                  ave3=sum3/y;/*计算平均分*/
      p=p-next;/*使p指向下一个结点*/
            }
       printf("语文平均分是%.1f ",ave1);
       printf("英语平均分是%.1f ",ave2);
       printf("数学平均分是%.1f ",ave3);/*打印结果*/
               return(head); break;
    case 3:
     if(head==NULL)
              {printf(" 没有任何学生资料! ");return(head);}/*链表为空*/
         max=p-yuwen+p-yingyu+p-shuxue;
     while(in)
    {  
      i=i+1;
      sum1=p-yuwen+p-yingyu+p-shuxue;  /*计算个人总分*/
          if(maxsum1)
    max=sum1;
    p=p-next;
    }
     
     printf("总分最高分:%.1f",max);
     printf(" ");
     return(head); break;
   
    case 4: if(head==NULL)
       {printf(" 没有任何学生资料! ");return(head);}/*链表为空*/
        while(p!=NULL)
     {
         min=p-yuwen+p-yingyu+p-shuxue;
      while(p!=NULL)
      {sum2=p-yuwen+p-yingyu+p-shuxue;
  
     
      if(minsum2)
       min=sum2;
       p=p-next;
      }
     }
   
        printf("总分最低分:%.1f",min);
        printf(" ");
        return(head); break;
   
    default :printf("输入错误,请重试! ");
   }
   return(head);
   
   }
  /*==========================================================================*/
  /*==========================================================================*/save2311(score *p1)
  /*函数save2311,功能:保存学生的资料*/
  {
   FILE *fp;
   
   char filepn[20];/*用来存放文件保存路径以及文件名*/
   
   printf("请输入文件路径及文件名:");
   scanf("%s",filepn);
   if((fp=fopen(filepn,"w+"))==NULL)
   {
    printf("不能打开文件! ");
    return 0;
   }    fprintf(fp,"            考试成绩治理系统             ");
   fprintf(fp,"  作者:周纯钢 班级:  信息023   学号:11 ");
      fprintf(fp,"----------------------------------------- ");
   fprintf(fp,"学号 姓名 语文 英语 数学 ");
      fprintf(fp,"----------------------------------------- ");
   /*打印表格域*/
   while(p1!=NULL)
   {
   fprintf(fp,"%d %s %.1f %.1f %.1f ",p1-number,p1-name,p1-yuwen,p1-yingyu,p1-shuxue);
   
    p1=p1-next;/*下移一个结点*/
   
   }
   fclose(fp);
   printf("文件已经保存! ");
   return 0;
  }
  /*============================================================================*/
  /*============================================================================*/
   score *taxis2311(score *head)   
    /*定义排序函数。此函数带回一个指向链表头的指针*/
  { score *p,*max;
    int   i,j,x;
    float fen;
    char t[10];
    if(head==NULL)
    {printf(" 没有任何学生资料,请先建立链表! ");return(head);}/*链表为空*/
    max=p=head;
   
    for(i=0;i80;i++)
    printf("*");
      printf("1按学生学号排序 2按学生姓名排序 3按语文成绩排序 ");
      printf("4按英语成绩排序 5按数学成绩排序 ");
    for(i=0;i80;i++)
    printf("*");
   
      printf("请选择操作:");
      scanf("%d",&x);/*选择操作*/
      getchar();  switch(x) /*用switch语句实现功能选择*/
    {case 1 : 
                 for(i=1;in;i++)
                 {
               for(j=i+1;j=n;j++)
                   {
  
          max=p;
         p=p-next;
       
         if(max-numberp-number)
          {
          k=max-number;
          max-number=p-number;
          p-number=k;
           /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
         
          strcpy(t,max-name);
          strcpy(max-name,p-name);
          strcpy(p-name,t);
       /*交换前后结点中的姓名,使之与学号相匹配*/
          fen=max-yuwen;
          max-yuwen=p-yuwen;
          p-yuwen=fen;
                   /*交换前后结点中的语文成绩,使之与学号相匹配*/
        
          fen=max-yingyu;
          max-yingyu=p-yingyu;
          p-yingyu=fen;
      /*交换前后结点中的英语成绩,使之与学号相匹配*/
        
          fen=max-shuxue;
          max-shuxue=p-shuxue;
          p-shuxue=fen;
                  /*交换前后结点中的数学成绩,使之与学号相匹配*/
          }                 }
      max=head;p=head;/*重新使max,p指向链表头*/
               }
                  print2311(head);break;/*打印值排序后的链表内容*/   case 2 :   for(i=1;in;i++)
                  {
      for(j=i+1;j=n;j++)
                   {
       max=p;
          p=p-next;
        if(strcmp(max-name,p-name)0)/*strcmp=字符串比较函数*/
          {
         strcpy(t,max-name);/*strcpy=字符串复制函数*/
         strcpy(max-name,p-name);
         strcpy(p-name,t);
  
     /*交换前后结点中的姓名,使得姓名字符串的值大者移到后面的结点中*/  
         k=max-number;
         max-number=p-number;
         p-number=k;   /*交换前后结点中的学号值,使之与姓名相匹配*/    fen=max-yuwen;
         max-yuwen=p-yuwen;
         p-yuwen=fen;
      /*交换前后结点中的语文成绩,使之与姓名相匹配*/       fen=max-yingyu;
         max-yingyu=p-yingyu;
         p-yingyu=fen;
     /*交换前后结点中的英语成绩,使之与姓名相匹配*/       fen=max-shuxue;
         max-shuxue=p-shuxue;
         p-shuxue=fen;
     /*交换前后结点中的数学成绩,使之与姓名相匹配*/
          }
                   }
                    p=head;
              max=head;
                  }
                  print2311(head);
      break;   case 3 :     for(i=1;in;i++)
                  {for(j=i+1;j=n;j++)
                   {max=p;
        p=p-next;
        if(max-yuwenp-yuwen)
          {
         fen=max-yuwen;
            max-yuwen=p-yuwen;
            p-yuwen=fen;
   /*交换前后结点中的语文成绩,使得语文成绩高者移到后面的结点中*/
                      
         k=max-number;
        max-number=p-number;
        p-number=k;
    /*交换前后结点中的学号,使之与语文成绩相匹配*/                     strcpy(t,max-name);
        strcpy(max-name,p-name);
        strcpy(p-name,t);
    /*交换前后结点中的姓名,使之与语文成绩相匹配*/          fen=max-yingyu;
  
          max-yingyu=p-yingyu;
         p-yingyu=fen;
    /*交换前后结点中的英语成绩,使之与语文成绩相匹配*/       fen=max-shuxue;
         max-shuxue=p-shuxue;
         p-shuxue=fen;
      /*交换前后结点中的数学成绩,使之与语文成绩相匹配*/
          }
                   }
                    p=head;
              max=head;
                  }
                  print2311(head);
      break;   case 4 :      for(i=1;in;i++)
                  {for(j=i+1;j=n;j++)
                   {max=p;
        p=p-next;
        if(max-yingyup-yingyu)
          {
        fen=max-yingyu;
           max-yingyu=p-yingyu;
           p-yingyu=fen;
   /*交换前后结点中的英语成绩,使得英语成绩高者移到后面的结点中*/
       
        k=max-number;
        max-number=p-number;
        p-number=k;
   /*交换前后结点中的学号,使之与英语成绩相匹配*/         strcpy(t,max-name);
        strcpy(max-name,p-name);
        strcpy(p-name,t);
    /*交换前后结点中的姓名,使之与英语成绩相匹配*/         fen=max-yuwen;
        max-yuwen=p-yuwen;
        p-yuwen=fen;
   /*交换前后结点中的语文成绩,使之与英语成绩相匹配*/
           fen=max-shuxue;
        max-shuxue=p-shuxue;
        p-shuxue=fen;
   /*交换前后结点中的数学成绩,使之与英语成绩相匹配*/
          }
                   }
                    p=head;
              max=head;
                  }
  
                  print2311(head);
      break;   case 5 :      for(i=1;in;i++)
                  {for(j=i+1;j=n;j++)
                   {max=p;
        p=p-next;
        if(max-shuxuep-shuxue)
          {
        fen=max-shuxue;
           max-shuxue=p-shuxue;
           p-shuxue=fen; 
        /*交换前后结点中的数学成绩,使得数学成绩高者移到后面的结点中*/      k=max-number;
        max-number=p-number;
        p-number=k; 
        /*交换前后结点中的学号,使之与数学成绩相匹配*/         strcpy(t,max-name);
        strcpy(max-name,p-name);
        strcpy(p-name,t); 
        /*交换前后结点中的姓名,使之与数学成绩相匹配*/         fen=max-yuwen;
        max-yuwen=p-yuwen;
        p-yuwen=fen;
        /*交换前后结点中的语文成绩,使之与数学成绩相匹配*/
           fen=max-yingyu;
        max-yingyu=p-yingyu;
        p-yingyu=fen;
        /*交换前后结点中的英语成绩,使之与数学成绩相匹配*/
          }
       }
                    p=head;
              max=head;
                  }
                  print2311(head);
      break;  
     default :printf("输入错误,请重试! ");
    }
       return (0);} /*======================================================================================*/
  /*======================================================================================*/
  int menu2311(k)/*函数menu2311,功能:菜单选择界面*/
  {
   int i;
   printf(" 考试成绩治理系统 ");
   printf(" 作者:周纯钢  班级:信息023  学号:11 ");
      for(i=0;i80;i++)
           printf("*");
  
   printf("1输入学生的资料 2从文件调入资料 3查询学生的成绩 ");
  printf("4删除学生的资料 5追加学生的资料 6显示学生的成绩 "); 
  printf("7统计学生的成绩 8保存输入的资料 9对成绩进行排序 ");
  /*菜单选择界面*/ for(i=0;i80;i++)
      printf("*");
  printf("欢迎进入成绩治理系统,请选择您所要的操作(选择(0)退出):");
  scanf("%d",&k);/*选择操作*/
     getchar();
   
  return (k);}
  /*===============================================================================*/
  /*=====================================================================================*/
  main() /*主函数main,功能:通过调用creat,search,del,add,print,ststistics,save,taxis等函数,实现学生成绩查询系统功能*/
  {score *head=0,*stu=0;while(1)
  {k=menu2311(k);
  switch(k)/*用switch语句实现功能选择*/
  {case 1: head=creat2311();break;/*调用创建链表函数*/
   case 2: head=load2311(head);break;/*从文件调入记录函数*/
   case 3: head=search2311(head);break;/*调用成绩查询函数*/
   case 4: head=del2311(head); break;/*调用删除学生资料函数*/
   case 5: head=add2311(head,stu);break;/*调用追加学生资料函数*/
   case 6: print2311(head); break;/*调用显示学生资料函数*/
   case 7: statistics2311(head); break;/*调用统计函数*/
   case 8: save2311(head);break;/*调用保存函数*/
   case 9: taxis2311(head);break;/*调用排序函数*/ 
   case 0: exit(0);/*退出系统,返回主界面*/
   default: printf("输入错误,请重试! "); }
  }
  }
  /*====================================================================================*/
  
  

来源:http://www.tulaoshi.com/n/20160219/1626548.html

延伸阅读
标签: excel
Excel数据透视表分类求学生成绩平均值   期末统考结束后,教育局要求全市学生的成绩都汇总在如图1的同一个Excel工作表中,并要求求出各学校、各专业、各学科的平均分。 全市三个学校、每个学校都有六个专业、每个专业都有五门课、各专业人数不等,总计有1000余人,工作量巨大。但如果采用Excel数据透视表来完成的话,呵呵,就简...
标签: 办公软件
    上海中学国际部是上海市著名的几所国际学校之一,现有学生1200嗳恕S捎谘M耆扇⊙白甙嘀啤苯萄В銮谇榭龅谋ǜ嬗胪臣乒ぷ髂讯燃蟆K淙幻扛霭嘀魅魏腿慰卫鲜Χ疾斡肟记谛畔⒌氖占记谛畔⒌幕阕芎屯臣迫院芊乘觥?br     由于看到负责考勤汇总统计工作的老师用Excel制作考勤汇总...
大学生如何寻找实习机会?网上找工作,和同学一起参加学校招聘等等,下面给大家分享相关的内容,一起来看看吧。 大学生如何寻找实习机会一.常规方法 A. 关注网上实习讯息(这当然是琐碎又费神的事情) B. 投简历(肯定是要把简历做好啦,最好还是有个强人帮着改一下,理一下思路) C. 面试(请认认真真对待每一个面试,要么...
标签: 办公软件
对于各位老师而言,经常要做的一件工作是对学生成绩册中的成绩进行分类,以便做出成绩分析。比如将60分以下的标记为“不及格”,将60分以上80分以下的成绩标记为“良好”,而将80分以上的成绩标记为“优秀”,象这样的任务在Excel 中是很轻松就可以完成的。我们以Excel 2007为例。 一、自定义格式法 在Excel中,如果对成绩分类...
标签: 办公软件
一、前言 对于教师而言,经常需要用Excel进行学生成绩统计,会被一些常见问题难住。碰到的难题主要有:如何统计不同分数段人数、如何在保持学号不变前提下进行排名、如何将百分制转换成不同分数段与如何用红色显示不及格的分数等,本文着重对这些问题的解决方法与技巧加以分析和讨论。 本文假设读者已对Excel的基本操作已经有一定基...

经验教程

929

收藏

81
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部