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

📄 finalwork.c

📁 数据管理功能: 1. 增加一个学生的纪录 2. 根据学号查看某个学生的成绩 3. 计算并输出每个学生的平均成绩 4. 计算并输出每门课的平均成绩 5. 计算并输出所有学生所有课程的平均成绩 6. 按平
💻 C
📖 第 1 页 / 共 2 页
字号:
Print()                                                     //输出成绩
{
	printf("\n");
	printf("学号    姓名     数学      数据库概论    英语       C语言程序设计  平均分   \n  ");
    printf("-----------------------------------------------------------------------------\n");
	for(p=stu;p<stu+n;p++) 
	{
		printf(FORMAT,p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->average);
		printf("\n\n");
	}
	printf("\n");

}

void Order3(int i)                           //按某门课成绩排序,i课序号
{
	int j,k;
	struct student t;
	for(j=0;j<=n-2;j++)                      //冒泡法排序         
	{
		for(k=0;k<=n-2-j;k++)
			if(stu[k].score[i]<stu[k+1].score[i])
			{
				t=stu[k];
				stu[k]=stu[k+1];
				stu[k+1]=t;
			}
	}
    
}

void doChoice2_4()                                       //按某门课成绩排序
{ 
	int i;
	average();                                            //调用函数求平均成绩
	printf("\n请输入课程代号(数学0, 数据库概论1, 英语2, C语言程序设计3):");
	scanf("%d",&i);                                       //取值
	getchar();                                             //去空格符                                    
	if(i<4&&i>=0)                                          //判断i的范围
	{
		Order3(i);                                          //排序
		Print();                                            //输出
	}
	else printf("i值不合要求!!!");                       //i值不合要求
    printf("\n");
	
 }

void doChoice2()                                              //选项2
{
	char choice2;
	average();                                                //调用函数求平均成绩
	do 
	{
		init2();                                              //输出菜单
        choice2=getch();
	    if(choice2=='1') doChoice2_1();                      //执行命令
	    else if(choice2=='2')                                
		{
			Oder1();                                       //调用函数,按成绩排序
			Print();                                       //输出  
		}
	    else if(choice2=='3') 
		{
			Oder2();                                      //调用函数,按学号排序
			Print();                                      //输出
		}
	    else if(choice2=='4') doChoice2_4();               //执行命令4
        else if(choice2=='5') return;                       //返回上一级菜单
	    else printf("Input error!!!!\n");
 }while(1);
 
}
//////////////////////////////////////////////////////////////////////////////////////////////////
void init3()                                           //菜单
{
	printf("\n请选择操作菜单:\n"); 
    printf("\t①.输出总平均成绩\n");
    printf("\t②.输出每门课程平均成绩\n");
    printf("\t③.返回!!\n");
}
void doChoice3_1()                                     //输出总平均成绩
{
	printf("\n所有学生所有课程的平均成绩为:%.3f\n",total_ave);
	printf("\n");
 }

void doChoice3_2()                                       //输出各门平均成绩  
{
	printf("\n");
	printf("数学平均成绩:%.3f\n数据库概论平均成绩:%.3f\n",math_ave,data_ave);
	printf("英语平均成绩:%.3f\nC语言程序设计平均成绩:%.3f\n",eng_ave,c_ave);
	printf("\n"); 
}

void doChoice3()                                         //选项3
{
	char choice3;
    average();                                           //求平均成绩
	do 
	{
		init3();
        choice3=getch();
	    if(choice3=='1') doChoice3_1();                          
	    else if(choice3=='2') doChoice3_2();              
	    else if(choice3=='3') return;                   //返回上一级菜单
	    else printf("Input error!!!!\n");                        
	}while(1);

}
//////////////////////////////////////////////////////////////////////////////////////////////////
void init4()                                               //菜单
{
	printf("\n请选择操作菜单:\n");
    printf("\t①.输出课程有不及格的学生名单\n");
    printf("\t②.输出指定课程有不及格的学生名单\n");
    printf("\t③.输出有三门或三门以上课程不及格的学生名单\n");
    printf("\t④.计算并输出每门课不及格比例\n");
    printf("\t⑤.返回!!\n");
}
void doChoice4_1()                                      //输出课程有不及格的学生                                                            
{
	int flag=1,i;      
	for(p=stu;p<stu+n;p++)
	{
		for(i=0;i<4;i++)
			if(p->score[i]<60)                         //寻找不及格学生数据
			{
				printf("%s ",p->name);                 //输出不及格学生姓名
				flag=0;                                //flag记号,判断有无不及格学生                                
				break;                                 //跳向下一学生数据 
			}
	}
	if(flag) printf("无人不及格^_^。\n");              //flag=1,无不及格学生
	else printf("有不及格课程。\n");
}

pass2(int i)                                        //寻找某课不及格学生                              
{  
	int flag=1;                                     //flag记号
	for(p=stu;p<stu+n;p++)
		if(p->score[i]<60)                          //判断score是否小于60                         
		{
			printf("%s ",p->name);                  //输出学生姓名 
			flag=0;
		}
    if(flag) printf("无人不及格^_^。\n");           //flag=1,无人不及格
    else printf("不及格\n");
}


void doChoice4_2()                                        //输出指定课程有不及格的学生名单        
{
	int i;
    printf("\n请输入课程代号(数学0, 数据库概论1, 英语2, C语言程序设计3):"); //输出
    scanf("%d",&i);                                                       //取值
	getchar();                                                            //区空格符
	if(i<4&&i>=0) pass2(i);                                              //调用函数,        
	else printf("i值不合要求!!!");                                     //i值不合要求
    printf("\n");
}

