Работа с графикой Adobe Illustrator AutoCAD графический редактор Начертательная геометрия Практикум по черчению ЕСКД Инженерная графика Нанесение размеров Аксонометрические проекции Полиграфия Подготовка к изданию Деталирование чертежей Сборочный чертеж Эскизы Выполнение графических работ Резьбы, резьбовые изделия На главную

Расчет премии за выслугу лет

Премия за выслугу лет зависит от стажа работника. Мы будем определять ее величину, пользуясь табл. 5.1. При расчете премии будем также выполнять контроль правильности информации в базе данных сотрудников и в списке с окладами.

№ п/п Стаж, годы Премия, %
1 Менее 1 Не начисляется
2 От 1 до 3 10
3 От 3 до 5 20
4 От 5 до 10 30
5 Свыше 10 40
Таблица 5.1. Размер премии за выслугу лет в % к окладу

Алгоритм вычисления премии следующий.
1. Проверить, числился ли данный сотрудник в списке работников предприятия на момент начисления премии.
2. Сравнить, соответствует ли в каждой строке:
   а) табельный номер из базы данных сотрудников табельному номеру из штатного расписания;
   б) фамилия из базы данных фамилии из штатного расписания.
3. Определить общее количество проработанных на предприятии дней (для этого надо из даты начисления премии вычесть дату приема на работу).
4. Определить число отработанных сотрудником лет, разделив полученное на предыдущем этапе количество дней на 365,25 - среднее число дней в году с учетом високосных лет.
5. Отбросить от полученного значения дробную часть.
6. Если количество полных отработанных человеком лет составляет:
   а) менее 1 года - премию не начислять;
   б) от 1 до 3 лет - увеличить сумму оклада на 10%;
   в) от 4 до 5 лет - увеличить сумму оклада на 20%;
   г) от 6 до 10 лет - увеличить сумму оклада на 30%;
   д) более 10 лет - увеличить сумму оклада на 40%.
7. Если табельные номера и фамилии в штатном расписании соответствуют указанным в базе данных сотрудников, то зачесть полученную сумму премии, если же нет - выдать сообщение об ошибке.

Вроде бы все работает, но мы протестировали только малую часть всех возможностей приложения, не будем останавливаться и посмотрим, что же сгенерировало наше мини-приложение. На рис. 22.7 изображен примерный вариант порученной задачи.

Как видите, все параметры верны, кроме загадочного срока окончания задачи, который истекает через 5 дней, в то время как в диалоговом окне продолжительность проекта была равна 5 месяцам!!!

Итак, наша программа фактически работает, собирает данные из разных источников, создает задачу и даже назначает ее, но неверно устанавливает срок ее окончания. Надо констатировать, что мы столкнулись с последним типом ошибки — логическим. Компилятор не может отследить подобного рода ошибки автоматически, но это может сделать программист, используя, конечно, всевозможные способы и средства отладки.

Для отлова логических ошибок выполняется трассировка программы, т. е. выполнение программы или ее участка, сопровождающееся выводом в хронологической последовательности информации о событиях, связанных с выполнением программы. Давайте задумаемся, информацию о каких событиях мы хотели бы получить? Мы хотели бы получить и наблюдать измене ние переменных после выполнения операторов программы, причем желательно в пошаговом режиме, чтобы видеть процесс выполнения программы и иметь возможность тут же его исправить. Однако наблюдение всех переменных хоть и возможно, но малоэффективно.

;