第一次机房收费系统之下机

简介: 第一次机房收费系统之下机

做下机的时候刚开始是一点思路都没有的,只是知道一个大概的框架,但是里面的细节比如说更新哪个表、删除哪个表,什么时候删除等,这些还是不是太明白。但是把想法体现在流程图上就会清晰很多。


96a65af9152412d1fcfd274bfc28df19_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwOTE1NQ==,size_16,color_FFFFFF,t_70.png


在这个窗体中涉及到的表有basicdata(进行单价对比)、lin表、online表、student表。


代码展示


在下机的过程中,首先判断卡号是否为空,是否已经上机


If txtCardNum.Text = "" Then '判断卡号是否为空
        MsgBox "请输入卡号上机", vbOKOnly + vbExclamation, "提示"
        Exit Sub
    End If
    txtSQL = "select * from OnLine_info where cardno='" & txtCardNum.Text & "'"'连接上机表,判断段是否已经上机
    Set OnLine = ExecuteSQL(txtSQL, Msgtext)
    txtSQL = "select * from BasicData_info "
    Set bas = ExecuteSQL(txtSQL, Msgtext)
    txtSQL = "select * from student_info "
    Set stu = ExecuteSQL(txtSQL, Msgtext)
    If OnLine.EOF = True Then '?判断是否上机
        MsgBox "此卡号未上机", vbOKOnly + vbExclamation, "提示"

如果以上条件都满足的话,就开始正常下机了,在这个还要判断消费时间是否2分钟以上,在这里需要注意的是,比较时间的时候一定要直接连接数据库,不要直接写数字,如果数据库的值变了,相应的消费时间也会改变

a = MsgBox("确认要下机?", vbOKOnly + vbExclamation, "提示")
       If a = vbOK Then
            consumtime = DateDiff("n", Trim(OnLine!Date), Now) '计算消费时间
            txttime.Text = Val(consumtime)’消费时间的值赋给消费时间文本框
            If consumtime <= Val(bas!PrepareTime) Then '?判断有没有达到最低上机时间
                consum = 0
                consumptionAmount.Text = Val(consum)
                MsgBox "没有达到上机准备时间,不收取费用", vbOKOnly + vbExclamation, "提示"


更新数据库(online表、line 表)

txtSQL = "select * from Line_Info "
                Set line = ExecuteSQL(txtSQL, Msgtext)
                line.AddNew
                line.Fields(1) = Trim(txtCardNum.Text)
                line.Fields(2) = Trim(stu.Fields(1))
                line.Fields(3) = Trim(stu.Fields(2))
                line.Fields(4) = Trim(stu.Fields(4))
                line.Fields(5) = Trim(stu.Fields(3))
                line.Fields(6) = Trim(OnLine.Fields(6))
                line.Fields(7) = Trim(OnLine.Fields(7))
                line.Fields(8) = Format(Now(), "yyyy-MM-dd")
                line.Fields(9) = Format(Now(), "HH:mm:ss")
                line.Fields(10) = txttime.Text
                line.Fields(11) = consume
                line.Fields(12) = txtCash
                line.Fields(13) = "正常下机"
                line.Fields(14) = Environ("computername")
            line.Update
            txtSQL = "delete from Online_Info where cardno='" & txtCardNum.Text & "'"
            Set OnLine = ExecuteSQL(txtSQL, Msgtext)
            txtSQL = "select * from OnLine_info"
            Set OnLine = ExecuteSQL(txtSQL, Msgtext)
                OnlinePerson.Caption = OnLine.RecordCount  '显示上机人数
                OffDate.Text = Date
                OffTime.Text = Time
                MsgBox "下机完成", vbOKOnly + vbExclamation, "提示"


以上所有代码是上机未达到最低消费时间的,那么达到消费时间后需要判断是固定用户还是临时用户,在这里首先还是判断消费时间

If Val(consumtime) Mod Val(bas!unitTime) = 0 Then'如果消费时间为整小时数
                    t = Val(consumtime) / Val(bas!unitTime) '计算消费时间(单位为小时)
                Else
                    t = Val(consumtime) / Val(bas!unitTime) + 1'如果不满一小时按一小时算
                End If


判断是固定用户还是临时用户

txtSQL = "select * from student_info"
                 Set stu = ExecuteSQL(txtSQL, Msgtext)
                If Trim(stu!Type) = Trim("固定用户") Then
                    consume = t * bas.Fields(0) '计算消费金额
                    consumptionAmount.Text = Val(consume)
                 Else
                    consume = t * bas.Fields(1)
                    consumptionAmount.Text = Val(consume)
                End If
                txtCash = Val(stu!cash) - consume '计算剩余金额
                txtBalance.Text = Val(txtCash)


