阅读以下说明和C++代码,填补C++代码中的空缺(1)~(6),将解答写在答题纸的对应栏内。 【说明】 已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算

admin2013-07-03  28

问题 阅读以下说明和C++代码,填补C++代码中的空缺(1)~(6),将解答写在答题纸的对应栏内。
    【说明】
    已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。
    下面是实现该工资系统的C++代码,其中定义了四个类:工资系统类PayRoll、员工类Employee、正式工类Salaried和计时工类Hourly,Salaried和Hourly是Employee的子类。
    【C++代码】
    //头文件和域名空间略
    const int EMPLOYEE_NUM=5;
    class Employee{
    protected:
        int empCode:    //员工号
        string name:    //员工姓名
        double salary:    //周发放工资
    public:
        Employee(const int empCode,const string&name){
        this->empCode=empCode:this->name=name;
        }
        virtual~Employee(){}
        virtual void pay()=0;
        double getSalary(){  return this->salary;}
  };
    class Salaried  (1)  {
        private:double payRate;    //年薪
        public:
            Salaried(const int empCode,const string&name.double payRate)
            :Employee(empCode,name){
               this->payRate=payRate:
            }
            void pay(){
              this->salary=  (2)  ;    //计算正式员工的周发放工资数
              cout<<this->name<<”:”<<this->salary<<endl;
            }
    };
    class Hourly  (3)  {
            private:
                double payRate;    //小时工资数
                int hours;    //周工作小时数
            public:
              Hourly(const int empCode,const string &name,int hours,double payRate)
              :Employee(empCode,name){
                this->payRate=payRate;this->hours=hours,
              }
              void pay(){
                this->salary=  (4)  ;    //计算计时工的周发放工资数
                cout<<this->named<”:”<<this->salary<<endl:
              }
    };
    class PayRoll{
      public:
        void pay(Employee*e[]){
          for(int i=0;i<EMPLOYEE_NUM;i++){
            e->pay();
        }
      }
    };
    int main(){
      PayRoll*payRoll=new PayRoll:
        (5)  employees[EMPLOYEE_NUM]={
      new Salaried(1001,”Zhang San”,58000.00),
      //此处省略对其他职工对象的生成
      new Hourly(1005,”L1”,12,50.00),
    };
    payroll->pay(  (6)  ):
    double total=0.0;
    for(int i=0;i<EMPLOYEE_NUM;i++)
      {total+=employees[il->getSalary();  }    //统计周发放工资总额
  cout<<”总发放额=”<<total<<endl;
  delete payroll;return 0;
}

选项

答案(1):public Employee (2)payRate/52 (3):public Employee (4)hotlrs*PayRate (5)Employee*或static Employee* (6)employees

解析 本题考查考生利用C++语言设计程序的能力,涉及类、函数和虚函数的定义和相关操作,以及继承关系。考生需要根据给出的案例和执行过程说明,认真阅读理清程序思路,然后完成程序的设计。
    根据题目中有关信息的描述,Salaried和Hourly是Employee的子类,它们之间是继承关系。(1)和(3)处需要体现出类之间的继承关系。在子类的构造函数中,调用父类的构造函数,所以继承的权限为public,其语法为:public父类名。因此,(1)处和(3)处均应填入public Employee。
    根据题目的描述及程序段的注释,(2)处实现计算正式员工的周发放工资数。正式员工的周发放工资数为年薪除以总周数,因此应填入payRate/52。(4)处实现计算计时工的周发放工资数。计时工的周发放工资数为周工作小时数乘以小时工资数。因此,(4)处应填入hours*PayRate。
    (5)处用于生成5个员工的信息,此处缺少一个类型修饰符。由对象的生成信息可知,此处应填入Employee*或static Employee*。
    (6)处调用工资系统类PayRoll中的pay函数。由类PayRoll中构造函数void pay(Employee*e[])的形式可以确定,(6)处应填入employees。
转载请注明原文地址:https://kaotiyun.com/show/ynjZ777K
0

最新回复(0)