您的位置:首页 > 编程语言 > C语言/C++

c++简单的学生管理系统----继承练习

2011-09-05 18:59 489 查看
# include <iostream>

# include <string.h>

using namespace std;

const char null = '\0';

static char * strsave(char * s) {

    char * p;

    p = new char[strlen(s) + 1];

    strcpy(p, s);

    return p;

}

class Data_rec {

protected:

    char * name;

    char * id_number;

public:

    Data_rec() {

        name = null;

        id_number = null;

    }

    Data_rec(char * name1, char * id_number1) {

        name = strsave(name1);

        id_number = strsave(id_number1);

    }

    ~Data_rec() {

        delete[] name;

        delete[] id_number;

    }

    void print() {

        cout << "\n" << "name:" << name << endl;

        cout << "id_number:" << id_number << endl;

    }

};

class Student: virtual public Data_rec {

protected:

    char * major;

    long int stu_no;

    int level;

public:

    Student(char * name1, char * id_number1, char * major1, long int stu_no1,

            int level1) :

        Data_rec(name1, id_number1) {

        major = strsave(major1);

        stu_no = stu_no1;

        level = level1;

    }

    ~Student() {

        delete[] major;

    }

    void print();

};

void Student::print() {

    Data_rec::print();

    cout << "Major:" << major << endl;

    cout << "stu_no:" << stu_no << endl;

    cout << "level:" << level << endl;

}

class Employee: virtual public Data_rec {

protected:

    char * dept;

    double salary;

public:

    Employee(char * name1, char * id_number1, char * dept1, float salary1)

            :Data_rec(name1, id_number1)

            {

                dept = strsave(dept1);

                salary = salary1;

            }

            ~Employee() {

                delete[] dept;

            }

            void print();

        };

        void Employee::print() {

            Data_rec::print();

            cout << "Department:" << dept << endl;

            cout << "salary:" << salary << endl;

        }

        class Teacher: virtual public Employee {

        protected:

            char * title;

        public:

            Teacher(char * name1, char * id_number1, char * dept1, float salary1, char * title1) :

                Data_rec(name1, id_number1), Employee(name1, id_number1, dept1, salary1) {

                title = strsave(title1);

            }

            ~Teacher() {

                delete[] title;

            }

            void print();

        };

        void Teacher::print() {

            Employee::print();

            cout << "title:" << title << endl;

        }

        class E_Student: public Employee, public Student {

        public:

            E_Student(char * name1, char * id_number1, char * major1, long int stu_no1, int level1, char * dept1, float salary1):

            Data_rec(name1, id_number1), Employee(name1, id_number1, dept1, salary1),

            Student(name1, id_number1, major1, stu_no1, level1)

            {

            }

            void print();

        };

        void E_Student::print() {

            Student::print();

            cout << "Department:" << dept << endl;

            cout << "salary:" << salary << endl;

        }

        int main(void) {

            Student my_student("zhangming", "010123456789123", "computer science", 1234, 4);

            Employee my_employee("chandaiwei", "010434535431234", "electrical engineering", 7.20);

            Teacher my_teacher("lixiaoping", "010234568977789", "computer science", 12.34, "professor");

            E_Student my_E_Student("zhangming", "010123456789123", "computer science", 203478.3, 3, "electrical engineering", 7.20);

            cout << "\n\n";

            my_teacher.print();

            cout << "\n\n";

            my_E_Student.print();

            return 0;

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息