Вы заполняете свой массив app
экземплярами Application
, которые по-прежнему имеют значение STANDARD_FARE
по умолчанию (равное 0,0), потому что вы никогда не устанавливали его для этих экземпляров .Вы только устанавливаете его на экземпляр obj.cust
, , который вы никогда больше не используете .Поскольку STANDARD_FARE
является переменной экземпляра, ее изменения не влияют на другие (или будущие) экземпляры.
У вас та же проблема, что и в случае со всеми Application.Get*
функциями;они получают свойства объекта (obj.cust
), для которого никогда не было установлено никаких свойств, кроме StandardFare
/ STANDARD_FARE
.
Наиболее очевидное исправление - избавиться от obj
и obj.cust
полностью - они не имеют смысла, кроме как вводить в заблуждение - и делают STANDARD_FARE
статической переменной (а ее установщик StandardFare
статическим свойством).
Кстати, ваши соглашения об именах ужасны и непоследовательны;если бы я был вашим учеником, я бы выставил вам баллы за использование нечетких имен переменных (app
, nop
) и за использование ALL_CAPS для неконстантных (STANDARD_FARE
).Я также возражал бы против использования частного свойства с автоматической поддержкой (CustomerName
, которое также никогда не используется) вместо простой закрытой переменной, для не с использованием свойств с автоматической поддержкой в других местах (StandardFare
какявным образом закодированный публичный метод получения и установки для STANDARD_FARE
и т. д.), а также для копирования постоянных значений в ненастраиваемые переменные экземпляра (от K_DISCOUNT
до KidDiscount
; просто используйте константу напрямую или, по крайней мере, сделайте KidDiscount
статический и добавить к нему не частный доступ).Как уже упоминали другие, вы, конечно, не должны использовать goto
вместо циклов.Я также упомяну об подверженной ошибкам и неэффективной проверке длины номера паспорта путем повторного деления вместо простой проверки, является ли он меньше 99999999 (теоретически, номера паспорта могут начинаться с нуля, который будет выглядеть как менее 8 цифрпосле разбора, но вы также можете убедиться, что он больше 10000000, если хотите).