c++ 输入一个班M个学生的学号和每个学生考试N门功课(如数学、英语、计算机基础等)的成绩。编程计算出每

输入一个班M个学生的学号和每个学生考试N门功课(如数学、英语、计算机基础等)的成绩。编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单。要求分别用函数实现:
1) 学生成绩的输入。
2)每个学生的平均分
3)每个课程的平均分
4)找出每门课程的最高分所对应的学生及课程名
5)将每个学生的总分和平均分降序排名打印
6)将每门课程的分数降序排名打印
7)打印的成绩单表项包括:序号,学号、数学、英语、计算机、......、总分、平均分。

#include <stdlib.h>
#include <iomanip>
#include <iostream>
int countnum,max=0;
using namespace std;
const int MaxN = 100;
struct student //定义学生基本信息结构体
{
int num; //学号
char name[20]; //姓名
char birthdate[20]; //出生日期
float math; //数学考试成绩
float timemath; //数学平时成绩
float chinese; //语文考试成绩
float timechinese; //语文平时成绩
float avemath; //数学成绩
float avechinese; //语文成绩
float aver; //平均成绩
float allaver; //总平均成绩
void Input()//信息录入模块
{
cout<<"学号:\n";
cin>>num;
cout<<"姓名:\n";
cin>>name;
cout<<"出生日期:\n";
cin>>birthdate;
cout<<"数学考试成绩:\n";
cin>>math;
cout<<"数学平时成绩:\n";
cin>>timemath;
cout<<"语文考试成绩:\n";
cin>>chinese;
cout<<"语文平时成绩:\n";
cin>>timechinese;
avemath=math*0.7+timemath*0.3;
avechinese=chinese*0.7+timechinese*0.3;
aver=(avemath+avechinese)/2;
allaver=avemath+avechinese;
}
void Print()//基本信息输出模块
{
cout<<setw(6)<<num<<setw(5)<<name<<setw(10)<<birthdate<<setw(6)<<avemath<<setw(6)<<avechinese<<setw(6)<<aver<<setw(6)<<allaver<<endl;
cout<<" "<<endl;
}
};
student s[ MaxN ];
int N ;
void Menu() //系统菜单
{
cout<<"1.录入;2.输出;3.插入;4.排序输出;5,学生查询;6.成绩统计;7.退出"<<endl;
};
void Cls()//系统清屏
{
system("cls");
};
void Hint()//使用说明
{
cout<<"使用说明:"<<endl;
cout<<"本软件近供教学用,不能作为商业用途,谢谢使用!"<<endl;
};
void Version()//软件信息
{
cout<<"**************************************"<<endl;
cout<<" "<<endl;
cout<<" 欢迎使用学生成绩管理系统0.1版"<<endl;
cout<<" "<<endl;
cout<<" 制作:计算机科学与技术 小张"<<endl;
cout<<" "<<endl;
cout<<" [email protected] QQ:282802787"<<endl;
cout<<" "<<endl;
cout<<"版权所有 未经同意 不得复制 违者必究"<<endl;
cout<<" "<<endl;
cout<<"**************************************"<<endl<<endl;
};
void BubbleSort()//排序模块
{
for( int i = 1 ; i < N ; i++ )
for( int j = 1 ; j <= N - i ; j++ )
if( s[ j ].allaver < s[ j + 1 ].allaver )
swap( s[ j ] , s[ j + 1 ] ) ;
};
void Cchange()//菜单对应得函数
{
char chs[15];
int cxstu;
int choice;
int jsq;
int jsq2;
float aver2;
do
{
Menu();
cin>>chs;
choice=atoi(chs);
switch(choice)
{
case 1://输入学生基本信息
{
Cls();
Version();
cout<<"输入学生人数:";
cin >> N ;
for( int i=1;i<=N;i++)
s[i].Input();
//BubbleSort();
//for(int e=1; e<=N;e++)
//s[e].Print();
break;
}
case 2://输出学生基本信息
{
Cls();
Version();
cout<<setw(6)<<"学号"<<setw(5)<<"姓名"<<setw(10)<<"出生日期"<<setw(6)<<"数学"<<setw(6)<<"语文"<<setw(6)<<"平均"<<setw(6)<<"总分"<<endl;
cout<<" "<<endl;
for(int e=1; e<=N;e++)
s[e].Print();
break;
}
case 3://插入学生基本信息
{
Cls();
Version();
N=N+1;
s[N].Input();
break;
}
case 4://排序输出
{
Cls();
Version();
BubbleSort();
cout<<setw(6)<<"学号"<<setw(5)<<"姓名"<<setw(10)<<"出生日期"<<setw(6)<<"数学"<<setw(6)<<"语文"<<setw(6)<<"平均"<<setw(6)<<"总分"<<endl;
cout<<" "<<endl;
for(int e=1; e<=N;e++)
s[e].Print();
break;
}
case 5://成绩查询
{
Cls();
Version();
cout<<"输入该学生的学号:";
cin >>cxstu;
for( int i =1; i<= N; i++ )
{
if(s[i].num==cxstu)
{
cout<<setw(6)<<"学号"<<setw(5)<<"姓名"<<setw(10)<<"出生日期"<<setw(6)<<"数学"<<setw(6)<<"语文"<<setw(6)<<"平均"<<setw(6)<<"总分"<<endl;
cout<<" "<<endl;
s[i].Print();
jsq=1;
}
};
if(jsq!=1)
{
cout<<"没有找到该生的考试信息!"<<endl;
};
break;
}
case 6://成绩统计
{
Cls();
Version();
aver2=0;
jsq2=0;
for(int h=1; h<=N;h++)
{
aver2=aver2+s[h].aver;
};
for(int y=1; y<=N;y++)
{
if(s[y].aver<(aver2/N))
{
cout<<setw(6)<<"学号"<<setw(5)<<"姓名"<<setw(10)<<"出生日期"<<setw(6)<<"数学"<<setw(6)<<"语文"<<setw(6)<<"平均"<<setw(6)<<"总分"<<endl;
cout<<" "<<endl;
s[y].Print();
jsq2=jsq2+1;
};
};
cout<<"总平均分为:"<<aver2/N<<"低于总平均分的人数是:"<<jsq2<<endl;
cout<<" "<<endl;
break;
}
case 7:{Cls();Version();Hint();break;}//退出系统,显示说明
default:{Cls();Version();cout<<"无效操作!请重新选择."<<endl;break;}//无效操作
}
}while(choice!=7);
};
void main()//主函数
{
Version();
Cchange();
}
温馨提示:答案为网友推荐,仅供参考
相似回答