2015-04-25 3 views
-2

Я работаю над программой расчета заработной платы. Первый базовый класс - бонус, класс должен содержать 2 публичных свойства продаж и продаж. Включите конструктор по умолчанию и конструктор с параметризацией в класс. Также включите метод geta (get), который вычисляет бонус продавцов, используя формулу sales * 0.05 создайте производный класс с именем Premiumbonus, производный clas getbonus mothod, подсчитайте бонус следующим образом: sales0 .05 + (sales-2500)). 01 также включает конструкцию по умолчанию и параметризацию этого производного класса. Если продажи превышают 2500, используйте этоПрограмма расчета заработной платы не отображает корректную сумму результатов

Я чувствую, что моя математика отключена, может кто-то, пожалуйста, дважды проверьте его? Мне нужны некоторые предложения, а также я пытался отлаживать и getbonus кажется, что он остается на 0, независимо от того, какой номер я положил, но я получаю результаты в вычисленном поле. ниже код

Option Explicit On Option Strict On Option Infer Off

' base class 
    Public Class Bonus 
    Public Property SalesId As String 
    Public Property Sales As Double 

    Public Sub New() 
    _Sales = 0 
    _SalesId = String.Empty 




    End Sub 
    Public Sub New(ByVal dblB As Double, 
    ByVal strId As String) 

    _Sales = dblB 
    _SalesId = strId 
    End Sub 

    Public Overridable Function GetBonus() As Double 
    ' returns sales 
    Return _Sales * 0.05 
    End Function 
    End Class 


    ' derived class 
    Public Class PremiumBonus 
    Inherits Bonus 

    Public Sub New() 
    MyBase.New() 
    End Sub 

    Public Sub New(ByVal dblB As Double, 
    ByVal strId As String) 
    MyBase.New(dblB, strId) 
    End Sub 

    Public Overrides Function GetBonus() As Double 
    Return MyBase.GetBonus + (Sales - 2500) * 0.01 
    End Function 
    End Class 



    Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click 
    ' calculates and displays a bonus 

    Dim myBonus As New Bonus 
    Dim myPremiumBonus As New PremiumBonus 
    Dim Sales As Double 

    ' if the sales are over $2500, instantiate a PremiumBonus object 
    ' and then calculate the bonus 
    ' otherwise, instantiate a Bonus object and then calculate the bonus 

    If Sales > 2500 Then 
     Double.TryParse(txtSales.Text, myBonus.Sales) 
     Sales = myBonus.GetBonus 

    Else 
     Double.TryParse(txtSales.Text, myPremiumBonus.Sales) 
     Sales = myPremiumBonus.GetBonus 
    End If 
+0

ремеслу конкретный вопрос, как *, когда я вхожу X, результат Y, но она должна быть Z * Мы не проверяем код, и мы не делаем предложений. SO - это * ответы * на * вопросы *. См. [Ask] – Plutonix

ответ

0

все равно спасибо, я установил его у меня были бонусы в неправильных местах

Public Class Bonus 
Public Property SalesId As String 
Public Property Sales As Double 

Public Sub New() 
    _Sales = 0 
    _SalesId = String.Empty 




End Sub 
Public Sub New(ByVal dblB As Double, 
ByVal strId As String) 

    _Sales = dblB 
    _SalesId = strId 
    End Sub 

Public Overridable Function GetBonus() As Double 
    ' returns sales 
    Return _Sales * 0.05 
    End Function 
End Class 


' derived class 
Public Class PremiumBonus 
Inherits Bonus 

Public Sub New() 
    MyBase.New() 
End Sub 

Public Sub New(ByVal dblB As Double, 
    ByVal strId As String) 
    MyBase.New(dblB, strId) 
End Sub 

Public Overrides Function GetBonus() As Double 
    Return MyBase.GetBonus + (Sales - 2500) * 0.01 
End Function 
End Class 

Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click 
    ' calculates and displays a bonus 

    Dim myBonus As New Bonus 
    Dim myPremiumBonus As New PremiumBonus 
    Dim Sales As Double 

    ' if the sales are over $2500, instantiate a PremiumBonus object 
    ' and then calculate the bonus 
    ' otherwise, instantiate a Bonus object and then calculate the bonus 

    If Val(txtSales.Text) > 2500 Then 
     Double.TryParse(txtSales.Text, myPremiumBonus.Sales) 
     Sales = myPremiumBonus.GetBonus 

    Else 
     Double.TryParse(txtSales.Text, myBonus.Sales) 
     Sales = myBonus.GetBonus() 
    End If 
0

Основываясь на своем названии:

программа расчета заработной платы не отображается правильное количество результатов

и часть вашего описания:

getbonus кажется, что он остается на 0, независимо от того, какое число я поставил, но я получаю результаты в вычисленной окне

Я довольно уверен, ваш вопрос «Мой выход равен нулю независимо от входного сигнала. Что случилось»


Я вижу в вашем коде:

Dim Sales As Double 
If Sales > 2500 Then 
    Double.TryParse(txtSales.Text, myBonus.Sales) 
    Sales = myBonus.GetBonus 

Вы, вероятно, следует посмотреть на заселение Sales с величиной до его оценки, и это, вероятно, хорошая идея, чтобы не использовать те же имя переменной во многих местах, как это делает ваш код более трудным для чтения Вы можете попробовать что-то вроде этого:.

Dim myNewBonus As Double 
Dim Sales As Double 
Double.TryParse(txtSales.Text, Sales) 
If Sales > 2500 Then 
    myBonus.Sales = Sales 
    myNewBonus = myBonus.GetBonus() 

Любой если до сих пор не удается, попробуйте с помощью отладчика, или в LEA ул некоторых стратегически расположенных MessageBox.Show(someValueIShouldCheck.ToString) «s

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