2015-05-09 2 views
0

Я трачу слишком много времени на это, что теоретически просто. Калькулятор заработной платы отображает только значение, превышающее 40 часов. Если я ставлю менее 40, выход составит 0,00? Некоторые рекомендации будут оценены:Проблемы расчета заработной платы при добавлении сверхурочных часов

hoursWorked = double.Parse(txtHoursWorked.Text); // change string to int 

switch (rblJobRole.SelectedIndex)// set employees basic hourly rate 
{ 
    case 0: //engineer 
     basicHourRate = 10; 
     break; 
    case 1: //Senior Engineer 
     basicHourRate = 12; 
     break; 
    case 2: //Technical Engineer 
     basicHourRate = 25; 
     break; 
    case 3: //Supervisor 
     basicHourRate = 30; 
     break; 
} 

if (ckBEng.Checked) // if they have a certificate 
{ 
    certAmount = (basicHourRate * 10)/100; // calculate 10% of hourly rate 
    basicHourRate = basicHourRate + certAmount; // add to hourly rate 
    basicWage = basicHourRate * hoursWorked; // basic wage set to include bonus. 
} 

if (hoursWorked > 40) // if employee worked more than 40hrs 
{ 
    overHrs = hoursWorked - regHrs; // calcualte over hours 
    basicWage = regHrs * basicHourRate; // calculate basic wage @ 40hrs only 
    overTimeRate = overHrs * (basicHourRate * 1.5); // calculate 50% bonus on 40+ hrs 
    basicWage = basicWage + overTimeRate; // calculate total wage 
} 

lblTotalWage.Text = basicWage.ToString("c"); // int to string to display Total Wage on a label 
lblDescWage.Text = "You have earned: "; 

ответ

3

Если они не имеют сертификата (ckBEng.Checked является false), и они не работают> 40 часов (hoursWorked <= 40), они не берут деньги :-)

if (ckBEng.Checked) 
{ 
} 

здесь необходимо else.

Или вы двигаетесь

basicWage = basicHourRate * hoursWorked; 

вне if

+0

хехе DOH! Я просто перешел basicWage = basicHourRate * hoursWorked; oustide утверждение if, и все это работает нормально. Большое спасибо :) – user3515765

Смежные вопросы