这些完成之后就更新数据库就好了,只不过这里需要多更新一个学生的表,其他的(line 表、online表跟上面更新的数据一样)

txtSQL = "update student_Info set cash=" & txtCash & " where cardno='" & txtCardNum.Text & "'"
                Set stu1 = ExecuteSQL(txtSQL, Msgtext)
                ‘把余额更新到学生表中


全部代码展示

Private Sub OffLine_Click() '下机
    Dim OnLine As ADODB.Recordset '
    Dim stu As ADODB.Recordset 
    Dim line As ADODB.Recordset 
    Dim bas As ADODB.Recordset
    Dim consum As String 
    Dim consumtime As String 
    Dim txtSQL As String
    Dim Msgtext As String
    Dim txtCash As Integer
    Dim stu1 As ADODB.Recordset
    If txtCardNum.Text = "" Then '判断卡号是否为空
        MsgBox "请输入卡号上机", vbOKOnly + vbExclamation, "提示"
        Exit Sub
    End If
    txtSQL = "select * from OnLine_info where cardno='" & txtCardNum.Text & "'"
    Set OnLine = ExecuteSQL(txtSQL, Msgtext)
    txtSQL = "select * from BasicData_info "
    Set bas = ExecuteSQL(txtSQL, Msgtext)
    txtSQL = "select * from student_info "
    Set stu = ExecuteSQL(txtSQL, Msgtext)
    If OnLine.EOF = True Then '判断是否上机
        MsgBox "此卡号未上机", vbOKOnly + vbExclamation, "提示"
    Else
       a = MsgBox("确认要下机?", vbOKOnly + vbExclamation, "提示")
       If a = vbOK Then
            consumtime = DateDiff("n", Trim(OnLine!Date), Now) '计算消费时间
            txttime.Text = Val(consumtime)
            If consumtime <= Val(bas!PrepareTime) Then '判断有没有达到上机时间
                consum = 0
                consumptionAmount.Text = Val(consum)
                MsgBox "没有达到上机准备时间,不收取费用", vbOKOnly + vbExclamation, "提示"
                '更新数据库
                txtSQL = "select * from Line_Info "
                Set line = ExecuteSQL(txtSQL, Msgtext)
                line.AddNew
                line.Fields(1) = Trim(txtCardNum.Text)
                line.Fields(2) = Trim(stu.Fields(1))
                line.Fields(3) = Trim(stu.Fields(2))
                line.Fields(4) = Trim(stu.Fields(4))
                line.Fields(5) = Trim(stu.Fields(3))
                line.Fields(6) = Trim(OnLine.Fields(6))
                line.Fields(7) = Trim(OnLine.Fields(7))
                line.Fields(8) = Format(Now(), "yyyy-MM-dd")
                line.Fields(9) = Format(Now(), "HH:mm:ss")
                line.Fields(10) = txttime.Text
                line.Fields(11) = consume
                line.Fields(12) = txtCash
                line.Fields(13) = "正常下机"
                line.Fields(14) = Environ("computername")
            line.Update
            txtSQL = "delete from Online_Info where cardno='" & txtCardNum.Text & "'"
            Set OnLine = ExecuteSQL(txtSQL, Msgtext)
            txtSQL = "select * from OnLine_info"
            Set OnLine = ExecuteSQL(txtSQL, Msgtext)
                OnlinePerson.Caption = OnLine.RecordCount  '显示上机人数
                OffDate.Text = Date
                OffTime.Text = Time
                MsgBox "下机完成", vbOKOnly + vbExclamation, "???"
            Else
                If Val(consumtime) Mod Val(bas!unitTime) = 0 Then
                    t = Val(consumtime) / Val(bas!unitTime) '计算消费时间(单位为小时)
                Else
                    t = Val(consumtime) / Val(bas!unitTime) + 1
                End If
                '更新数据库
                 txtSQL = "select * from student_info"
                 Set stu = ExecuteSQL(txtSQL, Msgtext)
                If Trim(stu!Type) = Trim("固定用户") Then
                    consume = t * bas.Fields(0) '计算消费金额
                    consumptionAmount.Text = Val(consume)
                 Else
                    consume = t * bas.Fields(1)
                    consumptionAmount.Text = Val(consume)
                End If
                txtCash = Val(stu!cash) - consume '余额
                txtBalance.Text = Val(txtCash)
                '更新数据库
                txtSQL = "update student_Info set cash=" & txtCash & " where cardno='" & txtCardNum.Text & "'"
                Set stu1 = ExecuteSQL(txtSQL, Msgtext)
                txtSQL = "select * from Line_Info "
                Set line = ExecuteSQL(txtSQL, Msgtext)
                line.AddNew
                line.Fields(1) = Trim(txtCardNum.Text)
                line.Fields(2) = Trim(stu.Fields(1))
                line.Fields(3) = Trim(stu.Fields(2))
                line.Fields(4) = Trim(stu.Fields(4))
                line.Fields(5) = Trim(stu.Fields(3))
                line.Fields(6) = Trim(OnLine.Fields(6))
                line.Fields(7) = Trim(OnLine.Fields(7))
                line.Fields(8) = Format(Now(), "yyyy-MM-dd")
                line.Fields(9) = Format(Now(), "HH:mm:ss")
                line.Fields(10) = txttime.Text
                line.Fields(11) = consume
                line.Fields(12) = txtCash
                line.Fields(13) = "正常下机"
                line.Fields(14) = Environ("computername")
            line.Update
            txtSQL = "delete from Online_Info where cardno='" & txtCardNum.Text & "'"
            Set line = ExecuteSQL(txtSQL, Msgtext)
            txtSQL = "select * from OnLine_info"
            Set OnLine = ExecuteSQL(txtSQL, Msgtext)
             OnlinePerson.Caption = OnLine.RecordCount  '显示上机人数
            OffDate.Text = Date
            OffTime.Text = Time
            MsgBox "下机完成", vbOKOnly + vbExclamation, "提示"
            stu.Close
            OnLine.Close
      End If
      End If
      End If
