簡體   English   中英

我想要的輸出不正確

[英]My desired output is not coming out correct

當同時選中兩個復選框時,這是我想要的輸入:

* *輸入:小時= 45,費率10.00,同時選中了Medical / Dental和401k復選框

這是我期望的輸出:

·輸出:總薪資= 475.00,醫療/牙科扣除額= 50.00,401k扣除額= 23.75,稅費= 100.31,凈工資= 300.94 **

但是,在單擊“計算”按鈕並選中兩個復選框(忽略名稱)后運行項目時,會收到此消息:

姓名:Joe Hours:45費率:10.00工資總額:$ 400.00稅金:$ 112.50凈工資:$ 337.50醫療/牙科費用扣除:$ 400.00 401k費用扣除:$ 20.00

對於我在做什么錯的任何幫助,將不勝感激。 我似乎無法找出問題所在。

這是我的項目中的內容:

這些變量在代碼頂部聲明:

private const decimal TAX = 0.25m;
private string name = "";
private decimal Gross_pay;
private decimal Taxes;
private decimal Net_Pay;
private decimal annual_salary;
private int NumberOfEmployees;
private decimal deductionMed;
private decimal deduction401k ;

這是進行計算的地方:

private void CalcButton_Click(object sender, EventArgs e)
    {  // The “Calculate” button calculates gross pay, taxes, and net pay and then displays name, department, gross pay, taxes, and net pay using currency format for various amounts in the rich text box
        // Gross pay=  (hours * rate)
        // Taxes= (25% of gross pay)
        // Net pay (gross pay ?taxes)



        //calculate         


        Gross_pay = Convert.ToInt32(HoursTextBox.Text) * decimal.Parse(RateTextBox.Text);
        Taxes = TAX * Gross_pay;
        Net_Pay = Gross_pay - Taxes;

        annual_salary = Net_Pay;

        Taxes = TAX * (Gross_pay - (deductionMed + deduction401k));

        //overtime pay
        if (Convert.ToInt32(HoursTextBox.Text) >= 41)
        {
            Gross_pay = Convert.ToInt32(HoursTextBox.Text) * decimal.Parse(RateTextBox.Text) * 1.5m;
            DisplayOutPut.Text += "\nOvertime:" + Gross_pay.ToString("C") + "\n";
        }

        //Medical/Dental and 401k deductions...as well as tax collected.
        if (MedicalDentalDeductions.Checked)
        {
            deductionMed = Gross_pay = Convert.ToInt32(HoursTextBox.Text) * decimal.Parse(RateTextBox.Text) - 50.00m;
        }


        if (FourOneKDeduction.Checked)
        {
            deduction401k = Gross_pay * 0.05m;

        }


        //display
        DisplayOutPut.Text = "Name: "+ "";
        DisplayOutPut.Text += NameTextBox.Text + "\n";
        DisplayOutPut.Text += "Hours: " + HoursTextBox.Text + "\n";
        DisplayOutPut.Text += "Rate: " + RateTextBox.Text + "\n";
        DisplayOutPut.Text += "Gross Pay: " + Gross_pay.ToString("C") + "\n"; // Hours*Rate
        DisplayOutPut.Text += "Taxes: " + Taxes.ToString("C") + "\n";
        DisplayOutPut.Text += "Net Pay: " + Net_Pay.ToString("C");
        DisplayOutPut.Text += "\nMedical/Dental deduction: " + deductionMed.ToString("C") + "\n401k deduction: " + deduction401k.ToString("C");

        //handling the invalid inputs
        if (NameTextBox.Text == "")
        { MessageBox.Show("Name is missing.", "Error"); }

        if (Convert.ToInt32(HoursTextBox.Text) >= 70)
        { MessageBox.Show("Please Enter a Valid hour.", "Invalid data type."); }

        if (RateTextBox.Text == "" && (RateTextBox.Text == ","))
        { MessageBox.Show("Please Enter a valid amount.", "Invalid data type ($)"); }

        if (Convert.ToInt32(HoursTextBox.Text) >= 70)
        { MessageBox.Show("You have exceeded the maximum hours per week."); }

        else if (Convert.ToInt32(HoursTextBox.Text) < 10)
        { MessageBox.Show("You cannot input less than 10 hours."); }

        if (Convert.ToDecimal(RateTextBox.Text) < 9.75m)
        { MessageBox.Show("Please enter the minimum wage."); }



      }

這些是復選框的方法:

 private void MedicalDentalDeductions_CheckedChanged(object sender, EventArgs e)
{






    } 

    private void FourOneKDeduction_CheckedChanged(object sender, EventArgs e)
    {


      }

您應該將計算真正拆分為單獨的方法,因為它更容易調試。 話雖如此,我還沒有測試以下內容,但是每種方法都應該產生您想要的值。 只需使用從這些方法派生的值來構建DisplayOutPut(我想為您做一些工作)。

您應該計算的第一件事是工資總額:

private double calculateGrossPay (double hours, double rate)
{
    double result = 0.00;
    double standardHours = 0.00;
    double overtimeHours = 0.00;
    if (hours > 40)
    {
        overtimeHours = (hours - 40) * (rate * 1.5);
        standardHours = 40 * rate;
    }
    else
    {
        standardHours = hours * rate;
    }
    result = standardHours + overtimeHours;
    return result;
}

然后計算稅金:

private double caculateTax (double gross, double tax)
{
    double result = 0.00;
    result = gross * tax; // assuming tax is represented as 0.25 for 25%
    return result;
}

隨后計算扣除額:

private double caclulate401k (double gross) // Or net?
{
    double result = 0.00;
    result = gross * 0.05;
    return result;
}

private double calculateMedical (double gross) // Or net?
{
    double result = 0.00;
    result = 50.00; // I figure this should be an actual calculation, if medical is always $50, waste of a method...
    return result;
}

最后,計算凈值。

private double calculateNet (double gross, double tax, double med, double 401k)
{
    double result = 0.00;
    double deductions = tax + med + 401k;
    result = gross - deductions;
    return result;  
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM