您的位置:首页 > 其它

机房收费系统——下机

2018-02-26 21:00 218 查看

流程图



代码展示

-下机结算

'下机结算:时间,金额(n为分钟);显示下机数据

txtSQLS = "select * from student_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc1 = ExecuteSQL(txtSQLS, Msgtext)

txtSQLB = "select * from BasicData_Info"
Set mrc2 = ExecuteSQL(txtSQLB, Msgtext)

txtdate = DateDiff("n", lblOnDate, lblOffDate)
txttime = DateDiff("n", lblOnTime, lblOffTime)
lblCTime.Text = Int(txtdate) + Int(txttime)     '显示消费时间
intconsumetime = lblCTime.Text

'判断消费时间<准备时间
If intconsumetime < mrc2.Fields(4) Then
lblCMoney.Text = "0"                       '消费金额=0
lblCash.Text = Trim(mrc1.Fields(7))        '余额=余额-消费金额

Else

'判断消费时间小于最小上机时间时消费金额为1
If intconsumetime < mrc2!leastTime And intconsumetime > mrc2.Fields(4) Then
lblCMoney.Text = "1"                 '消费金额=1
lblCash.Text = Trim(mrc1.Fields(7)) - Trim(lblCMoney.Text)

Else

'判断临时用户的消费金额
If mrc.Fields(1) = "临时用户" Then
lblCMoney.Text = (Int(intconsumetime / 60) + 1) * Trim(mrc2.Fields(1))
lblCash.Text = Trim(mrc1.Fields(7)) - Trim(lblCMoney.Text)

Else

'判断固定用户的消费金额
lblCMoney.Text = (Int(intconsumetime / 60) + 1) * Trim(mrc2.Fields(0))
lblCash.Text = Trim(mrc1.Fields(7)) - Trim(lblCMoney.Text)

End If
End If
End If


-余额不足,请先充值

If Val(lblCash.Text) < 0 Then
MsgBox "余额不足,下机失败,请先充值!", vbonly + vbExclamation, "提示"

'显示充值窗体
frmOpRecharge.Show
SetParent frmOpRecharge.hWnd, Picture1.hWnd

'将下机卡号赋值给充值窗体卡号
frmOpRecharge.txtCardNo.Text = txtCardNo.Text
Exit Sub
Else
MsgBox "下机成功,欢迎下次再来!", vbonly + vbExclamation, "提示"


-利用timer控件实时更新上机人数

Private Sub Timer1_Timer()     '利用timer控件实时更新上机人数

Dim txtSQL As String
Dim Msgtext As String
Dim mrc As ADODB.Recordset

Label12.Caption = Format(Now, "hh:mm:ss")   '获取当前时间

txtSQL = "select * from Online_Info "
Set mrc = ExecuteSQL(txtSQL, Msgtext)
Label16.Caption = mrc.RecordCount
mrc.Close

End Sub


-循环清空内容

'循环清空内容
Dim ctr1 As Control
For Each ctr1 In Me.Controls

If TypeOf ctr1 Is TextBox Then
ctr1.Text = ""
End If

Next


完整代码展示

Private Sub cmdOffLine_Click()

Dim txtSQLB As String
Dim txtSQLS As String
Dim txtSQLO As String
Dim txtSQLL As String
Dim Msgtext As String
Dim mrc As ADODB.Recordset     'online 表
Dim mrc1 As ADODB.Recordset     'student表
Dim mrc2 As ADODB.Recordset    'BasicData 表
Dim mrc3 As ADODB.Recordset

Dim txtdate As String
Dim txttime As String
Dim intconsumetime As String  '消费时间

'输入学号

If txtCardNo.Text = "" Then
MsgBox "请输入学号!", vbOKOnly + vbExclamation, "警告"
Exit Sub
Else
'判断该用户是否上机

txtSQLO = "select * from OnLine_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc = ExecuteSQL(txtSQLO, Msgtext)

If mrc.EOF = True Then
MsgBox "该卡号未上机,请重新确认", vbOKOnly + vbExclamation, "警告"
txtCardNo.Text = ""
txtCardNo.SetFocus
Exit Sub

Else
'显示上机帐号数据

txtCardNo.Text = mrc!cardno
lbltype.Text = mrc!cardtype
lblSID.Text = mrc!studentNo
lblName.Text = mrc!studentName
lblDept.Text = mrc!Department
lblSex.Text = mrc!sex
lblOnDate.Text = Format(Trim(mrc.Fields(6)), "yyyy-mm-dd")
lblOnTime.Text = Format(Trim(mrc.Fields(7)), "hh:mm:ss")
lblOffDate.Text = Format(Date, "yyyy-mm-dd")
lblOffTime.Text = Format(Time, "hh:mm:ss")

'下机结算:时间,金额(n为分钟);显示下机数据
'......见上

End If
End If

'余额不足,下机失败,请先充值!
'......见上

Else

MsgBox "下机成功,欢迎下次再来!", vbonly + vbExclamation, "提示"

'更新上机记录

mrc.Delete
mrc.Update
mrc.Close

'更新历史上机记录

txtSQLL = "select * from Line_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc3 = ExecuteSQL(txtSQLL, Msgtext)

mrc3.AddNew
mrc3.Fields(1) = Trim(txtCardNo.Text)
mrc3.Fields(2) = Trim(lblSID.Text)
mrc3.Fields(3) = Trim(lblName.Text)
mrc3.Fields(4) = Trim(lblDept.Text)
mrc3.Fields(5) = Trim(lblSex.Text)
mrc3.Fields(6) = Trim(lblOnDate.Text)
mrc3.Fields(7) = Trim(lblOnTime.Text)
mrc3.Fields(8) = Trim(lblOffDate.Text)
mrc3.Fields(9) = Trim(lblOffTime.Text)
mrc3.Fields(10) = Trim(lblCTime.Text)
mrc3.Fields(11) = Trim(lblCMoney.Text)
mrc3.Fields(12) = Val(lblCash.Text) '把字符串型换成数值型
mrc3.Fields(13) = "正常上机"
mrc3.Fields(14) = VBA.Environ("computername")
mrc3.Update
mrc3.Close

'更新学生表学生信息

mrc1.Fields(7) = Trim(lblCash.Text)
mrc1.Fields(9) = UserName
mrc1.Fields(10) = "使用"
mrc1.Fields(11) = "已结账"
mrc1.Fields(12) = Date
mrc1.Fields(13) = Time
mrc1.Update
mrc1.Close

End If

'循环清空内容
'......见上

End Sub


反思

1.敲代码不能停

下机窗体做了很久了,总是做做停停,思路连接不上,感觉难的不行,其实做完之后无非这点代码,只要每天完成一点,问题都会解决。

2.困难像弹簧

困难像弹簧,你弱它就强。任何任务没有完成之前,切忌将困难放大化。没有多大的困难是我们克服不了的。

3.套路

先把逻辑弄清楚,再写代码,再解决问题,再优化体验。这是适用于我的套路,每每跳着完成,我都会方寸大乱。

以此自省!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: