机房收费系统之上下机及结账

在做机房收费系统的时候我遇到的最大的困难就是结账这一部分了。下面来看看我做完之后的收获吧:

 

首先是主界面:

这里大家可以看到最基础的结账界面,仅仅是上下机来对消费进行结账,首先我们来看看我上机的时候遇到的问题:

上机的时候,我遇到的首要的问题是:点击上机按钮后数据库引起的相应的变化,就是在相应的表中填充上相应的信息,,也就是说,在我的数据库的上机的表中添加该学生上机,在这里添加信息的时候我有的字段没有添加信息,所以导致总是无法实现,出现以下错误

解决方法是:在VB中刷新数据库的数据操作中,只要把相应的字段填完整即可。

 

下面我们来看看下机的问题,在这里就涉及到了三方面的操作:

 

1.对数据库的调用

 

2.运算问题(下机结账问题)

 

3.对数据数据的更新与保存。在这里我的计算时间错了很多次,现在看看我的代码:

    Text8.Text = Date

    Text11.Text = Time

    Timeendvar = Format(Time, "hh:mm:ss")

    Timebeginvar = Format(Text10.Text, "hh:mm:ss")

   

    a = Val(DateDiff("n", Timebeginvar, Timeendvar))        '求出所用的时间

在这里我首先是把学生上机的时间计算出来,计算时间的时候我用的函数是 DateDiff,在这里要注意计算的时间是按照什么来度量的,是分钟还是秒,所以,这里关于函数后面的单位要弄清楚,不然算出来很容易就是错误的。下面我们来计算消费金额,这里的消费金额是按照我们之前设定的数据来计算的,但是这里有一个问题,消费的时间不一定是完整的时间段,所以,这里我们就需要来确定时间段的个数:

 UnitNumber = a Mod UnitTime

    If UnitNumber = 0 Then

        UnitNumber = Int(a / Val(UnitTime))                         '求时间段的个数

    Else

        UnitNumber = Int(a / Val(UnitTime)) + 1

    End If

 

通过MOD函数来确定除完之后是否有余数,有余数就是个数加1,如果余数为0 ,那么个数不变。

 

算完时间段数,我们接下来算消费金额:单位时间价格*时间段数

此外这里还要考虑一般用户和固定用户的差异,固定用户就相当于会员,,所以消费金额要分开算,算完之后还要完成数据库的更新

  If Text4.Text = "一般用户" Then                            '当为一般用户,算法
 
        Usemoney = Val(b) * UnitNumber
 
        Remained = d - Usemoney
 
        Text12.Text = a
 
        Text13.Text = Format(Usemoney)
 
        Text9.Text = Format(Remained)
 
       

        txtSQL = "select * from Line_Info"
 
        Set mrc2 = ExecuteSQL(txtSQL, MsgText)
 
   

        mrc2.AddNew
 
        mrc2.Fields(1) = Trim(txtCardno.Text)
 
        mrc2.Fields(2) = Trim(Text2.Text)
 
        mrc2.Fields(3) = Trim(Text5.Text)
 
        mrc2.Fields(4) = Trim(Text3.Text)
 
        mrc2.Fields(5) = Trim(Text6.Text)
 
        mrc2.Fields(6) = Trim(Text7.Text)
 
        mrc2.Fields(7) = Trim(Text10.Text)
 
        mrc2.Fields(8) = Trim(Text8.Text)
 
        mrc2.Fields(9) = Trim(Text11.Text)
 
        mrc2.Fields(10) = Trim(Text12.Text)
 
        mrc2.Fields(11) = Trim(Text13.Text)
 
        mrc2.Fields(12) = Trim(Text9.Text)
 
        mrc2.Fields(13) = "正常下机"
 
        mrc2.Fields(14) = Trim(Text1.Text)
 
   

        mrc2.Update
 
       

    Else                                                    '当为固定用户是算法
 
        Usemoney = Val(c) * UnitNumber
 
        Remained = d - Usemoney
 
       

        Text12.Text = a
 
        Text13.Text = Format(Usemoney)
 
        Text9.Text = Format(Remained)
 
       

        txtSQL = "select * from Line_Info"
 
        Set mrc2 = ExecuteSQL(txtSQL, MsgText)
 
   

        mrc2.AddNew
 
        mrc2.Fields(1) = Trim(txtCardno.Text)
 
        mrc2.Fields(2) = Trim(Text2.Text)
 
        mrc2.Fields(3) = Trim(Text5.Text)
 
        mrc2.Fields(4) = Trim(Text3.Text)
 
        mrc2.Fields(5) = Trim(Text6.Text)
 
        mrc2.Fields(6) = Trim(Text7.Text)
 
        mrc2.Fields(7) = Trim(Text10.Text)
 
        mrc2.Fields(8) = Trim(Text8.Text)
 
        mrc2.Fields(9) = Trim(Text11.Text)
 
        mrc2.Fields(10) = Trim(Text12.Text)
 
        mrc2.Fields(11) = Trim(Text13.Text)
 
        mrc2.Fields(12) = Trim(Text9.Text)
 
        mrc2.Fields(13) = "正常下机"
 
        mrc2.Fields(14) = Trim(Text1.Text)
 
   

        mrc2.Update

  

此外下机结账算完了,还有显示该学生已经下机,那么,在上机的数据库表中就不能再有该学生的记录,所以要删除相应的记录:

txtSQL = "select * from online_info where cardno='" & Trim(txtCardno.Text) & "'"

        Set mrc1 = ExecuteSQL(txtSQL, MsgText)

        If mrc1.EOF Then

            MsgBox "已经下机"

        Else

            mrc1.Fields(0) = ""

            mrc1.Fields(1) = ""

            mrc1.Fields(2) = ""

            mrc1.Fields(3) = ""

            mrc1.Fields(4) = ""

            mrc1.Fields(5) = ""

            mrc1.Fields(6) = ""

            mrc1.Fields(7) = ""

            mrc1.Fields(8) = ""

            mrc1.Update

           

        End If

           

这样上下机的程序就完成了。

 

评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值