回 帖 发 新 帖 刷新版面

主题:简单的院校人员管理系统有问题

[b]这个小程序编译链接没有问题,但运行最后一个类“在职进修教师”时结果有问题,求助[/b]//编写一个用于院校人事管理的程序,要求能够输入、显示各类人员的信息。
//假设院校有四类人员:学生,教师,员工和在职进修教师,他们都有姓名,性别、电话等共同信息
//学生具有年级、专业课程和各科成绩的信息,员工具有所在部门、工资的信息
//教师具有所在部门、工资和所授课程的信息,在职进修教师兼有教师和学生两类信息
#include<iostream>
#include<string>
using namespace std;
class College_person{
protected:
    string name;
    string sex;
    int phone;          //其实电话号码应该用string类型,不应该用int型,C对数值越界不报错
    string duty;
public:
    College_person(string tempduty="学生"):duty(tempduty)       
    {
        cout<<duty<<endl;
        cout<<"姓名:";
        cin>>name;
        cout<<"性别:";
        cin>>sex;
        cout<<"电话:";
        cin>>phone;
    }
    void display()
    {
        cout<<"职务:"<<duty<<"  姓名:"<<name<<"  性别:"<<sex<<"  电话:"<<phone<<endl;
    }
};
class Student:public College_person{      
protected:
    int grade;
    string study_class[3];
    int score[3];
    int i;
public:
    Student():College_person("学生")        //像这种派生类没有参数基类有参数的是默认构造函数还是自定义的构造函数
    {
        cout<<"年级:";
        cin>>grade;
        cout<<"专业课程:";
        for(i=0;i<3;i++)
        cin>>study_class[i];
        cout<<"各科成绩:";
        for(i=0;i<3;i++)
        cin>>score[i];
    }
    void show()
    {
        College_person::display();
        cout<<"年级:"<<grade<<"  专业课程:";
        for(i=0;i<3;i++)
        cout<<study_class[i]<<"  ";
        cout<<"  各科成绩:  ";
        for(i=0;i<3;i++)
        cout<<score[i]<<"  ";
        cout<<endl;
    }
};
class Workers:virtual public College_person{
protected:
    string department;
    float salary;
public:
    Workers():College_person("员工")
    {
        cout<<"部门:";
        cin>>department;
        cout<<"工资:";
        cin>>salary;
    }
    void show()
    {
        College_person::display();
        cout<<"部门:"<<department<<"  工资:"<<salary;
        cout<<endl;
    }
};
class Teachers:public Workers{
protected:
    int i;
    string teach_class[3];
public:
    Teachers():Workers(),College_person("教师")
    {
        cout<<"所授课程:";
        for(i=0;i<3;i++)
        cin>>teach_class[i];
    }
    void show()
    {
        Workers::show();
        cout<<"所授课程:";
        for(i=0;i<3;i++)
        cout<<teach_class[i]<<"  ";
        cout<<endl;
    }
};
class Advanced_teacher:public Student,public Teachers{          //这个多继承老是有问题,调用了间接基类的构造函数但是没有调用直接基类的构造函数和显示函数
public:
    Advanced_teacher():Student(),Teachers(),College_person("在职进修教师")
    {}
    void show()
    {
        Student::show();
        Teachers::show();
        cout<<"输出完毕。";
    }
};
void main()
{
    Student a;
    a.show();
    Workers b;
    b.show();
    Teachers c;
    c.show();
    Advanced_teacher d;
    d.show();
}

回复列表 (共5个回复)

沙发

把问题描述清楚,你想要的程序应该实现的结果,和实际程序运行的结果!!!
这样别人才好帮助你,解决问题!!!

板凳


谢谢
就是编译链接没有问题,但运行最后一个类“在职进修教师”时结果有问题
我希望输入在职教师的信息它会输出
可是没有输出结果
就是“在职进修教师”这个多继承老是有问题,调用了间接基类的构造函数但是没有调用直接基类的构造函数和显示函数

3 楼

就是“在职进修教师”这个多继承老是有问题,调用了间接基类的构造函数但是没有调用直接基类的构造函数和显示函数
说句实话,我还是没有明白你要想要做什么!就你所说的这个问题是不存在的,这个调用
Advanced_teacher():Student(),Teachers(),College_person("在职进修教师")
实际上是调用了,直接基类Student,Teadchers的构造函数,同时也调用了College_person的构造函数;
      Student::show();        Teachers::show();
这两个调用是调用了,直接基类的show函数,直接Theacher,Student的show再调用了其直接基类College_person的show.
从以上来说,你说的问题根本就没有问题都调用了!!!

4 楼

谢谢你耐心看我的程序
我的意思是说我以为这样写它就调用了直接基类和间接基类的构造函数和show函数
也确实编译和链接都没有错误
既然这样的话
运行的时候它应该提示输入姓名,性别,电话等
然后会输出这个”在职进修教师“的信息
结果运行的时候它没有提示我输入信息,屏幕也没有输出信息
所以我不知道错误到底在哪里

5 楼

别乱给分了,你自己把MAIN中的前六行注释掉,你自己再看一看!!
一切是正常的!
恕我直言,以后问问题的时候最好,给出一个你的输入,你预想的输出,
程序实际运行的输出!这样别人才能更好的帮助你,否则你这种贴子,
让人看着都花时间,不会有人帮你的!

我来回复

您尚未登录,请登录后再回复。点此登录或注册