第十一周项目-2.2

//定义一个名为CPerson的类,有以下

//私有成员:姓名、身份证号、性别和年龄

//成员函数:构造函数、析构函数、输出信息的函数。

//在此基础上派生出CEmployee类,派生类CEmployee增加了两个新的数据成员,分别用于表示部门和薪水。

//要求派生类CEmployee的构造函数显示调用基类CPerson的构造函数,并为派生类CEmployee定义析构函数,定义输出信息的函数。

//字符串除了用C++扩充的string类型外,按C语言的传统,还可以用char *表示。

//请将类声明中的string全部改为char *后,重新写一遍程序(此时的区别是,类中有指针成员,构造和析构函数需要考虑深复制的问题了。)

#include<iostream>

#include<string.h>

#include<iomanip>

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_szName = new char[strlen(name) + 1];

strcpy(m_szName, name);

m_szId = new char[strlen(id) + 1];

strcpy(m_szId , id);

m_nSex = sex;

m_nAge = age;

}

void CPerson::Show1()

{

cout << "name" << setw(20) << "id" << setw(8) << "sex" << setw(6) << "age" << setw(12) << "department" << setw(10) << "salary" << endl;

cout << m_szName << setw(20) << m_szId << setw(8);

if (m_nSex == 1)

cout << "man";

else

cout << "women";

cout << setw(6) << 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) :CPerson(name, id, sex, age)

{

m_szDepartment = new char[strlen(department) + 1];

strcpy(m_szDepartment, department);

}

void Show2();

~CEmployee();

};

void CEmployee::Show2()

{

Show1();

cout << setw(12) << m_szDepartment << setw(10) << m_Salary;

}

CEmployee::~CEmployee()

{

delete m_szDepartment;

}

int main()

{

char  name[10], id[20], department[10];

int sex, age;

double salary;

cout << "input employee‘s name,id,sex(0:women,1:man),age,department,salary:\n";

cin >> name >> id >> sex >> age >> department >> salary;

CEmployee employee1(name, id, sex, age, department, salary);

employee1.Show2();

while (1)

{

}

return 0;

}

时间: 2025-01-07 06:39:18

第十一周项目-2.2的相关文章

第十一周项目1

#include <iostream> using namespace std; class Stu { public: Stu (int n,string nam); void display(); protected: int num; //学号 string name; //姓名 }; Stu::Stu(int n,string nam ) { num=n; name=nam; } void Stu::display() { cout<<"学号:"<

十一周 项目三 点类

#include<iostream> #include<Cmath> using namespace std; class Point //定义坐标点类 { public: Point():x(0),y(0) {}; Point(double x0, double y0):x(x0),y(y0){}; void PrintPoint(); //输出点的信息 double getx() { return x; } double gety() { return y; } protect

十一周 项目2 职员有薪水了 扩展

#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(); }; CPer

十一周 项目2 职员有薪水了

#include <iostream> 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 n

十一周 项目4 类族的设计

#include <iostream> #include <cmath> using namespace std; class Point { public: Point(double x=0,double y=0); void setPoint(double,double); double getx() { return x; } double gety() { return y; } void display(); protected: double x,y; }; class

十一周 项目4 类族的设计 完整版

#include <iostream> #include <cmath> using namespace std; class Point { public: Point(double x=0,double y=0); void setPoint(double,double); double getx() { return x; } double gety() { return y; } void display(); protected: double x,y; }; Point

第十一周 项目四 类族的设计】

项目4 - 类族的设计] 按以下的提示,由基类的设计和测试开始,逐渐地完成各个类的设计,求出圆格柱体的表面积.体积并输出并且完成要求的计算任务: (1)先建立一个Point(点)类,包含数据成员x,y(坐标点),实现需要的成员函数,并设计main函数完成测试: (2)以Point为基类,派生出一个Circle(圆)类,增加数据成员r(半径),以及求面积的成员函数area,实现其他需要的成员函数,设计main函数完成测试: (3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类

第十一周 项目3 - 点类派生直线类】定义点类Point,并以点类为基类,继承关系

项目3 - 点类派生直线类]定义点类Point,并以点类为基类,派生出直线类Line,从基类中继承的点的信息表示直线的中点.请阅读下面的代码,并将缺少的部分写出来. [cpp] view plaincopyprint? #include<iostream> #include<Cmath> using namespace std; class Point //定义坐标点类 { public: Point():x(0),y(0) {}; Point(double x0, double 

第十一周 项目四

[项目4 - 类族的设计] 按以下的提示,由基类的设计和测试开始,逐渐地完成各个类的设计,求出圆格柱体的表面积.体积并输出并且完成要求的计算任务: (1)先建立一个Point(点)类,包含数据成员x,y(坐标点),实现需要的成员函数,并设计main函数完成测试: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年5月31日 *版 本 号:v1.0 */ #inclu

第十一周项目三-点类派生直线类

[项目3 - 点类派生直线类]定义点类Point,并以点类为基类,派生出直线类Line,从基类中继承的点的信息表示直线的中点.请阅读下面的代码,并将缺少的部分写出来. #include<iostream> #include<Cmath> using namespace std; class Point //定义坐标点类 { public: Point():x(0),y(0) {}; Point(double x0, double y0):x(x0), y(y0) {}; void