要求:
(1)由键盘输入每个学生的学号和四门课程的成绩;
(2)计算每个学生的平均分和总分;
(3)按总分从高到低排出名次,并按名次输出学生的基本信息,包括学号、各科成绩,平均分和总分;
(4)根据用户要求,输出某门课程(由键盘输入课程号且成绩在90分以上(含90分))且总分在前五名的学生情况,包括学号、各科成绩、平均分和总分;
这个是我自己写的:

#include<iostream>
#include<string>
using namespace std;
struct Course
{
int num;float score;
};
class Student{
public:
string name,id;
Course c[4];
void set_data()
{
cin>>name>>id;
for(int i=0;i<4;i++) cin>>c[i].score;
cout<<endl;
}
void output()
{
cout<<name<<'\t'<<id<<'\t';
for(int i=0;i<4;i++) cout<<c[i].score<<'\t';
cout<<endl;
}
float total()
{
float tot=0;
for(int i=0;i<4;i++) tot+=c[i].score;
return(tot);
}
};
int main()
{
int i,j,m,n,p,q;
Student stu[100],stu1;
/* 定义 语文的课程号为1 数学的课程为2 英语的课程号为3 综合的课程号为4 */
for(i=0;i<100;i++)
for(j=1;j<=4;j++) stu[i].c[j].num=j;
//键盘输入学生的信息
cout<<"请输入学生的姓名 学号 语文 数学 外语 综合 成绩:"<<endl;
for(i=0;i<100;i++)
{
stu[i].set_data();
// stu[i].output();
if(stu[i].name=="龙") break;
stu[i].total();
m=i;
// cout<<m<<endl;
}
//总分从高到低依次排列输出
cout<<"姓名"<<'\t'<<"学号"<<'\t'<<"语文"<<'\t'<<"数学"<<'\t'<<"外语"<<'\t'<<"综合"<<endl;
for(i=0;i<=m;i++)
{
p=i;
for(j=i+1;j<=m;j++)
if(stu[j].total()>stu[p].total()) p=j;
if(p!=i)
{stu1=stu[i];stu[i]=stu[p];stu[p]=stu1;}
// if(i=5) n=p;
}
for(i=0;i<=m;i++)
stu[i].output();
//输入一门课程的课程号,并查询输出90分以上且总分在前五名
cout<<"请输入课程号:"; cin>>q;
cout<<"姓名"<<'\t'<<"学号"<<'\t'<<"语文"<<'\t'<<"数学"<<'\t'<<"外语"<<'\t'<<"综合"<<endl;
for(i=0;i<5;i++)
{
// if(stu[i].total()>stu[n].total())
for(j=0;j<4;j++)
if(stu[i].c[j].num==q&&stu[i].c[j].score>=90)
stu[i].output();
}
return 0;
}
我有几点疑问:
1.我这个成绩的录入 一开始没有指定应该录入多少人的成绩,应该用个什么方法更好呢
2.还有类里面的公有 与私有我现在是不知道哪些是哪类了
3.怎么设计这个程序结构能够 更模块化呢
4.其他一些你能看到所有问题请都指正