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

📄 成绩查询系统2.txt

📁 大一时的c语言的课程设计
💻 TXT
📖 第 1 页 / 共 2 页
字号:
              case 3:printf("你要修改1.英语成绩\t2.数学成绩\t3.计算机成绩");
                     printf("请选择:");
                     scanf("%d",&x);
                     if(x==1) {printf("输入正确的英语成绩:");
                               scanf("%f",&fen);
                               p1->english=fen;
                                }
                     else if(x==2) {printf("输入正确的数学成绩:");
                               scanf("%f",&fen);
                               p1->math=fen;
                                }
                     else if(x==3) {printf("输入正确的计算机成绩:");
                               scanf("%f",&fen);
                               p1->computer=fen;
                                }
              }
              p1->sum=p1->english+p1->math+p1->computer;
              p1->average=p1->sum/3;
             }
             else printf("%s不存在此学生!\n",na);
             printf("输入要查询的学生的学号,");
             scanf("%s",na);
            }
            printf("已经退出了!\n");
        }
else if(i==0) printf("推出!\n");
return(head);
}

void taxi(files *head)    /*定义排序函数。此函数带回一个指向链表头的指针*/
{files *p,*max;
int i,j,x;
long a;
float fen,num;
char na[20];
if(head==NULL)  printf("\n没有任何学生资料,请先建立链表!\n"); /*链表为空*/
  max=p=head;
  for(i=0;i<80;i++)
  printf("=");
  printf("1.按英语成绩升序排序\t2.按数学成绩升序排序\t3.按计算机升序成绩排序\n");
  printf("4.按英语成绩降序排序\t5.按数学成绩降序排序\t6.按计算机降序成绩排序\n");
  for(i=0;i<80;i++)
   printf("=");
  printf("请选择操作:");
  scanf("%d",&x);/*选择操作*/
  switch(x) 
  {case 1 :for(i=1;i<n;i++)
             {for(j=i+1;j<=n;j++)
               {max=p;
                p=p->next;
                if(max->english>p->english) /*按英语成绩升序排序*/
                 {num=max->number;
                  max->number=p->number;
                  p->number=num;  /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
                  strcpy(na,max->name);
                  strcpy(max->name,p->name);
                  strcpy(p->name,na);  /*交换前后结点中的姓名,使之与学号相匹配*/
                  fen=max->english;
                  max->english=p->english;
                  p->english=fen;  /*交换前后结点中的英语成绩,使之与学号相匹配*/
                  fen=max->math;
                  max->math=p->math;
                  p->math=fen;  /*交换前后结点中的数学成绩,使之与学号相匹配*/
                  fen=max->computer;
                  max->computer=p->computer;
                  p->computer=fen;   /*交换前后结点中的计算机成绩,使之与学号相匹配*/
                  fen=max->computer;
                  max->computer=p->computer;
                  p->computer=fen;   /*交换前后结点中的总成绩,使之与学号相匹配*/
                  fen=max->sum;
                  max->sum=p->sum;
                  p->sum=fen;   /*交换前后结点中的平均成绩,使之与学号相匹配*/
                  a=max->rank;
                  max->rank=p->rank;
                  p->rank=a;   /*交换前后结点中的名次,使之与学号相匹配*/
                 }
               }
              max=head;
              p=head;/*重新使max,p指向链表头*/
             }
            break;
    case 2 :for(i=1;i<n;i++)
             {for(j=i+1;j<=n;j++)
               {max=p;
                p=p->next;
                if(max->math>p->math) /*按数学成绩升序排序*/
                  {num=max->number;
                  max->number=p->number;
                  p->number=num;  
                  strcpy(na,max->name);
                  strcpy(max->name,p->name);
                  strcpy(p->name,na);  
                  fen=max->english;
                  max->english=p->english;
                  p->english=fen;  
                  fen=max->math;
                  max->math=p->math;
                  p->math=fen;  
                  fen=max->computer;
                  max->computer=p->computer;
                  p->computer=fen;   
                  fen=max->computer;
                  max->computer=p->computer;
                  p->computer=fen;   
                  fen=max->sum;
                  max->sum=p->sum;
                  p->sum=fen;   
                  a=max->rank;
                  max->rank=p->rank;
                  p->rank=a;  
                 }
                  }
               p=head;
               max=head;
            }
            break;
     case 3 :for(i=1;i<n;i++)
              {for(j=i+1;j<=n;j++)
                {max=p;
                 p=p->next;
                 if(max->computer>p->computer)  /*按计算机成绩升序排序*/
                 {num=max->number;
                  max->number=p->number;
                  p->number=num;  
                  strcpy(na,max->name);
                  strcpy(max->name,p->name);
                  strcpy(p->name,na); 
                  fen=max->english;
                  max->english=p->english;
                  p->english=fen;  
                  fen=max->math;
                  max->math=p->math;
                  p->math=fen; 
                  fen=max->computer;
                  max->computer=p->computer;
                  p->computer=fen;  
                  fen=max->computer;
                  max->computer=p->computer;
                  p->computer=fen;  
                  fen=max->sum;
                  max->sum=p->sum;
                  p->sum=fen;  
                  a=max->rank;
                  max->rank=p->rank;
                  p->rank=a;  
                 }
                }
             p=head;
             max=head;
             }
            break;
    case 4:for(i=1;i<n;i++)
            {for(j=i+1;j<=n;j++)
                {max=p;
                 p=p->next;
                 if(max->english<p->english)  /*按英语成绩降序排序*/
                 {num=max->number;
                  max->number=p->number;
                  p->number=num;  
                  strcpy(na,max->name);
                  strcpy(max->name,p->name);
                  strcpy(p->name,na); 
                  fen=max->english;
                  max->english=p->english;
                  p->english=fen;  
                  fen=max->math;
                  max->math=p->math;
                  p->math=fen; 
                  fen=max->computer;
                  max->computer=p->computer;
                  p->computer=fen;  
                  fen=max->computer;
                  max->computer=p->computer;
                  p->computer=fen;  
                  fen=max->sum;
                  max->sum=p->sum;
                  p->sum=fen;  
                  a=max->rank;
                  max->rank=p->rank;
                  p->rank=a;  
                 }
                }
             p=head;
             max=head;
           }
          break;
    case 5:for(i=1;i<n;i++)
            {for(j=i+1;j<=n;j++)
                {max=p;
                 p=p->next;
                 if(max->math<p->math)  /*按数学成绩降序排序*/
                 {num=max->number;
                  max->number=p->number;
                  p->number=num;  
                  strcpy(na,max->name);
                  strcpy(max->name,p->name);
                  strcpy(p->name,na); 
                  fen=max->english;
                  max->english=p->english;
                  p->english=fen;  
                  fen=max->math;
                  max->math=p->math;
                  p->math=fen; 
                  fen=max->computer;
                  max->computer=p->computer;
                  p->computer=fen;  
                  fen=max->computer;
                  max->computer=p->computer;
                  p->computer=fen;  
                  fen=max->sum;
                  max->sum=p->sum;
                  p->sum=fen;  
                  a=max->rank;
                  max->rank=p->rank;
                  p->rank=a;  
                 }
                }
             p=head;
             max=head;
           }
           break;
    case 6:for(i=1;i<n;i++)
            {for(j=i+1;j<=n;j++)
                {max=p;
                 p=p->next;
                 if(max->computer<p->computer)  /*按计算机成绩降序排序*/
                 {num=max->number;
                  max->number=p->number;
                  p->number=num;  
                  strcpy(na,max->name);
                  strcpy(max->name,p->name);
                  strcpy(p->name,na); 
                  fen=max->english;
                  max->english=p->english;
                  p->english=fen;  
                  fen=max->math;
                  max->math=p->math;
                  p->math=fen; 
                  fen=max->computer;
                  max->computer=p->computer;
                  p->computer=fen;  
                  fen=max->computer;
                  max->computer=p->computer;
                  p->computer=fen;  
                  fen=max->sum;
                  max->sum=p->sum;
                  p->sum=fen;  
                  a=max->rank;
                  max->rank=p->rank;
                  p->rank=a;  
                 }
                }
             p=head;
             max=head;
           }
           break;
     }
     print(head);
}

