面向对象A面向对象习题(南航皮德常)(3)

2019-05-24 19:46

9-1、定义NumDays类,功能是将以小时(hour)为单位的工作时间转换为天数(day)。构造函数具有一个代表工作小时的参数,其他函数成员实现小时和天的存储和检索。同时,该类需重载+、-、++、――运算符。

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

9-3、采用TimeOff类定义一个对象。要求用户输入某雇员已经工作的月数(months),然后采用TimeOff类对象计算并显示雇员因病休假和正常休假的最多天数。注意:雇员每月可以有12小时的带薪休假和8小时的生病休假。 //NumDays.h文件// 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++;

}

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

NumDays NumDays::operator --() { hour--;

day=hour/8; return *this; }

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

NumDays NumDays::operator --(int) { NumDays temp=*this; hour--;

day=hour/8; return temp; }

//TimeOff.h文件

#include\class TimeOff {

char name[20],id[10]; NumDays maxSickDays; NumDays sickTaken; NumDays maxVacation; NumDays vacTaken; NumDays maxUnpaid; NumDays unpaidTaken; public:

TimeOff(float,float,float,char *,char *); //设置允许的最多小时数及雇员姓名工号

void setSickTaken(NumDays &sickObj); void setVacTaken(NumDays &vacObj);

void setUnpaidTaken(NumDays &unpaidObj); char * getName() {return name;} char * getId() {return id;}

day=hour/8; return temp;

NumDays getMaxSickDays(){return maxSickDays;} NumDays getSickTaken() {return sickTaken;} NumDays getMaxVacation(){return maxVacation;} NumDays getVacTaken() {return vacTaken;} NumDays getMaxUnpaid() {return maxUnpaid;} NumDays getUnpaidTaken(){return unpaidTaken;} };

TimeOff::TimeOff(float maxSickh,float maxVach,float maxUnph,char *n,char *i) :maxSickDays(maxSickh),maxVacation(maxVach),maxUnpaid(maxUnph) {

strcpy(name,n); strcpy(id,i); }

void TimeOff::setSickTaken(NumDays &sickObj) { float sickhours;

sickhours=sickTaken+sickObj; sickTaken.setHours(sickhours); }

void TimeOff::setVacTaken(NumDays &vacObj) {

float vachours;

vachours=vacTaken+vacObj; vacTaken.setHours(vachours); }

void TimeOff::setUnpaidTaken(NumDays &unpaidObj) {

float unpaidhours;

unpaidhours=unpaidTaken+unpaidObj; unpaidTaken.setHours(unpaidhours); }

//main.cpp

#include using namespace std; #include\

void main() {

TimeOff employee(8,12,24,\张三\ int months;

cout<<\请输入\已经工作的月数:\\n\ cin>>months;

for(int i=1;i<=months;i++) {

float hours;

NumDays offObj;

cout<<\请输入第\个月生病休假的累计小时数:\\n\ cin>>hours;

if(hours>employee.getMaxSickDays().getHours())

cout<<\该月超过标准的生病休假小时数\小时!\\n\ offObj.setHours(hours);

employee.setSickTaken(offObj);

cout<<\请输入第\个月带薪休假的累计小时数:\\n\ cin>>hours;

if(hours>employee.getMaxVacation().getHours())

cout<<\该月超过标准的带薪休假小时数\小时!\\n\ offObj.setHours(hours);

employee.setVacTaken(offObj);

cout<<\请输入第\个月不带薪休假的累计小时数:\\n\ cin>>hours;

if(hours>employee.getMaxUnpaid().getHours())

cout<<\该月超过标准的不带薪休假小时数\小时!\\n\ offObj.setHours(hours);

employee.setUnpaidTaken(offObj); }

cout<

cout<<\因病休假的天数为:\\t\ cout<<\带薪休假的天数为:\\t\ cout<<\不带薪休假的天


面向对象A面向对象习题(南航皮德常)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Journal of Hazardous Materials投稿说明(英文)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: