请教各位一个问题:台球馆有很多张球台,每个球台都分有N个时段(可任意分时段).客人在球馆任意一张台打球,消费时间跨过X个时段.请问怎样算出这个客人的消费金额?球台消费时段表:
台号-时段-开始时间-结束时间-单价
1-----1-------0:00 -------3:00----10.00
1-----2-------3:00--------8:00----8.00
1-----n-------y:00--------y1:00---X.00
1-----n+1----y2:00-------24:00---X1.00 请各位大哥救命!急!!用程序语言表达(VB)

解决方案 »

  1.   

    客人跨N个时段,跨N天时怎样计算客人的消费金额.!例在1号台打球,1:00打起,打到12:00,那就得:
    第1个时段消费金额(3:00-starttime)*60*10.00+第2个时段消费金额(8:00-3:00)*60*8.00+第3个时段消费金额(y1:00-y:00)*60*x.00+结束时段的消费金额(endtime-最后一个时段的开始时间)*60*最后一个时段的单价=客人总消费金额.
      

  2.   

    我就是不会用程序去表达啊,一个表里面已经保存了时段收费标准,就是在买单时怎样算出这个客人的消费金额.
    球台消费时段表:
    台号-时段-开始时间-结束时间-单价
    1-----1-------0:00 -------3:00----10.00
    1-----2-------3:00--------8:00----8.00
    1-----n-------y:00--------y1:00---X.00
    1-----n+1----y2:00-------24:00---X1.00 
      

  3.   

    哇!帮你写了两个小时间Private Type FeeLaw               '资费标准数据结构
        BeginTime As Integer          '开始时间
        EndTime As Integer            '结束时间
        FeePerMinute As Integer       '每分钟的价钱
    End Type
    Dim BeginTime As Date             '计录开始时间
    Dim EndTime As Date               '记录结束时间
    Dim fee(1 To 4) As FeeLaw         '资费标准数据
    Private Sub Command1_Click()
        BeginTime = Now
        EndTime = DateAdd("h", 35, Now)
        Dim ihourPart As Integer
        Dim idays As Integer
        Dim i As Integer
        Dim j As Integer
        Dim lMinutes As Long                                       '总时间
        Dim lPartMinutes As Long                                   '每一阶段的时间
        Dim lfee As Long                                           '总费用
        ihourPart = DatePart("h", BeginTime)
        lMinutes = Abs(DateDiff("n", EndTime, BeginTime))
        For i = 1 To 4                                             '得到开始时间所在的位置
            If ihourPart >= fee(i).BeginTime And ihourPart <= fee(i).EndTime Then
                Exit For
            End If
        Next
        '这里先计算第一次的时间
        lPartMinutes = (fee(i).EndTime - DatePart("h", BeginTime)) * 60 _
                            - DatePart("n", BeginTime)                   '从开始时间到开始所在区间末的时间
        If lPartMinutes >= lMinutes Then                                 '时间被第一个区间所包括
            lfee = lMinutes * fee(i).FeePerMinute
            lMinutes = 0
        Else
            lfee = lPartMinutes * fee(i).FeePerMinute
            lMinutes = lMinutes - lPartMinutes
        End If
        i = (i Mod 4) + 1
        Do While lMinutes > 0                                         '当时间计算完了
            lPartMinutes = (fee(i).EndTime - fee(i).BeginTime) * 60   '计算该阶段的标准时间
            If lPartMinutes >= lMinutes Then                          '如果所有时间在该阶段内
                lfee = lfee + lMinutes * fee(i).FeePerMinute          '用该阶段的资费标准来计算
                lMinutes = 0                                          '时间计算完毕
            Else                                                      '如果不全在该时间段
                lfee = lPartMinutes * fee(i).FeePerMinute             '将时间段内的标准时间乘以资费标准
                lMinutes = lMinutes - lPartMinutes                    '将已计算的时间减掉
            End If
            i = (i Mod 4) + 1
        Loop
        MsgBox "总费用为:" & lfee, vbInformation, "收费信息"
    End SubPrivate Sub Form_Load()'如果是保存在数据库中的也可以从数据库中读出来
        fee(1).BeginTime = 0
        fee(1).EndTime = 6
        fee(1).FeePerMinute = 10
        With fee(2)
            .BeginTime = 6
            .EndTime = 12
            .FeePerMinute = 15
        End With
        With fee(3)
            .BeginTime = 12
            .EndTime = 18
            .FeePerMinute = 20
        End With
        With fee(4)
            .BeginTime = 18
            .EndTime = 24
            .FeePerMinute = 10
        End With
    End Sub
      

  4.   

    举手发言,有地方没懂.
    dim tim1,tim2 as date
    command1_click()
    tim1=now
    command2_click()
    tim2=now
    command3_click()
    print tim2-tim1结果是以什么为单位计算的?
     
      

  5.   

    wwqna(york) 我怎么给分你啊?大哥,我是新手!