1、面向对象A面向对象习题南航皮德常资料第8章习题:8-1、设计Date类,输出合法日期。#include using namespace std;12-25-2004.0) length=count; fltData=new floatlength; else length=1;; fltData=new floatlength; for(int i=0;ilength;i+) fltDatai=0;#.endl; delete fltData; length=0;.endl;% DataArray Obj(3); cout给DataArray对象赋值:endl; for(int i=0;i3;
2、i+) 5.0fetHours(tHour) break;) else cout您输入的数据不正确,请重新输入!endl; etPayment()元endl;,8-5、设计InvoiceItem类和商品销售类,完成如下功能:1)询问客户购买的商品名称和数量;2)从InvoiceItem对象获得每个商品的成本价;:3)在成本价基础上加上30利润,得到每个商品的单价;4)将商品单价与购买数量相乘,得到商品小计;5)将商品小计乘以6,得到商品的零售税;6)将商品小计加上零售税得到该商品的销售额;7)显示客户本次交易购买商品的小计、零售税和销售额。有效性检验:商品数量不能为负数。#include us
3、ing namespace std;class InvoiceItem char *desc; int units; float cost;public: InvoiceItem(char *d, int u=0, float c=0) desc = new char strlen(d)+1;: strcpy(desc, d); units = u; cost = c; InvoiceItem( ) delete desc; units = 0; cost = 0; % char *getDesc( ) return desc; int getUnits( ) return units; fl
4、oat getCost( ) return cost; ;class Sale float price, salesum, saletax, totalsum; int buynum;public: bool setnum(int, int); void calcSale(float p) price=p; 0.5f1.2f2.5fSaleetDesc( )t数量:; cout Inventoryi.getUnits( )t成本价:; cout Inventoryi.getCost( )元endl; etDesc(),name)=0) index=i;& if(index!=-1) break
5、; else cout您输入的商品不存在,请重新输入!endl; cout请输入购买数量: ; while(true)num; if(num,Inventoryindex.getUnits() break; else cout您输入的数量不正确,请重新输入!endl; , etCost()*; etDesc()endl; cout本次购买的商品数量:()endl; cout本次购买的商品单价:()元endl; cout本次购买的商品小计:()元endl; cout本次购买的零售税:()元endl; cout本次购买的销售额:()元endl;第9章习题:)9-1、定义NumDays类,功能是将以
6、小时(hour)为单位的工作时间转换为天数(day)。构造函数具有一个代表工作小时的参数,其他函数成员实现小时和天的存储和检索。同时,该类需重载、运算符。9-2、设计TimeOff类,用于计算雇员生病、休假和不支付报酬的时间。9-3、采用TimeOff类定义一个对象。要求用户输入某雇员已经工作的月数(months),然后采用TimeOff类对象计算并显示雇员因病休假和正常休假的最多天数。注意:雇员每月可以有12小时的带薪休假和8小时的生病休假。etHours() cout该月超过标准的生病休假小时数:().getHours()小时!n;: (hours); (offObj); cout请输入第
7、ihours; if(hours().getHours() cout该月超过标准的带薪休假小时数:().getHours()小时!n; (hours); (offObj); cout请输入第ihours;$ if(hours().getHours() cout该月超过标准的不带薪休假小时数:().getHours()小时!n; (hours); (offObj); * cout()的休假天数统计如下:n; cout因病休假的天数为:t().getDays()endl; cout带薪休假的天数为:t().getDays()endl; cout不带薪休假的天数为:t().getDays()endl
8、;第10章习题:10-2、设计Employee类,其数据成员能保存如下信息:雇员姓名:char *指针;雇员编号:格式为XXX-L,X是09之间的数字,L是AM之间的字母;受雇日期:向该类增加构造函数、析构函数和其他相关函数成员。设计Employee类的子类EmployeePay,其具有如下数据成员:月工资:double型变量;部门号:int型变量;【编写完整的程序,要求用户从键盘输入雇员信息,然后在屏幕上显示这些信息。.endl; Circle myCircle(0,0,; coutcenterX=()endl; coutcenterY=()endl; coutradius=endl; co
9、utArea=()endlendl; .endl; Rectangle myRectangle(12,15); coutwidth=()endl;) coutlength=()endl; coutArea=()endlendl;10-9、编写具有排序功能的类模板SortableArray,其是FreewillArray类模板的子类,具有一个函数成员,实现对数组元素的升序排列。编写一个完整的程序测试该模板。)template FreewillArray :FreewillArray( int s ) arraySize = s; aptr = new T s; if (aptr = 0) mem
10、Error(); for (int count = 0; count arraySize; count+) *(aptr + count) = 0;】template FreewillArray:FreewillArray ( const FreewillArray &obj ) arraySize = ; aptr = new T arraySize; if (aptr = 0) memError(); for(int count = 0; count arraySize; count+) *(aptr + count) = * + count);/template FreewillArra
11、y:FreewillArray( ) if (arraySize 0) delete aptr;)template void FreewillArray:memError( ) cout ERROR: allocate memory.n;$ exit(0);template void FreewillArray:subError(void)( cout ERROR: Subscript out of range.n; exit(0);template T &FreewillArray:operator (const int &sub) if (sub arraySize) subError()
12、; return aptrsub;#endif/#includetemplate class SortableArray : public FreewillArraypublic: SortableArray(int s) : FreewillArray ( s ) SortableArray(FreewillArray &obj) : FreewillArray(obj) void SelectionSort();template void SortableArray:SelectionSort() / 选择排序 int i, j, t, minIndex; for(i=0; iarrayS
13、ize-1; i+) minIndex=i; for(j=i+1; jarraySize; j+) if(aptrjaptrminIndex) minIndex=j; if( minIndex != i ) t=aptrminIndex; * aptrminIndex=aptri; aptri=t; )/#includeusing namespace std;#includevoid main(void) FreewillArray intTable(10); SortableArray sortTable(intTable); int i,x; for (i = 0; i 10; i+) ,
14、 cout请输入第i+1x; sortTablei = x; cout排序前:n;¥ for (i = 0; i 10; i+) cout sortTablei ; cout endl; cout排序后:n; ();* for (i = 0; i 10; i+) cout sortTablei ;第11章习题:11-1、Date类异常。#include using namespace std;class Datepublic:【 bool setDate(const int,const int,const int); void display(void); char * getMonth(co
15、nst int); class InvalidDay ; /异常类 class InvalidMonth ; /异常类private: int year;/存储日期的年份 int month; /存储日期的月份 int day; /存储日期的天数;/设置成员变量 /参数:mm:月份。dd:天数。yy:年份。/返回值:如果成功赋值则返回true,否则返回false/char* Date:getMonth(const int m ) if(m=1)* return January; else if(m=2) return February; else if(m=3) return March; e
16、lse if(m=4) return April; else if(m=5) return May; else if(m=6)) return June; else if(m=7) return July; else if(m=8) return August; else if(m=9) return September; else if(m=10) return October; else if(m=11)& return November; else return December;/设置成员变量 /参数:mm:月份。dd:天数。yy:年份。/返回值:如果成功赋值则返回true,否则返回f
17、alse/bool Date:setDate(const int mm,const int dd,const int yy) if(mm12) throw InvalidMonth(); /抛出异常 if(dd31) throw InvalidDay(); /抛出异常 year=yy; month=mm; day=dd; return true;/在屏幕上显示日期/void Date:display(void) / 按照12-25-2004的形式输出日期 coutmonth- day- yearn; / 按照December 25,2004的形式输出日期 coutgetMonth(month)
18、 day, yearn; / 按照25 December 2004的形式输出日期 coutday getMonth(month) yearn;void main(void) Date myDate;/存储日期 int year;/临时存储年份 int month;/临时存储月份 int day;/临时存储天数 try coutyear; coutmonth; coutday; (month,day,year); cout您输入的日期是:endl; (); coutendlendl; catch(Date:InvalidDay) cout您输入的日期天数错误!nendl; catch(Date:InvalidMonth) cout您输入的日期月份错误!nendl;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1