机房收费系统--上机

其实相比起下机,上机的功能相对简单的多。

我总结了一句话大概可以概括了上机的功能:

账户里钱够目前没有上机已经注册过的用户上机。

这里有四个关键点:

关键点

数据表

含义

账户里的钱够

Student_info

当用户余额高于最少钱数

目前没有上机

OnLine_info

OnLine 表中不存在的用户可上机

已经注册过

Student_info

用户的信息存在于student表中

正在上机的人数

 OnLine_info

 

 用到的数据库表:

数据表

功能

Student_info

--用来判断用户是否注册

--判断用户的金额是否充足

 

OnLine_info

--判断用户是否正在上机

--若不在上机,则需要把信息存放在该表中

--显示正在上机的人数

Line_info

--上机成功后,需要将信息存放在该表中

 

 

下面是我的流程图:

 

下面是部分实现代码:

这不是整体的代码,只是截取了其中用来实现逻辑功能的代码)

一:显示正在上机的人数:

​
 '显示目前正在上机的人数
      txtsqlw = "select * from online_info "
      Set mrw = ExecuteSQL(txtsqlw, msgtextw)
            If mrw.EOF Then
                  allPeople(10).Caption = 0
            Else
                  Do While Not mrw.EOF
                        i = i + 1
                        mrw.MoveNext
                  Loop
                  allPeople(10).Caption = Str(i)
            End If

​

二: 在Line表中添加信息:

​
'在line表中添加上机信息
                        txtsql1 = "select * from line_info where cardno='" & Trim(cardNumber.Text) & "'"
                              Set mrb = ExecuteSQL(txtsql1, msgtxt1)
                                    
                                          mrb.AddNew
                                          mrb.Fields(1) = Trim(cardNumber.Text) '卡号
                                          mrb.Fields(2) = mra.Fields(1) '学号
                                          mrb.Fields(3) = mra.Fields(2) '姓名
                                          mrb.Fields(4) = mra.Fields(4)
                                          mrb.Fields(5) = mra.Fields(3)
                                          mrb.Fields(6) = onday(3).Caption
                                          mrb.Fields(7) = onTi(4).Caption
                                          mrb.Fields(12) = mra.Fields(7)
                                          mrb.Update

​

三: 判断用户是否正在上机,若不在上机则将信息添加到OnLine_info 数据表中

​
'判断该用户是否正在上机过程中
                  txtsql = "select * from online_info where cardno='" & Trim(cardNumber.Text) & "'"
                  Set mrc = ExecuteSQL(txtsql, msgtxt)
                  
                  
                  
                  If Not mrc.EOF Then
                        MsgBox "当前用户正在上机,请勿重复上机"
                        cardNumber.Text = ""
                  Else
                        cardId(0).Caption = Trim(cardNumber.Text)
                        stuId(13).Caption = Trim(mra.Fields(1))
                        stutype(14).Caption = Trim(mra.Fields(14))
                        stuName(15).Caption = Trim(mra.Fields(2))
                        stuCourse(1).Caption = Trim(mra.Fields(4))
                        stuSex(2).Caption = Trim(mra.Fields(3))
                        onday(3).Caption = Date
                        onTi(4).Caption = Time
                        lastMoney(9).Caption = Trim(mra.Fields(7))
                        allPeople(10).Caption = Trim(mrc.RecordCount)
                        stuTi(11) = Now
                        
                        nowDa = Now
                        mrc.AddNew
                        mrc.Fields(0) = Trim(cardNumber.Text)
                        mrc.Fields(1) = Trim(mra.Fields(14))
                        mrc.Fields(2) = Trim(mra.Fields(1))
                        mrc.Fields(3) = Trim(mra.Fields(2))
                        mrc.Fields(4) = Trim(mra.Fields(4))
                        mrc.Fields(5) = Trim(mra.Fields(3))
                        mrc.Fields(6) = onday(3).Caption
                        mrc.Fields(7) = onTi(4).Caption
                        mrc.Fields(8) = "HYF"
                        mrc.Fields(9) = Trim(stuTi(11).Caption)
                        mrc.Update

​

四:先判断是否输入卡号-----判断用户是否注册-----用户余额是否充足----用户是否正在上机


​

 '首先判断是否输入卡号

      If Trim(cardNumber.Text = "") Then

            MsgBox "请输入卡号"

            cardNumber.SetFocus

      Else

            '第二步:判断输入的卡号是否注册,即是否存在于student表中

            

            textSql = "select * from student_info where cardno='" & Trim(cardNumber.Text) & "'"

            Set mra = ExecuteSQL(textSql, msgtxt)

            

            

            If mra.EOF Then

                  MsgBox "当年输入的卡号还未注册,请输入已注册的卡号", vbOKOnly + vbExclamation, "警告"

                  cardNumber.SetFocus

            Else  ' 表示输入的卡号已经注册过,所以下一步进行判断是否正在上机中

                  If mra.Fields(7) > 5 Then

                        MsgBox "您当前的余额不足,请充值之后再上机"

                        Exit Sub

                  Else

                  

                  Dim mrc As ADODB.Recordset

                  '判断该用户是否正在上机过程中

                  txtsql = "select * from online_info where cardno='" & Trim(cardNumber.Text) & "'"

                  Set mrc = ExecuteSQL(txtsql, msgtxt)

                  

                  

                  

                  If Not mrc.EOF Then

                        MsgBox "当前用户正在上机,请勿重复上机"

                        cardNumber.Text = ""

 

​

猜你喜欢

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