实验2类的继承与派生报告图形类设计与员工管理.docx

上传人:b****4 文档编号:3024105 上传时间:2022-11-17 格式:DOCX 页数:21 大小:79.95KB
下载 相关 举报
实验2类的继承与派生报告图形类设计与员工管理.docx_第1页
第1页 / 共21页
实验2类的继承与派生报告图形类设计与员工管理.docx_第2页
第2页 / 共21页
实验2类的继承与派生报告图形类设计与员工管理.docx_第3页
第3页 / 共21页
实验2类的继承与派生报告图形类设计与员工管理.docx_第4页
第4页 / 共21页
实验2类的继承与派生报告图形类设计与员工管理.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

实验2类的继承与派生报告图形类设计与员工管理.docx

《实验2类的继承与派生报告图形类设计与员工管理.docx》由会员分享,可在线阅读,更多相关《实验2类的继承与派生报告图形类设计与员工管理.docx(21页珍藏版)》请在冰豆网上搜索。

实验2类的继承与派生报告图形类设计与员工管理.docx

实验2类的继承与派生报告图形类设计与员工管理

实验报告

艺术与设计学院数字媒体技术专业班成绩评定_______

学号姓名(合作者____学号__________)教师签名_______

预习情况

操作情况

考勤情况

数据处理情况

实验二题目类的继承与派生第11周星期2第34节

一、实验目的与要求

实验目的:

1、理解继承在面向对象程序设计中的重要作用;

2、理解继承和派生的概念;

3、掌握通过继承派生出一个新类的方法。

实验要求:

实验前应复习类的继承与派生的相关知识,在此基础上编写程序,运行程序并记录运行结果。

在程序调试中,要实现准备充分的测试用例;保存源程序、目标文件、可执行文件。

二、实验方案

1.图形类

设计一个图形基类:

Shape,在此基础上派生Rectangle、Circle、Triangle类。

要求:

(1)Cirlce类基本信息:

圆心坐标、半径;Rectangle类基本信息:

长、宽;Triangle类基本信息:

三个顶点坐标;其中:

成员变量为private属性,成员函数为public属性;

(2)每个图形类有多个构造函数:

缺省构造函数、带参数的构造函数;(3)每个图形类有计算图形的面积GetArea(),显示图形的基本信息函数Show(),修改基本信息的函数Set(形参)。

6[实验提示]

(1)在派生类的构造函数中,应注意对基类数据成员的初始化;

(2)各类图形面积的计算方法不同,因此不能在基类Shape中统一确定计算的方法。

在基类Shape中实现计算面积功能的函数体GetArea()应为空,在派生类中根据同名覆盖原则定义各自的同名函数实现具体功能。

[测试数据]Circle:

圆心(30,45)半径:

35圆心(50,89)半径:

23Rectangle:

长:

30宽:

53长:

28宽:

24Triangle:

顶点:

(34,45)、(89,45)、(54,67)顶点:

(22,34)、(67,43)、(86,64)

2.员工管理

某小型公司有四类人员:

总经理、技术人员、销售经理、推销员。

设计一个基类employee,派生出manager(总经理)、technician(技术人员)、salesmanager(销售经理)、saleman(推销员)。

销售经理既是经理又是销售人员,兼具两类人员的特点,因此同时继承manager和salesman两个类。

(1)类定义1)employee类:

基本信息:

编号、姓名、性别、出生日期、职位、薪水等;出生日期使用自定义的Date(日期)类;其中:

基本信息为private属性,成员函数为public属性;多个构造函数:

缺省构造函数、带参数的构造函数、带默认参数的构造函数;72)Date类:

成员变量:

年、月、日成员函数:

SetYear(intyear)、SetMonth(intmonth)、SetDay(intday)GetYear()、GetMonth()、GetDay()3)派生类technician:

新增属性:

工作时间派生类saleman:

新增属性:

销售额、所属部门

(2)实现人员信息的录入,用成员函数display()显示员工信息;(3)计算并显示个人月薪,用成员函数pay()计算不同员工的薪水:

月薪计算办法:

总经理拿固定月薪8000元,技术人员按每小时25元领取月薪;推销员的月薪按当月销售额的4%提成;销售经理固定月薪5000元加所管辖部门当月销售总额的5‰。

[实验提示]

