2015-04-25 51 views
-2

我正在进行工资计划。第一个基础类是奖励,该类应包含2个公共属性salesid和sales。 在类中包含一个默认构造函数和一个参数化构造函数。还包括一个getbonus方法(函数),它使用公式销售计算销售人员奖金* 0.05 创建派生类名为Premiumbonus派生类getbonus mothod计算奖金如下sales0 .05 +(sales-2500)).01还包含此派生类中的默认和参数化构造函数。 如果销售超过2500使用这个工资单程序没有显示正确的金额结果

我觉得我的数学是关闭有人可以请仔细检查它吗?我需要一些建议,并且我试图调试并且getbonus好像一直保持0,不管我输入了多少个数字,但是我在计算框中得到了结果。下面 是代码

显式的选项在 选项严格在 选项推断关

' 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 *我们不是代码检查器,我们不提供建议。这是关于*答案* *问题*。参见[问] – 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 ST的一些战略地位MessageBox.Show(someValueIShouldCheck.ToString)