void doChoice4_3()                            //输出有三门或三门以上课程不及格的学生名单
{
	int i,flag,flag1=1;                       //flag,flag1作记号
	for(p=stu;p<stu+n;p++)
	{   
		flag=0;                               //flag不及格课数
		for(i=0;i<4;i++)
			if(p->score[i]<60)
				flag++;	
		if(flag>=3) 
		{
			printf("\t%s有%d门课程不及格\n",p->name,flag);
			flag1=0;                           //flag1,判断有无学生三门或三门以上不及格
		}
		
	}
	if(flag1) printf("无人有三门或三门以上课程不及格^_^!\n"); //flag1=1
	printf("\n"); 
}

void doChoice4_4()                                   //输出每门课不及格比例
{
	int fail[4]={0,0,0,0},i;                         //fail数组记录各科不及格人数
	for(i=0;i<4;i++)                                 //for循环计算各科不及格人数  
		for(p=stu;p<stu+n;p++)
			if(p->score[i]<60)
				fail[i]++;
	printf("\n");                                                     //输出
	printf("课程               不及格人数              总人数        \n");
	printf("**********************************************************\n");
	printf("数学                %d                      %d           \n",fail[0],n); 
	printf("数据库概论          %d                      %d            \n",fail[1],n);
	printf("英语                %d                      %d            \n",fail[2],n);
	printf("C语言程序设计       %d                      %d             \n",fail[3],n);
    printf("\n");
}

void doChoice4()                                                      //选项4
{
	char choice4;
	do 
	{
		init4();                                                   //输出菜单
        choice4=getch();
	    if(choice4=='1')       doChoice4_1();                      //执行命令
	    else if(choice4=='2')  doChoice4_2();
	    else if(choice4=='3')  doChoice4_3();
	    else if(choice4=='4')  doChoice4_4();
	    else if(choice4=='5')  return;                           //返回上一级菜单
	    else printf("Input error!!!!\n");
	}while(1);
	printf("\n");

}
////////////////////////////////////////////////////////////////////////////////////////////////
void init5()                                                        //菜单     
{
	printf("\n请选择操作菜单:\n");
	printf("\t①.输出每门课成绩最好和最差的学生\n");
    printf("\t②.总成绩分段查询(如总成绩在300~400)\n");
    printf("\t③.各门成绩分段查询(如各门成绩均在80~90)\n");
	printf("\t④.返回\n");
}

void doChoice5_1()
{ 
	Oder1();
	printf("\n              成绩最好的学生              成绩最差学生\n"  );
    Order3(0);                    //调用函数,输出数学成绩最好学生
	printf("数学                %s                          %s\n",stu[0].name,stu[n-1].name);

	Order3(1);                     //调用函数,输出数据库概论成绩最好学生  
	printf("数据库概论          %s                          %s\n",stu[0].name,stu[n-1].name);

	Order3(2);                     //调用函数,输出英语成绩最好学生                    
	printf("英语                %s                          %s\n",stu[0].name,stu[n-1].name);
	
	Order3(3);                     //调用函数,输出c语言成绩最好学生
    printf("C语言程序设计       %s                          %s\n",stu[0].name,stu[n-1].name);
	printf("\n\n"); 
}

void doChoice5_2()                             //总成绩分段查询        
{
	int flag=0;
    float M,m;                                 //M上限,m下限                  
	printf("请输入上限:");
	scanf("%f",&M);
	printf("\n请输入下限:");
	scanf("%f",&m);
	getchar();                                  //去空格符
	average();                                  //调用函数求平均成绩
    if(M<m)                                     //判断M是否大于m 
	{
		printf("上限小于下限,输入有误!!!\n");
		return;                                 //返回上一级菜单
	}
	for(p=stu;p<stu+n;p++)                     //m<=M,寻找处在该分数段的学生
		if(p->average>(m/4)&&p->average<(M/4)) 
		{
			printf("%s ",p->name);
			flag=1;
		}	
	if(flag) printf("总分处在该分数段之间。");         //flag=1
	else printf("没有总分处在该分数段之间的学生。");    //没符合要求的学生
	printf("\n"); 
}

void doChoice5_3()                                    //各门成绩分段查询
{
	int flag=1,flag1=1,i;
	float M,m;                                       //M上限,m下限                               
	printf("请输入上限:");
	scanf("%f",&M);
	printf("\n请输入下限:");
	scanf("%f",&m);
	getchar();                                           //去空格符
	if(M<m)                                              //判断M是否大于m                                       
	{
		printf("上限小于下限,输入有误!!!\n");
		return;
	}
    for(p=stu;p<stu+n;p++)                              //m<=M,寻找处在该分数段的学生
	{   flag1=1;                                     //flag记号,判断各科成绩是否均处在该分数段  
		{
			for(i=0;i<4;i++)
				if(p->score[i]<m||p->score[i]>M) flag1=0;
		}
		if(flag1) printf("%s ",p->name);                   //flag1=1
		flag=0;                                          //flag记号,判断是否存在符合条件的学生
	}			
	if(flag) printf("没有符合条件的学生!");                    //flag=1,
	else printf("所有课程成绩都处在该分数段之间。");
	printf("\n"); 
}

void doChoice5()                                         //选项5
{
	char choice5;
	average();
	do 
	{
		init5();
        choice5=getch();
	    if(choice5=='1') doChoice5_1();               
	    else if(choice5=='2') doChoice5_2();
	    else if(choice5=='3') doChoice5_3();
	    else if(choice5=='4') return;
	    else printf("Input error!!!!\n");
	}while(1);
	printf("\n");

}


⌨️ 快捷键说明

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