Глава 22. Обработка исключительных ситуаций_______________________627

// Показать содержимое записи о служащем cout « "Employee #" « NewEmployee.GetIDO « "\n";

cout « NewEmployee.GetFirstName() « " ";

cout « NewEmployee.GetMiddleInitial() « ". ";

cout « NewEmployee.GetLastName() « "\n";

cout « NewEmployee.GetAddress() « "\n";

cout « NewEmployee.GetCity() « ", ";

cout « NewEmployee.GetState() « " " ;

cout « NewEmployee.GetZip() « "\n\n";

// Извлечь записи о расходах cout « " Expenses\n";

cout « " ———————————\n";

for (loop = 0; loop < NewEmployee.GetNumExpenses(); loop++) {

EmployeeTotal += ProcessExpenseItem(infile, re);

if (re \= EXP_NO_ERROR) return O.OF;

}

// Проверить корректность общей суммы if (EmployeeTotal > MAX_ALLOWABLE_REIMBURSEMENT) {

cout « "Error! Expense total greater than maximum " « "amount eligible for reimbursement.\n\n";

re = EXP_ERR_TOTAL_EXPENSE_TOO_LARGE;

return O.OF;

// Показать общую сумму для служащего cout « " ========:===^====;========:============

cout « " Employee Total:";

cout.unsetf(ios::left);

cout « setw(42) « EmployeeTotal « "\n\n\n";

cout.setf(ios::left) ;

return EmployeeTotal;

}

void mainfint argc, char *argv[]) (

// Проверить число аргументов командной строки if (argc != 2) {

cout « "USAGE: expsumi <infile name>\n\n";

return;

}

т

// Открыть входной файл ifstream infile(argv[l], ios::nocreate) ;

if (!infile) {

cout « "Expense file \"" « argv[l] « "\" not found.\n\n";

return;

}