机房收费系统之上下机

前言:

原文经过更改,将上下机记录分别更新到line表改为,上下机一起更新到line表)


好几天的上下机战争已经结束了。感觉非常轻松并有小小滴成就感。对自己的要求不高,具体的知识大概知道就行了。初步要求就是窗体能够运行。每个人都有每个人的目标嘛。不需要看到别人学的有多好或者自己理解的东西不够多,只要有收获,不抵触,就很好了。


上机流程图展示:



代码展示:

txtSQL = "select * from student_info where cardno = '" & txtcardno.Text & "'"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
            
    
    txtSQL1 = "select * from basicdata_info"
    Set mrc1 = ExecuteSQL(txtSQL1, MsgText)
    
    txtSQL2 = "select * from line_info"
    Set mrc2 = ExecuteSQL(txtSQL2, MsgText)
    
   
    txtSQL3 = "select * from online_info"
    Set mrc3 = ExecuteSQL(txtSQL3, MsgText)
        lblnumber.Caption = mrc3.RecordCount
            mrc3.Close
    '判空
    
     If Trim(txtcardno.Text = "") Then
        MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "警告"
        txtcardno.SetFocus
     Else
    
        If Not IsNumeric(txtcardno.Text) Then
        
            MsgBox "请输入数字!", vbOKOnly + vbExclamation, "警告"
            Exit Sub
            txtcardno.SetFocus
        Else
    
         '判断卡号是否存在
         
           If mrc.EOF Then
                MsgBox "卡号不存在或已注销,请重新输入卡号!", vbOKOnly + vbExclamation, "警告"
                txtcardno.SetFocus
                txtcardno.Text = ""
                txtstudentno.Text = ""
                txtstudentname.Text = ""
                txtsex.Text = ""
                txtdepartment.Text = ""
                txttype.Text = ""
                txtcash.Text = ""
                txtondate.Text = ""
                txtontime.Text = ""
                
            Else
             
               '查询余额是否适合上机,余额小于基本数据,则强制下机,可以去充值。余额若大于基本数据,则可以上机。这里要判断用户类型
                txtSQL = "select * from student_info where cardno = '" & txtcardno.Text & "'"
                Set mrc = ExecuteSQL(txtSQL, MsgText)
            
    
                txtSQL1 = "select * from basicdata_info"
                Set mrc1 = ExecuteSQL(txtSQL1, MsgText)
                   If Trim(mrc.Fields(7)) < Trim(mrc1.Fields(5)) Then
                        MsgBox "余额不多了,请充值后再上机!", vbOKOnly + vbExclamation, "温馨提示"
              '充值窗口弹出
                      

                    Else
              
              txtSQL3 = "select * from online_info where cardno = '" & txtcardno.Text & "'"
              Set mrc3 = ExecuteSQL(txtSQL3, MsgText)
              
              If mrc3.EOF = False Then
                MsgBox "此卡正在上机!"
              
                
              
         '显示数据
            
                txtstudentno.Text = mrc3.Fields(2)
                txtstudentname.Text = mrc3.Fields(3)
                txtsex.Text = mrc3.Fields(5)
                txtdepartment.Text = mrc3.Fields(4)
                txttype.Text = mrc3.Fields(1)
                txtcash.Text = mrc.Fields(7)
                txtondate.Text = mrc3.Fields(6)
                txtontime.Text = mrc3.Fields(7)
                
            Else
                
                txtstudentno.Text = mrc.Fields(1)
                txtstudentname.Text = mrc.Fields(2)
                txtsex.Text = mrc.Fields(3)
                txtdepartment.Text = mrc.Fields(4)
                txttype.Text = mrc.Fields(14)
                txtcash.Text = mrc.Fields(7)
                txtondate.Text = Date
                txtontime.Text = Time
                
                '将记录添加到online表
                
                mrc3.AddNew
                    mrc3.Fields(0) = Trim(txtcardno.Text)
                    mrc3.Fields(1) = Trim(txttype.Text)
                    mrc3.Fields(2) = Trim(txtstudentno.Text)
                    mrc3.Fields(3) = Trim(txtstudentname.Text)
                    mrc3.Fields(5) = Trim(txtsex.Text)
                    mrc3.Fields(4) = Trim(txtdepartment.Text)
                    mrc3.Fields(6) = Trim(txtondate.Text)
                    mrc3.Fields(7) = Trim(txtontime.Text)
                    mrc3.Fields(8) = ""
                    mrc3.Fields(9) = Now
                    
                    mrc3.Update
                    mrc3.Close



下机流程图展示:



代码展示:



