void shuchu(SqList &s,FILE *fp){
int i;
if((fp=fopen("input.dat","w"))==NULL){
printf("不能打开文件!\n");
return ;
}
//挨个遍历加入文件
for(i=0;i<s.length;i++){
fprintf(fp,"学号:%s\t姓名:%s\t数学成绩:%.1lf\t英语成绩:%.1lf\t计算机成绩:%.1lf\t平均分:%.1lf\n",
s.elem[i].number,s.elem[i].name,s.elem[i].mathscore,
s.elem[i].englishscore, s.elem[i].computerscore, s.elem[i].averscore);
}
fclose(fp);//关闭文件,释放缓存
}
//对每个科目的成绩进行排序 ,从大到小
//数学
void mathsort(SqList &s,FILE *fp11){
student temp;
int i,j;
if((fp11=fopen("数学成绩排序.dat","w"))==NULL){
printf("不能打开文件!\n");
return ;
}
for(i=0;i<s.length;i++){
s.elem[i].averscore=(s.elem[i].computerscore+s.elem[i].englishscore+s.elem[i].mathscore)/3;
}
for(i=0;i<s.length-1;i++){
for(j=0;j<s.length-1-i;j++){
if(s.elem[j].mathscore<s.elem[j+1].mathscore){
temp=s.elem[j];
s.elem[j]=s.elem[j+1];
s.elem[j+1]=temp;
}
}
}
printf("数学排序:\n");
fprintf(fp11,"数学排序:\n");
for(i=0;i<s.length;i++){
fprintf(fp11,"学号:%s\t姓名:%s\t数学成绩:%.1lf\t\n",
s.elem[i].number,s.elem[i].name,s.elem[i].mathscore);
printf("学号:%s\t姓名:%s\t数学成绩:%.1lf\t\n",
s.elem[i].number,s.elem[i].name,s.elem[i].mathscore);
}
fclose(fp11);
}
//英语
void englishsort(SqList &s,FILE *fp12){
student temp;
int i,j;
if((fp12=fopen("英语成绩排序.dat","w"))==NULL){
printf("不能打开文件!\n");
return ;
}
for(i=0;i<s.length;i++){
s.elem[i].averscore=(s.elem[i].computerscore+s.elem[i].englishscore+s.elem[i].mathscore)/3;
}
for(i=0;i<s.length-1;i++){
for(j=0;j<s.length-1-i;j++){
if(s.elem[j].englishscore<s.elem[j+1].englishscore){
temp=s.elem[j];
s.elem[j]=s.elem[j+1];
s.elem[j+1]=temp;
}
}
}
printf("英语排序:\n");
fprintf(fp12,"英语排序\n");
for(i=0;i<s.length;i++){
fprintf(fp12,"学号:%s\t姓名:%s\t英语成绩:%.1lf\t\n",
s.elem[i].number,s.elem[i].name,s.elem[i].englishscore);
printf("学号:%s\t姓名:%s\t数学成绩:%.1lf\t英语成绩:%.1lf\t\n",
s.elem[i].number,s.elem[i].name,s.elem[i].mathscore,
s.elem[i].englishscore, s.elem[i].computerscore, s.elem[i].averscore);
}
fclose(fp12);
}
//计算机
void computersort(SqList &s,FILE *fp13){
student temp;
int i,j;
if((fp13=fopen("计算机成绩排序.dat","w"))==NULL){
printf("不能打开文件!\n");
return ;
}
for(i=0;i<s.length;i++){
s.elem[i].averscore=(s.elem[i].computerscore+s.elem[i].englishscore+s.elem[i].mathscore)/3;
}
for(i=0;i<s.length-1;i++){
for(j=0;j<s.length-1-i;j++){
if(s.elem[j].computerscore<s.elem[j+1].computerscore){
temp=s.elem[j];
s.elem[j]=s.elem[j+1];
s.elem[j+1]=temp;
}
}
}
printf("计算机排序:\n");
fprintf(fp13,"计算机排序:\n");
for(i=0;i<s.length;i++){
fprintf(fp13,"学号:%s\t姓名:%s\t计算机成绩:%.1lf\t\n",
s.elem[i].number,s.elem[i].name, s.elem[i].computerscore);
printf("学号:%s\t姓名:%s\t计算机成绩:%.1lf\n",
s.elem[i].number,s.elem[i].name, s.elem[i].computerscore);
}
fclose(fp13);
}
//定义函数average,向文件输入学生的各科平均成绩
void average(SqList s,FILE *fp2)
{
int i,j;
student temp;
if((fp2=fopen("平均成绩排序.dat","w"))==NULL){
printf("不能打开文件!");
return ;
}
for(i=0;i<s.length;i++){
s.elem[i].averscore=(s.elem[i].computerscore+s.elem[i].englishscore+s.elem[i].mathscore)/3;
}
for(i=0;i<s.length-1;i++){
for(j=0;j<s.length-1-i;j++){
if(s.elem[j].averscore<s.elem[j+1].averscore){
temp=s.elem[j];
s.elem[j]=s.elem[j+1];
s.elem[j+1]=temp;
}
}
}
printf("按平均分排序:\n");
fprintf(fp2,"按平均分排序:\n");
for(i=0;i<s.length;i++){
fprintf(fp2,"学号:%s\t姓名:%s\t数学成绩:%.1lf\t英语成绩:%.1lf\t计算机成绩:%.1lf\t平均分:%.1lf\n",
s.elem[i].number,s.elem[i].name,s.elem[i].mathscore,
s.elem[i].englishscore, s.elem[i].computerscore, s.elem[i].averscore);
printf("学号:%s\t姓名:%s\t数学成绩:%.1lf\t英语成绩:%.1lf\t计算机成绩:%.1lf\t平均分:%.1lf\n",
s.elem[i].number,s.elem[i].name,s.elem[i].mathscore,
s.elem[i].englishscore, s.elem[i].computerscore, s.elem[i].averscore);
}
fclose(fp2);
}