void stat(files *head)    /*定义统计函数*/
{files *p1;
int b=0,i;
long a;
float f1,f2;
p1=head;
printf("选择你要统计的课程:1.英语\t2.数学\t3.计算机\n");
scanf("%d",&a);
if(a==1) {printf("输入你要统计的分数段的起,止分数:");
           scanf("%f%f",&f1,&f2);
           for(i=0;i<n;i++)
            {if(p1->english>f1&&p1->english<f2) b++;
             if(p1->next!=NULL) p1=p1->next;
            }
           printf("英语成绩在%f~%f之间的人数为%d",f1,f2,b);
            }        
else if(a==2) {printf("输入你要统计的分数段的起,止分数:");
               scanf("%f%F",&f1,&f2);
               for(i=0;i<n;i++)
                {if(p1->math>f1&&p1->math<f2) b++;
                 if(p1->next!=NULL) p1=p1->next;
                }
               printf("数学成绩在%f~%f之间的人数为%d",f1,f2,b);
                }    
else if(a==2) {printf("输入你要统计的分数段的起,止分数:");
                scanf("%f%f",&f1,&f2);
                for(i=0;i<n;i++)
                {if(p1->computer>f1&&p1->computer<f2) b++;
                     if(p1->next!=NULL) p1=p1->next;
                }
                printf("计算机成绩在%f~%f之间的人数为%d",f1,f2,b);
                }    
else printf("输入错误!");
}

