我想計算我的薪水,考慮到假期/星期日/星期六等幾個比作業日支付更多的引數。我試圖遵循一個簡單的邏輯。
要遵守的規則是
作業日 - 從早上 6 點到晚上 10 點,通常按小時工資支付
晚上 - 從晚上 10 點到早上 6 點,通常按小時工資加 4 美元支付。(ps 僅當我晚上作業至少 3 小時時,我才有資格獲得總計增加的 4 美元)
星期六 - 每小時多付 30%
周日 - 每小時多獲得 0.70 美元的報酬
假期 - 如果我最多作業 7 小時,則每小時多獲得 35% 的報酬 - 從第 8 小時開始,每小時增加 40%
我可能會在周六晚上作業到周日早上,所以我需要進行正確的計算。此外,它可能會在周日假期作業,每小時獲得 35(或 40%)加 0.70 美元的報酬。如果我在星期六假期作業就不會發生這種情況,因為最大的百分比吸收了較小的百分比,所以在星期六的假期我只能得到 35 的報酬(或 40%,基于多少小時......)
我正在嘗試使用 Few numericUpDown (總共 5 個 - 作業日、晚上、星期六、星期日、節假日)控制元件和兩個文本框。第一個文本框包含正常的小時工資(不含 10%)。第二個文本框包含支付日的總金額。
到目前為止我寫的代碼是
Dim filledalready As Boolean
Private Sub nighthours_ValueChanged(sender As Object, e As EventArgs) Handles nighthours.ValueChanged
If filledalready = False Then
If night.Value >= 3 Then
total.Text = CStr(CDbl(night.Value) * ((CStr(CDbl(hourlywage.Text) CDbl(hourlywage.Text) * 30 / 100))))
filledalready = True
End If
Else
total.Text = CStr(CDbl(total.Text) CStr(CDbl(night.Value) * ((CStr(CDbl(hourlywage.Text) CDbl(hourlywage.Text) * 30 / 100)))))
filledalready = True
End If
End Sub
Private Sub dayhours_ValueChanged(sender As Object, e As EventArgs) Handles dayhours.ValueChanged
If filledalready = False Then
total.Text = CDbl(day.Value) * CStr(CDbl(hourlywage.Text))
filledalready = True
Else
total.Text = CStr(CDbl(total.Text) CDbl(day.Value) * CStr(CDbl(hourlywage.Text)))
filledalready = False
End If
End Sub
我嘗試使用布爾變數,因為如果我設定作業日的作業時間,然后從晚上添加幾個小時,它會在計算時出錯,但它仍然沒有得到我想要的東西,仍然它會給出錯誤的數字作為輸出。我想知道我是否遵循正確的方法,如果沒有,請隨時指出我正確的道路。
uj5u.com熱心網友回復:
老實說,這不是我的想法,而是更多地關注如何而不是實施你的規則和邏輯,但希望這可以作為你的開端。還有很多更優雅的解決方案。
Public Class Form1
Const StdRate = 17.45
Property StandardHours As Integer
Property OvertimeHours As Integer
Property WeekendHours As Integer
Property PublicHolidayHours As Integer
ReadOnly Property TotalPay As Double
Get
Return (StandardHours * StdRate) (OvertimeHours * (StdRate 4))
(WeekendHours * (StdRate * 1.7)) (PublicHolidayHours * (StdRate (StdRate * 0.35)))
End Get
End Property
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
txtStdHours.DataBindings.Add("Value", Me, "StandardHours", True, DataSourceUpdateMode.OnPropertyChanged)
txtOvertimeHrs.DataBindings.Add("Value", Me, "OvertimeHours", True, DataSourceUpdateMode.OnPropertyChanged)
txtWeekendHrs.DataBindings.Add("Value", Me, "WeekendHours", True, DataSourceUpdateMode.OnPropertyChanged)
txtPublichHolidayHours.DataBindings.Add("Value", Me, "PublicHolidayHours", True, DataSourceUpdateMode.OnPropertyChanged)
txtTotal.DataBindings.Add("Text", Me, "TotalPay", True, DataSourceUpdateMode.OnPropertyChanged)
End Sub
End Class
另請注意,我已將常量用于標準工資率,您可能有另一個文本框或周圍的東西。您可以通過添加它自己的屬性和系結等來應用相同的原則
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/496414.html
標籤:VB.net