txtSQL = "select * from student_info"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
            
    
    txtSQL1 = "select * from basicdata_info"
    Set mrc1 = ExecuteSQL(txtSQL1, MsgText)
    
    txtSQL2 = "select * from line_info"
    Set mrc2 = ExecuteSQL(txtSQL2, MsgText)
    
   
    txtSQL3 = "select * from online_info"
    Set mrc3 = ExecuteSQL(txtSQL3, MsgText)
    
    '判空
    
     If Trim(txtcardno.Text = "") Then
        MsgBox "请输入下机卡号!", vbOKOnly + vbExclamation, "警告"
        txtcardno.SetFocus
     Else
    
        If Not IsNumeric(txtcardno.Text) Then
        
            MsgBox "请输入数字!", vbOKOnly + vbExclamation, "警告"
            Exit Sub
            txtcardno.SetFocus
        Else
    
         '判断卡号是否存在
         
        txtSQL = "select * from student_info where cardno = '" & txtcardno.Text & "'"
        Set mrc = ExecuteSQL(txtSQL, MsgText)
            If mrc.EOF = True Then
                MsgBox "该号未注册或已退卡,请输入有效卡号!", vbOKOnly + vbExclamation, "警告"
                txtcardno.SetFocus
                txtcardno.Text = ""
            Else
            
            '判断有没有上机
            
                txtSQL = "select * from online_info where cardno = '" & txtcardno.Text & "'"
                Set mrc3 = ExecuteSQL(txtSQL, MsgText)
                    If mrc3.EOF = True Then
                        MsgBox "该号没有上机!", 48, "提示"
                        txtcardno.Text = ""
                        Exit Sub
                    Else
            
                        txtstudentno.Text = mrc3.Fields(2)
                        txtstudentname.Text = mrc3.Fields(3)
                        txtsex.Text = mrc3.Fields(5)
                        txtdepartment.Text = mrc3.Fields(4)
                        txttype.Text = mrc3.Fields(1)
                        txtondate.Text = mrc3.Fields(6)
                        txtontime.Text = mrc3.Fields(7)
                        txtoffdate.Text = Date
                        txtofftime.Text = Time
                        
                        time1 = Trim(DateDiff("n", txtontime.Text, Time))
                        time2 = Trim(DateDiff("n", txtondate.Text, Date))
                
                '获取基本数据
            
                txtSQL1 = "select * from basicdata_info"
                Set mrc1 = ExecuteSQL(txtSQL1, MsgText)
                                                                                '上机时间小于准备时间

                    If Val(time1) + Val(time2) < mrc1.Fields(4) Then
                        time3 = 0 & ""
                    Else                                                        '否则是上机时间减去准备时间
                        time3 = Val(time1) + Val(time2) - Val(mrc1.Fields(4))
                        
                End If
                    '更新消费时间

                    txtconsumetime.Text = Val(time3)

                '用户消费金额(每小时的钱 ÷ 60分钟 * 消费分钟数

                If mrc3.Fields(1) = "固定用户" Then
                    txtconsume.Text = Int(mrc1.Fields(0) / 60 * Val(txtconsumetime.Text))
                Else
                    txtconsume.Text = Int(mrc1.Fields(1) / 60 * Val(txtconsumetime.Text))
                    mrc1.Close
                End If

            '得到余额

            txtSQL = "select * from student_info where cardno = '" & txtcardno.Text & "'and status='" & "使用" & "'"
            Set mrc = ExecuteSQL(txtSQL, MsgText)
                txtcash.Text = Val(Trim(mrc.Fields(7)) - Val(txtconsume.Text))
                mrc.Fields(7) = Val(txtcash.Text)
                mrc.Update
                mrc.Close
                
                
              '添加下机记录line
                    txtSQL = "select * from Line_Info "
                    'where cardno= '" & Trim(txtcardno.Text) & "'and ondate='" & Trim(txtondate.Text) & "'and ontime='" & Trim(txtontime.Text) & "'"                          '增加上机记录
                    Set mrc2 = ExecuteSQL(txtSQL, MsgText)
                    
                    mrc2.AddNew
                
                    mrc2.Fields(1) = Trim(txtcardno.Text)
                    mrc2.Fields(2) = Trim(txtstudentno.Text)
                    mrc2.Fields(3) = Trim(txtstudentname.Text)
                    mrc2.Fields(5) = Trim(txtsex.Text)
                    mrc2.Fields(4) = Trim(txtdepartment.Text)
                    mrc2.Fields(6) = Trim(txtondate.Text)
                    mrc2.Fields(7) = Trim(txtontime.Text)
                    mrc2.Fields(8) = Trim(txtoffdate)
                    mrc2.Fields(9) = Trim(txtofftime)
                    mrc2.Fields(10) = Trim(txtconsumetime)
                    mrc2.Fields(11) = Trim(txtconsume)
                    mrc2.Fields(12) = Trim(txtcash)
                    mrc2.Fields(13) = "正常下机"
                    mrc2.Fields(14) = ""
                    mrc2.Update
                    mrc2.Close
                    mrc3.Delete
                    mrc3.Close
                    MsgBox "下机成功!", vbOKOnly, "厉害了"
                        
                        txtcardno.Text = ""
                        txtstudentno.Text = ""
                        txtstudentname.Text = ""
                        txtsex.Text = ""
                        txtdepartment.Text = ""
                        txttype.Text = ""
                        txtcash.Text = ""
                        txtondate.Text = ""
                        txtontime.Text = ""
                        txtoffdate.Text = ""
                        txtofftime.Text = ""
                        txtconsumetime.Text = ""
                        txtconsume.Text = ""
                        
                    End If
                    
                    txtSQL = "select * from online_info"
                    Set mrc3 = ExecuteSQL(txtSQL, MsgText)
                    lblnumber.Caption = mrc3.RecordCount
                    mrc3.Close




当然了过程不是一帆风顺的,但是也从中学到了知识

上下机对照流程图展示:




总结:

不要把困难想的那么难。就算自己解决不了又怎么样,咱上面有人~~~

当然了过程不是一帆风顺的,但是也从中学到了知识
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值