当前位置:编程学习 > C/C++ >>

编程:写一个学生类和课程类,用c++

补充:描述课程类和学生类。
学生有名字,学生最多可学五门课程,学生实际学的门数,可以给定学生的名字,可以得到学生的名字,可以得到学生给定课程的成绩,可以得到学生所学课程的平均成绩,可以给学生增加一门课(同时在该课程中加一个学生)。
课程最多有30个学生,课程有实际学生数,课程有实际学生名单,课程有学分数,课程有每个学生成绩,课程可以得到学分数,课程可以设置学分数,课程可以得到班平均成绩,课程可以得到某个学生成绩。
现有数学课,张三学数学,成绩为3.1分,李四学数学。成绩为4.5分。求平均成绩,求张三的数学成绩。
现有物理课,学时数为4,张三学物理,成绩为4分。求张三所学课程的平均成绩。
答案:
#include <iostream.h>
#include <string.h>
class stu;
#define size 20

// course class

class course {
//static const size = 20;
char name[20];
stu* student[size];
int cnt;
float score[size];
public:
course(char* nm);
char* nm() {return name;}
void add(stu* st,float sc);
float getscore(char* nm);
float getscore(stu* st);
float sc(int n){return score[n];}
float average();
};

// student class

class stu
{
char name[20];
int cnt;
course* cours[5];
public:
stu(char* nm);
char* nm() {return name;}
void add(course* cs,float sc = 0);
float get_score(char* nm);
float average();
};

// course implemetaion
course::course(char* nm):cnt(0)
{
strcpy(name,nm);
}

void course::add(stu* st,float sc)
{
student[cnt]=st;
score[cnt++]=sc;
}

float course::getscore(char* nm)
{
for (int i=0;i<cnt;++i)
if (strcmp(student[i]->nm(),nm)==0)
return score[i];
else
cout << "can not find that student" << endl;
}

float course::getscore (stu* st)
{
for (int i=0;i<cnt;++i)
if (student[i]==st)
return score[i];
}

float course::average()
{
float sum=0;
for (int i=0;i<cnt;++i)
sum+=score[i];
return sum/cnt;
}

// student implementaion



stu::stu(char* nm):cnt(0)
{
strcpy(name,nm);
}

void stu::add(course* cs,float sc)
{
cours[cnt++]=cs;
cs->add(this,sc);
}

float stu::get_score(char* cs)
{
for (int i=0;i<cnt;++i)
if (strcmp(cours[i]->nm(),cs)==0)
return cours[i]->getscore(this->nm());
else
cout << "he doesn't opt that course" << endl;
}

float stu::average ()
{
float sum=0;
for (int i=0;i<cnt;++i)
sum=cours[i]->getscore(this);
return sum/cnt;
}

int main(int argc, char* argv[])
{
course math("math");
course physics("physics");
stu zhangsan("zhangsan");
stu lisi("lisi");

zhangsan.add (&math,3.1);
lisi.add (&math,4.5);

cout << math.average ();




int stop;
cin >> stop;
return 0;
}
应该可以的。。。。

上一个:给我介绍一本编程基础的书,关于程序C++的
下一个:C语言,求一段C++编程,要求输入"123"输出“1”,“2”,“3”与其和“6”的这种类型的程序,就是先拆开,再求和

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,