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

📄 score.c

📁 编写一程序
💻 C
字号:
#include "Score.h"
#include "ReadData.c"
#include "Menu.c"

void main()
{
	Student stu[STUDENT_COUNT];
	int menuitem;
	int i ;
	int kemu[LESSON_COUNT][STUDENT_COUNT];
	char studentid[N];
	Student temp;


	//清屏
	clrscr();
	//读入学生信息
	ReadData(stu, STUDENT_COUNT);

	//计算学生总成绩
	//Please add code here                                     (1)
	for(i=0;i<STUDENT_COUNT;i++)
	  stu[i].sum=Sum(stu[i].score,LESSON_COUNT);

	while(1)
	{
		
		//显示功能菜单,并获得选择的菜单项
		menuitem = Menu();

		switch(menuitem)
		{
		//按总分排序
		case SUM_SORT:
			{
				//Please add code here              (2)

			  Sort(stu,STUDENT_COUNT,SUM_SORT);
			  break;
			}

		//按数学成绩排序
		case MATH_SORT:
			{
				//Please add code here               (3)

			  Sort(stu,STUDENT_COUNT,MATH_SORT);
			  break;
			}

		//按英语成绩排序
		case ENGLISH_SORT:
			{
				//Please add code here                (4)

			  Sort(stu,STUDENT_COUNT,ENGLISH_SORT);
			  break;
			}

		//按计算机成绩排序
		case COMPUTER_SORT:
			{
				//Please add code here               (5)

			  Sort(stu,STUDENT_COUNT,COMPUTER_SORT);
			  break;
			}

		//统计数学成绩不及格人数
		case MATH_STATISTICS:
			{
				//Please add code here                (6)
			  for(i=0;i<STUDENT_COUNT;i++)
			    kemu[0][i]=stu[i].score[0];
			  i=Statistics(kemu[0],STUDENT_COUNT);
			  printf("\n\n\n\n\tResult:\n\n\t        Maths: %d %s under line.\n\n",i,i>1?"students":"student");
			  break;
			}

		//按英语成绩统计
		case ENGLISH_STATISTICS:
			{
				//Please add code here                (7)
			  for(i=0;i<STUDENT_COUNT;i++)
			    kemu[1][i]=stu[i].score[1];
			  i=Statistics(kemu[1],STUDENT_COUNT);
			  printf("\n\n\n\n\tResult:\n\n\t        English: %d %s under line.\n\n",i,i>1?"students":"student");
			  break;
			}

		//按计算机成绩统计
		case COMPUTER_STATISTICS:
			{
				//Please add code here                (8)
			  for(i=0;i<STUDENT_COUNT;i++)
			    kemu[2][i]=stu[i].score[2];
			  i=Statistics(kemu[2],STUDENT_COUNT);
			  printf("\n\n\n\n\tResult:\n\n\t        Computer: %d %s under line.\n\n",i,i>1?"students":"student");
			  break;
			}

		//按学号搜索学生,并显示学生成绩
		case SEARCH:
			{
				//Please add code here                (9)
			  clrscr();
			  printf("\n\n\n\n   Please input the student ID(%s-%s):   ",stu[0].id,stu[STUDENT_COUNT-1].id);
			  scanf("%s",studentid);
			  i=Search(stu,STUDENT_COUNT,studentid);
			  if(i==0)
			  {
			    printf("\n\n\tNo this student.\n");
			    break;
			  }
			  else
			    break;
			}

		}
		printf("\n   Press AnyKey to Continue... ");
		getch();
	}
}

