Problem Solving with C++ (9th Edition)
Problem Solving with C++ (9th Edition)
9th Edition
ISBN: 9780133591743
Author: Walter Savitch
Publisher: PEARSON
bartleby

Concept explainers

bartleby

Videos

Textbook Question
Book Icon
Chapter 15, Problem 1P

Write a program that uses the class SalariedEmployee in Display 15.5. Your program is to define a class called Administrator, which is to be derived from the class SalariedEmployee. You are allowed to change private in the base class to protected. You are to supply the following additional data and function members:

A member variable of type string that contains the administrator’s title (such as Director or Vice President).

A member variable of type string that contains the company area of responsibility (such as Production, Accounting, or Personnel).

A member variable of type string that contains the name of this administrator’s immediate supervisor.

A protected: member variable of type double that holds the administrator’s annual salary. It is possible for you to use the existing salary member if you did the change recommended earlier.

A member function called setSupervisor, which changes the supervisor name.

A member function for reading in an administrator’s data from the keyboard.

A member function called print, which outputs the object’s data to the screen.

An overloading of the member function printCheck() with appropriate notations on the check.

Expert Solution & Answer
Check Mark
Program Plan Intro

Salaried Employee

Program Plan:

administrator.h:

  • Include required header files.
  • Create a namespace.
    • Declare a class “Administrator”.
      • Inside the “protected” access specifier,
        • Declare a variable to hold the salary amount.
      • Inside the “public” access specifier,
        • Declare the constructors.
        • Declare the member functions.
      • Inside the “private” access specifier,
        • Declare the variables to store the title, responsibility, and name of the supervisor.

administrator.cpp:

  • Include required header files.
  • Create a namespace.
    • Declare constructors.
    • Set the supervisor name.
    • Give function definition for “readData ()”.
      • Get the title, responsibility and supervisor name from the user.
    • Give function definition for “print ()”.
      • Print the details like name, responsibility and supervisor name.
    • Give function definition for “printCheck ()”.
      • Call the function “setNetPay ()” to set the amount.
      • Print the name using the function “getName ()”.
      • Print the amount using the function “getNetPay ()”.
      • Print the employee number using the function “getSSN ()”.

salariedemployee.h:

  • Include required header files.
  • Create a namespace.
    • Declare a class “SalariedEmployee”.
      • Inside “public” access specifier,
        • Declare default and parameterized constructor.
        • Declare the function “getSalary ()”, and “setSalary ()”.
      • Inside “protected” access specifier,
        • Declare a variable “salary”.

salariedemployee.cpp:

  • Include required header files.
  • Create a namespace.
    • Instantiate the constructors.
    • Give mutator and accessor functions to set and get the salary amount respectively.

employee.h:

  • Include required header files.
  • Create a namespace.
    • Inside the “public” access specifier.
      • Declare the default and parameterized constructor.
      • Declare the functions.
    • Inside the “private” access specifier.
      • Declare required variables like “name”, “ssn”, and “netPay”.

employee.cpp:

  • Include required header files.
  • Create a namespace.
    • Instantiate the constructors.
    • Give mutator and accessor functions to set and get the name, employee number, and net pay.
    • Give function to print the check.

main.cpp:

  • Include required header files.
  • Declare the “main ()” function.
    • Create an object for “Administrator” class.
    • Call the function “readData ()”, “print ()”, and “printCheck ()” using the object.
Program Description Answer

The below program demonstrates the creation of “Administrator” class with the required given constraints.

Explanation of Solution

Program:

administrator.h:

//Include required header files

#ifndef ADMINISTRATOR_H

#define ADMINISTRATOR_H

#include <string>

#include "salariedemployee.h"

using namespace std;

//Create a namespace

namespace SEmployees

{

    //Declare a class

    class Administrator : public SalariedEmployee

    {

        //Access specifier

        protected:

            //Declare a variable

            double theAnnualSalary;

        //Access specifier

        public:

            //Constructors

            Administrator();

     Administrator(const string& theName, const string& theSsn, double theAnnualSalary);

            //Declare the member functions

     void setSupervisor(const string& newSupervisorName);

            void readData();

            void print();

            void printCheck();

        //Access specifier

        private:

            //Declare required variables

            string adminTitle;

            string areaOfResponsibility;

            string supervisorName;

    };

}

#endif

administrator.cpp:

//Include required header files

#include <string>

#include <iostream>

#include "administrator.h"

using namespace std;

//Create a namespace

namespace SEmployees

{

    //Constructor

  Administrator::Administrator() : SalariedEmployee(), adminTitle("No title yet"),areaOfResponsibility("No responsibility yet"), supervisorName("No supervisor yet"){}

