机房收费系统---下机

下机功能是整个机房收费系统中非常重要的一个环节,这个环节关乎到使用我们软件的商家会不会赔钱,所以,我们在做这个窗体的时候一定要把各个细节的问题都要考虑到。

 

首先“下机”的主要功能是:

1:使正在上机的用户停止上机

2:计算用户上机所花费的时间和金额

3:然后将卡中的余额减去花费的金钱是当前用户所剩余的钱数

4:将这个信息全部链接到数据库的表中,有的需要添加,有的需要更新,有的需要删除。

我在这个窗体中一共用到了5个数据库表,他们的名字和功能如下

(可能有些疏忽的地方多多指点):

数据库表

实现的功能

1: student_info

----用来判断输入的用户是否正确,判断用户是固定用户还是临时用户

 ---更新用户剩余的金额

 

2:onLine_info

 

---首先需要判断用户是否处于上机

---下机的时候需要将该用户用该表中删除

3:  basicdata_info

 

---根据该表中的数据进行结算金额

4: Line_info

 

---记录用户上机记录

5: checkday_info

 

 

---根据用户花费的金额,在日账单中显示出来

下面是我的流程图:

Private Sub downComputer_Click()
      Dim mrc As ADODB.Recordset '用来存放online表中的数据
      
      Dim mrc1 As ADODB.Recordset '用来存放basicdata 表中的数据
      Dim mrc2 As ADODB.Recordset ' 用来存放 student 表中的数据
    
      Dim mrb As ADODB.Recordset '用来存放line表中的数据
      Dim mrcc As ADODB.Recordset '用来连接日账单
      Dim txtsqlc As String
      Dim msgtextc As String
      
      Dim cc As Integer
      '定义一个时间变量
      Dim nowtti
      nowtti = Date
      Dim txtsqb As String
      Dim msgtxb As String
      
      Dim msgtxt As String
      Dim txtsql As String
      Dim txtsqla As String
      
       Dim costday As String
       
       Dim costtime As String
       Dim alltime As Integer
       Dim cashmoney As Integer
       Dim rate As String
       Dim tmprate As String
       
       Dim unittime As String
       
       Dim preparetime As String
       Dim useMoney As Integer
       
      '判断输入输入卡号
      If Trim(cardNumber.Text = "") Then
            MsgBox "请输入卡号", vbOKOnly + vbExclamation, "警告"
      Else
      '判断输入的卡号是否在注册表中
            txtsql = "select * from student_info where cardno='" & cardNumber.Text & "'"
            Set mrc2 = ExecuteSQL(txtsql, msgtxt)
            
            If mrc2.EOF Then
                  MsgBox "您输入的卡号还未注册,请先注册! ", vbOKOnly + vbExclamation
                  cardNumber.SetFocus
            Else
                  '判断该用户是否正在上机,如果正处于上机状态,那么可以执行“下机操作”,否则不可以
                  txtsql = "select * from online_info where cardno='" & cardNumber & "'"
                  Set mrc = ExecuteSQL(txtsql, msgtxt)
                  If mrc.EOF Then
                        MsgBox "该用户没有上机,请重新选择", vbOKOnly + vbExclamation
                  Else
                              
                              MsgBox cashmoney
                              downTi(6).Caption = Time
                              downDay(5).Caption = Date
                              costday = DateDiff("n", mrc.Fields(6), Date) '花费的时间
                              costtime = DateDiff("n", mrc.Fields(7), Time) '花费的时间
                              alltime = Val(costday) + Val(costtime)
                              useTime(7).Caption = Str(alltime)
                              
                              cashmoney = mrc2.Fields(7) '从student表中调用它剩余的金额
                              MsgBox cashmoney '提示框弹出卡中剩余的金额
                              mrc.Delete
                               '判断花费的金钱,这个时候需要调用basicdatab表中的信息
                              txtsql = "select * from basicdata_info"
                              Set mrc1 = ExecuteSQL(txtsql, msgtxt)
                              rate = mrc1.Fields(0) '普通用户的收费标准
                              tmprate = mrc1.Fields(1) '会员的收费标准
                              unittime = mrc1.Fields(2) '每60分钟收费一次
                              preparetime = mrc1.Fields(4) '上机准备时间
                              
                              txtsqb = "select * from line_info where cardno='" & Trim(cardNumber.Text) & "'"
                              Set mrb = ExecuteSQL(txtsqb, msgtxb)
                              If mrb.EOF Then
                                          MsgBox "该用户还没有上机"
                              Else
                                          '下机日期
                                         
                                          mrb.Fields(8) = downDay(5).Caption
                                          mrb.Fields(9) = downTi(6).Caption
                                          mrb.Fields(10) = Str(alltime)
                                          
                                          
                                          
                                          mrb.Fields(13) = "正常下机"
                                          mrb.Update
                              End If
                              '判断时间是否多余准备上机时间,如果低于准备时间,具体看情况
                              '收费,低于准备时间 固定用户半价收费,临时用户全额收费
                              If alltime < preparetime Then
                                    useMoney = 0
                                    useM(8).Caption = Str(useMoney)
                                    
                              
                                    
                              
                              
                              Else
                                     If mrc2.Fields(14) = "固定用户" Then
                                          ' 如果用户上机时间小于标准时间60分钟
                                          If alltime < unittime Then
                                                useMoney = Val(tmprate / 2)
                                                useM(8).Caption = Str(useMoney)
                                                mrb.Fields(11) = useM(8).Caption
                                                mrb.Fields(10) = Trim(alltime)
                                                lastMoney(9).Caption = Trim(cashmoney - useMoney)
                                                mrb.Fields(12) = lastMoney(9).Caption
                                                mrb.Update
                                          Else
                                                useMoney = (alltime Mod Val(unittime)) * Val(tmprate)
                                                
                                                useM(8).Caption = Str(useMoney)
                                                mrb.Fields(11) = useM(8).Caption
                                                mrb.Fields(10) = Trim(alltime)
                                                
                                                lastMoney(9).Caption = Trim(Val(cashmoney) - Val(useMoney))
                                                mrb.Fields(12) = lastMoney(9).Caption
                                                mrb.Update
                                          End If
                                          
                                          
                                        
                                          
                              
                                    Else
                                          '如果零时用户小于标准时间60分钟
                                          If alltime < unittime Then
                                                useMoney = Val(rate)
                                                useM(8).Caption = Str(useMoney)
                                                mrb.Fields(11) = useM(8).Caption
                                                mrb.Fields(10) = Trim(alltime)
                                                lastMoney(9).Caption = Str(cashmoney - useMoney)
                                                mrb.Fields(12) = Trim(lastMoney(9).Caption)
                                                mrb.Update
                                          Else
                                                useMoney = (alltime Mod Val(unittime)) * Val(rate)
                                                useM(8).Caption = Str(useMoney)
                                                mrb.Fields(11) = useM(8).Caption
                                                lastMoney(9).Caption = Str(cashmoney - useMoney)
                                                mrb.Fields(12) = Trim(lastMoney(9).Caption)
                                                mrb.Update
                                          End If
                                          
                              
                                    End If
                  '用来更新student 表中学生的余额。
                  mrc2.Fields(7) = Trim(lastMoney(9).Caption)
                  mrc2.Update
                  
                  
                 txtsqlc = "select * from checkday_info where date='" & Trim(nowtti) & "'"
                 
                Set mrcc = ExecuteSQL(txtsqlc, msgtextc)
                If mrcc.EOF Then
                  mrcc.AddNew
                  mrcc.Fields(2) = Trim(useMoney)
                  mrcc.Update
                  Else
                  cc = mrcc.Fields(2)
                  mrcc.Fields(2) = Str(cc + useMoney)
                  mrcc.Update
                     End If
                End If
            End If
      End If
End If
      
End Sub

  

猜你喜欢

转载自blog.csdn.net/qq_30631063/article/details/82840179