最新学生成绩管理系统C源代码1.docx

上传人:b****7 文档编号:10427619 上传时间:2023-02-11 格式:DOCX 页数:22 大小:21.05KB
下载 相关 举报
最新学生成绩管理系统C源代码1.docx_第1页
第1页 / 共22页
最新学生成绩管理系统C源代码1.docx_第2页
第2页 / 共22页
最新学生成绩管理系统C源代码1.docx_第3页
第3页 / 共22页
最新学生成绩管理系统C源代码1.docx_第4页
第4页 / 共22页
最新学生成绩管理系统C源代码1.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

最新学生成绩管理系统C源代码1.docx

《最新学生成绩管理系统C源代码1.docx》由会员分享,可在线阅读,更多相关《最新学生成绩管理系统C源代码1.docx(22页珍藏版)》请在冰豆网上搜索。

最新学生成绩管理系统C源代码1.docx

最新学生成绩管理系统C源代码1

可见“体验化消费”广受大学生的欢迎、喜欢,这是我们创业项目是否成功的关键,必须引起足够的注意。

学生成绩管理系统C源代码

搜集者:

海水

发布时间:

06-01-27

浏览次数:

23242

[大中小]

#include 

#include 

#include 

#define LEN sizeof(struct scorenode)

#define DEBUG

#include 

struct scorenode

{int number;/*学号*/

char name[10];/*姓名*/

float yuwen;/*语文成绩*/

float yingyu;/*英语成绩*/

float shuxue;/*数学成绩 */

struct scorenode *next;

};

typedef struct scorenode score;

int n,k;/*n,k为全局变量,本程序中的函数均可以使用它*/

/*==============================================================================================*/

score *creat2311(void)

/*函数creat2311,功能:

创建链表,此函数带回一个指向链表头的指针*/

