c课程设计职工工资管理系统文档格式.docx
- 文档编号:17064894
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:37
- 大小:61.28KB
c课程设计职工工资管理系统文档格式.docx
《c课程设计职工工资管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《c课程设计职工工资管理系统文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
returnx;
voidset_y(inty)
y=y;
intget_y()
returny;
private:
//私有对象xy
intx;
inty;
};
classcircle:
publicpoint//circle类公有派生point
circle(){}
circle(doubler,intx,inty):
point(x,y)
r=r;
doubleget_r()
returnr;
doublegetarea()
return(3.14*r*r);
intr;
//circle私有对象r
intmain()
circlec1(2,3,6);
cout<
<
"
r="
c1.get_r()<
endl;
cout<
"
该圆面积="
c1.getarea()<
endl;
system("
pause"
);
return0;
}
//发现问题:
定义的r好像只显示出int类型
运行结果分析:
主函数中r=2,输出圆面积12.56
2运算符重载,友元函数和this指针
定义一个计数器类counter,具备自增,自减功能(前后缀);
输入输出>
>
<
功能。
在main函数里测试该类。
1.定义counter类,私有成员数据weight,设置其成员函数(构造函数和析构函数)
2.重载自加自减运算符和<
、>
运算符。
3.在主函数中实现运算符重载。
4.友元函数需要声明。
#include<
cmath>
classcounter;
istream&
operator>
(istream&
is,counter&
a);
ostream&
operator<
(ostream&
os,counter&
classcounter//定义类counter
doubleP;
counter(){}//无参构造函数
counter(doublep):
P(p){}//带参构造函数
counteroperator++();
//重载前置++
counteroperator++(int);
//重载后置++
counteroperator--();
//重载前置--
counteroperator--(int);
//重载后置--
friendistream&
//声明友元,重载输入运算符>
friendostream&
//同上
countercounter:
:
operator++()//前置++重载实现
++P;
return*this;
operator++(int)//后置++重载实现
countera=*this;
++(*this);
returna;
operator--()//前置--重载实现
--P;
operator--(int)//后置--重载实现
--(*this);
in,counter&
a)//运算符>
重载实现
in>
a.P;
if(!
in)
cerr<
输入错误!
returnin;
out,counter&
a)//运算符<
out<
returnout;
counterc1(236),c2(632);
c1="
c1<
endl<
c2="
c2<
++c1="
++c1<
//测试
c1++="
c1++<
c2--="
c2--<
--c2="
--c2<
定义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()函数。
#definePi3.141516
classshape
virtualdoublearea()=0;
//三个纯虚函数:
面积,体积,基本输出
virtualdoublevolume()=0;
virtualvoidprintinfo()=0;
classpoint:
publicshape//shape派生的point类;
点并没有体积面积,所以只写printinfo函数
point(doublex,doubley)
voidprintinfo()
cout<
x="
<
x<
y="
y<
~point(){}
doublex;
doubley;
publicpoint//同理;
circle类(圆)需重写两个虚函数;
circle(doubler,doublex,doubley):
doublearea()
returnPi*r*r;
point:
printinfo();
半径为"
r<
圆的面积是"
area()<
~circle(){}
doubler;
classcylinder:
publiccircle//圆柱,同理,不多说
cylinder(){}
cylinder(doubleh,doublex,doubley,doubler):
circle(x,y,r)
h=h;
/*doublearea()
return2*Pi*this->
r+circle:
area();
//未实现计算圆柱表面积
doublevolume()
returnh*circle:
circle:
高为"
h<
圆柱的体积是"
volume()<
~cylinder(){}
doubleh;
cylindertemp(6,2,3,3);
shape*s;
//实例化一个圆柱对象
s=&
temp;
(*s).printinfo();
printf("
\n"
temp中数据构成的圆面积为"
s->
area()<
体积为"
(*s).volume()<
运行结果:
4模板
编写一个使用类模板对数组进行查找、求元素和、重载下标[]运算符,以及输出的程序。
1)设计一个类模板:
形式1为template<
classT>
classArray;
形似2为template<
classT,intn>
用于对T类型的数组进行构造和输出;
2)产生模板类Array<
int>
和Array<
double>
进行测试;
3)产生模板类Array<
int,10>
double,10>
进行测试。
//先实现第
(2)小题
cassert>
template<
classArray
T*list;
intsize;
Array(intsize=10);
//构造函数
~Array();
//析构函数
T&
operator[](inti);
//重载"
[]”
constT&
operator[](inti)const;
Tsum(intn);
intsearch(Te,intn);
intgetSize()const;
voidresize(intsz);
Array<
T>
Array(intsz)//构造函数
assert(sz>
=0);
size=sz;
list=newT[size];
~Array()//析构函数
delete[]list;
//重载下标运算符[]
T&
Array<
operator[](intn)
assert(n>
=0&
&
n<
size);
returnlist[n];
constT&
operator[](intn)const
//取当前数组的大小
intArray<
getSize()const
returnsize;
//将数组大小修改为sz
voidArray<
resize(intsz)
if(sz==size)
return;
T*newList=newT[sz];
intn=(sz<
size)sz:
size;
for(inti=0;
i<
n;
i++)
newList[i]=list[i];
delete[]list;
//删除原数组
list=newList;
//使list指向新数组
//更新size
template<
TArray<
sum(intn)
Tsum=list[0];
for(inti=1;
sum+=list[i];
returnsum;
//查找
search(Te,intn)
for(inti=0;
if(list[i]==e)
returni;
return-1;
a(5);
inti,n,m,count=0;
请输入数字个数:
;
cin>
for(i=1;
=n;
cin>
m;
if(count==a.getSize())a.resize(count*2);
a[count++]=m;
for(i=0;
count;
i++)
a[i];
数组和为:
a.sum(n)<
数字4在数组中的位置是:
a.search(4,n)<
/*Array<
进行测试
setw(8)<
*/
//然后实现第(3)小题
classT,intn>
T*list;
Array();
Tsum();
intsearch(Te);
T,n>
Array()//构造函数
{
list=newT[n];
operator[](inti)
returnlist[i];
sum()
search(Te)
int,5>
a;
a.sum()<
a.search(4)<
double,n>
double,5>
5文件读写
定义学生类数组,有N个人(N=5),包括姓名和语数外三名课的成绩,通过重载<
和>
运算符实现学生数组的文件读写。
1.定义student类,私有数据成员字符数组name[20];
2.定义运算符<
,>
重载;
3.在住函数中定义student类数组s[N];
并以输出和二进制的方式打开文件
fstream>
string>
#defineN5
classstudent;
(ostream&
os,students);
istream&
operator>
(istream&
is,student&
s);
classstudent//student类:
姓名+4门成绩
student(){}
student(stringname,intchinese_socre,intmaths_score,intenglish_score)
name=name;
chinese_score=chinese_score;
maths_score=maths_score;
english_score=english_score;
os,students)//声明友元,重写<
os<
s.name<
s.chinese_score<
s.maths_score<
s.eng
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 职工工资 管理 系统