其实相比起下机,上机的功能相对简单的多。
我总结了一句话大概可以概括了上机的功能:
让账户里钱够的目前没有上机的已经注册过的用户上机。
这里有四个关键点:
关键点 |
数据表 |
含义 |
账户里的钱够 |
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 = ""