COSC 1320 - C++ Programming and
ITSE 1307 - Introduction to C++ Programming
Bob Comer, Professor of Computer Studies


Assignment 4 - Payroll Version 1.0

Be sure to read through Chapter 7 Structured Data and Classes before starting this assignment. Your job is to write a payroll program for Armadillo Automotive Group.

Warning:Input using the extractor operator (">>") is simple. However, when you mix the extractor operator with the getline function, things get tricky. When you input one value per line using the extractor operator (>>), the newline character at the end of the input line is left in the input stream. The getline( ) function reads everything up to the first newline character. When you read from the standard input stream (cin) using the getline() function, and the input stream contains a newline character, the empty string is stored in the string variable and the program will continue.

To fix this problem, you can use the ignore( ) function to discard the newline character before using the getline( ) function.

Program input

For a payroll program you would normally input the data from files, but in this first version you will input the data from the keyboard. The program input should be in 2 parts: employee master information and timesheet information.

Employee Master information

The employee master information consists of the following data:

Note: Use the C++ string class for the employee name. Use a C++ struct to hold the employee master information for one employee.

Timesheet information

Assume that there are exactly 4 employees. Your program should first input the employee master information for each employee. Since we have not reviewed arrays and arrays of structs yet, you can use 4 individual structs to hold the employee master information for the 4 employees. If you are familiar with arrays, you can use an array of structs to hold the employee master information. Then use a separate loop to do the payroll processing for each employee (input the employee's hours worked and calculate their pay (see the example program dialog below).

Input validation

The input should be checked for reasonable values. If a value is not reasonable, your program should print an informative error message and ask the user to re-enter the value.

Calculations

Program output - Payroll Report

The payroll report should be output to a file. It should be in a tabular (row and column) format with each column clearly labeled with a column heading. All dollar amounts should be formatted with 2 decimal places. Note: do not use tabs between the columns - use the setw manipulator to set the column width so that you can line up columns of numbers on the decimal point. Print one line for each transaction that contains:

The final lines of the payroll report should print the total amount of gross pay and total amount of net pay for the week (the total for all employees).

Your program dialog should look something like this example (user input is shown in bold).

Enter information for employee 1
Employee id: 22
Employee name:
Cindy Burke
Pay rate: 15.00
Dependents: 1
Type: 0

Enter information for employee 2
Employee id: 42
Employee name:
J. P. Morgan
Pay rate: 12.50
Dependents: 0
Type: 0
...
(input employee master information for last 2 employees)
...
Enter timecard information for each employee:
Hours worked for Cindy Burke: 40.0
Hours worked for J. P. Morgan: 39.5
...
(input timecard information for last 3 employees)
...

Other Requirements

  1. Global variables are variables that are declared outside any function. Do not use global variables in your programs. Declare all your variables inside functions.
  2. Use the C++ string class to represent strings in your program.
  3. You should use a struct to represent the employee master information for one employee. Note: you should NOT include Timecard information in this struct. Timecard information may change from one pay period to the next while employee master information usually does not. In other words, an employee's master information and information about a specific paycheck are 2 different things and logically should not be combined in the same struct (or object).
  4. Write the Payroll Report to a file.
  5. The employee master information should be read into individual structs (or, alternatively, an array of structs). Use a separate function to input and validate the employee master information for one employee.
  6. The timecard information (hours worked) can be a single variable.
  7. Use a separate function (or functions) to do the payroll processing for one employee. For example, you might pass one employee master struct to a function, which then inputs the hours worked and calculates and outputs the pay information for that employee.


Return to C++ Home Page

Copyright: Ó2008 by the Austin Community College
Department of Computer Studies. All rights reserved.
Comments to:
Bob Comer
Last updated: February 21, 2009