/************************************************************************************************/
//Sort function
//功能:排序
//参数:Student stu[]
//		int count:要排序的学生数目
//		int lessonId:要排序的课程编号
//				数学:MATH_SORT; 英语:ENGLISH_SORT;计算机:COMPUTER_SORT;总分:SUM_SORT
/************************************************************************************************/
void Sort(Student stu[] , int count , int lessonId)
{
		//Please add code here                                (10)
  int i,j;
  char *xueke;
  Student temp;
  lessonId--;
  if(lessonId==-1)
    for(i=count-1;i>0;i--)
      for(j=0;j<=i;j++)
	if(stu[j].sum<stu[j+1].sum)
	{
	  {
	    strcpy(temp.id,stu[j].id);
	    strcpy(stu[j].id,stu[j+1].id);
	    strcpy(stu[j+1].id,temp.id);
	  }
	  {
	    strcpy(temp.name,stu[j].name);
	    strcpy(stu[j].name,stu[j+1].name);
	    strcpy(stu[j+1].name,temp.name);
	  }
	  {
	    temp.sum=stu[j].sum;
	    stu[j].sum=stu[j+1].sum;
	    stu[j+1].sum=temp.sum;
	  }
	}
  for(i=count-1;i>0;i--)
    for(j=0;j<=i;j++)
      if(stu[j].score[lessonId]<stu[j+1].score[lessonId])
      {
	{
	  strcpy(temp.id,stu[j].id);
	  strcpy(stu[j].id,stu[j+1].id);
	  strcpy(stu[j+1].id,temp.id);
	}
	{
	  strcpy(temp.name,stu[j].name);
	  strcpy(stu[j].name,stu[j+1].name);
	  strcpy(stu[j+1].name,temp.name);
	}
	{
	  temp.score[lessonId]=stu[j].score[lessonId];
	  stu[j].score[lessonId]=stu[j+1].score[lessonId];
	  stu[j+1].score[lessonId]=temp.score[lessonId];
	}
      }
  xueke=lessonId+1==SUM_SORT?"Sum":lessonId==MATH_SORT?"Maths":lessonId==ENGLISH_SORT?"English":"Computer";
  clrscr();
  for(j=0;j<count;j=j+20)
  {
    printf("  Sort by %s:\n",xueke);
    printf("\t NO.  studentID        name       %s\n\n",xueke);
    for(i=j;i<j+20;i++)
    {
      if(i==count)
	break;
      else if(lessonId==-1)
	printf("\t%3d   %9s  %10s       %d\n",i+1,stu[i].id,stu[i].name,stu[i].sum);
      else
	printf("\t%3d   %9s  %10s       %d\n",i+1,stu[i].id,stu[i].name,stu[i].score[lessonId]);
    }
    if(i==count)
      break;
    else
    {
      printf("\n     Next page: press any key.");
      getch();
      clrscr();
    }
  }


}

/************************************************************************************************/
//功能:按学号搜索学生
//参数:Student stu[]
//		int count:学生数目
//		int lessonId:要搜索的学号
//		Student * student: 搜索到的学生
//返回值:如果搜索到的学生返回1,否则返回0
/************************************************************************************************/
int Search(Student stu[],int count,char studentId[])//, Student * student)
{
	//Please add code here                                         (11)
  int i;
  for(i=0;i<count;i++)
    if(strcmp(stu[i].id,studentId)==0)
    {
      ShowInfo(stu,i);
      break;
    }
  if(i==count)
    return 0;
  else
    return 1;
}

/************************************************************************************************/
//功能:计算所有课程的总分
//参数:int score[]
//		int count:学生数目
//返回值:总分
/************************************************************************************************/
int Sum(int score[] , int n)//count)
{
	//Please add code here                                         (12)
  int i,sum=0;
  for(i=0;i<n;i++)
    sum+=score[i];
  return sum;
}


/************************************************************************************************/
//功能:统计不及格人数
//参数:int score[]:学生所有的课程成绩
//		int n:课程数目
//返回值:不及格人数
/************************************************************************************************/
int Statistics(int score[] , int count)//n)
{
	//Please add code here                                          (13)
  int i,n=0;
  for(i=0;i<count;i++)
    if(score[i]<60)
      n++;
  clrscr();
  return n;


}

/************************************************************************************************/
//功能:显示学生信息
//参数:Student stu[]
//		int count:学生数目
//返回值:无
/************************************************************************************************/
void ShowInfo(Student stu[] , int i)//count)
{
	//Please add code here                                          (14)

  printf("\n\n\n\n\n\tstudentID     name       maths   English   computer   sum\n\n");
  printf("\t%9s      %s      %d      %d        %d       %d\n",stu[i].id,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);

}

⌨️ 快捷键说明

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