输入一批学生某门课程考试的各题的分数,计算每个人的总分,统计各分数段 049, 5059, 6069,7079, 8089, 90100 的人数及占总人数的百分比。要求输入:课程名称,考试日期,学生班号,学生姓名,学号,课程考试得分。输出要求:课程名称,考试日期,学生班号;各分数段的人数及百分比。
Info类的作用是什么?
主函数每步的是怎么实现的?
谢谢解答!
#include <iostream>
#include <string>
using namespace std;
class Stu {
public:
Stu() {}
~Stu() {}
string ClassName;
string TestDate;
string ClassNumber;
string name;
string num;
double T[5];//题数
void input() { //输入成绩
cout<<"请输入课程名称:";
cin>>ClassName;
cout<<"请输入考试日期:";
cin>>TestDate;
cout<<"请输入学生班号:";
cin>>ClassNumber;
cout<<"请输入学生姓名:";
cin>>name;
cout<<"请输入学生学号:";
cin>>num;
for(int i=0; i<5; i++) {
cout<<"请输入学生该课程第"<<i+1<<"题成绩:";
cin>>T[i];
}
cout<<endl;
}
double getscore() { //总分
double sum;
for(int i=0; i<10; i++) {
sum+=T[i];
}
return sum;
}
};
class Info {
public:
string classname;
string testdate;
string classnum;
int n[6];
int N;
Info() {
for(int i=0; i<6; i++) {
n[i]=0;
}
N=0;
}
};
int main() {
int i,j,studentNum;
cout<<"请输入学生人数:";
cin>>studentNum;//输入学生人数
Stu stu[studentNum]; //创建Stu成员
Info info[studentNum];//创建Info成员
for(i=0; i<studentNum; i++) { //输入
stu[i].input ();
}
info[0].classname =stu[0].ClassName ;
info[0].testdate =stu[0].TestDate;
info[0].classnum =stu[0].ClassNumber;
for(i=0; i<studentNum; i++) { //输出
cout<<endl;
for(int k=0; k<j; k++) {
if( stu[i].ClassName ==info[k].classname &&
stu[i].TestDate ==info[k].testdate &&
stu[i].ClassNumber ==info[k].classnum ) {
double score=stu[i].getscore();
if(score<=49&&score>=0)
info[k].n[0]++;
else if(score<=59&&score>=50)
info[k].n[1]++;
else if(score<=69&&score>=60)
info[k].n[2]++;
else if(score<=79&&score>=70)
info[k].n[3]++;
else if(score<=89&&score>=80)
info[k].n[4]++;
else if(score<=100&&score>=90)
info[k].n[5]++;
info[k].N++;
} else {
j++;
info[j-1].classname =stu[i].ClassName ;
info[j-1].testdate =stu[i].TestDate ;
info[j-1].classnum =stu[i].ClassNumber ;
}
}
}
for(i=0; i<j; i++) {
cout<<endl;
cout<<"课程名称:"<<info[i].classname<<endl;
cout<<"考试日期:"<<info[i].testdate <<endl;
cout<<"学生班号:"<<info[i].classnum <<endl;
cout<<"0~49分人数:"<<info[i].n[0]<<endl;
cout<<"50~59分人数:"<<info[i].n[1]<<endl;
cout<<"60~69分人数:"<<info[i].n[2]<<endl;
cout<<"70~79分人数:"<<info[i].n[3]<<endl;
cout<<"80~89分人数:"<<info[i].n[4]<<endl;
cout<<"90~100分人数:"<<info[i].n[5]<<endl;
cout<<endl;
cout<<"0~49分人数占总人数百分比:"<<info[i].n[0]*100/info[i].N<<"%"<<endl;
cout<<"50~59分人数占总人数百分比:"<<info[i].n[1]*100/info[i].N<<"%"<<endl;
cout<<"60~69分人数占总人数百分比:"<<info[i].n[2]*100/info[i].N<<"%"<<endl;
cout<<"70~79分人数占总人数百分比:"<<info[i].n[3]*100/info[i].N<<"%"<<endl;
cout<<"80~89分人数占总人数百分比:"<<info[i].n[4]*100/info[i].N<<"%"<<endl;
cout<<"90~100分人数占总人数百分比:"<<info[i].n[5]*100/info[i].N<<"%"<<endl;
}
system("pause");
return 0;
}