Глава 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;
}