End Sub

自我觉得代码有些冗余,如果有更好的写法,请大神们指点一二!!


相关文章
|
7月前
|
域名解析 关系型数据库 MySQL
怎样用自己电脑搭建网络服务器!不花一分钱
怎样用自己电脑搭建网络服务器!不花一分钱
215 1
|
编解码 安全 网络协议
实测:游戏情景中,远控软件实力如何?一篇告诉你ToDesk的强大之处
实测:游戏情景中,远控软件实力如何?一篇告诉你ToDesk的强大之处
实测:游戏情景中,远控软件实力如何?一篇告诉你ToDesk的强大之处
|
4月前
|
存储 监控 安全
全国产化十二导联心电图机
十二导联心电图机是医疗设备,通过十二个电极接触患者体表,同步采集心电信号,经滤波处理获得高质量心电图。广泛应用于医院、体检中心及家庭,支持心脏疾病诊断与监测。本机具备高保真ECG采样、强抗干扰能力及24小时连续监测等功能,支持蓝牙或USB实时传输数据,内置算法辅助医生快速判断病情,重要数据可云端存储。符合多项国际安全标准,确保设备稳定可靠。
|
7月前
你给你的Typore配置图床了吗?没有的话,就来看Typora配置图床吧!!!放心不用付费滴!!
你给你的Typore配置图床了吗?没有的话,就来看Typora配置图床吧!!!放心不用付费滴!!
77 2
|
搜索推荐 定位技术 数据安全/隐私保护
实用至上!分享5款冷门的WIN10软件
除了常见的软件,还有很多非常实用的软件,今天我要向大家推荐5款冷门但非常实用的WIN10软件。
148 0
实用至上!分享5款冷门的WIN10软件
|
传感器 监控 机器人
关于现目前扫地机器中高端技术的个人思考
关于现目前扫地机器中高端技术的个人思考
129 0
关于现目前扫地机器中高端技术的个人思考
|
定位技术 SEO
【号外】-网站时光机
有些东西也只能留在时光机中了
1102 0
【号外】-网站时光机
|
Windows
对学生机使用的浅浅反馈
我是来自某学校新媒体小白张同学,我是大二的学生。老师推荐了使用阿里云学生机,并且教我们在阿里云的esc云服务器搭建了windows系统。首先阿里云推出的飞天加速计划以一个十分优惠的价格帮助我们高校学子以低价格获得了宝贵的使用云服务器的机会,为我们的新媒体学习搭建了宝贵的平台。
187 0
|
传感器 监控 算法
不用羡慕BAT,自己手工也能搭建伪基站监控系统
本文讲的是不用羡慕BAT,自己手工也能搭建伪基站监控系统,编者按:伪基站是个很烦人的东西。基于海量移动终端用户,近两年BAT3在国内搭建了强大的伪基站监控系统,在打击犯罪上贡献不少。这篇文章中,作者将介绍一套可手工搭建的伪基站监控系统,跟着来做你也能做成。
2534 0