(1)在基类中,除了定义构造函数和析构函数,还应统一定义对各类人员信息应有的操作,规范类族中各派生类的基本行为,但是各类人员的月薪计算方法不同,不能在基类employee中统一确定计算方法。

各类人员信息的显示内容不同,同样不能在基类employee中统一确定显示方法。

在基类中实现上述功能的函数体应为空,在派生类中根据同名覆盖原则定义各自的同名函数实现具体功能。

2、将基类employee分成两个独立文档:

employee.h(类声明头文件)和employy.cpp(类实现文件)3、“职位”的类型设定为int;

三、实验结果和数据处理

1图形类设计

#include

#include

usingnamespacestd;

classShape

{

public:

virtualdoubleArea(){return0;}

virtualdoublePerim(){return0;}

virtualvoidShow(){}

};

classRectangle:

publicShape//矩形

{

private:

doublele;//长

doublew;//宽

public:

Rectangle(doublele=0,doublew=0)

{

this->le=le;

this->w=w;

}

~Rectangle()

{

}

doubleArea()const

{

returnle*w;

}

doublePerim()const

{

return2*(le+w);

}

voidShow()

{

cout<<"Areais:

"<

cout<<"Perimis:

"<

}

};

constdoublePI=3.1415926535;

classCircle//圆形

{

private:

intx;

inty;

doubler;//半径

public:

Circle(doubler=0)

{

this->r=r;

}

~Circle()

{

}

doubleArea()const

{

returnPI*r*r;

}

doublePerim()const

{

return2*PI*r;

}

voidShow()

{

cout<<"Areais:

"<

cout<<"Perimis:

"<

}

};

classTriangle:

publicShape//三角形

{

private:

inta,b,c,d,e,f;

public:

doublel,m,n;

Triangle()

{

this->a=a;

this->b=b;

this->c=c;

this->d=d;

this->e=e;

this->f=f;

}

~Triangle()

{

}

doubleArea()const

{

doubleS;

S=(l+m+n)/2;

returnsqrt(S*(S-l)*(S-m)*(S-n));

}

doublePerim()const

{

return(l+m+n);

}

voidShow()

{

cout<<"Areais:

"<

cout<<"Perimis:

"<

}

};

voidmain()

{

inta,b,c,d,e,f,x,y;

doublele,w,r,l1,m1,n1;

cout<<"Rectangle:

"<

inputa:

cout<<"请输入矩形的长和宽:

"<

cin>>le>>w;

if(le<=0||w<=0)

{

cout<<"输入的长宽不能构成矩形"<

gotoinputa;

}

else

{

RectangleRect(le,w);

Rect.Show();

cout<<"Circle:

"<

}

inputb:

cout<<"请输入圆的圆心坐标xy和半径r:

"<

cin>>x>>y>>r;

if(r<=0)

{

cout<<"输入的半径不能构成圆"<

gotoinputb;

}

else

{

CircleCir(r);

Cir.Show();

cout<<"Triangle:

"<

}

inputc:

cout<<"请输入三角形的顶点坐标(六个数字):

"<

cin>>a>>b>>c>>d>>e>>f;

l1=sqrt((a-c)*(a-c)+(b-d)*(b-d));

m1=sqrt((a-e)*(a-e)+(b-f)*(b-f));

n1=sqrt((e-c)*(e-c)+(f-d)*(f-d));

TriangleTri;

Tri.l=l1;

Tri.m=m1;

Tri.n=n1;

if(l1<=0||m1<=0||n1<0||(l1+m1)<=n1||(m1+n1)<=l1||(l1+n1)<=m1)

{

cout<<"输入的三个顶点不能构成三角形"<

gotoinputc;

}

else

{

Tri.Show();

}

system("pause");

}

2员工管理

头文件程序:

#pragmaonce

classemployee

{

private:

intduty;

charnum,name,sex,salary;

public:

employee(charnum=0,charname=0,charsex=0,intduty=0,charsalary=0)

{

this->num=num;

this->duty=duty;

this->sex=sex;

this->salary=salary;

this->name=name;

}

voidSetin(){}

voidpay(){}

voiddisplay(){}

};

classDate

{

public:

voidSetYear(intyear);

voidSetMonth(intmonth);

voidSetDay(intday);

voidGetYear(intyear);

voidGetMonth(intmonth);

voidGetDay(intday);

};

源文件程序:

#include"employee.h"

#includ

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1