学生成绩管理C++实现

这一生的挚爱 提交于 2020-02-22 18:55:49

学生成绩管理:有若干个学生,每个学生的数据包括学号、姓名、三门课程成绩。要求:
①设计函数实现学生信息的录入;
②设计函数实现学生信息的访问输出;
③设计函数求解每门课程的平均分;
④设计函数求解并输出每门课程都高于该课程的平均分的所有学生的信息。(要求每一个学生信息的输出用函数实现)

#include <iostream>
#include <string>
#include<stdlib.h>
using namespace std;
struct Student{
	int num;
	string name;
	float score[3];
	float ave[3];
};
void input( Student *stu,int n){
	int i,j;
	for(i=0;i<n;i++){
		cin>>stu[i].num>>stu[i].name>>stu[i].score[0]>>stu[i].score[1]>>stu[i].score[2];
	}
}
void output(Student *stu,int n){
	int i,j;
	for(i=0;i<n;i++){
		cout<<stu[i].num<<" "<<stu[i].name<<" "<<stu[i].score[0]<<" "<<stu[i].score[1]<<" "<<stu[i].score[2];
		cout<<endl;
	}
}
void getAverage(Student ave ,Student *stu,int n){
	int i;
	for(i=0;i<n;i++){
	stu->ave[0]+=stu[i].score[0]++;
	stu->ave[1]+=stu[i].score[1]++;
	stu->ave[2]+=stu[i].score[2]++;
   }
   cout<<stu->ave[0]/n<<"  "<<stu->ave[1]/n<<"  "<<stu->ave[2]/n<<endl; 
}
void overAverage(Student *stu,int n)
{
	for(int i=0;i<n;i++){
		if(stu[i].score[0]>(stu->ave[0])/n&&stu[i].score[1]>(stu->ave[1])/n&&stu[i].score[2]>(stu->ave[2])/n){
			cout<<stu[i].num<<"  "<<stu[i].name<<"  "<<stu[i].score[0]-1<<"  "<<stu[i].score[1]-1<<" "<<stu[i].score[2]-1<<endl;
		}
	}
 } 
int main(){
	int n;
	cout<<"请输入学生人数:"; 
	cin>>n;
	Student *stu=new Student[n];
	Student *ave=new Student[3];
	cout<<"请输入学生信息"<<endl;
	cout<<"学号    姓名  语文 英语 数学 " <<endl; 
	input(stu,n);
	cout<<"你输入的学生信息为:"<<endl;
	cout<<"学号    姓名  语文 英语 数学 " <<endl; 
	output(stu,n);
	cout<<"每门平均成绩为:"<<endl;
	getAverage(*ave,stu,n);
	cout<<"高于平均成绩的有:"<<endl; 
	overAverage(stu,n);
	return 0;
}

 

运行结果:
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!