面向对象A面向对象习题南航皮德常资料.docx

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

面向对象A面向对象习题南航皮德常资料.docx

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

面向对象A面向对象习题南航皮德常资料.docx

面向对象A面向对象习题南航皮德常资料

第8章习题:

8-1、设计Date类,输出合法日期。

#include

usingnamespacestd;

12-25-2004."<

if(count>0)

{length=count;

fltData=newfloat[length];

}else

{length=1;

fltData=newfloat[length];

}

for(inti=0;i

fltData[i]=0;

}

#

."<

delete[]fltData;

length=0;

}

."<

%

DataArrayObj(3);

cout<<"给DataArray对象赋值:

"<

for(inti=0;i<3;i++)

{5.0fetHours(tHour))

break;

else

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

"<

}

}

etPayment()<<"元"<

}

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

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

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

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

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

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

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

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

}

有效性检验:

商品数量不能为负数。

#include

usingnamespacestd;

classInvoiceItem

{char*desc;

>

intunits;

floatcost;

public:

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;

public:

boolsetnum(int,int);

voidcalcSale(floatp)

>

{price=p;0.5f1.2f2.5fSaleetDesc()<<"\t数量:

";

cout<

";

cout<

}etDesc(),name)==0)

index=i;

&

if(index!

=-1)break;

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

"<

}

cout<<"请输入购买数量:

";

while(true)

<

{intnum;

cin>>num;

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

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

"<

}

etCost()*;

etDesc()<

cout<<"本次购买的商品数量:

"<<()<

cout<<"本次购买的商品单价:

"<<()<<"元"<

cout<<"本次购买的商品小计:

"<<()<<"元"<

^

cout<<"本次购买的零售税:

"<<()<<"元"<

cout<<"本次购买的销售额:

"<<()<<"元"<

}

第9章习题:

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

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

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

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

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

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

注意:

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

etHours())

cout<<"该月超过标准的生病休假小时数:

"<<().getHours()<<"小时!

\n";

:

(hours);

(offObj);

cout<<"请输入第"<

\n";

cin>>hours;

if(hours>().getHours())

@

cout<<"该月超过标准的带薪休假小时数:

"<<().getHours()<<"小时!

\n";

(hours);

(offObj);

cout<<"请输入第"<

\n";

cin>>hours;

$

if(hours>().getHours())

cout<<"该月超过标准的不带薪休假小时数:

"<<().getHours()<<"小时!

\n";

(hours);

(offObj);

}

*

cout<<()<<"的休假天数统计如下:

\n";

cout<<"因病休假的天数为:

\t"<<().getDays()<

cout<<"带薪休假的天数为:

\t"<<().getDays()<

cout<<"不带薪休假的天数为:

\t"<<().getDays()<

}

\

第10章习题:

10-2、设计Employee类,其数据成员能保存如下信息:

雇员姓名:

char*指针;

雇员编号:

格式为XXX-L,X是0~9之间的数字,L是A~M之间的字母;

@

受雇日期:

向该类增加构造函数、析构函数和其他相关函数成员。

设计Employee类的子类EmployeePay,其具有如下数据成员:

月工资:

double型变量;

部门号:

int型变量;

编写完整的程序,要求用户从键盘输入雇员信息,然后在屏幕上显示这些信息。

."<

CirclemyCircle(0,0,;

cout<<"centerX="<<()<

cout<<"centerY="<<()<

\

cout<<"radius="<

cout<<"Area="<<()<

."<

RectanglemyRectangle(12,15);

cout<<"width="<<()<

cout<<"length="<<()<

cout<<"Area="<<()<

}

10-9、编写具有排序功能的类模板SortableArray,其是FreewillArray类模板的子类,具有一个函数成员,实现对数组元素的升序排列。

编写一个完整的程序测试该模板。

template

FreewillArray:

:

FreewillArray(ints)

