c++课程设计职工工资管理系统.docx

上传人:b****1 文档编号:243945 上传时间:2022-10-07 格式:DOCX 页数:18 大小:198.87KB
下载 相关 举报
c++课程设计职工工资管理系统.docx_第1页
第1页 / 共18页
c++课程设计职工工资管理系统.docx_第2页
第2页 / 共18页
c++课程设计职工工资管理系统.docx_第3页
第3页 / 共18页
c++课程设计职工工资管理系统.docx_第4页
第4页 / 共18页
c++课程设计职工工资管理系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

c++课程设计职工工资管理系统.docx

《c++课程设计职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《c++课程设计职工工资管理系统.docx(18页珍藏版)》请在冰豆网上搜索。

c++课程设计职工工资管理系统.docx

题目c++面向对象程序设计课程设计

清单:

5小题 +职工工资管理系统(类、链表实现)

姓名:

学号:

专业:

计算机科学与技术

学院:

指导教师:

2018年6月17日

Part1:

小程序练习

1类的继承

定义一个point类,包含私有数据成员x,y,成员函数包括无参构造函数,带参构造函数,set和get属性函数。

定义circle类,从point类公有派生,增加数据成员半径r,成员函数包括无参构造函数,带参构造函数,计算面积函数getarea。

在main函数中定义一个circle的对象,并计算其面积。

/*

1.定义Point类,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及setx()sety()getx()gety()四个属性函数。

2.定义circle类,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及获取半径r的函数get_r()计算面积并获取面积的函数getarea()。

3.在主函数中定义类的对象c1并初始化r=2。

再调用getarea()函数输出面积

*/

#include

usingnamespacestd;

classpoint //定义point类

{

public:

point(){}

point(intx,inty)

{

}

voidset_x(intx)

{

this->x=x;

}

intget_x()

{

returnx;

}

voidset_y(inty)

{

this->y=y;

}

intget_y()

{

returny;

}

private:

//私有对象xy

intx;

inty;

};

classcircle:

publicpoint //circle类公有派生point

{

public:

circle(){}

circle(doubler,intx,inty):

point(x,y)

{

this->r=r;

}

doubleget_r()

{

returnr;

}

doublegetarea()

{

return(3.14*r*r);

}

private:

intr; //circle私有对象r

};

intmain()

{

circlec1(2,3,6);

cout<<"r="<

cout<<"该圆面积="<

system("pause");

return0;

}

//发现问题:

定义的r好像只显示出int类型

运行结果分析:

主函数中r=2,输出圆面积12.56

2运算符重载,友元函数和this指针

定义一个计数器类counter,具备自增,自减功能(前后缀);输入输出>>,<<功能。

在main函数里测试该类。

/*

1.定义counter类,私有成员数据weight,设置其成员函数(构造函数和析构函数)

2.重载自加自减运算符和<<、>>运算符。

3.在主函数中实现运算符重载。

4.友元函数需要声明。

*/

#include

#include

usingnamespacestd;

classcounter;

istream&operator>>(istream&is,counter&a);

ostream&operator<<(ostream&os,counter&a);

classcounter//定义类counter

{

private:

doubleP;

public:

counter(){}//无参构造函数

counter(doublep):

P(p){}//带参构造函数

counteroperator++();//重载前置++

counteroperator++(int);//重载后置++

counteroperator--();//重载前置--

counteroperator--(int);//重载后置--

friendistream&operator>>(istream&is,counter&a);//声明友元,重载输入运算符>>

friendostream&operator<<(ostream&os,counter&a);//同上

};

countercounter:

:

operator++()//前置++重载实现

{

++P;

return*this;

}

countercounter:

:

operator++(int)//后置++重载实现

{

countera=*this;

++(*this);

returna;

}

countercounter:

:

operator--()//前置--重载实现

{

--P;

return*this;

}

countercounter:

:

operator--(int)//后置--重载实现

{

countera=*this;

--(*this);

returna;

}

istream&operator>>(istream&in,counter&a)//运算符>>重载实现

{

in>>a.P;

if(!

in)

cerr<<"输入错误!

"<

returnin;

}

ostream&operator<<(ostream&out,counter&a)//运算符<<重载实现

{

out<

returnout;

}

intmain()

{

counterc1(236),c2(632);

cout<<"c1="<

cout<<"++c1="<<++c1<

cout<<"c1++="<

cout<<"c2--="<

cout<<"--c2="<<--c2<

system("pause");

return0;

}

运行结果分析:

定义c1的值为236,c2的值为632;

此时++c1的数值为237;c1++输出时为237,输出后为238;

此时c2--输出时为632;--c2输出时为630,输出后为630;

3虚函数和抽象类

定义一个抽象类shape,包括公有的计算面积area函数,计算体积volume函数,输出基本信息函数printinfo(三个函数均为纯虚函数)。

从shape公有派生point类,增加私有数据成员x,y坐标,以及构造函数,析构函数。

从point公有派生circle类,增加私有数据成员半径r,以及构造函数,析构函数。

从circle公有派生cylinder类,增加私有数据成员高度h,以及构造函数,析构函数。

(在定义三个派生类的过程中,自己考虑需要重定义哪个虚函数)。

在main函数中,定义shape类的指针,指向派生类的对象,输出三类对象的基本信息,面积,体积;(将shape指针改为引用再尝试)。

/*

1.先定义基类shape。

设置三个纯虚函数并且声明:

声明计算面积纯虚函数area();声明计算体积纯虚函数volume();声明输出基本信息纯虚函数printinfo();

2.定义类point共有继承自类shape。

并且在该类中实现三个纯虚函数。

3.定义类circle共有继承自类point。

并且在该类中实现三个纯虚函数。

4.定义类cylinder共有继承自类circle。

并且在该类中实现三个纯虚函数。

5.在主函数中分别创建类point的对象a,circle的对象b,cylinder的对象c,并初始化;

6.在主函数中分别定义shape类的指针和引用,调用printinfo()函数。

*/

#include

#include

#definePi3.141516

usingnamespacestd;

classshape

{

public:

virtualdoublearea()=0; //三个纯虚函数:

面积,体积,基本输出

virtualdoublevolume()=0;

virtualvoidprintinfo()=0;

};

classpoint:

publicshape //shape派生的point类;点并没有体积面积,所以只写printinfo函数

{

public:

point(){}

point(doublex,doubley)

{

this->x=x;

this->y=y;

}

voidprintinfo()

{

cout<<"x="<

}

~point(){}

private:

doublex;

doubley;

};

classcircle:

publicpoint //同理;circle类(圆)需重写两个虚函数;

{

public:

circle(){}

circle(doubler,doublex,doubley):

point(x,y)

{

this->r=r;

}

doublearea()

{

returnPi*r*r;

}

voidprintinfo()

{

point:

:

printinfo();

cout<<"半径为"<

cout<<"圆的面积是"<

}

~circle(){}

private:

doubler;

};

classcylinder:

publiccircle //圆柱,同理,不多说

{

public:

cylinder(){}

cylinder(doubleh,doublex,doubley,doubler):

circle(x,y,r)

{

this->h

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

当前位置:首页 > 初中教育 > 科学

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

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