⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 信管070219号王金龙.c

📁 班级成绩管理系统
💻 C
📖 第 1 页 / 共 3 页
字号:
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct studentnode
  {int studentnumber;/*学号*/
   char name[10];/*姓名*/
   float chinese;/*语文成绩*/
   float English;/*英语成绩*/
   float math;/*数学成绩 */
   float average;/*平均成绩*/
   float sum;/*总成绩*/    
   struct studentnode *next;
  
  };


typedef struct studentnode student;
typedef struct studentnode *StudentList;



int function_choose()/*功能选择函数*/
{
    int  i,k;
   
    
    for(i=0;i<40;i++)
     printf("—");
      printf("\t\t\t    班级考试成绩管理系统\n\n\n");
      printf("   \t\t\t       班级:信管0702  \n");
       for(i=0;i<40;i++)
     printf("—");
    printf("         1.输入学生的信息\t\t\t2.对成绩进行排序\t\t\t   \n");
    printf("         3.查询学生的成绩\t\t\t4.删除学生的资料\t\t\t   \n");
    printf("         5.追加学生信息\t\t\t\t6.显示学生的成绩\t\t\t   \n");
    printf("         7.统计学生的成绩\t\t\t8.保存输入的资料 \t\t\t  \n");
    printf("         9.各分数段学生数据\t\t\t10.从文件中调入资料 \t\t\t\n");   
    printf("         11.显示班级人数\t\t\t12.修改学生数据 \t\t\t\n");  
     printf("          \t\t\t0.退出系统 \t\t\t        \n");   

    for(i=0;i<40;i++)
    printf("—");
    printf("请选择功能:");
    scanf("%d",&k);
  
    return (k);
}




 int amount(StudentList h)/*统计输入学生人数*/
{ int count=0;
	while(h!=NULL)
	{count++;
		h=h->next; 
	}
	printf("班级人数:%d\n\n\n",count);
	return count;
}



StudentList data_creat(StudentList h)/*创建链表,采用头插法输入学生数据*/
{
	
    student *s;
    int num;     
    float chi,Eng,mat,ave,su;
    char na[10];
    printf("请输入学号:");
    scanf("%d",&num);
    if(num==0) 
  
    printf("输入结束\n");
    
    else 
     {while(num<0)
          {  
            printf("要求学号是正数,请重新输入:");
            scanf("%d",&num);
         }


     printf("请输入学生姓名:");
     scanf("%s",na);


     printf("请输入语文成绩(0~100):");
     scanf("%f",&chi);
     
     while(chi<0||chi>100)
          { 
            printf("输入有误,请重新输入有效的成绩");
            scanf("%f",&chi);
          }

      printf("请输入英语成绩(0~100):");
      scanf("%f",&Eng);
      while(Eng<0||Eng>100)
           {
             printf("输入有误,请重新输入有效的成绩");
             scanf("%f",&Eng);
            }


       printf("请输入数学成绩(0~100):");
       scanf("%f",&mat);
       while(mat<0||mat>100)
            {
             printf("输入有误,请重新输入有效的成绩");
              scanf("%f",&mat);
             }
       su=chi+Eng+mat;/*计算个人总分*/
       ave=su/3;/*计算个人平均分*/
       }
      while(num!=0)
           {  
      	       s=(student *)malloc(sizeof(struct studentnode)) ;
               s->studentnumber=num;
               strcpy(s->name,na);
               s->chinese=chi;
               s->English=Eng;
               s->math=mat;
               s->average =ave;
               s->sum=su;
               s->next=h;
               h=s;
               printf("请输入学号:");
               scanf("%d",&num);
               while(num<0)
                    {    printf("要求学号是正数,请重新输入:");
                         scanf("%d",&num);
                     
                    }
             

             if(num==0)/* 输入学号是0时跳出,返回功能菜单*/
            
             	printf("输入结束\n");
             	
             	
            
            else
              { printf("请输入学生姓名:");
                scanf("%s",na);


               printf("请输入语文成绩(0~100):");
               scanf("%f",&chi);
               while(chi<0||chi>100)
                    {
                     printf("输入有误,请重新输入有效的成绩");
                     scanf("%f",&chi);
                     }

               printf("请输入英语成绩(0~100):");
               scanf("%f",&Eng);
               while(Eng<0||Eng>100)
                    {
                     printf("输入有误,请重新输入有效的成绩");
                     scanf("%f",&Eng);
                     }


              printf("请输入数学成绩(0~100):");
              scanf("%f",&mat);
              while(mat<0||mat>100)
                    {
                     printf("输入有误,请重新输入有效的成绩");
                     scanf("%f",&mat);
                     }
             su=chi+Eng+mat;
             ave=su/3;
            }
    
     } 
     printf("\n\n\n");
     amount(h);/*统计下输入的学生个人*/
     return(h);
     
   
 }



 query(StudentList head)/*功能:查询指定学生成绩*/
{
   int a,number;char na[10]; student *p1;
   printf("按学号查询请按1:\n");
   printf("按姓名查询请按2:\n");
   scanf("%d",&a);
   if(a==1)

       {printf("输入要查询的学生的学号:(输入0时返回功能菜单)");
        scanf("%d",&number);

         while(number!=0)
              {
                  if(head==NULL)
                  printf("\n表中没有数据!\n");
                  printf("\n\n\n学号\t姓名\t语文\t英语\t数学\t\n");
                  p1=head;
                  while(number!=p1->studentnumber&&p1->next!=NULL)
                  {p1=p1->next;} 
                  if(number==p1->studentnumber)  
                  printf("%d\t%s\t%.1f\t %.1f\t %.1f\t\n\n\n",p1->studentnumber,p1->name,p1->chinese,p1->English,p1->math);
        
                  else 
                   printf("%d不存在此学生!\n",number);
  
                  printf("输入要查询的学生的学号:(输入0时返回功能菜单)");
                  scanf("%d",&number);
              }
   printf("已经退出了!\n");
   printf("\n\n\n");
        }
 
 
 if(a==2)
   {printf("输入要查询的学生的姓名:(输入0时返回功能菜单)");
    scanf("%s",na);
    
        while(strcmp(na,"0")!=0)
           {  
           	if(head==NULL)
              printf("\n当前未输入学生信息!\n");
              else 
                 { 
                  p1=head;printf("\n\n\n学号\t姓名\t  语文\t  英语\t  数学\t\n");
                    while(p1!=NULL)
                         {
                            if(strcmp(na,p1->name)==0)  
                             
                              printf("%d\t%s\t  %.1f\t  %.1f\t  %.1f\t\n\n",p1->studentnumber,p1->name,p1->chinese,p1->English,p1->math);
                            
                             
                               p1=p1->next;
                         } 
                   
                    
                      
                 }
                  
          printf("输入要查询的学生的学号:(输入0时返回功能菜单)");
          scanf("%s",na);
                 
         }
   printf("已经退出了!\n");
   printf("\n\n\n");
   }
 
}


