| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 525 人关注过本帖
标题:类复合的实例。
只看楼主 加入收藏
我是菜鸟C
Rank: 4
等 级:业余侠客
帖 子:74
专家分:200
注 册:2011-3-27
结帖率:66.67%
收藏
 问题点数:0 回复次数:1 
类复合的实例。
一学校有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个人。}
搜索更多相关主题的帖子: 姓名 
2011-05-02 01:01
棉雨
Rank: 5Rank: 5
等 级:职业侠客
帖 子:174
专家分:368
注 册:2011-4-22
收藏
得分:0 
回复 楼主 我是菜鸟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;
}
楼主您看我这样理解对不对?
2011-05-05 12:42
快速回复:类复合的实例。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049593 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved