Problem Solving with C++ (10th Edition)
Problem Solving with C++ (10th Edition)
10th Edition
ISBN: 9780134448282
Author: Walter Savitch, Kenrick Mock
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
Exercise docID document text docID document text 1 hot chocolate cocoa beans 7 sweet sugar 2345 9 cocoa ghana africa 8 sugar cane brazil beans harvest ghana 9 sweet sugar beet cocoa butter butter truffles sweet chocolate 10 sweet cake icing 11 cake black forest Clustering by k-means, with preprocessing tokenization, term weighting TFIDF. Manhattan Distance. Number of cluster is 2. Centroid docID 2 and docID 9.
Change the following code so that there is always at least one way to get from the left corner to the top right, but the labyrinth is still randomized. The player starts at the bottom left corner of the labyrinth. He has to get to the top right corner of the labyrinth as fast he can, avoiding a meeting with the evil dragon. Take care that the player and the dragon cannot start off on walls. Also the dragon starts off from a randomly chosen position   public class Labyrinth {    private final int size;    private final Cell[][] grid;     public Labyrinth(int size) {        this.size = size;        this.grid = new Cell[size][size];        generateLabyrinth();    }     private void generateLabyrinth() {        Random rand = new Random();        for (int i = 0; i < size; i++) {            for (int j = 0; j < size; j++) {                // Randomly create walls and paths                grid[i][j] = new Cell(rand.nextBoolean());            }        }        // Ensure start and end are…
Change the following code so that it checks the following 3 conditions: 1. there is no space between each cells (imgs) 2. even if it is resized, the components wouldn't disappear 3. The GameGUI JPanel takes all the JFrame space, so that there shouldn't be extra space appearing in the frame other than the game.   Main():         Labyrinth labyrinth = new Labyrinth(10);         Player player = new Player(9, 0);        Dragon dragon = new Dragon(9, 9);         JFrame frame = new JFrame("Labyrinth Game");        GameGUI gui = new GameGUI(labyrinth, player, dragon);         frame.add(gui);        frame.setSize(600, 600);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setVisible(true);   public class GameGUI extends JPanel {    private final Labyrinth labyrinth;    private final Player player;    private final Dragon dragon; //labyrinth, player, dragon are just public classes     private final ImageIcon playerIcon = new ImageIcon("data/images/player.png");…

Chapter 15 Solutions

Problem Solving with C++ (10th Edition)

Additional Engineering Textbook Solutions

Find more solutions based on key concepts
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