void Student_Searchself(STUDENT *head) //此函数是为了显示学生的各科成绩和各科排名 //(head)存储学生成绩的链表头指针
{
STUDENT *p,*m,*e,*y,*l;
STUDENT *p1,*p2,*p3,*p4;
char s[6];
system("cls");
printf("请输入本人学号来查找\n");
scanf("%s",s);
p=head;
e=head;
m=head;
y=head;
l=head;
p1=descending_order_by_Math(m); //得到按数学成绩排好序的成绩链表
p2=descending_order_by_English(e); //得到按英语成绩排好序的成绩链表
p3=descending_order_by_yuwen(y); //得到按语文成绩排好序的成绩链表
p4=descending_order_by_lizong(l); //得到按理综成绩排好序的成绩链表
//-------------分别在各个成绩排名链表中找到该学生位置即得到各科的排名-----------------
while(strcmp(p->ID,s)&& p != NULL)
{p=p->next;}
while(strcmp(p1->ID,s)&& p1!= NULL)
{p1=p1->next;}
while(strcmp(p2->ID,s) && p2!= NULL)
{p2=p2->next;}
while(strcmp(p3->ID,s) && p3!= NULL)
{p3=p3->next;}
while(strcmp(p4->ID,s) && p4!= NULL)
{p4=p4->next;}
//--------------------------------------------------------------------------
if(p!=NULL&&p1!=NULL&&p2!=NULL&&p3!=NULL&&p4!=NULL) //找到该学生
{
printf(" 学号为%s的学生信息\n\n",s);
printf("---------------------------------------------------------------------------\n");
printf("%-8s%-8s%-10s%-10s%-15s%-10s%-10s\n","学号","姓名","数学成绩","英语成绩","语文成绩","理综成绩","总成绩");
printf("%-8s%-8s%-10.2f%-10.2f%-15.2f%-10.2f%-10.2f\n",p->ID,p->Name,p->Math,p->English,p->yuwen,p->lizong,p->Sum);
printf("---------------------------------------------------------------------------\n");
printf("\n数学成绩排名:%d",p1->mingci);
printf("\n英语成绩排名:%d",p2->mingci);
printf("\n语文成绩排名:%d",p3->mingci);
printf("\n理综成绩排名:%d",p4->mingci);
printf("\n---------------------------------------------------------------------------\n");
}
else
{printf("\n没有该学生\n",s);}
}