由于文章限定字数,前几张照片只能以图片形式展示
for(i=0;i<m;i++)
{
printf(FORMAT,DATA);
}
}
void menu()
{
system("cls");
printf("\n\n\n\n");
printf("\t\t|---------------学生成绩管理系统---------------|\n");
printf("\t\t|\t\t\t\t\t |\n");
printf("\t\t|\t\t 1. 录入学生成绩\t |\n");
printf("\t\t|\t\t 2. 查找学生信息\t |\n");
printf("\t\t|\t\t 3. 删除学生信息\t |\n");
printf("\t\t|\t\t 4. 修改学生信息\t |\n");
printf("\t\t|\t\t 5. 按第一门课程分数排序 |\n");
printf("\t\t|\t\t 6. 按第二门课程分数排序 |\n");
printf("\t\t|\t\t 7. 按第三门课程分数排序 |\n");
printf("\t\t|\t\t 8. 按平均等级排序\t |\n");
printf("\t\t|\t\t 9. 显示所有学生信息\t |\n");
printf("\t\t|\t\t 0. 退出系统\t\t |\n");
printf("\t\t|\t\t\t\t\t |\n");
printf("\t\t|----------------------------------------------|\n\n");
printf("\t\t\t请选择(0-9):");
}
void order1()//按第一门课程分数排序
{
FILE *fp;
struct student t;
int i=0,j=0,m=0;
if((fp=fopen("data1.txt","r+"))==NULL)
{
printf("文件不存在!\n");
return;
}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("文件中没有记录!\n");
return;
}
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("文件不存在!\n");
return;
}
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(stu[i].a<stu[j].a)
{
t=stu[i];stu[i]=stu[j];stu[j]=t;
}
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("文件不存在!\n");
return;
}
for(i=0;i<m;i++)
if(fwrite(&stu[i] ,LEN,1,fp)!=1)
{
printf("%s 不能保存文件!\n");
getch();
}
fclose(fp);
printf("保存成功\n请返回选项8查看排名\n");
}
void order2()//按第二门课程分数排序
{
FILE *fp;
struct student t;
int i=0,j=0,m=0;
if((fp=fopen("data1.txt","r+"))==NULL)
{
printf("文件不存在!\n");
return;
}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("文件中没有记录!\n");
return;
}
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("文件不存在!\n");
return;
}
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(stu[i].b<stu[j].b)
{
t=stu[i];stu[i]=stu[j];stu[j]=t;
}
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("文件不存在!\n");
return;
}
for(i=0;i<m;i++)
if(fwrite(&stu[i],LEN,1,fp)!=1)
{
printf("%s 不能保存文件!\n");
getch();
}
fclose(fp);
printf("保存成功\n请返回选项8查看排名\n");
}
void order3()//按第三门课程分数排序
{
FILE *fp;
struct student t;
int i=0,j=0,m=0;
if((fp=fopen("data1.txt","r+"))==NULL)
{
printf("文件不存在!\n");
return;
}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("文件中没有记录!\n");
return;
}
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("文件不存在!\n");
return;
}
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(stu[i].c<stu[j].c)
{
t=stu[i];stu[i]=stu[j];stu[j]=t;
}
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("文件不存在!\n");
return;
}
for(i=0;i<m;i++)
if(fwrite(&stu[i],LEN,1,fp)!=1)
{
printf("%s 不能保存文件!\n");
getch();
}
fclose(fp);
printf("保存成功\n请返回选项8查看排名\n");
}
void order4()//按平均等级排序
{
FILE *fp;
struct student t;
int i=0,j=0,m=0;
if((fp=fopen("data1.txt","r+"))==NULL)
{
printf("文件不存在!\n");
return;
}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("文件中没有记录!\n");
return;
}
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("文件不存在!\n");
return;
}
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(stu[i].aver<stu[j].aver)
{
t=stu[i];stu[i]=stu[j];stu[j]=t;
}
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("文件不存在!\n");
return;
}
for(i=0;i<m;i++)
if(fwrite(&stu[i] ,LEN,1,fp)!=1)
{
printf("%s 不能保存文件!\n");
getch();
}
fclose(fp);
printf("保存成功\n请返回选项8查看排名\n");
}
void del()
{
FILE *fp;
int snum,i,j,m=0,n=0;
char ch[2];
if((fp=fopen("data1.txt","r+"))==NULL)
{
printf("文件不存在!\n");
return;
}
while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++;
fclose(fp);
if(m==0)
{
printf("文件中没有记录!\n");
return;
}
printf("请输入学生学号");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==stu[i].num)
{
printf("找到了这条记录,是否删除?(y/n)");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
for(j=i;j<m;j++)
stu[j]=stu[j+1];
m--;
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("文件不存在\n");
return;
}
for(j=0;j<m;j++)
if(fwrite(&stu[j] ,LEN,1,fp)!=1)
{
printf("can not save!\n");
getch();
}
fclose(fp);
printf("删除成功!\n");
}
else
{
printf("找到了记录,选择不删除!");
}
break;
}
else
{
n++;
}
if(n==m)
printf("没有找到记录!\n");
}
void search()//查找学生信息
{
FILE *fp;
int snum,i,m=0;
if((fp=fopen("data1.txt","rb"))==NULL)
{
printf("文件不存在!\n");
return;
}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("文件中没有记录!\n");
return;
}
printf("请输入学号:");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==stu[i].num)
{
printf("班级 学号 姓名 课程一 课程二 课程三 课程一等级 课程二等级 课程三等级 三门课程的平均等级\t\n");
printf(FORMAT,DATA);
break;
}
if(i==m) printf("没有找到这名学生!\n");
}
void modify()//更改学生信息
{
FILE *fp;
struct student t;
int i=0,j=0,m=0,snum;
if((fp=fopen("data1.txt","r+"))==NULL)
{
printf("文件不存在!\n");
return;
}
while(!feof(fp))
if(fread(&stu[m] ,LEN,1,fp)==1)
m++;
if(m==0)
{
printf("文件中没有记录!\n");
fclose(fp);
return;
}
show();
printf("请输入要修改的学生学号: ");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==stu[i].num)
{
printf("找到了这名学生,可以修改他的信息!\n");
printf("姓名:");
scanf("%s",stu[i].name);
printf("班级:");
scanf("%d",&stu[m].Class);
printf("第一门科目:");
scanf("%ld",&stu[i].a);
printf("第二门科目:");
scanf("%lf",&stu[i].b);
printf("第三门科目:");
scanf("%lf",&stu[i].c);
printf("修改成功!");
if(stu[m].a>=1&&stu[m].a<=8)
stu[m].level1=1;
else
stu[m].level1=(int)log10(stu[m].a+1);
if(stu[m].b>=1&&stu[m].b<=8)
stu[m].level2=1;
else
stu[m].level2=(int)log10(stu[m].b+1);
if(stu[m].c>=1&&stu[m].c<=8)
stu[m].level3=1;
else
stu[m].level3=(int)log10(stu[m].c+1);
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("can not open\n");
return;
}
for(j=0;j<m;j++)
if(fwrite(&stu[j] ,LEN,1,fp)!=1)
{
printf("can not save!");
getch();
}
fclose(fp);
break;
}
if(i==m)
printf("没有找到这名学生!\n");
}
不知道是哪里多打了一个换行,输出学生信息时总多出一个空行