c++课程设计职工工资管理系统.docx
- 文档编号:6904991
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:37
- 大小:65.30KB
c++课程设计职工工资管理系统.docx
《c++课程设计职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《c++课程设计职工工资管理系统.docx(37页珍藏版)》请在冰豆网上搜索。
c++课程设计职工工资管理系统
题目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=h; } /*doublearea() { return2*Pi*this->r+circle: : area();//未实现计算圆柱表面积 } */ doublevolume() { returnh*circle: : area(); } voidprintinfo() { circle: : printinfo(); cout<<"高为"< cout<<"圆柱的体积是"< } ~cylinder(){} private: doubleh; }; intmain() { cylindertemp(6,2,3,3); shape*s;//实例化一个圆柱对象 s=&temp; (*s).printinfo(); printf("\n"); cout<<"temp中数据构成的圆面积为"< cout<<"体积为"<<(*s).volume()< system("pause"); return0; } 运行结果: 4模板 编写一个使用类模板对数组进行查找、求元素和、重载下标[]运算符,以及输出的程序。 1)设计一个类模板: 形式1为template 2)产生模板类Array 3)产生模板类Array //先实现第 (2)小题 #include #include usingnamespacestd; template classArray { private: T*list; intsize; public: Array(intsize=10);//构造函数 ~Array();//析构函数 T&operator[](inti);//重载"[]” constT&operator[](inti)const; Tsum(intn); intsearch(Te,intn); intgetSize()const; voidresize(intsz); }; template : Array(intsz)//构造函数 { assert(sz>=0); size=sz; list=newT[size]; } template : ~Array()//析构函数 { delete[]list; } //重载下标运算符[] template T&Array : operator[](intn) { assert(n>=0&&n returnlist[n]; } template constT&Array : operator[](intn)const { assert(n>=0&&n returnlist[n]; } //取当前数组的大小 template intArray : getSize()const { returnsize; } //将数组大小修改为sz template voidArray : resize(intsz) { assert(sz>=0); if(sz==size) return; T*newList=newT[sz]; intn=(sz sz: size; for(inti=0;i newList[i]=list[i]; delete[]list;//删除原数组 list=newList;//使list指向新数组 size=sz;//更新size } template TArray : sum(intn) { Tsum=list[0]; for(inti=1;i sum+=list[i]; returnsum; } //查找 template intArray : search(Te,intn) { for(inti=0;i if(list[i]==e) returni; return-1; } intmain() { Array inti,n,m,count=0; cout<<"请输入数字个数: "; cin>>n; for(i=1;i<=n;i++) { cin>>m; if(count==a.getSize())a.resize(count*2); a[count++]=m; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 课程设计 职工工资 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)