{

arraySize=s;

aptr=newT[s];

if(aptr==0)memError();

for(intcount=0;count

*(aptr+count)=0;

}

template

FreewillArray:

:

FreewillArray(

constFreewillArray&obj)

{

arraySize=;

;

aptr=newT[arraySize];

if(aptr==0)memError();

for(intcount=0;count

*(aptr+count)=*+count);

}

/

template

FreewillArray:

:

~FreewillArray()

{if(arraySize>0)

delete[]aptr;

}

template

voidFreewillArray:

:

memError()

{cout<<"ERROR:

allocatememory.\n";

$

exit(0);

}

template

voidFreewillArray:

:

subError(void)

{cout<<"ERROR:

Subscriptoutofrange.\n";

exit(0);

}

template

T&FreewillArray:

:

operator[](constint&sub)

@

{if(sub<0||sub>arraySize)subError();

returnaptr[sub];

}

#endif

]

//

#include""

template

classSortableArray:

publicFreewillArray

{public:

SortableArray(ints):

FreewillArray(s){}

SortableArray(FreewillArray&obj):

FreewillArray(obj){}

voidSelectionSort();

};

template

voidSortableArray:

:

SelectionSort()//选择排序

{inti,j,t,minIndex;

for(i=0;i

{

minIndex=i;

`

for(j=i+1;j

if(aptr[j]

minIndex=j;

if(minIndex!

=i)

{t=aptr[minIndex];

*

aptr[minIndex]=aptr[i];

aptr[i]=t;

}

}

}

//

#include

usingnamespacestd;

#include""

>

voidmain(void)

{FreewillArrayintTable(10);

SortableArraysortTable(intTable);

inti,x;

for(i=0;i<10;i++){

cout<<"请输入第"<

\n";

cin>>x;

sortTable[i]=x;

}

cout<<"排序前:

\n";

for(i=0;i<10;i++)

cout<

cout<

cout<<"排序后:

\n";

();

*

for(i=0;i<10;i++)

cout<

}

第11章习题:

@

11-1、Date类异常。

#include

usingnamespacestd;

classDate

{public:

boolsetDate(constint,constint,constint);

voiddisplay(void);

char*getMonth(constint);

classInvalidDay{};//异常类

classInvalidMonth{};//异常类

~

private:

intyear;//存储日期的年份

intmonth;//存储日期的月份

intday;//存储日期的天数

};

//设置成员变量

//参数:

mm:

月份。

dd:

天数。

yy:

年份。

//

//返回值:

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

char*Date:

:

getMonth(constintm)

{if(m==1)

*

return"January";

elseif(m==2)

return"February";

elseif(m==3)

return"March";

~

elseif(m==4)

return"April";

elseif(m==5)

return"May";

elseif(m==6)

return"June";

elseif(m==7)

return"July";

elseif(m==8)

return"August";

^

elseif(m==9)

return"September";

elseif(m==10)

return"October";

elseif(m==11)

&

return"November";

else

return"December";

}

//设置成员变量

//参数:

mm:

月份。

dd:

天数。

yy:

年份。

//

//返回值:

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

boolDate:

:

setDate(constintmm,constintdd,constintyy)

{if(mm<1||mm>12)

throwInvalidMonth();//抛出异常

if(dd<1||dd>31)

throwInvalidDay();//抛出异常

year=yy;

month=mm;

day=dd;

returntrue;

}

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

voidDate:

:

display(void)

{//按照"12-25-2004"的形式输出日期

cout<

<

<

//按照"December25,2004"的形式输出日期

cout<

<

<

//按照"25December2004"的形式输出日期

cout<

<

<

}

voidmain(void)

{DatemyDate;//存储日期

intyear;//临时存储年份

intmonth;//临时存储月份

intday;//临时存储天数

try

{

cout<<"请按YYYY格式输入年:

";

cin>>year;

cout<<"请按mm格式输入月:

";

cin>>month;

cout<<"请按dd格式输入日:

";

cin>>day;

(month,day,year);

cout<<"您输入的日期是:

"<

();

cout<

}catch(Date:

:

InvalidDay)

{cout<<"您输入的日期天数错误!

\n"<

}catch(Date:

:

InvalidMonth)

{cout<<"您输入的日期月份错误!

\n"<

}

}

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

当前位置:首页 > 医药卫生

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

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