sortscor.c

来自「设计一个学生成绩管理系统」· C语言 代码 · 共 74 行

C
74
字号
#include"jinhe.h"
void sort_with_score()
{ FILE *fp;
  int i,j,k,flag=0;
  extern char filename[15];
  struct student stu[M],temp;
  if((fp=fopen(filename,"rb"))==NULL)
  { clrscr();
    gotoxy(15,15);
    printf("Cannot open file. Press any key return.");
    getch();
    return;
  }
  while(flag!=1)
  { for(i=0;;i++)
    { fread(&stu[i],LEN,1,fp);
      if(stu[i].no==0) { flag=1;break;}
      k=i;
      for(j=i+1;;j++)
      { fread(&stu[j],LEN,1,fp);
	if(stu[j].no==0) break;
	if(stu[j].average>stu[k].average) k=j;
	temp.no=stu[i].no;
	stu[i].no=stu[k].no;
	stu[k].no=temp.no;
	strcpy(temp.name,stu[i].name);
	strcpy(stu[i].name,stu[k].name);
	strcpy(stu[k].name,temp.name);
	strcpy(temp.sex,stu[i].sex);
	strcpy(stu[i].sex,stu[k].sex);
	strcpy(stu[k].sex,temp.sex);
	temp.english=stu[i].english;
	stu[i].english=stu[k].english;
	stu[k].english=temp.english;
	temp.computer=stu[i].computer;
	stu[i].computer=stu[k].computer;
	stu[k].computer=temp.computer;
	temp.maths=stu[i].maths;
	stu[i].maths=stu[k].maths;
	stu[k].maths=temp.maths;
	temp.c_programe=stu[i].c_programe;
	stu[i].c_programe=stu[k].c_programe;
	stu[k].c_programe=temp.c_programe;
	temp.average=stu[i].average;
	stu[i].average=stu[k].average;
	stu[k].average=temp.average;
      }
    }
  }
  fclose(fp);
 if((fp=fopen(filename,"wb"))==NULL)
  { clrscr();
    gotoxy(15,15);
    printf("Cannot open file. Press any key return.");
    getch();
    return;
  }
 for(i=0;;i++)
   { if(fwrite(&stu[i],LEN,1,fp)!=1)
     { clrscr();
       gotoxy(15,15);
       printf("file write error.Press any key return.");
       getch();
       return;
     }
     if(stu[i].no==0) break;
   }
  fclose(fp);
  clrscr();
  gotoxy(5,15);
  printf("Sort success! Press any key to watch the list! ");
  getch();
  list_all();
}

⌨️ 快捷键说明

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