学生成绩管理系统 指点
1.学生成绩管理系统要求:
(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.其他一些你能看到所有问题请都指正