void save(files *head)  /*函数save功能:保存学生的资料*/
{FILE *fp;
files *p1,*max;
float fen,num;
char na[20];
int i,j;
long a=1;
for(i=1;i<n;i++)
    {for(j=i+1;j<=n;j++)
        {p1=head;
         max=p1;
         p1=p1->next;
         if(max->sum<p1->sum) 
            {num=max->number;
             max->number=p1->number;
             p1->number=num;  
             strcpy(na,max->name);
             strcpy(max->name,p1->name);
             strcpy(p1->name,na); 
             fen=max->english;
             max->english=p1->english;
             p1->english=fen;  
             fen=max->math;
             max->math=p1->math;
             p1->math=fen; 
             fen=max->computer;
             max->computer=p1->computer;
             p1->computer=fen;  
             fen=max->computer;
             max->computer=p1->computer;
             p1->computer=fen;  
             fen=max->sum;
             max->sum=p1->sum;
             p1->sum=fen;  
            }
        }


    }
p1=head;
while(p1!=NULL)
{p1->rank=a++;
  p1=p1->next; /*下移一个结点*/
}
if((fp=fopen("stu.txt","w"))==NULL) printf("不能打开文件!\n");
while(p1!=NULL)
{fprintf(fp,"%f%s%f%f%f%f%f%ld",p1->number,p1->name,p1->english,p1->math,p1->computer,p1->sum,p1->average,p1->rank);
  p1=p1->next; /*下移一个结点*/
}
fclose(fp);
printf("文件已经保存!\n");

}

main()
{files *head=0,*stu=0;
int i,a;
while(1)
{
  printf("\t\t\t\t学生成绩管理系统\n                          学号:3106005748 姓名:蓝天然 \n                             please give high mark\n");
  for(i=0;i<80;i++)
    printf("=");
  printf("\n");
  for(i=0;i<80;i++)
    printf("=");
  printf("1.信息创建\t\t\t2.信息维护\t\t\t3.信息查询\n");
  printf("4.信息统计\t\t\t5.信息排序\t\t\t0.退出系统\n");
  printf("请选择你要进行的操作:");

  scanf("%d",&k);
  if(k==1){head=create();save(head);getchar();}
  else if(k==2){system("cls");
                printf("你可进行的操作:1.增加学生信息\t\t2.删除学生信息\t\t3.修改学生信息\t\t4.显示所有信息\n");
                printf("请选择你进行的操作:");
                scanf("%d",&a);
                head=load(head);
                switch(a)
                    {case 1:head=add(head,stu);save(head);break;
                     case 2:head=del(head);save(head);break;
                     case 3:head=correct(head);save(head);break;
                     case 4:print(head);break;
                     default:printf("错误选择\n");
                    }
                }
  else if(k==3){system("cls");search(head);}
  else if(k==4){system("cls");stat(head);}  
  else if(k==5){system("cls");taxi(head);} 
  else if(k==0){exit(0);}
  else printf("输入错误,请重试\n");
}
}

⌨️ 快捷键说明

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