max=p=head;
for(i=0;i<80;i++) printf(\
printf(\按学生学号排序\\t2按学生姓名排序\\t3按语文成绩排序\\n\ printf(\按数学成绩排序\\t5按英语成绩排序\\t\\n\ for(i=0;i<80;i++) printf(\
printf(\请选择操作:\
scanf(\ /*选择操作*/ getchar();
switch(x) /*用switch语句实现功能选择*/ {
case 1 :
for(i=1;i for(j=i+1;j<=n;j++) { max=p; p=p->next; if(max->number>p->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->chinese; max->chinese=p->chinese; p->chinese=fen; /*交换前后结点中的语文成绩,使之与学号相匹配*/ fen=max->mathmatic; max->mathmatic=p->mathmatic; p->mathmatic=fen; /*交换前后结点中的数学成绩,使之与学号相匹配*/ fen=max->english; max->english=p->english; p->english=fen; /*交换前后结点中的英语成绩,使之与学号相匹配*/ } 中*/ } max=head; p=head; /*重新使max,p指向链表头*/ } print(head); break; /*打印值排序后的链表内容*/ case 2 : for(i=1;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->chinese; max->chinese=p->chinese; p->chinese=fen; /*交换前后结点中的语文成绩,使之与姓名相匹配*/ fen=max->mathmatic; max->mathmatic=p->mathmatic; p->mathmatic=fen; /*交换前后结点中的数学成绩,使之与姓名相匹配*/ fen=max->english; max->english=p->english; p->english=fen; /*交换前后结点中的英语成绩,使之与姓名相匹配*/ } } p=head; max=head; } print(head); break; case 3 : for(i=1;i for(j=i+1;j<=n;j++) { max=p; p=p->next; if(max->chinese>p->chinese) { fen=max->chinese; max->chinese=p->chinese; p->chinese=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->mathmatic; max->mathmatic=p->mathmatic; p->mathmatic=fen; /*交换前后结点中的数学成绩,使之与语文成绩相匹配*/ fen=max->english; max->english=p->english; p->english=fen; /*交换前后结点中的英语成绩,使之与语文成绩相匹配*/ } } p=head; max=head; } print(head); break; case 4 : for(i=1;i for(j=i+1;j<=n;j++) { max=p; p=p->next; if(max->mathmatic>p->mathmatic) { fen=max->mathmatic; max->mathmatic=p->mathmatic; p->mathmatic=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->chinese; max->chinese=p->chinese; p->chinese=fen; /*交换前后结点中的语文成绩,使之与数学成绩相匹配*/ fen=max->english; max->english=p->english; p->english=fen; /*交换前后结点中的英语成绩,使之与数学成绩相匹配*/ } } p=head; max=head; } print(head); break; case 5 : for(i=1;i for(j=i+1;j<=n;j++) { max=p; p=p->next; if(max->english>p->english) { fen=max->english; max->english=p->english; p->english=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->chinese; max->chinese=p->chinese; p->chinese=fen; /*交换前后结点中的语文成绩,使之与英语成绩相匹配*/ fen=max->mathmatic; max->mathmatic=p->mathmatic; p->mathmatic=fen; /*交换前后结点中的数学成绩,使之与英语成绩相匹配*/ } } p=head; max=head; } print(head); break; default : printf(\输入错误,请重试! \\n\ } return (0); } /*==========保存数据==========*/ /*函数save,功能:保存学生的资料*/ void save(score *p1) { FILE *fp; char filepn[20];/*用来存放文件保存路径以及文件名*/ printf(\请输入文件路径及文件名:\ scanf(\ if((fp=fopen(filepn,\ { printf(\不能打开文件!\\n\ exit(1); } fprintf(fp,\学生成绩管理系统 \\n\ fprintf(fp,\