StudentList  add_data(StudentList h)/*头插法增添数据*/
{ student  *s;
  int num;
  float chi,Eng,mat,ave,su;
  char na[10];
  printf("请输入学号(大于零的整数,输0返回功能菜单):");
  scanf("%d",&num);
  while(num<0)
    {   getchar();  
        printf("请重新输入学号(大于零的整数):");
        scanf("%d",&num);
     }
 if(num==0)/*输入0时跳出*/
 printf("已经退出");
 else

   {printf("请输入学生姓名:");
    scanf("%s",na);


   printf("请输入语文成绩(0~100):");
   scanf("%f",&chi);
   while(chi<0||chi>100)
        { getchar();
          printf("输入有误,请重新输入有效的成绩");
          scanf("%f",&chi);
        }

    printf("请输入英语成绩(0~100):");
    scanf("%f",&Eng);
    while(Eng<0||Eng>100)
       {getchar();
        printf("输入有误,请重新输入有效的成绩");
        scanf("%f",&Eng);
       }


    printf("请输入数学成绩(0~100):");
    scanf("%f",&mat);
    while(mat<0||mat>100)
        {getchar();
          printf("输入有误,请重新输入有效的成绩");
          scanf("%f",&mat);
        }
    su=chi+Eng+mat;
    ave=su/3;
    while(num!=0)
      {    s=(student *)malloc(sizeof(struct studentnode)) ;
           s->studentnumber=num;
           strcpy(s->name,na);
           s->chinese=chi;
           s->English=Eng;
           s->math=mat;
           s->average =ave;
           s->sum=su;
           s->next=h;
           h=s;
         printf("请输入学号(大于零的整数,输0返回功能菜单):");

    scanf("%d",&num);
    while(num<0)
           { printf("请重新输入学号(大于零的整数):");
             scanf("%d",&num);
           }

      if(num==0) 
      printf("输入结束");
     else
        { printf("请输入学生姓名:");
         scanf("%s",na);

        printf("请输入语文成绩(0~100):");
        scanf("%f",&chi);
        while(chi<0||chi>100)
           {getchar();
            printf("输入有误,请重新输入有效的成绩:");
            scanf("%f",&chi);
            }

       printf("请输入英语成绩(0~100):");
       scanf("%f",&Eng);
       while(Eng<0||Eng>100)
           {getchar();
            printf("输入有误,请重新输入有效的成绩:");
            scanf("%f",&Eng);
            }


       printf("请输入数学成绩(0~100):");
       scanf("%f",&mat);
      while(mat<0||mat>100)
           {getchar();
            printf("输入有误,请重新输入有效的成绩:");
            scanf("%f",&mat);
            }
      su=chi+Eng+mat;
      ave=su/3;}
      }
   }
printf("\n\n\n");
amount(h);/*显示修改之后的学生个数*/
return(h);

}

StudentList delet_data(StudentList h)/*删除数据*/
{
   student *p1,*p2;char na[10];
   int i,number;
   if(h==NULL)
       {
         printf("\n表中没有数据!!\n");
         return(h);
       }
  else
       {printf("按学号删除请按1:");
       	printf("按姓名删除请按2:");
       	printf("返回功能菜单按0:");
       	scanf("%d",&i);
       	while(i!=0)
              {if(i==1)
                      {printf("输入要删除的学生的学号:");
                       scanf("%d",&number);
                       getchar();
                       
                       p1=h;
  
                      while(p1->studentnumber!=number&&p1!=NULL)
                          {
                           p2=p1;p1=p1->next;
            
                           }
            
                       if(number==p1->studentnumber)  
                        {
                           p2->next=p1->next;
                           free(p1);
                            printf("删除成功!\n\n\n");
                         }
                      else
                   printf("%d不存在此学生!\n\n\n",number);
                   amount(h);
          

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -