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

📄 学生.c

📁 一个关于学生管理系统的控制台应用程序
💻 C
字号:
#include<stdio.h>
#include<stdlib.h>
#define LINE1 printf("--------------------------------------------------\n")
struct student
{ int xuhao;
  int xuehao;
  int sex;
  float score[3];
  float aver;//为个人的平均分
}; 
int i,j;
void liebiao_sex(struct student a[3])
{   int sex;
	printf("please input sex to choose(0:男; 1:女)\n");
    scanf("%d",&sex);
	LINE1;
	switch(sex)
	{case 0:for(i=0;i<3;i++)
	   { if(a[i].sex==0)
	     printf("%d   %d   %d   %f  %f  %f\n",a[i].xuhao,a[i].xuehao,a[i].sex,a[i].score[0],a[i].score[1],a[i].score[2]);
	}break;
	 case 1:for(i=0;i<3;i++)
     	{ if(a[i].sex==1)
	     printf("%d   %d   %d   %f  %f  %f\n",a[i].xuhao,a[i].xuehao,a[i].sex,a[i].score[0],a[i].score[1],a[i].score[2]);
		   }break;
    }return;
}
void liebiao_high(struct student a[3])//按高于指定的个人平均分列表
{ float score;
  float aver[3];//定义个人平均分数组
  for(i=0;i<3;i++)
     aver[i]=(a[i].score[0]+a[i].score[1]+a[i].score[2])/3;//求个人平均分
  printf("please input a score to liebiao\n");
  scanf("%f",&score);
  LINE1;
  for(i=0;i<3;i++)
  {if(aver[i]>=score)
      printf("%d   %d   %d   %f  %f  %f\n",a[i].xuhao,a[i].xuehao,a[i].sex,a[i].score[0],a[i].score[1],a[i].score[2]);
	}return;
}
void liebiao_average(struct student a[3])
{ float score=0;float b[3],c[3];
  for(i=0;i<3;i++)
  {b[i]=(a[i].score[0]+a[i].score[1]+a[i].score[2])/3;c[i]=b[i];}
  for(i=0;i<2;i++)
	  for(j=0;j<3-i;j++)     //此算法的思想如下 :先用数组求出个人平均分,然后用冒泡法给此数组按从小到大排序,但若用

		 if( b[j]>b[j+1])    //  for循环输出结构体仍然会原样输出,故用另一数组,先将其赋值同未排序时的b[i],待排序后的b[i]
		 {score=b[j+1];      // 用两个for循环当c[j]等于b[i]时,用stu[j]输出结构体,此时输出的就是排好序的stu[j];
		  b[j+1]=b[j];
		  b[j]=score;
		 }
   for(i=0;i<3;i++)
	   for(j=0;j<3;j++)
		   if(b[i]==c[j])
               printf("%d   %d   %d   %f  %f  %f   %f\n",a[j].xuhao,a[j].xuehao,a[j].sex,a[j].score[0],a[j].score[1],a[j].score[2],c[j]);
      return;
}			   



   

void liebiao(struct student stu[3])     //按什么列表选择函数
{ int num;
  printf("please input to choose\n1:按性别\n2:按高于个人平均分\n3:按个人平均分\n");
  scanf("%d",&num);
  switch(num)
  { case 1:liebiao_sex(stu);break;
    case 2:liebiao_high(stu);break;
	case 3:liebiao_average(stu);break;
    default:printf("please input to choose\n");
  }return;
}

