机房收费系统之上下机
2017-12-04 19:49
309 查看
前言:
(原文经过更改,将上下机记录分别更新到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
当然了过程不是一帆风顺的,但是也从中学到了知识
上下机对照流程图展示:
总结:
不要把困难想的那么难。就算自己解决不了又怎么样,咱上面有人~~~
当然了过程不是一帆风顺的,但是也从中学到了知识
(原文经过更改,将上下机记录分别更新到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
当然了过程不是一帆风顺的,但是也从中学到了知识
上下机对照流程图展示:
总结:
不要把困难想的那么难。就算自己解决不了又怎么样,咱上面有人~~~
当然了过程不是一帆风顺的,但是也从中学到了知识