    //Constructor

  Administrator::Administrator(const string& theName, const string& theSsn,double theAnnualSalary): SalariedEmployee(theName, theSsn, theAnnualSalary), adminTitle("No title yet"), areaOfResponsibility("No responsibility yet"), supervisorName("No supervisor yet"){}

    //Function to set supervisor name

  void Administrator::setSupervisor(const string& newSupervisorName)

    {

        //Set the name

        supervisorName = newSupervisorName;

    }

    //Function to get the information

    void Administrator::readData()

    {

        //Print the statement

     cout << "Enter the details of the administrator " << getName() << endl;

        //Ge the title

        cout << " Enter the administrator's title: ";

        getline(cin, adminTitle);

        //Get the area of responsibility

     cout << " Enter the company area of responsibility: ";

        getline(cin, areaOfResponsibility);

        //Get the name of supervisor

     cout << " Enter the name of this administrator's immediate supervisor: ";

        getline(cin, supervisorName);

    }

    //Function to print information

    void Administrator::print()

    {

        //Print the statement

     cout << "\nDetails of the administrator..." << endl;

        //Print the name

     cout << "Administrator's name: " << getName() << endl;

        //Print the title

     cout << "Administrator's title: " << adminTitle << endl;

        //Print the responsibility

     cout << "Area of responsibility: " << areaOfResponsibility << endl;

        //Print the supervisor name

     cout << "Immediate supervisor's name: " << supervisorName << endl;       

    }

    //Function to print the check

    void Administrator::printCheck()

    {

        //Print the statement

        cout << "\nPay check..." << endl;

        //Call the function

        setNetPay(salary);

        //Print the statements

     cout << "\n_______________________________________________\n";

        //Print the name

     cout << "Pay to the order of " << getName() << endl;

        //Print the amount

        cout << "The sum of $" << getNetPay();

     cout << "\n_______________________________________________\n";

        cout << "Check Stub NOT NEGOTIABLE \n";

        //Print the employee number

     cout << "Employee Number: " << getSSN() << endl;

        //Print the salary

     cout << "Salaried Employee (Administrator). Regular Pay: $" << salary;

     cout << "\n_______________________________________________\n";

    }

}

salariedemployee.h:

//Include required header files

#ifndef SALARIEDEMPLOYEE_H

#define SALARIEDEMPLOYEE_H

#include <string>

#include "employee.h"

using namespace std;

//Create a namespace

namespace SEmployees

{

    //Declare a class

    class SalariedEmployee : public Employee

    {

        //Access specifier

        public:

        //Default constructor

        SalariedEmployee( );

        //Parameterized constructor

     SalariedEmployee (string theName, string theSSN,double theWeeklySalary);

        //Function declarations

        double getSalary( ) const;

        void setSalary(double newSalary);

        //Access specifier

        protected:

        //Declare a variable

        double salary;

    };

}

#endif

salariedemployee.cpp:

//Include required header files

#include <iostream>

#include <string>

#include "salariedemployee.h"

using namespace std;

//Create a namespace

namespace SEmployees

{

    //Constructors

  SalariedEmployee::SalariedEmployee( ) : Employee( ), salary(0){}

  SalariedEmployee::SalariedEmployee(string theName, string theNumber,double theWeeklySalary): Employee(theName, theNumber), salary(theWeeklySalary){}

    //Accessor function to get the salary

    double SalariedEmployee::getSalary( ) const

    {

        //Return the amount

    return salary;

    }

    //Mutator function to set the salary

    void SalariedEmployee::setSalary(double newSalary)

    {

        //Set the amount

    salary = newSalary;

    }

}

employee.h:

//Include required header files

#ifndef EMPLOYEE_H

#define EMPLOYEE_H

#include <string>

using namespace std;

//Create a namespace

namespace SEmployees

{

    //Declare a class

    class Employee

    {

        //Access specifier

        public:

        //Declare a default constructor

        Employee( );

        //Declare the parameterized constructor

        Employee(string theName, string theSSN);

        //Declare the functions

        string getName( ) const;

        string getSSN( ) const;

        double getNetPay( ) const;

        void setName(string newName);

        void setSSN(string newSSN);

        void setNetPay(double newNetPay);

        void printCheck( ) const;

        //Access specifier

        private:

            //Declare required variables

        string name;

        string ssn;

        double netPay;

    };

}

#endif

employee.cpp:

//Include required header files

#include <string>

#include <cstdlib>

#include <iostream>

#include "employee.h"

using namespace std;

//Create a namespace

namespace SEmployees

{

    //Constructors

  Employee::Employee( ) : name("No name yet"), ssn("No number yet"), netPay(0){}

