面向对象A面向对象习题南航皮德常资料Word格式文档下载.docx

上传人:b****6 文档编号:20855600 上传时间:2023-01-26 格式:DOCX 页数:34 大小:25.48KB
下载 相关 举报
面向对象A面向对象习题南航皮德常资料Word格式文档下载.docx_第1页
第1页 / 共34页
面向对象A面向对象习题南航皮德常资料Word格式文档下载.docx_第2页
第2页 / 共34页
面向对象A面向对象习题南航皮德常资料Word格式文档下载.docx_第3页
第3页 / 共34页
面向对象A面向对象习题南航皮德常资料Word格式文档下载.docx_第4页
第4页 / 共34页
面向对象A面向对象习题南航皮德常资料Word格式文档下载.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

面向对象A面向对象习题南航皮德常资料Word格式文档下载.docx

《面向对象A面向对象习题南航皮德常资料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《面向对象A面向对象习题南航皮德常资料Word格式文档下载.docx(34页珍藏版)》请在冰豆网上搜索。

面向对象A面向对象习题南航皮德常资料Word格式文档下载.docx

elseif(m==9)

September"

elseif(m==10)

October"

elseif(m==11)

November"

else

December"

}

//参数:

mm:

月份,dd:

天数,yy:

如果成功赋值则返回true,否则返回false//

boolDate:

setDate(constintmm,constintdd,constintyy)

