zoukankan      html  css  js  c++  java
  • 第十一周项目2-职员有薪水了

    (1)定义一个名为CPerson的类,有以下私有成员:姓名、身份证号、性别和年龄,成员函数:构造函数、析构函数、输出信息的函数。并在此基础上派生出CEmployee类,派生类CEmployee增加了两个新的数据成员,分别用于表示部门和薪水。要求派生类CEmployee的构造函数显示调用基类CPerson的构造函数,并为派生类CEmployee定义析构函数,定义输出信息的函数。

    /*
     *Copyright (c) 2015,烟台大学计算机学院
     *All gight reserved.
     *文件名称:Demo.cpp
     *作者:邵帅
     *完成时间:2015年05月25日
     *版本号:v1.0
    */
    #include <iostream>
    #include <cstring>
    using namespace std;
    class CPerson
    {
    protected:
        string m_szName;
        string m_szId;
        int m_nSex;//0:women,1:man
        int m_nAge;
    public:
        CPerson(string name,string id,int sex,int age);
        void Show1();
        ~CPerson();
    };
    CPerson::CPerson(string name,string id,int sex,int age):m_szName(name),m_szId(id),m_nSex(sex),m_nAge(age){}
    void CPerson::Show1()
    {
         cout<<m_szName<<" "<<m_szId;
         if (m_nSex==1)
            cout<<"men";
         else if (m_nSex==0)
            cout<<"women";
        cout<<m_nAge;
    }
    CPerson::~CPerson() {}
    class CEmployee:public CPerson
    {
    private:
        string m_szDepartment;
        double m_Salary;
    public:
        CEmployee(string name,string id,int sex,int age,string department,double salary);
        void Show2();
        ~CEmployee();
    };
    CEmployee::CEmployee(string name,string id,int sex,int age,string department,double salary):CPerson(name,id,sex,age),m_szDepartment(department),m_Salary(salary){}
    void CEmployee::Show2()
    {
        cout<<"name      "<<"id     "<<"sex      "<<"age      "<<"department     "<<"salary"<<endl;
        cout<<m_szName<<" "<<m_szId<<" ";
         if (m_nSex==1)
            cout<<"men ";
         else if (m_nSex==0)
            cout<<"women ";
        cout<<m_nAge;
        cout<<" "<<m_szDepartment<<" "<<m_Salary<<endl;
    }
    CEmployee::~CEmployee() {}
    int main()
    {
        string name,id,department;
        int sex,age;
        double salary;
        cout<<"input employee's name,id,sex(0:women,1:man),age,department,salary:
    ";
        cin>>name>>id>>sex>>age>>department>>salary;
        CEmployee employee1(name,id,sex,age,department,salary);
        employee1.Show2();
        return 0;
    }
    


    (2)字符串除了用C++扩充的string类型外,按C语言的传统,还可以用char *表示。请将类声明中的string全部改为char *后,重新写一遍程序(此时的区别是,类中有指针成员,构造和析构函数需要考虑深复制的问题了。)

    /*
     *Copyright (c) 2015,烟台大学计算机学院
     *All gight reserved.
     *文件名称:Demo.cpp
     *作者:邵帅
     *完成时间:2015年05月25日
     *版本号:v1.0
    */
    #include <iostream>
    #include <cstring>
    using namespace std;
    class CPerson
    {
    protected:
        char *m_szName;
        char *m_szId;
        int m_nSex;//0:women,1:man
        int m_nAge;
    public:
        CPerson(char *name,char *id,int sex,int age);
        void Show1();
        ~CPerson();
    };
    CPerson::CPerson(char *name,char *id,int sex,int age):m_nSex(sex),m_nAge(age)
    {
        m_szName=new char[strlen(name)+1];
        strcpy(m_szName,name);
        m_szId=new char[strlen(id)+1];
        strcpy(m_szId,id);
    }
    void CPerson::Show1()
    {
        cout<<m_szName<<" "<<m_szId;
        if (m_nSex==1)
            cout<<"men";
        else if (m_nSex==0)
            cout<<"women";
        cout<<m_nAge;
    }
    CPerson::~CPerson()
    {
        delete []m_szName;
        delete []m_szId;
    }
    class CEmployee:public CPerson
    {
    private:
        char *m_szDepartment;
        double m_Salary;
    public:
        CEmployee(char *name,char *id,int sex,int age,char *department,double salary);
        void Show2();
        ~CEmployee();
    };
    CEmployee::CEmployee(char *name,char *id,int sex,int age,char *department,double salary):CPerson(name,id,sex,age),m_Salary(salary)
    {
        m_szDepartment=new char[strlen(department)+1];
        strcpy(m_szDepartment,department);
    }
    void CEmployee::Show2()
    {
        cout<<"name      "<<"id     "<<"sex      "<<"age      "<<"department     "<<"salary"<<endl;
        cout<<m_szName<<" "<<m_szId<<" ";
        if (m_nSex==1)
            cout<<"men ";
        else if (m_nSex==0)
            cout<<"women ";
        cout<<m_nAge;
        cout<<" "<<m_szDepartment<<" "<<m_Salary<<endl;
    }
    CEmployee::~CEmployee()
    {
        delete []m_szDepartment;
    }
    int main()
    {
        char name[8],id[20],department[200];
        int sex,age;
        double salary;
        cout<<"input employee's name,id,sex(0:women,1:man),age,department,salary:
    ";
        cin>>name>>id>>sex>>age>>department>>salary;
        CEmployee employee1(name,id,sex,age,department,salary);
        employee1.Show2();
        return 0;
    }
    



    @ Mayuko

  • 相关阅读:
    is as运算符
    继承,多态
    封装等
    面向对象
    在JDBC中使用带参数的SQL语句
    我的程序库:HiCSDB
    我的程序库:HiCSUtil
    Java中,将ResultSet映射为对象和队列及其他辅助函数
    Java版的对象关系映射实现
    Java中的基本数据类型转换
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567488.html
Copyright © 2011-2022 走看看