类复合的实例。
一学校有100个不同的专业,每个专业有30个学生,每个学生包括学号,姓名,年龄和成绩。。。用类复合的思想,实现信息的输入输出。
下面是我写出的代码、:
#include <iostream>
#include <string>
using namespace std;
class student
{
private:
int id,age;
double score;
string name;
public:
student(int i=0,char* s=" ",int a=0,double sc=0):id(i),name(s),age(a),score(sc) {}
void input()
{
cout<<"id:";cin>>id;
cout<<"name:";cin>>name;
cout<<"age:";cin>>age;
cout<<"score:";cin>>score;
}
void print()
{
cout<<id<<"\t"<<name<<"\t"<<age<<"\t"<<score;
}
};
class Class
{
private:
student s[30];
string dept;
int num; //用来确定一个班该有多少个学生。
public:
Class(int n=1,char *d=" "):num(n),dept(d) {}
void createClass()
{
for(int i=0;i!=num;i++)
{
s[i].input();
cout<<"input dept:\t";cin>>dept;
}
}
void print()
{
for(int i=0;i!=num;i++)
{
s[i].print();
cout<<"\t"<<dept<<"\n";
}
}
};
class school
{
private:
Class c[100];
int no;
public:
school(int n ):no(n) {}
void CreateSchool()
{
for(int j=0;j!=no;j++)
c[j].createClass();
}
void print()
{
for(int i=0;i!=no;i++)
c[i].print();
}
};
int main()
{
school s(2);
s.CreateSchool();
s.print();
}
这样能够输出学生的相关信息,但是不能定义每个班学生的人数,起作用的还是main()中的school s(2),这表示的是有两个专业而已,然而对学生人数的定义操作在主函数中显示不出来。
现在关键的问题是:代码需要怎样改动一下,才能让我能在主函数中手动的定义每个班学生的人数。{比如school(2,6)表示有两个专业,每个专业6个人。}