blob: 146ef52da1bdd89e9fc94696811220ee70d4029c [file] [log] [blame]
/* driver.cc -*- C++ -*-
** Driver for the Employee Example
**
** COPYRIGHT (C) 1994 Bradley M. Kuhn
**
** Written : Bradley M. Kuhn Loyola College
** By
**
** Written : David W. Binkley Loyola College
** For
**
** RCS :
**
** $Source$
** $Revision$
** $Date$
**
** $Log$
** Revision 1.2 2004/10/05 00:41:19 lattner
** Don't print argv[0]
**
** Revision 1.1 2004/10/04 20:01:13 lattner
** Initial checkin of all of the source
**
** Revision 0.1 1994/12/24 01:48:26 bkuhn
** # initial version
**
**
*/
#include "company.h"
#include "boss.h"
#include "commission.h"
#include "piece.h"
#include "hourly-no-over.h"
#include "hourly-over.h"
#include <stdio.h>
int
main(int argc, char *argv[])
{
int ii, totalWeeks;
int classCode;
char first[80], last[80];
float firstArg, secondArg;
Employee * e;
Company * c;
if (argc != 2) {
fprintf(stderr, "usage: %s <number_of_weeks>\n", "employ");
return 1;
}
cout << setiosflags(ios::showpoint | ios::fixed) << setprecision(2);
totalWeeks = atoi(argv[1]);
c = new Company();
while (scanf("%d%s%s%f", &classCode, first, last, &firstArg) == 4) {
switch(classCode) {
case BOSS_ID:
e = new Boss(first, last, firstArg);
break;
case HOURLY_WORKER_NO_OVERTIME_ID:
e = new HourlyWorkerNoOvertime(first, last, firstArg);
break;
case HOURLY_WORKER_OVERTIME_ID:
e = new HourlyWorkerOvertime(first, last, firstArg);
break;
case PIECE_WORKER_ID:
e = new PieceWorker(first, last, firstArg);
break;
case COMMISSIONED_WORKER_ID:
scanf("%f", &secondArg);
e = new CommissionedWorker(first, last, firstArg, secondArg);
break;
default:
fprintf(stderr, "INVALID EMPLOYEE CODE(%d)\n", classCode);
return -1;
}
c->AddEmployee(e);
}
for(ii = 0; ii < totalWeeks; ii++) {
c->NewWeek();
c->PrintWithEarnings();
if ( (ii % 10) == 0) c->AcrossTheBoardRaise(1);
}
return 0;
}