| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 865 人关注过本帖
标题:简单的院校人员管理系统问题
只看楼主 加入收藏
djy5043
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2007-5-9
收藏
 问题点数:0 回复次数:3 
简单的院校人员管理系统问题
这个小程序编译链接没有问题,但运行最后一个类“在职进修教师”时结果有问题,求助
//编写一个用于院校人事管理的程序,要求能够输入、显示各类人员的信息。
//假设院校有四类人员:学生,教师,员工和在职进修教师,他们都有姓名,性别、电话等共同信息
//学生具有年级、专业课程和各科成绩的信息,员工具有所在部门、工资的信息
//教师具有所在部门、工资和所授课程的信息,在职进修教师兼有教师和学生两类信息
#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();
}
搜索更多相关主题的帖子: 院校 工资 教师 系统 课程 
2008-04-22 21:32
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
问一个问题?你的例子一定需要虚基类吗?

学习需要安静。。海盗要重新来过。。
2008-04-22 21:41
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
多继承,
最好避免多继承~

樱花大战,  有爱.
2008-04-22 21:57
djy5043
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2007-5-9
收藏
得分:0 
不一定需要虚基类
是书上的练习题
好像虚基类可以避免二义性我才用的
我是新手
还搞不清楚用虚基类和多继承会导致什么坏的影响
不这样做的话要怎么做呢
谢谢你们
2008-04-24 18:30
快速回复:简单的院校人员管理系统问题
数据加载中...
 
   



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

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