  Employee::Employee(string theName, string theNumber): name(theName), ssn(theNumber), netPay(0){}

    //Accessor function to get a name

    string Employee::getName( ) const

    {

        //Return the name

        return name;

    }

    //Accessor function to get the number

    string Employee::getSSN( ) const

    {

        //Return the number

        return ssn;

    }

    //Accessor function to get the pay

    double Employee::getNetPay( ) const

    {

        //Return the pay

        return netPay;

    }

    //Mutator function to set the name

    void Employee::setName(string newName)

    {

        //Set the name

        name = newName;

    }

    //Mutator function to set the number

    void Employee::setSSN(string newSSN)

    {

        //Set the number

        ssn = newSSN;

    }

    //Mutator function to set the pay

    void Employee::setNetPay (double newNetPay)

    {

        //Set the pay

        netPay = newNetPay;

    }

    //Function to print the check

    void Employee::printCheck() const

    {

        //Print the statements.

     cout << "\nERROR: printCheck FUNCTION CALLED FOR AN \n"<< "UNDIFFERENTIATED EMPLOYEE. Aborting the program.\n"<< "Check with the author of the program about this bug.\n";

        exit(1);

    }

}

main.cpp:

//Include required header files

#include <iostream>

#include "administrator.h"

//Create namespace

using SEmployees::Administrator;

//Main function

int main()

{

    //Add details

  Administrator admin("Mr. John Smith", "963-85-2741", 10000.00);

    //Call the function to read information

    admin.readData();

    //Call the function to print

    admin.print();

    //Call the function to print the check

    admin.printCheck();

    //Return the statement

    return 0;

}

Sample Output

Output:

Enter the details of the administrator Mr. John Smith

 Enter the administrator's title:  Director

 Enter the company area of responsibility:  Personnel

 Enter the name of this administrator's immediate supervisor:  Mr. Adams

Details of the administrator...

Administrator's name: Mr. John Smith

Administrator's title: Director

Area of responsibility: Personnel

Immediate supervisor's name: Mr. Adams

Pay check...

_______________________________________________

Pay to the order of Mr. John Smith

The sum of $10000

_______________________________________________

Check Stub NOT NEGOTIABLE

Employee Number: 963-85-2741

Salaried Employee (Administrator). Regular Pay: $10000

_______________________________________________

Want to see more full solutions like this?

Subscribe now to access step-by-step solutions to millions of textbook problems written by subject matter experts!
Students have asked these similar questions
Create a class called Bill that a hardware store might use to represent a bill for an item sold at the store. A Bill should include three data members—a part number (type string), a quantity of the item being purchased (type int) and a price per item (type double). Your class should have a constructor that initializes the three data members. Provide a set and a get function for each data member. In addition, provide a member function named getBillAmount that calculates the bill amount (i.e., multiplies the quantity by the price per item), then returns the amount as an int value. If the quantity is not positive, it should be set to 0. If the price per item is not positive, it should be set to 0. Write a C++ test program that demonstrates class Bill’s capabilities.
Create a class called Employee that includes four pieces of information as data members — a first name (type string), a middle name (type string) , a last name (type string)and a monthly salary (type int). Your class should have a constructor that initializes the four data members. Provide a set and a get function for each data member. If the monthly salary is not positive, set it to 0. Write a test program that demonstrates class Employee’s capabilities. Create two Employee objects and display each object’s yearly salary.
In C++, Create a class called Date that includes three data members: amonth(type int), a day(type int), and a year(type int). The Date class willhave a constructor with three parameters to initialize the three data members.You may assume the values provided for the year and day are correct, but makesure that the month value is in the range 1-12; if it isn't, set the month to1. Provide set and get functions for each data member. Provide a memberfunction displayDate that displays the date in format MM/DD/YYYY.Write a test program that prompts the user to input the month, the day,and the year and uses your Date class to output the formatted date.

Chapter 15 Solutions

Problem Solving with C++ (9th Edition)

Knowledge Booster
Background pattern image
Computer Science
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
Programming Logic & Design Comprehensive
Computer Science
ISBN:9781337669405
Author:FARRELL
Publisher:Cengage
Text book image
C++ Programming: From Problem Analysis to Program...
Computer Science
ISBN:9781337102087
Author:D. S. Malik
Publisher:Cengage Learning
Text book image
Microsoft Visual C#
Computer Science
ISBN:9781337102100
Author:Joyce, Farrell.
Publisher:Cengage Learning,
Introduction to Classes and Objects - Part 1 (Data Structures & Algorithms #3); Author: CS Dojo;https://www.youtube.com/watch?v=8yjkWGRlUmY;License: Standard YouTube License, CC-BY