设计一个学生类,包含学生学号,姓名,课程,成绩等基本信息,计算学生的平均成绩。
顺便多写了几个功能,实现结果如下图
#include<iostream>
using namespace std;
int add=0;//计有同一个课程的人数,用来算平均数
int a=0;//学生个数
class Student{
private:long Snumber;//学号
char *name;//姓名
char *course;//课程
int score;//成绩
public:
Student(long Snumber=0,char *name=NULL,char *course=NULL,int score=0){ //构造函数
this->Snumber=Snumber,this->name=name,this->course=course,this->score=score;
}
~Student(){} //析构函数
void setstudent(){ //录入学生信息
cout<<"请输入学生姓名:"<<endl;
name=(char *)malloc(20*sizeof(char));
cin>>name;
cout<<"请输入学生学号:"<<endl;
cin>>Snumber;
cout<<"请输入课程名"<<endl;
course=(char *)malloc(20*sizeof(char));
cin>>course;
cout<<"请输入成绩"<<endl;
cin>>score;
}
int findscore(char *cou) {//寻找同一个课程的人的成绩
int judge1=0;
int p;
if(strlen(course)==strlen(cou)){
for(p=0;p<strlen(course);p++){
if(*(course+p)==*(cou+p)) judge1=judge1+1;
}
}
if(judge1==p) {add=add+1; return score;}//返回成绩,计数加一
else return 0;//若该同学没有这门课,则返回零
}
void findstudent(char *n){//按姓名查找这名同学
int judge2=0;
int q;
if(strlen(name)==strlen(n)){
for(q=0;q<strlen(name);q++){
if(*(name+q)==*(n+q)) judge2=judge2+1;
}
}
if(judge2==q) cout<<"姓名:"<<name<<" 学号:"<<Snumber<<" 课程:"<<course<<" 成绩:"<<score<<endl;//返回其信息
}
long getSnumber(){return Snumber;}//返回学号
char *getname(){return name;}//返回姓名
char *getcourse(){return course;}//返回课程
int getscore(){return score;}//返回成绩
};
int main(){
int c,e;//功能选择
char *N1;//姓名输入
float sum=0;//分数和
int b=0;//每个人的分数
char *s1;//课程名输入
Student stu[100];//类的对象的数组
for(int d=0;d<100;d++){
cout<<"请选择服务:1-录入学生成绩;2-查询学生成绩;3-查询课程平均数;4-显示所有学生:";//功能选择
cin>>c;
switch(c){
case 1:{
for(int i=0;i<=100;i++){
stu[i].setstudent();//学生录入
a=a+1;//学生个数加一
cout<<"'1'继续,'2'返回"<<endl;//是否继续录入
cin>>e;
if(e==2){break;}
else if(e==1){continue;}
else if(e!=1&&e!=2) {cout<<"输入无效"<<endl; break;}
}
break;
}
case 2:{
cout<<"请输入需要查询的学生姓名:";
N1=(char *)malloc(20*sizeof(char));
cin>>N1;
for(int i=0;i<a;i++){
stu[i].findstudent(N1);
}
break;
}
case 3:{
cout<<"请输入需要平均分数的课程名:";
s1=(char *)malloc(20*sizeof(char));
cin>>s1;
for(int i=0;i<a;i++){
b=stu[i].findscore(s1);
sum=sum+b;
}
cout<<sum<<endl;
cout<<add<<endl;
cout<<"平均数为:"<<sum/add<<endl;
add=0;
sum=0;
break;
}
case 4:{
for(int i=0;i<a;i++){
cout<<"姓名:"<<stu[i].getname()<<" 学号:"<<stu[i].getSnumber()<<" 课程:"<<stu[i].getcourse()<<" 成绩:"<<stu[i].getscore()<<endl;
}
break;
}
}
}
return 0;
}