{if(mm<

1||mm>

12)returnfalse;

if(dd<

1||dd>

31)returnfalse;

year=yy;

month=mm;

day=dd;

returntrue;

//在屏幕上显示日期//

voidDate:

display(void)

{//按照"

12-25-2004"

的形式输出日期

cout<

<

month<

"

-"

day<

year<

\n"

//按照"

December25,2004"

getMonth(month)<

"

"

25December2004"

voidmain(void)

{DatemyDate;

//存储日期

while(true)

{intyear;

//临时存储年份

intmonth;

//临时存储月份

intday;

//临时存储天数

cout<

请按YYYY格式输入年:

cin>

>

year;

请按mm格式输入月:

month;

请按dd格式输入日:

day;

if(myDate.setDate(month,day,year))

break;

else

cout<

日期输入错误,请重新输入!

endl;

}

您输入的日期是:

myDate.display();

8-2、设计一个人口类Population,存储某年的人数、出生的人数和死亡人数,其函数成员能返回出生率和死亡率。

classPopulation

{intpnum;

//存储某年的人数

intbirthnum;

//存储出生的人数

intdeadnum;

//存储死亡的人数

boolsetData(constint,constint,constint);

floatbirthrate(){returnbirthnum/float(pnum);

floatdeadrate(){returndeadnum/float(pnum);

intgetpnum(){returnpnum;

intgetbirthnum(){returnbirthnum;

intgetdeadnum(){returndeadnum;

boolPopulation:

setData(constintp,constintb,constintd)

{if(p<

0)returnfalse;

if(b>

p||b<

if(d>

p||d<

pnum=p;

birthnum=b;

deadnum=d;

{Populationpeople;

intpn,bn,dn;

{

请输入总人数:

pn;

请输入出生的人数:

bn;

请输入死亡的人数:

dn;

if(people.setData(pn,bn,dn))

输入错误,请重新输入!

出生率是:

people.birthrate()<

死亡率是:

people.deadrate()<

8-3、设计一个类,具有一个float指针成员,且函数成员如下:

1)构造函数具有一个整型参数count,为指针成员分配count个元素空间;

2)析构函数释放该空间;

3)向指针指向的空间存储数据的函数;

4)返回空间中这些数的平均值的函数。

cstdlib>

classDataArray

{intlength;

//存储数组元素个数

float*fltData;

//存储数据

DataArray(int=1);

//构造函数

~DataArray();

//析构函数

boolsetData(constfloat,constint);

//设置成员变量

floatgetAverage(void);

//计算并返回平均值

//构造函数//

//count:

希望创建的动态数组元素个数。

DataArray:

DataArray(intcount)

{cout<

调用构造函数..."

if(count>

0)

{length=count;

fltData=newfloat[length];

}else

{length=1;

for(inti=0;

i<

length;

i++)

fltData[i]=0;

//析构函数//

~DataArray()

调用析构函数..."

delete[]fltData;

length=0;

//tData:

要赋给指定变量的值。

//subscript:

指定要赋值的变量数组元素为第几个。

boolDataArray:

setData(constfloattData,constintsubscript)

{if(subscript+1>

length)

returnfalse;

fltData[subscript]=tData;

//计算并返回平均值//

返回数组所存储的数据的平均值。

floatDataArray:

getAverage(void)

{floatsum=0;

sum+=fltData[i];

return(sum/length);

{//对DataArray类进行测试

创建DataArray对象并初始化..."

DataArrayObj(3);

给DataArray对象赋值:

3;

{//产生一个随机数

floattemp=(float)rand()/10;

Obj.setData(temp,i);

第"

(i+1)<

个值为:

temp<

平均值为:

Obj.getAverage()<

8-4、设计一个薪水类Payroll,数据成员包括单位小时工资、已经工作的小时数、本周应付工资数。

在主函数定义一个具有10个元素的对象数组(10个雇员),询问每个雇员本周已经工作的小时数,然后显示应得的工资。

输入有效性检验:

每周工作的小时数不能大于60,也不能为负数。

iomanip>

//薪水类声明//

classPayroll

{floatpay_per_hour;

//存储每小时的工钱

floathours;

//存储雇员工作时间

floattotal_pay;

//存储雇员应得工资

Payroll(constfloat=0);

boolsetHours(constfloat);

//设置工作时间

floatgetPayment(void);

//获取应得工资

//hour:

雇员工作时间。

Payroll:

Payroll(constfloathour)

{pay_per_hour=5.0f;

hours=0;

total_pay=0;

//设置工作时间//

雇员工作时间//

如果变量赋值成功则返回true,否则返回false。

boolPayroll:

setHours(constfloathour)

{//判断工作时间是否介于0至60之间

if(hour>

=0&

&

hour<

=60)

{hours=hour;

total_pay=pay_per_hour*hours;

returntrue;

//获取应得工资//

返回计算得到的雇员应得的工资//

floatPayroll:

getPayment(void)

{returntotal_pay;

{Payrollemployee[10];

//雇员对象数组

//对10个雇员对象进行赋值

10;

{floattHour;

请输入第"

setw

(2)<

个雇员本周已工作的时间(0至60之间):

while(true)

{cin>

tHour;

if(employee[i].setHours(tHour))

break;

else

cout<

您输入的数据不正确,请重新输入!

}

//显示每个雇员应得的工资

for(i=0;

个雇员应得工资"

<

setiosflags(ios:

fixed)<

setprecision

(2)

employee[i].getPayment()<

元"

8-5、设计InvoiceItem类和商品销售类,完成如下功能:

1)询问客户购买的商品名称和数量;

2)从InvoiceItem对象获得每个商品的成本价;

3)在成本价基础上加上30%利润,得到每个商品的单价;

4)将商品单价与购买数量相乘,得到商品小计;

5)将商品小计乘以6%,得到商品的零售税;

6)将商品小计加上零售税得到该商品的销售额;

7)显示客户本次交易购买商品的小计、零售税和销售额。

有效性检验:

商品数量不能为负数。

classInvoiceItem

{char*desc;

intunits;

floatcost;

InvoiceItem(char*d,intu=0,floatc=0)

{desc=newchar[strlen(d)+1];

strcpy(desc,d);

units=u;

cost=c;

~InvoiceItem(){delete[]desc;

units=0;

cost=0;

char*getDesc(){returndesc;

intgetUnits(){returnunits;

floatgetCost(){returncost;

classSale{

floatprice,salesum,saletax,totalsum;

intbuynum;

boolsetnum(int,int);

voidcalcSale(floatp)

{price=p;

//单价

salesum=price*buynum;

//商品小计

saletax=salesum*0.06;

//零售税

totalsum=salesum+saletax;

}//销售额

floatgetprice(){returnprice;

intgetbuynum(){returnbuynum;

floatgetsalesum(){returnsalesum;

floatgetsaletax(){returnsaletax;

floatgettotalsum(){returntotalsum;

boolSale:

setnum(intn,intinvoicenum)

{

if(n>

n<

=invoicenum)

{buynum=n;

voidmain()

InvoiceItemInventory[3]={

InvoiceItem("

ABC"

10,0.5f),

DEF"

20,1.2f),

GHI"

30,2.5f),

};

Sales1;

inti,index=-1;

cout<

库存商品列表:

for(i=0;

i<

3;

i++){

cout<

名称:

Inventory[i].getDesc()<

\t数量:

Inventory[i].getUnits()<

\t成本价:

Inventory[i].getCost()<

}//输出库存商品信息

请输入购买的商品名称:

{charname[51];

cin.getline(name,51);

for(i=0;

i++)

if(strcmp(Inventory[i].getDesc(),name)==0)

index=i;

if(index!

=-1)break;

elsecout<

您输入的商品不存在,请重新输入!

请输入购买数量:

{intnum;

num;

if(s1.setnum(num,Inventory[index].getUnits()))break;

您输入的数量不正确,请重新输入!

//计算销售额

s1.calcSale(Inventory[index].getCost()*1.3);

//输出销售信息

本次购买的商品名称:

Inventory[index].getDesc()<

本次购买的商品数量:

s1.getbuynum()<

本次购买的商品单价:

s1.getprice()<

本次购买的商品小计:

s1.getsalesum()<

本次购买的零售税:

s1.getsaletax()<

本次购买的销售额:

s1.gettotalsum()<

第9章习题:

9-1、定义NumDays类,功能是将以小时(hour)为单位的工作时间转换为天数(day)。

构造函数具有一个代表工作小时的参数,其他函数成员实现小时和天的存储和检索。

同时,该类需重载+、-、++、――运算符。

9-2、设计TimeOff类,用于计算雇员生病、休假和不支付报酬的时间。

9-3、采用TimeOff类定义一个对象。

要求用户输入某雇员已经工作的月数(months),然后采用TimeOff类对象计算并显示雇员因病休假和正常休假的最多天数。

注意:

雇员每月可以有12小时的带薪休假和8小时的生病休假。

//NumDays.h文件//

classNumDays

{floathour;

//以小时存储工作时间

floatday;

//以天数存储工作时间

NumDays(constfloat=0);

//构造函数

voidsetHours(constfloat);

//以小时为参数设置成员变量

voidsetDays(constfloat);

//以天数为参数设置成员变量

floatgetHours(void);

//返回按小时计的工作时间

floatgetDays(void);

//返回按天数计的工作时间

floatoperator+(NumDays&

);

//重载+操作符

floatoperator-(NumDays&

//重载-操作符

NumDaysoperator++();

//重载++前置操作符

NumDaysoperator++(int);

//重载++后置操作符

NumDaysoperator--();

//重载--前置操作符

NumDaysoperator--(int);

//重载--后置操作符

//tHour:

工作时间(小时)//

NumDays:

NumDays(constfloattHour)

{hour=tHour;

day=tHour/8;

//以小时为参数设置成员变量//

工作时间(小时)。

voidNumDays:

setHours(constfloattHour)

//以天数为参数设置成员变量//

//tDay:

工作时间(天数)//

setDays(constfloattDay)

{hour=tDay*8;

day=tDay;

//返回按小时计的工作时间//

返回工作时间(小时)//

floatNumDays:

getHours(void)

{returnhour;

//返回按天数计的工作时间//

返回工作时间(天数)//

getDays(void)

{returnday;

//重载+操作符//

返回两者相加之和(小时)//

operator+(NumDays&

NumDaysObj)

{return(this->

hour+NumDaysObj.hour);

//重载-操作符//

返回两者相减之差(小时)//

operator-(NumDays&

hour-NumDaysObj.hour);

//重载++前置操作符//

NumDaysNumDays:

operator++()

{hour++;

day=hour/8;

return*this;

//重载++后置操作符//

operator++(int)

{NumDaystemp=*this;

hour++;

day=hour/8;

returntemp;

//重载--前置操作符//

operator--()

{hour--;

//重载--后置操作符//

operator--(int)

hour--;

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

当前位置:首页 > 职业教育 > 职高对口

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

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