编号:40310958
类型:共享资源
大小:94KB
格式:DOC
上传时间:2020-01-13
上传人:仙人****88
认证信息
个人认证
肖**(实名认证)
河南
IP属地:河南
15
积分
- 关 键 词:
-
面向
对象
习题
- 资源描述:
-
第8章习题:
8-1、设计Date类,输出合法日期。
#include
using namespace std;
//类定义//
class Date
{ int year; //存储日期的年份
int month;//存储日期的月份
int day;//存储日期的天数
public:
bool setDate(const int,const int,const int);
void display(void);
char * getMonth(const int);
};
//类的实现//
//设置成员变量//
//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";
else 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,否则返回false//
bool Date::setDate(const int mm,const int dd,const int yy)
{ if(mm<1 || mm>12) return false;
if(dd<1 || dd>31) return false;
year=yy;
month=mm;
day=dd;
return true;
}
//在屏幕上显示日期//
void Date::display(void)
{ // 按照"12-25-2004"的形式输出日期
cout<>year;
cout<<"请按mm格式输入月:";
cin>>month;
cout<<"请按dd格式输入日:";
cin>>day;
if(myDate.setDate(month,day,year))
break;
else
cout<<"日期输入错误,请重新输入!"<
using namespace std;
//类定义//
class Population
{ int pnum; //存储某年的人数
int birthnum;//存储出生的人数
int deadnum;//存储死亡的人数
public:
bool setData(const int,const int,const int);
float birthrate(){return birthnum/float(pnum);}
float deadrate(){return deadnum/float(pnum);}
int getpnum(){return pnum;}
int getbirthnum(){return birthnum;}
int getdeadnum(){return deadnum;}
};
//返回值:如果成功赋值则返回true,否则返回false//
bool Population::setData(const int p,const int b,const int d)
{ if(b>p||b<0) return false;
if(d>p||d<0) return false;
pnum=p;
birthnum=b;
deadnum=d;
return true;
}
void main(void)
{ Population people;
int pn,bn,dn;
while(true)
{
cout<<"请输入总人数:";
cin>>pn;
cout<<"请输入出生的人数:";
cin>>bn;
cout<<"请输入死亡的人数:";
cin>>dn;
if(people.setData(pn,bn,dn))
break;
else
cout<<"输入错误,请重新输入!"<
#include
using namespace std;
class DataArray
{ int length; //存储数组元素个数
float *fltData;//存储数据
public:
DataArray(int =1); //构造函数
~DataArray();//析构函数
bool setData(const float,const int); //设置成员变量
float getAverage(void); //计算并返回平均值
};
//构造函数//
//count:希望创建的动态数组元素个数。//
DataArray::DataArray(int count)
{ cout<<"调用构造函数..."<0)
{ length=count;
fltData=new float[length];
}else
{ length=1;
fltData=new float[length];
}
for(int i=0;ilength)
return false;
else
fltData[subscript]=tData;
return true;
}
//计算并返回平均值//
//返回值:返回数组所存储的数据的平均值。//
float DataArray::getAverage(void)
{ float sum=0;
for(int i=0;i
#include
using namespace std;
//薪水类声明//
class Payroll
{ float pay_per_hour;//存储每小时的工钱
float hours;//存储雇员工作时间
float total_pay;//存储雇员应得工资
public:
Payroll(const float =0); //构造函数
bool setHours(const float);//设置工作时间
float getPayment(void); //获取应得工资
};
//构造函数//
//hour:雇员工作时间。//
Payroll::Payroll(const float hour)
{ pay_per_hour=5.0f;
hours=0;
total_pay=0;
}
//设置工作时间//
//hour:雇员工作时间//
//返回值:如果变量赋值成功则返回true,否则返回false。//
bool Payroll::setHours(const float hour)
{ //判断工作时间是否介于0至60之间
if(hour>=0 && hour<=60)
{ hours=hour;
total_pay=pay_per_hour * hours;
return true;
}else
return false;
}
//获取应得工资//
//返回值:返回计算得到的雇员应得的工资//
float Payroll::getPayment(void)
{ return total_pay;
}
void main(void)
{ Payroll employee[10];//雇员对象数组
//对10个雇员对象进行赋值
for(int i=0;i<10;i++)
{ float tHour;
cout<<"请输入第"<>tHour;
if(employee[i].setHours(tHour))
break;
else
cout<<"您输入的数据不正确,请重新输入!"<
using 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; }
float getCost( ) { return cost; }
};
class Sale {
float price, salesum, saletax, totalsum;
int buynum;
public:
bool setnum(int, int);
void calcSale(float p)
{ price=p; //单价
salesum=price*buynum; //商品小计
saletax=salesum*0.06; //零售税
totalsum = salesum + saletax; } //销售额
float getprice() { return price; }
int getbuynum() { return buynum; }
float getsalesum() { return salesum; }
float getsaletax() { return saletax; }
float gettotalsum() { return totalsum; }
};
bool Sale::setnum(int n,int invoicenum)
{
if(n>=0 && n<=invoicenum )
{ buynum=n;
return true;
}else
return false;
}
void main()
{
InvoiceItem Inventory[3] = {
InvoiceItem("ABC",10,0.5f),
InvoiceItem("DEF",20,1.2f),
InvoiceItem("GHI",30,2.5f),
};
Sale s1;
int i, index=-1;
cout << "库存商品列表:\n";
for(i = 0; i < 3; i++) {
cout <<"名称:"<>num;
if(s1.setnum(num,Inventory[index].getUnits())) break;
else cout<<"您输入的数量不正确,请重新输入!"<
using namespace std;
//NumDays类声明//
class NumDays
{ float hour; //以小时存储工作时间
float day; //以天数存储工作时间
public:
NumDays(const float =0);//构造函数
void setHours(const float);//以小时为参数设置成员变量
void setDays(const float);//以天数为参数设置成员变量
float getHours(void);//返回按小时计的工作时间
float getDays(void);//返回按天数计的工作时间
float operator +(NumDays &);//重载+操作符
float operator -(NumDays &);//重载-操作符
NumDays operator ++(); //重载++前置操作符
NumDays operator ++(int);//重载++后置操作符
NumDays operator --();//重载--前置操作符
NumDays operator --(int);//重载--后置操作符
};
//构造函数//
//tHour:工作时间(小时)//
NumDays::NumDays(const float tHour)
{ hour=tHour;
day=tHour/8;
}
//以小时为参数设置成员变量//
//tHour:工作时间(小时)。//
void NumDays::setHours(const float tHour)
{ hour=tHour;
day=tHour/8;
}
//以天数为参数设置成员变量//
//tDay:工作时间(天数)//
void NumDays::setDays(const float tDay)
{ hour=tDay*8;
day=tDay;
}
//返回按小时计的工作时间//
//返回值:返回工作时间(小时)//
float NumDays::getHours(void)
{ return hour;
}
//返回按天数计的工作时间//
//返回值:返回工作时间(天数)//
float NumDays::getDays(void)
{ return day;
}
//重载+操作符//
//返回值:返回两者相加之和(小时)//
float NumDays::operator +(NumDays &NumDaysObj)
{ return(this->hour+NumDaysObj.hour);
}
//重载-操作符//
//返回值:返回两者相减之差(小时)//
float NumDays::operator -(NumDays &NumDaysObj)
{ return(this->hour-NumDaysObj.hour);
}
//重载++前置操作符//
NumDays NumDays::operator ++()
{ hour++;
day=hour/8;
return *this;
}
//重载++后置操作符//
NumDays NumDays::operator ++(int)
{ NumDays temp=*this;
hour++;
day=hour/8;
return temp;
}
//重载--前置操作符//
NumDays NumDays::operator --()
{ hour--;
day=hour/8;
return *this;
}
//重载--后置操作符//
NumDays NumDays::operator --(int)
{ NumDays temp=*this;
hour--;
day=hour/8;
return temp;
}
9-2、在9-1的基础上设计TimeOff类,用于计算雇员生病、休假和不支付报酬的时间。该类包含下面NumDays类型成员。
maxSickDays:用来记录雇员因生病可以不工作的最多天数;
sickTaken:记录因生病已经不工作的天数;
maxVacation:记录可以带薪休假的最多天数;
vacTaken:记录已经带薪休假的天数;
maxUnpaid: 记录在不支付薪水的情况下,雇员可以休假的最多天数;
unpaidTaken:记录在不支付薪水的情况下,雇员已经休假的天数。
第10章习题:
10-7、定义抽象类BasicShape及其子类Circle和Rectangle,创建Circle和Rectangle类的对象,检验程序能否正确计算各形状的面积。
#include
using namespace std;
#define PI 3.1415926
//BasicShape类声明//
class BasicShape
{public:
double getArea(void) {return area;}//返回面积
virtual void calcArea(void) =0;//计算面积
protected:
double area;//存储面积
};
//Circle类声明//
class Circle:public BasicShape
{public:
Circle(int X=0,int Y=0,double R=0)
{ //构造函数
centerX=X;
centerY=Y;
radius=R;
calcArea();
}
int getCenterX(void) {return centerX;}//返回圆心X坐标
int getCenterY(void) {return centerY;}//返回圆心Y坐标
void calcArea(void) {area=PI*radius*radius;}//计算圆面积
private:
int centerX; //存储圆心X坐标
int centerY; //存储圆心Y坐标
double radius; //存储圆半径
};
//Rectangle类声明
class Rectangle:public BasicShape
{public:
Rectangle(long W=0,long L=0)
{ //构造函数
width=W;
length=L;
calcArea();
}
long getWidth(void) {return width;} //返回矩形的宽
long getLength(void) {return length;}//返回举行的长
void calcArea(void) {area=width*length;}//计算矩形面积
private:
long width; //存储矩形的宽
long length;//存储矩形的长
};
void main(void)
{ //测试Circle类
cout<<"创建一个Circle对象..."<
using namespace std;
class Date
{public:
bool setDate(const int,const int,const int);
void display(void);
char * getMonth(const 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";
else 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,否则返回false//
bool Date::setDate(const int mm,const int dd,const int yy)
{ if(mm<1 || mm>12)
throw InvalidMonth(); //抛出异常
if(dd<1 || dd>31)
throw InvalidDay(); //抛出异常
year=yy;
month=mm;
day=dd;
return true;
}
//在屏幕上显示日期//
void Date::display(void)
{ // 按照"12-25-2004"的形式输出日期
cout<>year;
cout<<"请按mm格式输入月:";
cin>>month;
cout<<"请按dd格式输入日:";
cin>>day;
myDate.setDate(month,day,year);
cout<<"您输入的日期是:"<
- 内容简介:
-
-
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。