void aver_personaly(struct student a[3])
{  
	for(i=0;i<3;i++) 
{a[i].aver=(float)(a[i].score[0]+a[i].score[1]+a[i].score[2])/3;
     	
     printf("%d   %d   %d   %f  %f  %f   %f\n",a[i].xuhao,a[i].xuehao,a[i].sex,a[i].score[0],a[i].score[1],a[i].score[2],a[i].aver);
	}return;
}
void aver_subject(struct student a[3])
{ float score[3],b[3];
  for(i=0;i<3;i++)
	  for(j=0;j<3;j++)
         score[i]+=a[j].score[i];//求科目平均分
	  for(i=0;i<3;i++)
		  b[i]=score[i]/3;
	  for(i=0;i<3;i++)
      printf("%d   %d   %d   %f  %f  %f\n",a[i].xuhao,a[i].xuehao,a[i].sex,a[i].score[0],a[i].score[1],a[i].score[2]);
	  for(i=0;i<3;i++)
	printf("\t\t\t%d   ",score[i]);
	  return ;
}
void average(struct student stu[3])
{ char n;
  printf("please input to choose\np:按个人平均成绩\ns:按科目平均成绩\n");
  getchar();
  scanf("%c",&n);
  LINE1;
  switch(n)
  { case 'p':aver_personaly(stu);break;
    case 's':aver_subject(stu);break;
	default:printf("input to choose\n");
  }
	return;
}
void find_personly(struct student a[3])
{   float score[3],num=0.0;int t=0;
  for(i=0;i<3;i++)
	  score[i]=(a[i].score[0]+a[i].score[1]+a[i].score[2])/3;//求个人平均分

  for(i=0;i<3;i++)     //求最高个人平均分
   if(score[i]>num)
  { num=score[i];
    t=i;
  }
   printf("你要查找的最高个人平均分的信息如下:\n");
   printf("%d   %d   %d   %f  %f  %f   %f\n",a[t].xuhao,a[t].xuehao,a[t].sex,a[t].score[0],a[t].score[1],a[t].score[2],num);
  return;
}
void find_subject(struct student a[3])//按科目最高分查找
{  
   float num=0.0;
   int t,n;
   for(i=0;i<3;i++)
	  for(j=0;j<3;j++)
		  printf("please input to choose \n1:语文;\n2:数学\n;3:英语\n");
	  scanf("%d",&n);
	  switch(n)
	  { case 1: { for(i=0;i<3;i++)
	              if(a[i].score[0]>num)
				  {num=a[i].score[0];
				  t=i;
				  }
				  printf("%d   %d   %d   %f  %f  %f   %f\n",a[t].xuhao,a[t].xuehao,a[t].sex,a[t].score[0],a[t].score[1],a[t].score[2],num); 
				  break;}
				  
	  case 2:  {for(i=0;i<3;i++)
	              if(a[i].score[1]>num)
				  {num=a[i].score[1];
				  t=i;
				  }
				  printf("%d   %d   %d   %f  %f  %f   %f\n",a[t].xuhao,a[t].xuehao,a[t].sex,a[t].score[0],a[t].score[1],a[t].score[2],num);
				  break;}
	  case 3:  for(i=0;i<3;i++)
	              if(a[i].score[3]>num)
				  {num=a[i].score[3];
				  t=i;
				  }
	  			  printf("%d   %d   %d   %f  %f  %f   %f\n",a[t].xuhao,a[t].xuehao,a[t].sex,a[t].score[0],a[t].score[1],a[t].score[2],num);
				  break;
	 default : printf("please input to choose\n");
	  }
	  return;
}


void find(struct student stu[3])
{
  char find;
  printf("please input to choose\np:按最高个人平均分查找\ns:按指定科目的最高分查找\n");
  getchar();
  scanf("%c",&find);
  switch(find)
  {  case 'p' : find_personly(stu);break;
  case 's': find_subject(stu);break;
  default :printf("please input to choose\n");
  }
  return;
}
  
  

void main()
{   FILE *fp;
    char num;
	struct student stu[3];//={{1,052601,0,91,84,92},{2,052602,1,82,98,74},{3,052603,1,85,83,87}};
	fp=fopen("D:\\原程序文件\\xuesh","r");
	/*={{1,052601,0,91,84,92},{2,052602,1,82,98,74},{3,052603,1,85,83,87}};
	printf("please input to choose\nlie biao\naverage\nhigh score\n");*/
	for(i=0;i<3;i++)
		//fread(&stu[i],sizeof(struct student),1,fp);
		fscanf(fp,"%d %d %d %f %f %f",&stu[i].xuhao,&stu[i].xuehao,&stu[i].sex,&stu[i].score [0],&stu[i].score[1],&stu[i].score[2]);
	
	
	LINE1;
	while(1)
	{  printf("please input to choose\nl:lie biao\na:average\nf:find\no:结束\n");
		scanf("%c",&num);
		switch(num)
	   { case 'l': liebiao(stu);break;
         case 'a': average(stu);break;
		 case 'f': find(stu);break;
		 case 'o': exit(0);break;
		 default :printf("please input  to choose\n");
	   }
		getchar();
	}
	fclose(fp);
}
	   




⌨️ 快捷键说明

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