学生成绩管理系统实习

大海诺

大海诺

2016-02-19 21:34

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。
#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("输入错误,请重试! "); }
  }
  }
  /*====================================================================================*/
  
  
展开更多 50%)
分享

猜你喜欢

学生成绩管理系统实习

编程语言 网络编程
学生成绩管理系统实习

EXCEL进行学生成绩管理

办公软件
EXCEL进行学生成绩管理

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

利用EXCEL进行学生成绩管理

办公软件
利用EXCEL进行学生成绩管理

吃早餐的学生成绩好

早餐 学生 健康常识
吃早餐的学生成绩好

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Excel怎么自动统计学生成绩?

excel
Excel怎么自动统计学生成绩?

如何制作学生成绩登记表

电脑入门
如何制作学生成绩登记表

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Html:表单查询显示翻页等不可用查询按钮的name值不能为su

Html:表单查询显示翻页等不可用查询按钮的name值不能为su

在C语言中以编程的方式获取函数名

在C语言中以编程的方式获取函数名
下拉加载更多内容 ↓