c 编的学生个人消费管理系统(2)

2008-02-23 05:32:30来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

nbsp; /*输入学生姓名*/
printf("请输入消费情况:");
scanf("%f",&stu->xiaofei); /*输入消费情况,成绩应在0-100*/
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;i<n;i )
{
for(j=i 1;j<=n;j )
{
max=p1;
p1=p1->next;

if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/

strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
/*交换前后结点中的姓名,使之和学号相匹配*/
/*交换前后结点中的消费情况,使之和学号相匹配*/
}
max=head;p1=head;/*重新使max,p指向链表头*/
} end2:
printf("现在的学生数为:%d个!\n",n);
return(head);

}
/*==============================================================================================*/
/*==============================================================================================*/
score *search2311(score *head)
/*函数search2311,功能:查询学生消费情况*/
{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 \n");
printf("-----------------------------------------\n");/*打印表格域*/
p1=head;
while(number!=p1->number&&p1->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->yuwen,p1->yingyu,p1->shuxue);
printf("-----------------------------------------\n");}/*打印表格域*/
else
printf("%d不存在此学生!\n",number);

printf("输入要查询的学生的学号,");
scanf("%d",&number);
}
printf("已退出了!\n");
return(head);}

/*==============================================================================================*/
/*==============================================================================================*/
score *del2311(score *head)/*函数del2311,功能:删除学生资料*/
{
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->number&&p1->next!=NULL)
/*p1指向的不是所要找的首结点,并且后面更有结点*/
{
p2=p1;p1=p1->next;
} /*p1后移一个结点*/

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 print2311(score *head)
/*函数print2311,功能:显示学生成绩*/
{
score *p;
if(head==NULL)
{printf("\n没有任何学生资料!\n");}
else
{printf("%d\n",n);
printf("-----------------------------------------\n");
printf("|学号\t|姓名\t|消费情况\t |\n");
printf("-----------------------------------------\n");/*打印表格域*/
p=head;
do
{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->yuwen,p->yingyu,p->shuxue);
printf("-----------------------------------------\n");/*打印表格域*/
p=p->next;}while (p!=NULL);/*打印完成了*/
}
}

save2311(score *p1)
/*函数save2311,功能:保存学生的资料*/
{
FILE *fp;

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 怎样在程式中利用C 支持多国语言

下一篇: c 编的学生个人消费管理系统