これは、両方のチェック ボックスが選択されている場合の希望する入力です。
* *入力: 時間 = 45、レート 10.00、医療/歯科と 401k の両方のチェック ボックスがオン
ここに私が期待する出力があります:
· アウトプット: 総賃金 = 475.00、医療/歯科控除 = 50.00、401k 控除 = 23.75、税金 = 100.31、正味賃金 = 300.94**
ただし、計算ボタンを押して両方のチェックボックスを選択した後にプロジェクトを実行すると、次のように表示されます (名前は無視してください)。
名前: ジョー 時間: 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)
{
}