家庭作业问题:互联网服务提供商为其客户提供三种订阅套餐 非营利组织的折扣: 一个。套餐A:10个小时的访问费用,每月9.95美元。额外的小时是2.00美元 每小时。 湾套餐B:20小时访问,每月14.95美元。额外的时间是 每小时1.00美元。 C。套餐C:无限制使用,每月19.95美元。 d。非营利组织:服务提供商为所有非营利组织提供服务 所有套餐均可享受20%的折扣。 用户应选择客户购买的包裹(从一组收音机中选择) 按钮)并输入使用的小时数。一个复选框标题为非营利组织 组织也应出现在表格上。应用程序应该计算和 显示到期总金额。如果用户选择了公益组织检查 盒子,应从最终费用中扣除20%的折扣。履行 注意:必须使用符号常量声明所有费率,限制和折扣 (使用Const关键字)。
使用以下数据确定应用程序是否正确计算: 套餐和营业时间每月费用 套餐A,5小时,非营利组织$ 7.96 套餐A,25小时$ 39.95 套餐B,10小时,非营利组织$ 11.96 套餐B,25小时19.95美元 套餐C,18小时,非营利组织15.96美元 套餐C,25小时$ 19.95
我的代码:
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
'Declare input and output variables
Dim intHoursUsed As Integer
Dim decTotalDue As Decimal
'Calculate Price if Package A is selected. No discount applied.
If radPackageA.Checked = True Then
If intHoursUsed < 10 Then
decTotalDue = CDec(9.95)
ElseIf intHoursUsed > 10 Then
decTotalDue = CDec((9.95) + ((intHoursUsed - 20) * 2))
End If
End If
'Calculate Price if Package B is selected. No discount applied.
If radPackageB.Checked = True Then
If intHoursUsed <= 20 Then
decTotalDue = CDec(14.95)
ElseIf intHoursUsed > 20 Then
decTotalDue = CDec((14.95) + ((intHoursUsed - 20) * 1))
End If
End If
'Calculate Price if Package C is selected. No discount applied.
If radPackageC.Checked = True Then
decTotalDue = CDec(19.95)
End If
'Declare named constant for Nonprofit Discount rate (0.8)
Const Nonprofit As Decimal = CDec(0.8)
'Add and calculate discount if checkbox is checked.
If chkNonprofit.Checked = True Then
decTotalDue = CDec(decTotalDue * Nonprofit)
End If
'Display Total Amount Due in label as string in currency format
lblTotalDue.Text = decTotalDue.ToString("c")
'Display Error Message it Hours exceed 744
If CInt(txtHoursUsed.Text) > 744 Then
MessageBox.Show("Please try again. Value must be a numeric inter and must not exceed 744.")
txtHoursUsed.Clear()
lblTotalDue.Clear()
End If
End Sub
当我计算A和B套餐时,无论多少小时,答案只有9.95美元和14.95美元。请帮忙!我很沮丧。我找不到什么问题(我是菜鸟)。
答案 0 :(得分:0)
答案可能会通过格式化来揭示,正如Unihedron上面提到的那样。
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
'Declare input and output variables
Dim intHoursUsed As Integer
Dim decTotalDue As Decimal
'Get the total hours
intHoursUsed = CInt(txtHoursUsed.Text)
'Calculate Price if Package A is selected. No discount applied.
If radPackageA.Checked = True Then
If intHoursUsed <= 10 Then
decTotalDue = CDec(9.95)
ElseIf intHoursUsed > 10 Then
decTotalDue = CDec((9.95) + ((intHoursUsed - 20) * 2))
End If
/* Missing End If here */
'Calculate Price if Package B is selected. No discount applied.
If radPackageB.Checked = True Then
If intHoursUsed <= 20 Then
decTotalDue = CDec(14.95)
ElseIf intHoursUsed > 20 Then
decTotalDue = CDec((14.95) + ((intHoursUsed - 20) * 1))
End If
End If
/*Rest omitted for brevity */
缺少的End If
会使所有内容都通过第一次检查radPackageA.Checked = True
进行过滤。如果不是这样,那么除此之外的任何代码都不会被查看。正确的代码格式化可能会帮助您更快地找到它,阅读代码的人也会非常感激。
答案 1 :(得分:0)
如果您在任何地方都没有为intHoursUsed
变量赋值,那么您从程序中得到的答案就非常有意义:
Dim intHoursUsed As Integer = CInt(txtHoursUsed.Text)
......
在这种情况下,intHoursUsed
值默认为0,然后intHoursUsed < 10
和intHoursUsed <= 20
始终为true。这样,正如你所说,无论多少小时,答案总是9.95美元和14.95美元。