⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 employee.vb

📁 Programming Web and Desktop Applications in ADO .NET and ASP .NET
💻 VB
字号:
Option Explicit On  'Declare Variables 
Option Strict On 'Explicit Data types

Public Class Employee

    'Event Definition for ErrorEvent
    Public Event ErrorEvent(ByVal objName As String)

    Private mstrSSN As String
    Private mstrLastName As String
    Private mstrFirstName As String
    Private mstrAddress As String
    Private mintRank As Integer

    Private mintAge As Integer

    Public Property SSN() As String
        Get
            Return mstrSSN
        End Get
        Set(ByVal Value As String)
            If Value.Length < 11 Then
                RaiseEvent ErrorEvent("SSN")
            Else
                mstrSSN = Value
            End If
        End Set
    End Property

    Public Property LastName() As String
        Get
            Return mstrLastName
        End Get
        Set(ByVal Value As String)
            mstrLastName = Value
        End Set
    End Property

    Public Property FirstName() As String
        Get
            Return mstrFirstName
        End Get
        Set(ByVal Value As String)
            mstrFirstName = Value
        End Set
    End Property

    Public Property Address() As String
        Get
            Return mstrAddress
        End Get
        Set(ByVal Value As String)
            mstrAddress = Value
        End Set
    End Property

    Public Property Age() As Integer
        Get
            Return mintAge
        End Get
        Set(ByVal Value As Integer)
            mintAge = Value
        End Set
    End Property

    Public Property Rank() As Integer
        Get
            Return mintRank
        End Get
        Set(ByVal Value As Integer)
            If Value > 5 Or Value < 1 Then
                RaiseEvent ErrorEvent("Rank")
            Else
                mintRank = Value
            End If
        End Set
    End Property

    Public Overridable Function Compensation() As Long
        'This Function will be overriden by 
        'code in Subclasses.
    End Function
End Class

Public Class ContractEmployee
    Inherits Employee

    Private mintHours As Integer
    Private msngPayRate As Single

    Public Property Hours() As Integer
        Get
            Return mintHours
        End Get
        Set(ByVal Value As Integer)
            mintHours = Value
        End Set
    End Property

    Public Property PayRate() As Single
        Get
            Return msngPayRate
        End Get
        Set(ByVal Value As Single)
            msngPayRate = Value
        End Set
    End Property

    Public Overrides Function Compensation() As Long
        If mintHours > 40 Then
            Return CLng((msngPayRate * 40) + (msngPayRate * 1.5 * (mintHours - 40)))
        Else
            Return CLng(msngPayRate * mintHours)
        End If
    End Function
End Class

Public Class FullTimeEmployee
    Inherits Employee

    Private msngSalary As Single
    Private msngBonus As Single
    Private mintOTHours As Integer

    Public Sub New(ByVal intHrs As Integer)
        If intHrs > 40 Then
            mintOTHours = intHrs - 40
        Else
            mintOTHours = 0
        End If
    End Sub

    Public Property Salary() As Single
        Get
            Return msngSalary
        End Get
        Set(ByVal Value As Single)
            msngSalary = Value
        End Set
    End Property

    Public Property Bonus() As Single
        Get
            Return msngBonus
        End Get
        Set(ByVal Value As Single)
            msngBonus = Value
        End Set
    End Property

    Public Overrides Function Compensation() As Long
        'Call method based on OT Hours
        Dim intOTHours As Integer = mintOTHours

        If intOTHours > 0 Then
            Return CalcSalary(intOTHours)
        Else
            Return CalcSalary()
        End If
    End Function

    Private Overloads Function CalcSalary() As Long
        'For Manager Employee
        Return CLng(Salary + Bonus)
    End Function

    Private Overloads Function CalcSalary(ByVal Hours As Integer) As Long
        'For Non-Manager Employee
        Dim sngHourlyRate As Single = Salary / 180

        Select Case mintOTHours
            Case Is <= 10
                Return CLng(Salary + Bonus + mintOTHours * 1.25 * sngHourlyRate)
            Case Is <= 20
                Return CLng(Salary + Bonus + mintOTHours * 1.5 * sngHourlyRate)
            Case Is <= 30
                Return CLng(Salary + Bonus + mintOTHours * 1.75 * sngHourlyRate)
            Case Else
                Return CLng(Salary + Bonus + mintOTHours * 2 * sngHourlyRate)
        End Select
    End Function
End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -