setEmployee()
and printEmployee()
to be
polymorphic functions. Make printEmployee()
in
Employee
a pure virtual function instead of printing out
"Undefined employee".
setSSN
, setSalary
and so on), you will use
exception handling. Create the following exception classes: badSSN, badWeek,
badRate, badHour and badSalary. Within each mutator function, if the input
is bad, you will throw the corresponding exception class instead of returning
false. For example, if the SSN is not exactly 9 digits, you will throw the
badSSN exception class.
In each setEmployee()
function, you will have a
try-catch
block for each of the mutator functions. You will
keep asking the user for input while there is an exception thrown. The
pseudocode for doing this for the SSN is as follows:
do ask the user for the SSN read the SSN into a temporary character array set flag to true try call setSSN catch badSSN output that the SSN is bad and must be exactly 9 digits set flag to false while flag is falseSimilar logic will be used for the other mutator functions.
NOTE: You do not need to do exception handling for setName()
as
it just truncates names that are too long.
main()
from Homework 4 with a main()
that implements the following pseudocode to test the polymorphic functions:
create an Employee pointer while true ask the user if they wish to enter a hourly or salaried employee, tell them to enter "exit" to end the loop read their response into a character array if the user typed "hourly" try use new to allocate a new hourlyEmployee to the Employee pointer catch bad_alloc output that the allocation failed exit program else if the user typed "salaried" try use new to allocate a new salariedEmployee to the Employee pointer catch bad_alloc output that the allocation failed exit program else if the user typed "exit" exit the loop with the break statement else output that the user selected an invalid employee type continue to the next iteration of the loop call setEmployee() on the Employee pointer call printEmployee() on the Employee pointer delete the object pointed to by the Employee pointer end-whileThis is a variation on a menu loop where the user types commands instead of menu options. You should use
strcmp()
from the cstring
library to compare what they typed to the available commands.
Your code should use robust input for reading strings and integers. The provided solution for Homework 4 also shows how to do robust input.