面向对象A面向对象习题南航皮德常资料.docx
- 文档编号:13213500
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:13
- 大小:18.60KB
面向对象A面向对象习题南航皮德常资料.docx
《面向对象A面向对象习题南航皮德常资料.docx》由会员分享,可在线阅读,更多相关《面向对象A面向对象习题南航皮德常资料.docx(13页珍藏版)》请在冰点文库上搜索。
面向对象A面向对象习题南航皮德常资料
第8章习题:
8-1.设计Date类,输出合法日期。
#include
usingnamespacestd;
12-25-2004.M«endl;
if(count>0)
{length=countj
fltData=newfloat[length]:
}else
{length=l;
fltData=newfloat[length]:
}
for(inti=0;Klength;i++)fltData[i]=0;
}
."«endl;
<
delete[]fltData;
length=0;
}
."«endl;
DataArrayObj(3);
cout«'r给DataArray对象赋值:
u«endl;
for(inti=0;i<3;i++)
{5.OfetHours(tHour))
break;
else
cout«r,您输入的数据不正确,请重新输入!
,,«endl;}
}
etPayment()«'r元"«endl;
8-5、设计Invoiceitem类和商品销售类,完成如下功能:
1)询问客户购买的商品名称和数量;
2)从Invoiceitem对象获得每个商品的成本价;
3)在成本价基础上加上30%利润,得到每个商品的单价;
4)将商品单价与购买数量相乘,得到商品小计;
5)将商品小计乘以6%,得到商品的零售税;
6)将商品小计加上零售税得到该商品的销售额;
7)显示客户本次交易购买商品的小计、零售税和销售额。
有效性检验:
商品数量不能为负数。
#include
usingnamespacestd;
classInvoiceltem
{char*desc;
intunits;
floatcost;
public:
Invoiceltem(charintu二0,floatc=0)
{desc二newchar[strlen(d)+l];
strcpy(desc,d);
units二u;
cost=c;
}
cost=0;}
°Invoiceltem(){delete[]desc;units=0;char*getDesc(){returndesc;}
intgetUnits(){returnunits;}floatgetCost(){returncost;}
};
classSale{
floatprice,salesum,saletax,totalsum;intbuynum;
public:
boolsetnum(int,int);
voidcalcSale(floatp)
{price二p;0.5fl.2f2.5fSaleetDesc()«"\t数量:
";
cout«Inventory[i].getUnits()<<"\t成本价:
";cout«Inventory[i].getCost()<<"元"«endl;
}etDesc(),name)==0)
index=i;
if(index!
=-l)break;
elsecout«n您输入的商品不存在,请重新输入!
n< } cout«H请输入购买数量: ”; while(true) {intnum; cin>>nuni; if(nuni,Inventory[index].getUnits()))break; elsecout«n您输入的数量不正确,请重新输入! n< } etCost()*; etDesc()«endl; cout«n本次购买的商品数量: 'r«()«endl; cout«°本次购买的商品单价: H«()«n元"〈〈endl;cout«w本次购买的商品小计: ,«()«n7C'r«endl; cout«°本次购买的零售税: M«()«n7C'r«endl;cout«°本次购买的销售额: H«()«n元”《endl; } 第9章习题: 9-1、定义NumDays类,功能是将以小时(hour)为单位的工作时间转换为天数(day)o构造函数具有一个代表工作小时的参数,其他函数成员实现小时和天的存储和检索。 同时,该类需重载+、一、++、运算符。 9-2、设计TimeOff类,用于计算雇员生病、休假和不支付报酬的时间。 9-3.采用TimeOff类定义一个对象。 要求用户输入某雇员已经工作的月数(months),然后采用TimeOff类对象计算并显示雇员因病休假和正常休假的最多天数。 注意: 雇员每月可以有12小时的带薪休假和8小时的生病休假。 etHours()) cout«"该月超过标准的生病休假小时数: "<<().getHours()«"小时! \nH; (hours); (offObj); cout«,f请输入第H«i«M个月带薪休假的累计小时数: \n"; cin>>hours; if(hours>().getHours()) cout«"该月超过标准的带薪休假小时数: "<<().getHours()〈<"小时! \nH; (hours); (offObj); cout«,f请输入第,,«i«M个月不带薪休假的累计小时数: \nH; cin>>hours; if(hours>().getHours()) cout«°该月超过标准的不带薪休假小时数: ”«().getHours()«"小时! \nH; (hours); (offObj); } cout«()«M的休假天数统计如下: \n”; cout«"因病休假的天数为: getDays()«endl; ¥ cout«"带薪休假的天数为: \t"«().getDays()«endl; cout«'1不带薪休假的天数为: \t"«().getDays()«endl; 第10章习题: 10-2、设计Employee类,其数据成员能保存如下信息: 雇员姓名: char*指针; 雇员编号: 格式为XXX-L,X是0~9之间的数字,L是A~M之间的字母; 受雇日期: 向该类增加构造函数、析构函数和其他相关函数成员。 设计Employee类的子类EmployeePay,其具有如下数据成员: 月工资: double型变量; 部门号: int型变量; 编写完整的程序,要求用户从键盘输入雇员信息,然后在屏幕上显示这些信息。 .M«endl; CirclemyCircle(0,0,; cout«',centerX=,'«()< .,r«endl; RectanglemyRectangle(12,15); cout«',width=',<<()«endl;cout«',length=',«()< ) cout«',Area=',«()«endl«endl; } 10-9.编写具有排序功能的类模板SortableArray,其是Freew订1Array类模板的子类,具有一个函数成员,实现对数组元素的升序排列。 编写一个完整的程序测试该模板。 template FreewillArray : FreewillArray(ints) { a arraySize二s; aptr二newT[s]; if(aptr二二0)memError(); for(intcount二0;count *(aptr+count)二0; } template Freewi1lArray : Freewi1lArray( constFreewillArray&obj) arraySize二; aptr二newT[arraySize]; if(aptr二二0)memError(); for(intcount二0;count *(aptr+count)二*+count); }template Freewi1lArray : ^Freewi1lArray() {if(arraySize>0) delete[]aptr; } template Y voidFreewi11Array : memError() {cout«"ERROR: allocatememory.\n"; exit(0); } template voidFreewi11Array : subError(void) {cout«"ERROR: Subscriptoutofrange.\n"; exit(0); } template T&FreewillArray : operator[](constint&sub) {if(sub<0isub>arraySize)subError(): returnaptr[sub]; #endif // #includeM" template classSortab1eArray: publicFreewi1lArray {public: SortableArray(ints): Freewi11Array SortableArray(FreewillArray Freewi11Array s voidSelectionSort(); }: template voidSortableArray : SelectionSort()//选择排序 {inti,j,t,minlndex; for(i=0;i { minlndex二i; for(j=i+l;j if(aptr[j] minindex二j; if(minlndex! =i) {t=aptr[minlndex]: aptr[minlndex]=aptr[i]; aptr[i]=t; } ( } } // #include usingnamespacestd; #includeM" voidmain(void) {FreewillArray SortableArray inti,x; for(i=0;i<10;i卄){ cout«,f请输入第H«i+1«H个整数: \n”;cin>>x; sortTable[i]二x; } cout«y排序前: \n"; for(i=0;i<10;i卄) cout«sortTable[i]«"”; cout«endl; cout«H排序后: \nH; 0; for(i=0;i<10;i卄) cout«sortTable[i]«"r,; 第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==l) return"January'r; ( elseif(m==2) return"February"; elseif(m==3) return,,MarchH; elseif(m==4) return"Apr订"; 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==ll) return"November"; else return"December"; } //设置成员变量 //参数: mm: 月份。 dd: 天数。 yy: 年份。 // //返回值: 如果成功赋值则返回true,否则返回false// boolDate: : setDate(constintmm,constintdd,constintyy){if(mm<1|Iinm>12) throwInvalidMonth();//抛出异常 if(dd throwInvalidDay();//抛出异常 year二yy; month=mm; day=dd; returntrue; } //在屏幕上显示日期// voidDate: : display(void) {〃按照T2-25-2004“的形式输出日期 cout«month<<',-,r «day«"-^' «year«'r\n"; //按照,rDecember25,2004"的形式输出日期 cout«getMonth(month)«"" «day«n," «year«'r\n"; //按照"25December2004"的形式输出日期 cout«day«n" «getMonth(month)<<"" «year«'r\n"; } voidmain(void) {DatemyDate;//存储日期 intyear;//临时存储年份 intmonth;//临时存储月份 intday;//临时存储天数 try cout«H请按YYYY格式输入年: ”;cin>>year; cout«H请按nun格式输入月: ”; cin〉>month; cout«,r请按dd格式输入日: ”; cin>>day; (month,day,year);cout«n您输入的日期是: r«endl;0; cout«endl«endl; }catch(Date: : InvalidDay) {cout«n您输入的日期天数错误! \n'r«endl;}catch(Date: : InvalidMonth) {cout«H您输入的日期月份错误! \n'r«endl;} }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 习题 南航皮德常 资料