![]() |
#2
棉雨2011-05-05 12:42
回复 楼主 我是菜鸟C
#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) {}//Class(int n=你想要的学生人数,char *d=" "):num(n),dept(d) {} (因为你之前是n=1,表示一个专业只有一个人,所以你在运行的时候,只能输入两个专业的两个人。循环的次数是由num(n)决定,n=1时当然只能输循环一次,也就只能输入一个学生的信息。) 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];//最多有一百个专业(数组长度为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);//school s(写你所想要的专业个数) s.CreateSchool(); s.print(); return 0; } 楼主您看我这样理解对不对? |
一学校有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个人。}