机房收费系统(四)——上机

概述

当我们敲完了登录界面后,需要解决的一个问题就是上机和下机,相比较而言上机简单很多,所用的知识几乎都是之前所学到的,判断语句以及调用数据库,稍微复杂点的就是判断余额问题。下面我就来解决这个问题。

思路

一、上机界面:(思路的来源及代码的编写都是依据与此
这里写图片描述
二、流程图:(代码编写的思路来源)
这里写图片描述
三、思考
首先要想实现功能,必须先判断卡号是否为空,只有判断完它才能进行下一步的工作;判断本身不难,但是我们在判断的时候会调用到数据库的哪张表,这个很关键。当然后续的卡号是否为数字以及是否以及注册,这些都可以称为广泛的判断要解决的问题。
其次判断此卡是否已经上机,主要目的在于不要重复;当然对应的数据库表也会发生变化,这两个问题注意了几乎问题都恩呢该考虑到。
再次是判断余额这个是本窗体的重点和难点,这个和下机的确实没法比,但是这个是基础和前提,对应的表也是不一样。
最后当然就是更新界面了,这个相对而言简单很多。
这些都是我们在敲上机之前必须意识到的,也必须考虑到,是进行后续工作的基础,代码本身不是很难,但是思路非常的关键。

重点代码

Private Sub cmdUP_Click()         '上机
                                                   '定义数据集对象
    Dim mrcStudent As ADODB.Recordset
    Dim mrcCancelCard As ADODB.Recordset
    Dim mrcOnLine As ADODB.Recordset
    Dim mrcLine As ADODB.Recordset
    Dim mrcBasicData As ADODB.Recordset
                                                   '定义字符串语句
    Dim OnLineSQL As String, studentSQL As String, BasicDataSQL As String, LineSQL As String
                                                   '定义字符串变量,返回查询信息
    Dim OnMsgText As String, StuMsgText As String, BMsgtext As String, LMsgtext As String

    If Trim(txtNo.Text) = "" Then  '判断是否输入了卡号
        MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示"
        txtNo.SetFocus
        Exit Sub

    Else
                                                   '判断输入的是否为数字
    If Not IsNumeric(txtNo.Text) Then
        MsgBox "卡号请输入数字!", vbOKOnly + vbExclamation, "提示"
            txtNo.Text = ""
            txtNo.SetFocus
            Exit Sub

    Else
                                                    '查student表中的sql语句
    studentSQL = "select*from student_info where cardno='" & Trim(txtNo.Text) & "'"
                                                    '执行已经查到的sql语句
    Set mrcStudent = ExecuteSQL(studentSQL, StuMsgText)

    If mrcStudent.EOF Then         '判断是否注册
        MsgBox "此卡尚未注册!", vbOKOnly + vbExclamation, "提示"
        txtNo.SetFocus
        txtNo.Text = ""
        mrcStudent.Close
        Exit Sub

    Else
                                                   '判断是否退卡
    If mrcStudent.EOF = False And mrcStudent.Fields(10) = "未使用" Then
        MsgBox "该卡号已经退卡,不能上机!", vbOKOnly + vbExclamation, "提示"
        txtNo.Text = ""
        txtNo.SetFocus
        mrcStudent.Close

    Else

    BasicDataSQL = "select * from basicdata_info"
    Set mrcBasicData = ExecuteSQL(BasicDataSQL, BMsgtext)
                                                   '判断余额大小
    If mrcStudent.Fields(7) < mrcBasicData.Fields(5) Then
        MsgBox "余额不足,请充值!", 0 + 48, "提示"
        frmRecharge.Show
        SetParent frmRecharge.hWnd, frmMain.hWnd
        Exit Sub
        Else

                                                   '查询上机与否
    OnLineSQL = "select*from online_info where cardno='" & Trim(txtNo.Text) & "'"
    Set mrcOnLine = ExecuteSQL(OnLineSQL, OnMsgText)
                                                   '判断是否上机
    If Not mrcOnLine.EOF Then
        MsgBox "此卡正在上机!", 0 + 48, "提示"
        Exit Sub
    Else

                                                   '更新上机界面
    txtStudentNo.Text = mrcStudent.Fields(1)
    txtDepartment.Text = mrcStudent.Fields(4)
    txtSex.Text = mrcStudent.Fields(3)
    txtOnData.Text = Data
    txtOnTime.Text = Time
    txtType.Text = mrcStudent.Fields(14)
    txtName.Text = mrcStudent.Fields(2)
    txtCash.Text = mrcStudent.Fields(7)
                                                   '查询Online表
    OnLineSQL = "select*from online_info where cardno='" & Trim(txtcard.Text) & "'"
    Set mrcOnLine = ExecuteSQL(OnLineSQL, OnMsgText)

                                                   '更新Online表
    mrcOnLine.AddNew
    mrcOnLine.Fields(0) = Trim(txtNo.Text)
    mrcOnLine.Fields(1) = Trim(txtType.Text)
    mrcOnLine.Fields(2) = Trim(txtStudentNo.Text)
    mrcOnLine.Fields(3) = Trim(txtName.Text)
    mrcOnLine.Fields(4) = Trim(txtDepartment.Text)
    mrcOnLine.Fields(5) = Trim(txtSex.Text)
    mrcOnLine.Fields(6) = Trim(txtOnData.Text)
    mrcOnLine.Fields(7) = Trim(txtOnTime.Text)
                                                   '获取电脑名
    mrcOnLine.Fields(8) = Trim(VBA.Environ("computername"))
    mrcOnLine.Fields(9) = Date

    mrcOnLine.Update
    mrcOnLine.Close

                                                   '查询上机人数
    OnLineSQL = "select*from online_info"
    Set mrcOnLine = ExecuteSQL(OnLineSQL, OnMsgText)

                                                   '显示当前人数
    If mrcOnLine.EOF = True Then
        Label22.Caption = 0
    Else
        Label22.Caption = mrcOnLine.RecordCount
    End If
        Label23.Caption = "欢迎光临!"
    End If
    End If
    End If
    End If
    End If
    End If
    End Sub

总结

在敲上机前和敲的过程中,我感觉还是有点难的,特别是在敲之前无法下手,因为我不太清楚要实现功能的流程,而且之前也没有遇到过;但是当我想清楚后通过一遍又一遍的改进自己的流程图的时候,思路渐渐的就清晰了。所有通过这样的一个过程我发现思路才是软件的核心。其次是我们需要多实践,这样建立了自己的计算机思维后很多的问题也就不在那么难了。

猜你喜欢

转载自blog.csdn.net/whc888666/article/details/80513691