c语言程序设计学生管理系统.docx
《c语言程序设计学生管理系统.docx》由会员分享,可在线阅读,更多相关《c语言程序设计学生管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
c语言程序设计学生管理系统
/*学生成绩管理系统
数据库的数据项主要数据包括:
学号、姓名、年级、专业、成绩1、成绩2、成绩3、平均
成绩、总成绩。
要求具有以下功能:
(1)添加、删除任意个记录。
(2)修改任意个记录。
(3)显示、保存记录。
(4)排序功能:
打开学生数据库,计算每个学生的平均成绩和总成绩,用冒泡法或选择排
序法将平均成绩和总成绩排序后生成两个新文件(从大到小),
存盘并显示这两个文件的全部记录。
(5)查询功能:
打开总成绩排序文件,用折半查找法统计出给定分数的人数并显示。
要求:
(1)设计一个主函数和多个子函数,每个子函数完成一个相对独立的子功能。
(2)程序运行时,首先进行口令检查,再显示菜单。
并能根据菜单调用相应的函数功能。
口令程序段的功能要求:
《1》提示用户输入一个口令。
《2》用户输入口令后,若口令对,则提示用户通过,可执行后续程序;否则不通过。
《3》可对用户的口令输入进行次数限制(如:
重复输入3次都不对),则自动退出系
统。
*/
#include
structstudent
{
intnum;
charname[10];
intgrade;
charmajor[10];
floatscore_1,score_2,score_3,aver,total;
structstudent*next;
};
structstudent*creat(void);
structstudent*add(void);
structstudent*del(intnum);
structstudent*alter();
voidsave(structstudent*head);
voidread();
voidtotalsort(structstudent*head);
voidaversort(structstudent*head);
voidBfindsort();
intall=0;
voidmain()
inti,n,m,num;
charord[10]=student,ord_1[10];
structstudent*p;
for(i=0;i<=3;i++)
if(i==3)
exit(0);
牰湩晴尨请第%d次输入进入系统的指令:
i+1);
scanf(%s,ord_1);
if(strcmp(ord,ord_1)!
=0)
牰湩晴尨输入的指令有误请重新输入。
\n);
if(strcmp(ord,ord_1)==0)
break;
}
p=NULL;
潬灯?
瀺楲瑮?
输入系统的功能:
\n0、建立一个数据库;\n1、添加与保存学生数据;\n2、删
除与保存学生数据;\n3、修改与保存学生数据;\n4、显示数据库的记录;\n5、将数据进
行排序;\n6、查询指定成绩的人数:
);
loop:
scanf(%d,&n);
if(n<0||n>6)
printf(\
输入的选择有误请重新输入:
gotoloop;
if(n==2)
牰湩晴尨输入删除学生数据的学号:
scanf(%d,&num);
switch(n)
case0:
p=creat();save(p);read();break;
case1:
p=add();save(p);read();break;
case2:
p=del(num);save(p);read();break;
case3:
p=alter();save(p);read();break;
case4:
read();break;
case5:
牰湩晴尨输入选择排序的功能1、根据平均成绩;2、根据总成绩:
loop_1:
scanf(%d,&m);
if(m<1||m>2)
loop_1;goto
switch(m)
aversort(p);break;
totalsort(p);break;
}break;
case6:
Bfindsort();break;
loop_5:
牰湩晴尨输入你要进行的步骤:
1、返回上一菜单菜单;2、退出程序。
if(n<1||n>2)
牰湩晴尨输入的选择有误,请重新输入:
gotoloop_5;
gotoloop_2;break;
structstudent*creat(void)
inti,n;
structstudent*head,*p,*q,*tail;
牰湩晴尨输入学生的个数:
head=NULL;
for(i=0;i{all++;p=(structstudent*)malloc(sizeof(structstudent));if(head==NULL)head=p;elsetail->next=p;tail=p;p->next=NULL;q=head;牰湩晴尨输入学生的学号、名字、年级、专业、三门成绩:);scanf(%d%s%d%s%f%f%f,&p->num,&p->name,&p->grade,&p->major,&p->score_1,&p->score_2,&p->score_3);loop:while(q->next!=NULL){if(q->num==p->num){牰湩晴尨输入的学生号错误请重新输入学生学号:);scanf(%d,&p->num);gotoloop;}q=q->next;}p->aver=(p->score_1+p->score_2+p->score_3)/3;p->total=p->score_1+p->score_2+p->score_3;}return(head);}voidsave(structstudent*head){structstudent*p;FILE*fp;if((fp=fopen(student.txt,wb))==NULL){牰湩晴尨打开文件失败。\n);exit(0);}p=head;while(p!=NULL){fwrite(p,sizeof(structstudent),1,fp);p=p->next;}fclose(fp);}structstudent*del(intnum){inti,n=0;structstudent*p,*q,*head;FILE*fp;if(all==0).{牰湩晴尨数据库为空。\n);head=NULL;return(head);}p=(structstudent*)malloc(sizeof(structstudent));if((fp=fopen(student.txt,b))==NULL){牰湩晴尨打开student.txt文件失败\n);exit(0);}for(i=0;p!=NULL;i++){p=(structstudent*)malloc(sizeof(structstudent));fread(p,sizeof(structstudent),1,fp);if(i==0)head=p;if(num==p->num){if(p==head)head=p->next;elseq->next=p->next;n++;all--;}q=p;}if(n==0)牰湩晴尨没有%d这一学生号的学生!\n,num);return(head);}structstudent*add(){inti,j,m,n=0;FILE*fp;structstudent*p,*q,*temp,*head,*tail;if(all==0){head=NULL;}else{if((fp=fopen(student.txt,b))==NULL){牰湩晴尨打开student.txt文件失败\n);exit(0);}p=(structstudent*)malloc(sizeof(structstudent));fread(p,sizeof(structstudent),1,fp);head=p;tail=p;while(p->next!=NULL){p=(structstudent*)malloc(sizeof(structstudent));fread(p,sizeof(structstudent),1,fp);tail->next=p;tail=p;}tail->next=NULL;fclose(fp);}牰湩晴尨输入需要输入学生的个数:);scanf(%d,&j);for(i=0;i{all++;p=(structstudent*)malloc(sizeof(structstudent));牰湩晴尨输入学生的学号、名字、年级、专业、三门成绩:);scanf(%d%s%d%s%f%f%f,&p->num,&p->name,&p->grade,&p->major,&p->score_1,&p->score_2,&p->score_3);temp=head;loop_1:while(temp!=NULL){if(temp->num==p->num){牰湩晴尨输入的学生号错误请重新输入学生学号:);scanf(%d,&p->num);gotoloop_1;}temp=temp->next;}p->aver=(p->score_1+p->score_2+p->score_3)/3;p->total=p->score_1+p->score_2+p->score_3;if(head==NULL){head=p;p->next=NULL;}else{q=head;n=1;while(q->next!=NULL){q=q->next;n++;}牰湩晴尨该链表一共有节点个数%d。\n,n);牰湩晴尨输入将数据插入第几个节点后面。\n);loop:scanf(%d,&m);if(m<0||m>n){输入有误,请重新输入。\n);牰湩晴尨loop;goto}q=head;if(m==0){p->next=head;head=p;}else{while((m-1)!=0){q=q->next;m--;}p->next=q->next;q->next=p;}}}return(head);}structstudent*alter(){intm,num,gra,n;maj[10],name[10];charfloatscore_1,score_2,score_3;structstudent*p,*q,*head;FILE*fp;if(all==0){牰湩晴尨数据库为空。\n);head=NULL;return(head);}if((fp=fopen(student.txt,b))==NULL){牰湩晴尨打开student.txt文件失败\n);exit(0);}p=(structstudent*)malloc(sizeof(structstudent));fread(p,sizeof(structstudent),1,fp);head=p;q=p;潬灯?瀺楲瑮?输入修改学生数据的姓名:);scanf(%s,&name);while(strcmp(name,p->name)!=0){p=p->next;if(p==NULL){牰湩晴尨没有该学生。\n);return(head);}}loop:牰湩晴尨请选择修改学生的具体数据:\n1、学号;2、年级;3、专业;\n4、成绩1;5、成绩2;6、成绩3:);scanf(%d,&m);if(m<1||m>6){printf(\输入的选择有误请重新输入:);gotoloop;}switch(m){case?牰湩晴尨输入新的学号:);loop_2:scanf(%d,&num);while(q!=NULL){if(q->num==num){牰湩晴尨输入的学生号错误请重新输入学生学号:);gotoloop_2;}q=q->next;}p->num=num;break;case?牰湩晴尨输入新的年级:);scanf(%d,&gra);p->grade=gra;break;case?牰湩晴尨输入新的专业:);scanf(%s,&maj);strcpy(p->major,maj);break;case?牰湩晴尨输入新的成绩:);scanf(%f,&score_1);p->score_1=score_1;p->aver=(p->score_1+p->score_2+p->score_3)/3;p->total=p->score_1+p->score_2+p->score_3;break;case?牰湩晴尨输入新的成绩:);scanf(%f,&score_2);p->score_2=score_2;p->aver=(p->score_1+p->score_2+p->score_3)/3;p->total=p->score_1+p->score_2+p->score_3;break;case?牰湩晴尨输入新的成绩:);scanf(%f,&score_3);p->score_3=score_3;p->aver=(p->score_1+p->score_2+p->score_3)/3;p->total=p->score_1+p->score_2+p->score_3;break;}牰湩晴尨选择你要执行的内容:\n1、返回上一菜单\n2、返回主菜单\n3、修改另一学生的数据);loop_5:scanf(%d,&n);if(n<1||n>3){牰湩晴尨输入的选择有误,请重新输入:);gotoloop_5;}switch(n){case1:gotoloop;break;case2:break;case3:gotoloop_1;break;}return(head);}voidread(){structstudent*p,*head;FILE*fp;if(all==0){牰湩晴尨系统没有学生数据。\n);return;}if((fp=fopen(student.txt,b))==NULL){牰湩晴尨打开文件失败。\n);exit(0);}p=(structstudent*)malloc(sizeof(structstudent));fread(p,sizeof(structstudent),1,fp);head=p;牰湩晴尨打开student.txt文件的学生数据。\n);printf(listnumnamegrademajorscore_1score_2score_3avertotal\n);while(p!=NULL){printf(student%-3d%-4s%-5d%-5s%-7.2f%-7.2f%-7.2f%-4.2f%-5.2f\n,p->num,p->name,p->grade,p->major,p->score_1,p->score_2,p->score_3,p->aver,p->total);p=p->next;}fclose(fp);}voidaversort(structstudent*head){inttemp;floattemp_1;chartemp_2[10];structstudent*p,*q,*i;FILE*fp;p=head;while(p->next!=NULL){q=p;i=p->next;while(i!=NULL){if(i->aver>q->aver)q=i;i=i->next;}if(q!=p){temp=p->num;p->num=q->num;q->num=temp;strcpy(temp_2,p->name);strcpy(p->name,q->name);strcpy(q->name,temp_2);temp=p->grade;p->grade=q->grade;q->grade=temp;strcpy(temp_2,p->major);strcpy(p->major,q->major);strcpy(q->major,temp_2);temp_1=p->score_1;p->score_1=q->score_1;q->score_1=temp_1;temp_1=p->score_2;p->score_2=q->score_2;q->score_2=temp_1;temp_1=p->score_3;p->score_3=q->score_3;q->score_3=temp_1;temp_1=p->aver;p->aver=q->aver;q->aver=temp_1;temp_1=p->total;p->total=q->total;q->total=temp_1;}p=p->next;}if((fp=fopen(student_1.txt,wb+))==NULL){牰湩晴尨打开student_1.txt文件失败\n);exit(0);}p=head;while(p!=NULL){fwrite(p,sizeof(structstudent),1,fp);p=p->next;}p=head;rewind(fp);牰湩晴尨读出由平均成绩排序出来的文件student_1.txt。\n);printf(listnumnamegrademajorscore_1score_2score_3avertotal\n);while(p!=NULL){fread(p,sizeof(structstudent),1,fp);printf(student%-3d%-4s%-5d%-5s%-7.2f%-7.2f%-7.2f%-4.2f%-5.2f\n,p->num,p->name,p->grade,p->major,p->score_1,p->score_2,p->score_3,p->aver,p->total);p=p->next;}fclose(fp);}voidtotalsort(structstudent*head){inttemp;floattemp_1;chartemp_2[10];structstudent*p,*q,*i;FILE*fp;p=head;while(p->next!=NULL){q=p;i=p->next;while(i!=NULL){if(i->total>q->total)q=i;i=i->next;}if(q!=p){temp=p->num;p->num=q->num;q->num=temp;strcpy(temp_2,p->name);strcpy(p->name,q->name);strcpy(q->name,temp_2);temp=p->grade;p->grade=q->grade;q->grade=temp;strcpy(temp_2,p->major);strcpy(p->major,q->major);strcpy(q->major,temp_2);temp_1=p->score_1;p->score_1=q->score_1;q->score_1=temp_1;temp_1=p->score_2;p->score_2=q->score_2;q->score_2=temp_1;temp_1=p->score_3;p->score_3=q->score_3;q->score_3=temp_1;temp_1=p->aver;p->aver=q->aver;q->aver=temp_1;temp_1=p->total;p->total=q->total;q->total=temp_1;}p=p->next;}if((fp=fopen(student_1.txt,wb+))==NULL){牰湩晴尨打开student_1.txt文件失败\n);exit(0);}p=head;while(p!=NULL){fw
all++;
p=(structstudent*)malloc(sizeof(structstudent));
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
p->next=NULL;
q=head;
牰湩晴尨输入学生的学号、名字、年级、专业、三门成绩:
scanf(%d%s%d%s%f%f%f,&p->num,&p->name,&p->grade,&p->major,&p-
>score_1,&p->score_2,&p->score_3);
while(q->next!
=NULL)
if(q->num==p->num)
牰湩晴尨输入的学生号错误请重新输入学生学号:
scanf(%d,&p->num);
q=q->next;
p->aver=(p->score_1+p->score_2+p->score_3)/3;
p->total=p->score_1+p->score_2+p->score_3;
return(head);
voidsave(structstudent*head)
FILE*fp;
if((fp=fopen(student.txt,wb))==NULL)
牰湩晴尨打开文件失败。
p=head;
while(p!
fwrite(p,sizeof(structstudent),1,fp);
p=p->next;
fclose(fp);
structstudent*del(intnum)
inti,n=0;
structstudent*p,*q,*head;
if(all==0).
牰湩晴尨数据库为空。
if((fp=fopen(student.txt,
b))==NULL)
牰湩晴尨打开student.txt文件失败\n);
for(i=0;p!
=NULL;i++)
fread(p,sizeof(structstudent),1,fp);
if(i==0)
if(num==p->num)
if(p==head)
head=p->next;
q->next=p->next;
n++;
all--;
q=p;
if(n==0)
牰湩晴尨没有%d这一学生号的学生!
\n,num);
structstudent*add()
inti,j,m,n=0;
structstudent*p,*q,*temp,*head,*tail;
if(all==0)
while(p->next!
tail->next=NULL;
牰湩晴尨输入需要输入学生的个数:
scanf(%d,&j);
for(i=0;i{all++;p=(structstudent*)malloc(sizeof(structstudent));牰湩晴尨输入学生的学号、名字、年级、专业、三门成绩:);scanf(%d%s%d%s%f%f%f,&p->num,&p->name,&p->grade,&p->major,&p->score_1,&p->score_2,&p->score_3);temp=head;loop_1:while(temp!=NULL){if(temp->num==p->num){牰湩晴尨输入的学生号错误请重新输入学生学号:);scanf(%d,&p->num);gotoloop_1;}temp=temp->next;}p->aver=(p->score_1+p->score_2+p->score_3)/3;p->total=p->score_1+p->score_2+p->score_3;if(head==NULL){head=p;p->next=NULL;}else{q=head;n=1;while(q->next!=NULL){q=q->next;n++;}牰湩晴尨该链表一共有节点个数%d。\n,n);牰湩晴尨输入将数据插入第几个节点后面。\n);loop:scanf(%d,&m);if(m<0||m>n){输入有误,请重新输入。\n);牰湩晴尨loop;goto}q=head;if(m==0){p->next=head;head=p;}else{while((m-1)!=0){q=q->next;m--;}p->next=q->next;q->next=p;}}}return(head);}structstudent*alter(){intm,num,gra,n;maj[10],name[10];charfloatscore_1,score_2,score_3;structstudent*p,*q,*head;FILE*fp;if(all==0){牰湩晴尨数据库为空。\n);head=NULL;return(head);}if((fp=fopen(student.txt,b))==NULL){牰湩晴尨打开student.txt文件失败\n);exit(0);}p=(structstudent*)malloc(sizeof(structstudent));fread(p,sizeof(structstudent),1,fp);head=p;q=p;潬灯?瀺楲瑮?输入修改学生数据的姓名:);scanf(%s,&name);while(strcmp(name,p->name)!=0){p=p->next;if(p==NULL){牰湩晴尨没有该学生。\n);return(head);}}loop:牰湩晴尨请选择修改学生的具体数据:\n1、学号;2、年级;3、专业;\n4、成绩1;5、成绩2;6、成绩3:);scanf(%d,&m);if(m<1||m>6){printf(\输入的选择有误请重新输入:);gotoloop;}switch(m){case?牰湩晴尨输入新的学号:);loop_2:scanf(%d,&num);while(q!=NULL){if(q->num==num){牰湩晴尨输入的学生号错误请重新输入学生学号:);gotoloop_2;}q=q->next;}p->num=num;break;case?牰湩晴尨输入新的年级:);scanf(%d,&gra);p->grade=gra;break;case?牰湩晴尨输入新的专业:);scanf(%s,&maj);strcpy(p->major,maj);break;case?牰湩晴尨输入新的成绩:);scanf(%f,&score_1);p->score_1=score_1;p->aver=(p->score_1+p->score_2+p->score_3)/3;p->total=p->score_1+p->score_2+p->score_3;break;case?牰湩晴尨输入新的成绩:);scanf(%f,&score_2);p->score_2=score_2;p->aver=(p->score_1+p->score_2+p->score_3)/3;p->total=p->score_1+p->score_2+p->score_3;break;case?牰湩晴尨输入新的成绩:);scanf(%f,&score_3);p->score_3=score_3;p->aver=(p->score_1+p->score_2+p->score_3)/3;p->total=p->score_1+p->score_2+p->score_3;break;}牰湩晴尨选择你要执行的内容:\n1、返回上一菜单\n2、返回主菜单\n3、修改另一学生的数据);loop_5:scanf(%d,&n);if(n<1||n>3){牰湩晴尨输入的选择有误,请重新输入:);gotoloop_5;}switch(n){case1:gotoloop;break;case2:break;case3:gotoloop_1;break;}return(head);}voidread(){structstudent*p,*head;FILE*fp;if(all==0){牰湩晴尨系统没有学生数据。\n);return;}if((fp=fopen(student.txt,b))==NULL){牰湩晴尨打开文件失败。\n);exit(0);}p=(structstudent*)malloc(sizeof(structstudent));fread(p,sizeof(structstudent),1,fp);head=p;牰湩晴尨打开student.txt文件的学生数据。\n);printf(listnumnamegrademajorscore_1score_2score_3avertotal\n);while(p!=NULL){printf(student%-3d%-4s%-5d%-5s%-7.2f%-7.2f%-7.2f%-4.2f%-5.2f\n,p->num,p->name,p->grade,p->major,p->score_1,p->score_2,p->score_3,p->aver,p->total);p=p->next;}fclose(fp);}voidaversort(structstudent*head){inttemp;floattemp_1;chartemp_2[10];structstudent*p,*q,*i;FILE*fp;p=head;while(p->next!=NULL){q=p;i=p->next;while(i!=NULL){if(i->aver>q->aver)q=i;i=i->next;}if(q!=p){temp=p->num;p->num=q->num;q->num=temp;strcpy(temp_2,p->name);strcpy(p->name,q->name);strcpy(q->name,temp_2);temp=p->grade;p->grade=q->grade;q->grade=temp;strcpy(temp_2,p->major);strcpy(p->major,q->major);strcpy(q->major,temp_2);temp_1=p->score_1;p->score_1=q->score_1;q->score_1=temp_1;temp_1=p->score_2;p->score_2=q->score_2;q->score_2=temp_1;temp_1=p->score_3;p->score_3=q->score_3;q->score_3=temp_1;temp_1=p->aver;p->aver=q->aver;q->aver=temp_1;temp_1=p->total;p->total=q->total;q->total=temp_1;}p=p->next;}if((fp=fopen(student_1.txt,wb+))==NULL){牰湩晴尨打开student_1.txt文件失败\n);exit(0);}p=head;while(p!=NULL){fwrite(p,sizeof(structstudent),1,fp);p=p->next;}p=head;rewind(fp);牰湩晴尨读出由平均成绩排序出来的文件student_1.txt。\n);printf(listnumnamegrademajorscore_1score_2score_3avertotal\n);while(p!=NULL){fread(p,sizeof(structstudent),1,fp);printf(student%-3d%-4s%-5d%-5s%-7.2f%-7.2f%-7.2f%-4.2f%-5.2f\n,p->num,p->name,p->grade,p->major,p->score_1,p->score_2,p->score_3,p->aver,p->total);p=p->next;}fclose(fp);}voidtotalsort(structstudent*head){inttemp;floattemp_1;chartemp_2[10];structstudent*p,*q,*i;FILE*fp;p=head;while(p->next!=NULL){q=p;i=p->next;while(i!=NULL){if(i->total>q->total)q=i;i=i->next;}if(q!=p){temp=p->num;p->num=q->num;q->num=temp;strcpy(temp_2,p->name);strcpy(p->name,q->name);strcpy(q->name,temp_2);temp=p->grade;p->grade=q->grade;q->grade=temp;strcpy(temp_2,p->major);strcpy(p->major,q->major);strcpy(q->major,temp_2);temp_1=p->score_1;p->score_1=q->score_1;q->score_1=temp_1;temp_1=p->score_2;p->score_2=q->score_2;q->score_2=temp_1;temp_1=p->score_3;p->score_3=q->score_3;q->score_3=temp_1;temp_1=p->aver;p->aver=q->aver;q->aver=temp_1;temp_1=p->total;p->total=q->total;q->total=temp_1;}p=p->next;}if((fp=fopen(student_1.txt,wb+))==NULL){牰湩晴尨打开student_1.txt文件失败\n);exit(0);}p=head;while(p!=NULL){fw
temp=head;
while(temp!
if(temp->num==p->num)
gotoloop_1;
temp=temp->next;
n=1;
牰湩晴尨该链表一共有节点个数%d。
\n,n);
牰湩晴尨输入将数据插入第几个节点后面。
\n);loop:
scanf(%d,&m);if(m<0||m>n){输入有误,请重新输入。
\n);牰湩晴尨loop;goto
}q=head;if(m==0){p->next=head;head=p;}else{while((m-1)!
=0){q=q->next;m--;}p->next=q->next;q->next=p;}}}
structstudent*alter()
intm,num,gra,n;
maj[10],name[10];char
floatscore_1,score_2,score_3;
输入修改学生数据的姓名:
scanf(%s,&name);
while(strcmp(name,p->name)!
if(p==NULL)
牰湩晴尨没有该学生。
牰湩晴尨请选择修改学生的具体数据:
\n1、学号;2、年级;3、专业;\n4、成绩
1;5、成绩2;6、成绩3:
if(m<1||m>6)
case?
牰湩晴尨输入新的学号:
);loop_2:
while(q!
if(q->num==num)
gotoloop_2;
p->num=num;break;
牰湩晴尨输入新的年级:
);scanf(%d,&gra);p->grade=gra;break;
牰湩晴尨输入新的专业:
);scanf(%s,&maj);strcpy(p->major,maj);break;
牰湩晴尨输入新的成绩:
);scanf(%f,&score_1);p->score_1=score_1;
p->aver=(p-
>score_1+p->score_2+p->score_3)/3;
p->total=p-
>score_1+p->score_2+p->score_3;break;
);scanf(%f,&score_2);p->score_2=score_2;
);scanf(%f,&score_3);p->score_3=score_3;
牰湩晴尨选择你要执行的内容:
\n1、返回上一菜单\n2、返回主菜单\n3、修改另一学生
的数据);
if(n<1||n>3)
gotoloop;break;
gotoloop_1;break;
voidread()
structstudent*p,*head;
牰湩晴尨系统没有学生数据。
return;
牰湩晴尨打开student.txt文件的学生数据。
printf(listnumnamegrademajorscore_1score_2score_3avertotal\n);
printf(student%-3d%-4s%-5d%-5s%-7.2f%-7.2f%-7.2f%-4.2f%-5.2f\n,
p->num,p->name,p->grade,p->major,p->score_1,p->score_2,p->score_3,p-
>aver,p->total);
voidaversort(structstudent*head)
inttemp;
floattemp_1;
chartemp_2[10];
structstudent*p,*q,*i;
i=p->next;
while(i!
if(i->aver>q->aver)
q=i;
i=i->next;
if(q!
=p)
temp=p->num;p->num=q->num;q->num=temp;
strcpy(temp_2,p->name);strcpy(p->name,q->name);strcpy(q->name,temp_2);
temp=p->grade;p->grade=q->grade;q->grade=temp;
strcpy(temp_2,p->major);strcpy(p->major,q->major);strcpy(q->major,temp_2);
temp_1=p->score_1;p->score_1=q->score_1;q->score_1=temp_1;
temp_1=p->score_2;p->score_2=q->score_2;q->score_2=temp_1;
temp_1=p->score_3;p->score_3=q->score_3;q->score_3=temp_1;
temp_1=p->aver;p->aver=q->aver;q->aver=temp_1;
temp_1=p->total;p->total=q->total;q->total=temp_1;
if((fp=fopen(student_1.txt,wb+))==NULL)
牰湩晴尨打开student_1.txt文件失败\n);
rewind(fp);
牰湩晴尨读出由平均成绩排序出来的文件student_1.txt。
voidtotalsort(structstudent*head)
if(i->total>q->total)
fw
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1