{

 score*head;

 score *p1,*p2,*p3,*max;

 int i,j;

 float fen;

    char t[10];

  n=0;

     p1=p2=p3=(score *)malloc(LEN);head=p3; /*开辟一个新单元*/

       printf("请输入学生资料,输0退出!

\n");

repeat1:

 printf("请输入学生学号(学号应大于0):

");/*输入学号,学号应大于0*/

       scanf("%d",&p1->number);

     while(p1->number<0)

   {getchar();

    printf("输入错误,请重新输入学生学号:

");

       scanf("%d",&p1->number);}       

  /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/

  if(p1->number==0)

   goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/

  else 

  { 

  p3=head;

  if(n>0)

   {for(i=0;i

           {if(p1->number!

=p3->number)

     p3=p3->next;

     else 

     {printf("学号重复,请重输!

\n");

     goto repeat1;

     /*当输入的学号已经存在,程序报错,返回前面重新输入*/

        }

    }     

   }          

  }

       printf("请输入学生姓名:

");

       scanf("%s",&p1->name);/*输入学生姓名*/

       printf("请输入语文成绩(0~100):

");/*输入语文成绩,成绩应在0-100*/

       scanf("%f",&p1->yuwen);

    while(p1->yuwen<0||p1->yuwen>100)

 {getchar();

  printf("输入错误,请重新输入语文成绩");/*输入错误,重新输入语文成绩直到正确为止*/

            scanf("%f",&p1->yuwen);}

       printf("请输入英语成绩(0~100):

");/*输入英语成绩,成绩应在0-100*/

       scanf("%f",&p1->yingyu);

    while(p1->yingyu<0||p1->yingyu>100)

 {getchar();

  printf("输入错误,请重新输入英语成绩");/*输入错误,重新输入英语成绩直到正确为止*/

           scanf("%f",&p1->yingyu);}

       printf("请输入数学成绩(0~100):

");/*输入数学成绩,成绩应在0-100*/

       scanf("%f",&p1->shuxue);

    while(p1->shuxue<0||p1->shuxue>100)

 {getchar();

  printf("输入错误,请重新输入数学成绩");

            scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/

     head=NULL;

 while(p1->number!

=0)

  {

    n=n+1;

 if(n==1)  

  head=p1;

 else

 

    p2->next=p1;

    p2=p1;

    p1=(score *)malloc(LEN);

    printf("请输入学生资料,输0退出!

\n");

repeat2:

printf("请输入学生学号(学号应大于0):

");

      scanf("%d",&p1->number);/*输入学号,学号应大于0*/

   

   while(p1->number<0)

   {getchar();

    printf("输入错误,请重新输入学生学号:

");

       scanf("%d",&p1->number);}      

   /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/

  if(p1->number==0)

   goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/

  else

  {

  p3=head;

  if(n>0)

   {for(i=0;i

      {if(p1->number!

=p3->number)

    p3=p3->next;

    else 

    {printf("学号重复,请重输!

\n");

     goto repeat2;

     /*当输入的学号已经存在,程序报错,返回前面重新输入*/

    }

    }     

   }          

 

  }

  printf("请输入学生姓名:

");

       scanf("%s",&p1->name);/*输入学生姓名*/

     printf("请输入语文成绩(0~100):

");

       scanf("%f",&p1->yuwen);/*输入语文成绩,成绩应在0-100*/

     while(p1->yuwen<0||p1->yuwen>100)

  {getchar();

   printf("输入错误,请重新输入语文成绩");

         scanf("%f",&p1->yuwen);}/*输入错误,重新输入语文成绩直到正确为止*/

     printf("请输入英语成绩(0~100):

");

      scanf("%f",&p1->yingyu);/*输入英语成绩,成绩应在0-100*/

     while(p1->yingyu<0||p1->yingyu>100)

  {getchar();

   printf("输入错误,请重新输入英语成绩");

         scanf("%f",&p1->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/

      printf("请输入数学成绩(0~100):

");

       scanf("%f",&p1->shuxue);/*输入数学成绩,成绩应在0-100*/

     while(p1->shuxue<0||p1->shuxue>100)

  {getchar();

   printf("输入错误,请重新输入数学成绩");

         scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/

     

 }

end:

 p1=head;

     p3=p1;

  for(i=1;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);

     /*交换前后结点中的姓名,使之与学号相匹配*/

        fen=max->yuwen;

        max->yuwen=p1->yuwen;

        p1->yuwen=fen;

                 /*交换前后结点中的语文成绩,使之与学号相匹配*/

      

        fen=max->yingyu;

        max->yingyu=p1->yingyu;

        p1->yingyu=fen;

    /*交换前后结点中的英语成绩,使之与学号相匹配*/

       

        fen=max->shuxue;

        max->shuxue=p1->shuxue;

        p1->shuxue=fen;

                /*交换前后结点中的数学成绩,使之与学号相匹配*/

        }

                 }

    max=head;p1=head;/*重新使max,p指向链表头*/

  } 

p2->next=NULL;/*链表结尾*/

       printf("输入的学生数为:

%d个!

\n",n);

       return(head);

}

/*==============================================================================================*/

/*==============================================================================================*/

score *load2311(score *head)

/*函数load2311,功能:

从文件读入学生记录*/

{       score *p1,*p2;

        int m=0;

        char filepn[10];

  FILE *fp;

  

  printf("请输入文件路径及文件名:

");

     scanf("%s",filepn);/*输入文件路径及名称*/

     if((fp=fopen(filepn,"r+"))==NULL)

 {

  printf("不能打开文件!

\n");

  return 0;

 }

     fscanf(fp,"            考试成绩管理系统             \n");

     fscanf(fp,"作者:

周纯钢 班级:

  信息023   学号:

11 \n");

        fscanf(fp,"-----------------------------------------\n");

  fscanf(fp,"|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");

        fscanf(fp,"-----------------------------------------\n");/*读入表格域*/

  printf("            考试成绩管理系统             \n");

     printf("  作者:

周纯钢 班级:

  信息023   学号:

11 \n");

        printf("-----------------------------------------\n");

  printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");

        printf("-----------------------------------------\n");/*打印表格域*/

  m=m+1;  

  if(m==1)

  {

  

  p1=(score *)malloc(LEN); /*开辟一个新单元*/

  fscanf(fp,"%d%s%f%f%f",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);

         printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);

    /*文件读入与显示*/

  head=NULL;

     do

  {

   n=n+1;

   if(n==1) head=p1;

   else p2->next=p1;

   p2=p1;

   p1=(score *)malloc(LEN);  /*开辟一个新单元*/    

      fscanf(fp,"%d%s%f%f%f\n",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);

            printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);

           /*文件读入与显示*/

  }while(!

feof(fp));

  p2->next=p1;

  p1->next=NULL;

  n=n+1; 

 }printf("-----------------------------------------\n");/*表格下线*/

  fclose(fp);/*结束读入,关闭文件*/

      

 return (head);

}

/*==============================================================================================*/

/*==============================================================================================*/

score *add2311(score *head,score *stu)

/*函数add2311,功能:

追加学生资料,并且将所有学生资料按学号排序*/

{

 score *p0,*p1,*p2,*p3,*max;

    int i,j;

 float fen;

    char t[10];

   p3=stu=(score *)malloc(LEN);/*开辟一个新单元*/

   printf("\n输入要增加的学生的资料!

");

  repeat4:

 printf("请输入学生学号(学号应大于0):

");

  scanf("%d",&stu->number); 

  /*输入学号,学号应大于0*/

      while(stu->number<0)

   {getchar();

    printf("输入错误,请重新输入学生学号:

");

       scanf("%d",&stu->number);}/*输入错误,重新输入学号*/

     /******************************************************/

    if(stu->number==0)

   goto end2;/*当输入的学号为0时,转到末尾,结束追加*/

  else 

  { 

   p3=head;

  if(n>0)

   {for(i=0;i

           {if(stu->number!

=p3->number)

     p3=p3->next;

     else 

     {printf("学号重复,请重输!

\n");

     goto repeat4;

     /*当输入的学号已经存在,程序报错,返回前面重新输入*/

        }

    }     

   }          

  }

   

  /******************************************************/  

   printf("输入学生姓名:

");

         scanf("%s",stu->name);            /*输入学生姓名*/

      printf("请输入语文成绩(0~100):

");

         scanf("%f",&stu->yuwen);    /*输入语文成绩,成绩应在0-100*/

      while(stu->yuwen<0||stu->yuwen>100)

   {getchar();

    printf("输入错误,请重新输入语文成绩");

       scanf("%f",&stu->yuwen);}     /*输入错误,重新输入语文成绩直到正确为止*/

      printf("请输入英语成绩(0~100):

");

         scanf("%f",&stu->yingyu);/*输入英语成绩,成绩应在0-100*/

      while(stu->yingyu<0||stu->yingyu>100)

   {getchar();

    printf("输入错误,请重新输入英语成绩");

         scanf("%f",&stu->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/

      printf("请输入数学成绩(0~100):

");

         scanf("%f",&stu->shuxue);/*输入数学成绩,成绩应在0-100*/

      while(stu->shuxue<0||stu->shuxue>100)

   {getchar();

    printf("输入错误,请重新输入数学成绩");

          scanf("%f",&stu->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/

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

               {

             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);

     /*交换前后结点中的姓名,使之与学号相匹配*/

        fen=max->yuwen;

        max->yuwen=p1->yuwen;

        p1->yuwen=fen;

                 /*交换前后结点中的语文成绩,使之与学号相匹配*/

      

        fen=max->yingyu;

        max->yingyu=p1->yingyu;

        p1->yingyu=fen;

    /*交换前后结点中的英语成绩,使之与学号相匹配*/

       

        fen=max->shuxue;

        max->shuxue=p1->shuxue;

        p1->shuxue=fen;

                /*交换前后结点中的数学成绩,使之与学号相匹配*/

        }

                 }

    max=head;p1=head;/*重新使max,p指向链表头*/

  } end2:

 printf("现在的学生数为:

%d个!

\n",n);

  return(head);

}

/*==============================================================================================*/

/*==========================================================

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1