qq_38743201
qq_38743201
采纳率100%
2017-06-18 14:33

c + + 对多个学生类管理

已采纳

本人在做一个学生信息管理系统的C++课设,要求是对大学生,中学生,小学生的信息进行管理,我只会做一个类的,虽然知道它们可以继承,但感觉只是继承了私有成员而已,没什么作用。举个例子,算总分,大学生,中学生,小学生的数据成员有相同的,但是也有不同的,那我这个算总分的函数岂不是要写三个不同的?有没有什么好的方法解决,拜托各位大神帮个忙,这种多个类的该怎么处理,谢谢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • qq_36580282 亨_文 4年前

    添加学生信的函数有点麻烦,我也不他清楚你想要怎么操作,我大体数一下我的想法:
    先定义一个全局的变量`

    int I=0;

    在定义一个结构体

    struct Other
    {
    char*name;//新增加信息的名字

    char *cont;//新增加信息的值
    }

    在基类中添加私有的成员变量
    Other other[10];

    在基类中增加函数;
    void addmember(char*n,char*c)
    {
    other[I].name=n;

    other[I].cont=c;
    
    I++;
    

    }

    这个函数在子类中应该不用重载。
    我以上代码并没有测试,你要是采用的话,就改改,如果出错了,这锅我不背。

    点赞 评论 复制链接分享
  • qq_36580282 亨_文 4年前

    所谓重载其实就是在不改变函数名的情况下对函数机型重新定义使其拥有不同的或更多的功能,例如
    基类Student:
    class Student
    {
    public:
    Student(char na,int nu)//构造函数
    {
    name=na;
    num=nu
    }
    void display()//输出信息的函数
    {
    cout<<"姓名"<<name<<endl;
    cout<<"学号"<<num<<endl;
    }
    private:
    char
    name;//姓名
    int num;//学号
    };
    子类大学生类UStudent:
    class UStudent:public Student
    {
    public:
    //构造函数
    UStudent(char* na,int nu,char* m): Student(na,nu)
    {
    major=m;
    }
    void display()//重载display()函数
    {
    Student::display();
    cout<<"专业"<<major<<endl;
    }
    private:
    char *major;//新增加的数据成员:专业
    }
    //注:以上例子仅供参考,可能存在许多细节错误
    以上的UStudent类中的display()就是对Student类中的display函数进行重载了。

    点赞 评论 复制链接分享
  • qq_36580282 亨_文 4年前

    不好意思,写错了
    int PStudent::Sum()
    {
    return(Student::Sum()+a);
    }

    点赞 评论 复制链接分享
  • qq_36580282 亨_文 4年前

    你可以写一个基类“学生类”Student,再分别定义大中小学生三个学生类,让他们继承Student类。把他们三个共有的数据成员都写到Student类里,并且在Student类里定义这些共有的成员的函数,如Sum(),然后如果在继承的类如小学生类PStuent中又增加了一些数据成员需要处理的话,可以重载基类Student中的函数,如:
    int PStudent::Sun()
    {
    return(Student::Sum()+a);
    }
    当然,一定要注意成员的公用,私有还是保护。

    点赞 评论 复制链接分享
  • qq_36580282 亨_文 4年前

    你可以写一个基类“学生类”Student,再分别定义大中小学生三个学生类,让他们继承Student类。把他们三个共有的数据成员都写到Student类里,并且在

    点赞 评论 复制链接分享