go语言学生管理练习题 go语言学生管理系统( 三 )


scanf("%f",stu-english);}
printf("请输入数学成绩(0~100):");
scanf("%f",stu-math);
while(stu-math0||stu-math100)
{getchar();
printf("输入错误,请重新输入数学成绩");
scanf("%f",stu-math);}
p1=head;
p0=stu;
if(head==NULL)
{head=p0;p0-next=NULL;}/*当原来链表为空时,从首结点开始存放资料*/
else
{
if(p1-next==NULL)
{
p1-next=p0;
p0-next=NULL;
}
else
{
while(p1-next!=NULL)
{
p2=p1;p1=p1-next;
}
p1-next=p0;
p0-next=NULL;
}
}
n=n+1;
p1=head;
p0=stu;
for(i=1;in;i++)
{
for(j=i+1;j=n;j++)
{
max=p1;
p1=p1-next;
if(max-numberp1-number)
{
k=max-number;
max-number=p1-number;
p1-number=k;
strcpy(t,max-name);
strcpy(max-name,p1-name);
strcpy(p1-name,t);/*交换前后结点中的姓名,使之与学号相匹配*/
fen=max-computer;
max-computer=p1-computer;
p1-computer=fen;
fen=max-english;
max-english=p1-english;
p1-english=fen;
fen=max-math;
max-math=p1-math;
p1-math=fen;
}
}
max=head;p1=head;
} end2:
printf("现在的学生数为:%d个!\n",n);
return(head);
}
score *search(score *head)
/*函数search,功能:查询学生成绩*/
{int number;
score *p1,*p2;
printf("输入要查询的学生的学号,");
scanf("%d",number);
while(number!=0)
{
if(head==NULL)
{printf("\n没有任何学生资料!\n");return(head);}
printf("-----------------------------------------\n");
printf("|学号\t|姓名\t|计算机\t|英语\t|数学\t|\n");
printf("-----------------------------------------\n");
p1=head;
while(number!=p1-numberp1-next!=NULL)
{p2=p1;p1=p1-next;}
if(number==p1-number)
{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1-number,p1-name,p1-computer,p1-english,p1-math);
printf("-----------------------------------------\n");}
else
printf("%d不存在此学生!\n",number);
printf("输入要查询的学生的学号,");
scanf("%d",number);
}
printf("已经退出了!\n");
return(head);}
/*==============================================================================================*/
score *del(score *head)/*函数del,功能:删除学生资料*/
{
score *p1,*p2;
int number;
printf("输入要删除的学生的学号(输入0时退出):");
scanf("%d",number);
getchar();
while(number!=0)/*输入学号为0时退出*/
{
if(head==NULL)
{
printf("\n没有任何学生资料!\n");
return(head);
}
p1=head;
while(number!=p1-numberp1-next!=NULL)
{
p2=p1;p1=p1-next;
}
if(number==p1-number)
{
if(p1==head)
head=p1-next;
/*若p1指向的是首结点,把地二个结点地址赋予head*/
else
p2-next=p1-next;
printf("删除:%d\n",number);n=n-1;
}
else
printf("%d不存在此学生!\n",number);
printf("输入要删除的学生的学号:");
scanf("%d",number);
getchar();
}
#ifdef DEBUG
printf("已经退出了!\n");
#endif
printf("现在的学生数为:%d个!\n",n);
return(head);
}
/*==============================================================================================*/
void print(score *head)/*函数print,功能:显示学生成绩*/
{
score *p;
if(head==NULL)
{printf("\n没有任何学生资料!\n");}
else
{printf("%d\n",n);
printf("-----------------------------------------\n");
printf("|学号\t|姓名\t|计算机\t|英语\t|数学\t|\n");
printf("-----------------------------------------\n");

推荐阅读