版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yyp0304Devin/article/details/82810893
前言
经历了两个多月的机房收费系统算是结了,结了并不意味着不学了,在机房中还是有很多值得我们学习的知识点,值得让我们思考的东西,有些逻辑思维还是很强的。现在将做的过程中感觉比较重要的一些知识点分享出来。
一、整体思路
在机房收费系统中有不同的级别,不同的级别有不同权限,他们所做的事情也不一样,权限是有限的。整个收费系统就像网吧一样,一般用户就相当于去上网的人,但上网的人有经常去的,还有只去一次的,这时就有了临时用户和固定用户,为什么要分固定用户和临时用户呢?那就是他们的待遇不一样!常去的人肯定会给予优惠,收的钱少。而只去一两次的就收费稍微贵点了。
机房收费系统主要有三个级别的使用者,管理员,操作员,一般用户,他们的权限是从低到高。职能从图可以看出来。
二、重点知识点
1.在开始之前我们首先应该理清模块中的知识,见博客 。
https://blog.csdn.net/yyp0304Devin/article/details/82744485
2.级别登录
在登录的时候我们会选择不同的级别登录,登录的时候如何让他们拥有权限,一般用户登录只能显示一般用户的权限,他看不了操作员和管理员的权限,对他不可见。其次就是操作员,他相当于一个网吧的网管,他没有网吧老板的权限,他在中间架起管理员和一般用户的桥梁,让管理员赚一般用户的钱。而管理员就拥有最高权限。
级别用户登录代码
If Trim(mrc.Fields(2)) = Trim("一般用户") Then '一般用户的权限
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then '判断密码是否正确
txtsql1 = "select * from OnWork_Info" '获取到正在上机表
Set mrc1 = ExecuteSQL(txtsql1, MsgText)
Me.Hide
UserName = Trim(txtUserName.Text) '将用户名给username
frmMain.Show
frmMain.GeneralUserMenu.Enabled = True
frmMain.GeneralUserMenu.Visible = True
frmMain.OperatorMenu.Enabled = False
frmMain.OperatorMenu.Visible = False
frmMain.AdministratorMenu.Enabled = False
frmMain.AdministratorMenu.Visible = False
mrc1.AddNew '添加更新到正在上机表里
mrc1.Fields(0) = Trim(UserName)
mrc1.Fields(1) = Trim(mrc.Fields(2))
mrc1.Fields(2) = Trim(Date)
mrc1.Fields(3) = Trim(Time)
mrc1.Fields(4) = VBA.Environ("computername")
mrc1.Update
mrc1.Close '关闭数据连接
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly, "提示"
txtPassword.Text = ""
txtPassword.SetFocus
Exit Sub
End If
ElseIf Trim(mrc.Fields(2)) = Trim("操作员") Then '操作员的权限
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then '判断密码是否正确
txtsql1 = "select * from OnWork_Info" '获取正在上机表
Set mrc1 = ExecuteSQL(txtsql1, MsgText)
Me.Hide
UserName = Trim(txtUserName.Text) '将用户名给username
frmMain.Show
frmMain.GeneralUserMenu.Enabled = True
frmMain.GeneralUserMenu.Visible = True
frmMain.OperatorMenu.Enabled = True
frmMain.OperatorMenu.Visible = True
frmMain.AdministratorMenu.Enabled = False
frmMain.AdministratorMenu.Visible = False
mrc1.AddNew '添加更新到正在上机表离去
mrc1.Fields(0) = Trim(UserName)
mrc1.Fields(1) = Trim(mrc.Fields(2))
mrc1.Fields(2) = Trim(Date)
mrc1.Fields(3) = Trim(Time)
mrc1.Fields(4) = VBA.Environ("computername")
mrc1.Update
mrc1.Close '关闭数据连接
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
Exit Sub
End If
ElseIf Trim(mrc.Fields(2)) = Trim("管理员") Then '管理员的权限
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then '判断密码是否正确
txtsql1 = "select * from OnWork_Info" '获取到正在上机表
Set mrc1 = ExecuteSQL(txtsql1, MsgText)
Me.Hide
UserName = Trim(txtUserName.Text) '将用户名给username
frmMain.GeneralUserMenu.Enabled = True
frmMain.GeneralUserMenu.Visible = True
frmMain.OperatorMenu.Enabled = True
frmMain.OperatorMenu.Visible = True
frmMain.AdministratorMenu.Enabled = True
frmMain.AdministratorMenu.Visible = True
mrc1.AddNew '添加更新到正在上机的表里
mrc1.Fields(0) = Trim(UserName)
mrc1.Fields(1) = Trim(mrc.Fields(2))
mrc1.Fields(2) = Trim(Date)
mrc1.Fields(3) = Trim(Time)
mrc1.Fields(4) = VBA.Environ("computername")
mrc1.Update
2.让系统登录时显示当前时间,并且不能被修改。但是显示时间并且时间时刻更新的前提是要在窗体上放一个定时器。
Label14.Caption = "当前时间:" & Time
3.学生查看余额
https://blog.csdn.net/yyp0304Devin/article/details/81274743
4.上下机
(1)上机
If Not Testtxt(txtCardNo.Text) Then
MsgBox "请输入学号!", vbOKOnly + vbExclamation, "警告"
txtCardNo.SetFocus
Exit Sub
End If
'判断是否为数字
If Not IsNumeric(txtCardNo.Text) Then
MsgBox "卡号为数字,请输入数字!", vbOKOnly + vbExclamation, "提示"
txtCardNo.Text = ""
txtCardNo.SetFocus
Exit Sub
End If
'验证用户是否已上机
txtSQL = "select * from onLine_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
If mrc1.EOF = False Then
MsgBox "该帐号已经上机,不允许重复登录!", vbOKOnly + vbExclamation, "警告"
txtCardNo.Text = ""
txtName.Text = ""
txtDept.Text = ""
txtSex.Text = ""
txtSID.Text = ""
txtType.Text = ""
Exit Sub
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
Else
txtSQL = "select * from CancelCard_Info where cardno = '" & Val(Trim(txtCardNo.Text)) & "'"
Set mrc6 = ExecuteSQL(txtSQL, MsgText)
If mrc6.EOF = False Then
MsgBox "该卡已退,无法上机!", 48, "警告"
Exit Sub
End If
'验证余额是否充足
txtSQL = "select * from BasicData_Info"
Set mrc3 = ExecuteSQL(txtSQL, MsgText)
If mrc.Fields(7) < mrc3.Fields(1) Then
MsgBox "余额小于最小限制金额,请充值后再上机!!", vbOKOnly + vbExclamation, "提示"
frmRecharge.Show
frmRecharge.txtCardNo.Text = txtCardNo.Text
Exit Sub
Else
txtCardNo.Text = mrc.Fields(0)
txtName.Text = mrc.Fields(2)
txtDept.Text = mrc.Fields(4)
txtSex.Text = mrc.Fields(3)
txtSID.Text = mrc.Fields(6)
txtType.Text = mrc.Fields(14)
txtOnDate.Text = Date
txtOnTime.Text = Time
txtCash = mrc.Fields(7)
'更新上机人数
txtSQL = "select * from User_Info"
Set mrc2 = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from onLine_Info"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
mrc1.AddNew
mrc1.Fields(0) = Trim(txtCardNo.Text)
mrc1.Fields(1) = Trim(txtType.Text)
mrc1.Fields(2) = Trim(txtCardNo.Text)
mrc1.Fields(3) = Trim(txtName.Text)
mrc1.Fields(4) = Trim(txtDept.Text)
mrc1.Fields(5) = Trim(txtSex.Text)
mrc1.Fields(6) = Date
mrc1.Fields(7) = Time
mrc1.Fields(8) = VBA.Environ("computername")
mrc1.Fields(9) = ""
mrc.Fields(9) = mrc2.Fields(0)
mrc1.Update
Label15.Caption = "当前上机人数:" & mrc1.RecordCount
mrc1.Close
txtSQL = "select * from Line_info "
Set mrc4 = ExecuteSQL(txtSQL, MsgText)
'更新到line表
mrc4.AddNew
mrc4.Fields(1) = Trim(txtCardNo.Text)
mrc4.Fields(2) = Trim(txtSID.Text)
mrc4.Fields(3) = Trim(txtName.Text)
mrc4.Fields(4) = Trim(txtDept.Text)
mrc4.Fields(5) = Trim(txtSex.Text)
mrc4.Fields(6) = Trim(txtOnDate.Text)
mrc4.Fields(7) = Trim(txtOnTime.Text)
mrc4.Fields(13) = "上机"
mrc4.Fields(14) = VBA.Environ("computername")
mrc4.Update
mrc4.Close
(2)下机
If txtCardNo.Text = "" Then
MsgBox "请输入学号!", vbOKOnly + vbExclamation, "警告"
Else
'判断该用户是否上机
txtSQL = "select * from OnLine_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = True Then
MsgBox "该卡号未上机,请重新确认", vbOKOnly + vbExclamation, "警告"
txtCardNo.Text = ""
txtName.Text = ""
txtDept.Text = ""
txtSex.Text = ""
txtSID.Text = ""
txtType.Text = ""
txtOnDate.Text = ""
txtOnTime.Text = ""
Else
'显示上机帐号数据
txtSQL = "select * from student_Info"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from BasicData_Info"
Set mrc2 = ExecuteSQL(txtSQL, MsgText)
txtType.Text = mrc.Fields(1)
txtCardNo.Text = mrc.Fields(0)
txtName.Text = mrc.Fields(3)
txtDept.Text = mrc.Fields(4)
txtSex.Text = mrc.Fields(5)
txtOnDate.Text = Format(Trim(mrc.Fields(6)), "yyyy-mm-dd")
txtOnTime.Text = Format(Trim(mrc.Fields(7)), "hh:mm:ss")
txtSID.Text = mrc.Fields(2)
txtOffDate.Text = Format(Date, "yyyy-mm-dd")
txtOffTime.Text = Format(Time, "hh:mm:ss")
'更新上机人数
txtSQL = "select * from online_info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Label15.Caption = "当前上机人数:" & mrc.RecordCount
mrc.Close
'显示当前时间
Label14.Caption = "当前时间:" & Time
'下机结算:时间,金额
txtdate = DateDiff("n", txtOnDate.Text, txtOffDate.Text)
txttime = DateDiff("n", txtOnTime.Text, txtOffTime.Text)
txtCTime.Text = Int(txtdate) + Int(txttime)
intcousumetime = txtCTime.Text
If Val(intcousumetime) < mrc2.Fields(4) Then '判断消费时间是否小于准备时间
txtCTime = "0"
txtCMoney.Text = "0"
txtCash.Text = Trim(mrc1.Fields(7))
txtSQL = "Delete from online_info where cardno = '" & Trim(txtCardNo.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from online_info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Label15.Caption = "当前上机人数:" & mrc.RecordCount
mrc.Close
MsgBox "下机成功!", vbOKOnly + vbExclamation, "提示"
Dim ctr1 As Control
For Each ctr1 In Me.Controls
If TypeOf ctr1 Is TextBox Then
ctr1.Text = ""
End If
Next
Exit Sub
End If
'判断临时用户的消费金额
txtSQL = "select * from student_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
'查找cardno的用户类别是 临时还是固定
If Trim(mrc1.Fields(14)) = "临时用户" Then
txtCMoney.Text = (Int(intcousumetime / 60) + 1) * Trim(mrc2.Fields(1))
txtCash.Text = Trim(mrc1.Fields(7)) - Trim(txtCMoney.Text)
'==================================================
'更新表
If Val(txtCash.Text) < 0 Then
MsgBox "下机失败,请先充值!", vbOKOnly + vbExclamation, "提示"
frmRecharge.Show
frmRecharge.txtCardNo.Text = txtCardNo.Text
Exit Sub
End If
MsgBox "下机成功!", vbOKOnly + vbExclamation, "提示"
txtSQL = "select * from online_info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Label15.Caption = "当前上机人数:" & mrc.RecordCount
mrc1.Close
mrc.Delete
mrc.Update
mrc.Close
'更新历史下机记录
txtSQL = "select * from Line_info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc4 = ExecuteSQL(txtSQL, MsgText)
mrc4.AddNew
mrc4.Fields(1) = Trim(txtCardNo.Text)
mrc4.Fields(2) = Trim(txtSID.Text)
mrc4.Fields(3) = Trim(txtName.Text)
mrc4.Fields(4) = Trim(txtDept.Text)
mrc4.Fields(5) = Trim(txtSex.Text)
mrc4.Fields(6) = Trim(txtOnDate.Text)
mrc4.Fields(7) = Trim(txtOnTime.Text)
mrc4.Fields(8) = Trim(txtOffDate.Text)
mrc4.Fields(9) = Trim(txtOffTime.Text)
mrc4.Fields(10) = Trim(txtCTime.Text)
mrc4.Fields(11) = Trim(txtCMoney.Text)
mrc4.Fields(12) = Trim(txtCash.Text)
mrc4.Fields(13) = "下机"
mrc4.Fields(14) = VBA.Environ("computername")
mrc4.Update
mrc4.Close
'更新学生表学生信息(余额)
txtSQL = "select * from student_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
mrc1.Fields(7) = Trim(txtCash.Text)
mrc1.Fields(9) = UserName
mrc1.Fields(10) = "使用"
mrc1.Fields(11) = "结账"
mrc1.Fields(12) = Date
mrc1.Fields(13) = Time
mrc1.Update
mrc1.Close
Else
'判断固定用户的消费金额
txtCMoney.Text = (Int(intcousumetime / 60) + 1) * Trim(mrc2.Fields(0))
txtCash.Text = Trim(mrc1.Fields(7)) - Trim(txtCMoney.Text)
If Val(txtCash.Text) < 0 Then
MsgBox "下机失败,请先充值!", vbOKOnly + vbExclamation, "提示"
frmRecharge.Show
frmRecharge.txtCardNo.Text = txtCardNo.Text
Exit Sub
End If
MsgBox "下机成功!", vbOKOnly + vbExclamation, "提示"
txtSQL = "select * from online_info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Label15.Caption = "当前上机人数:" & mrc.RecordCount
mrc1.Close
mrc.Delete
mrc.Update
mrc.Close
'更新历史下机记录
txtSQL = "select * from Line_info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc4 = ExecuteSQL(txtSQL, MsgText)
mrc4.AddNew
mrc4.Fields(1) = Trim(txtCardNo.Text)
mrc4.Fields(2) = Trim(txtSID.Text)
mrc4.Fields(3) = Trim(txtName.Text)
mrc4.Fields(4) = Trim(txtDept.Text)
mrc4.Fields(5) = Trim(txtSex.Text)
mrc4.Fields(6) = Trim(txtOnDate.Text)
mrc4.Fields(7) = Trim(txtOnTime.Text)
mrc4.Fields(8) = Trim(txtOffDate.Text)
mrc4.Fields(9) = Trim(txtOffTime.Text)
mrc4.Fields(10) = Trim(txtCTime.Text)
mrc4.Fields(11) = Trim(txtCMoney.Text)
mrc4.Fields(12) = Trim(txtCash.Text)
mrc4.Fields(13) = "下机"
mrc4.Fields(14) = VBA.Environ("computername")
mrc4.Update
mrc4.Close
'更新学生表学生信息(余额)
txtSQL = "select * from student_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
mrc1.Fields(7) = Trim(txtCash.Text)
mrc1.Fields(9) = UserName
mrc1.Fields(10) = "使用"
mrc1.Fields(11) = "结账"
mrc1.Fields(12) = Date
mrc1.Fields(13) = Time
mrc1.Update
mrc1.Close
'更新上机人数
txtSQL = "select * from online_info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Label15.Caption = "当前上机人数:" & mrc.RecordCount
mrc.Close
5.查看学生充值记录,之前在查看的时候只能查出来每次充值的记录,但是把第一次注册的时候充的钱查不出来,那这样系统就存在缺陷了,用户想查自己的充值记录,可是没有第一条,这时就可以用一个语句把它加到充值表中,在注册时把记录同时存在充值表中。
txtSQL = "select * from Recharge_Info where cardno='" & Trim(txtCardno.Text) & "'" '使卡号等于充值记录表中的卡号,如果不相等给出提示
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
Do While Not mrc1.EOF
.Rows = .Rows + 1
.CellAlignment = 4
.TextMatrix(.Rows - 1, 1) = Trim(mrc1.Fields(1))
.TextMatrix(.Rows - 1, 0) = Trim(mrc1.Fields(2))
.TextMatrix(.Rows - 1, 2) = Trim(mrc1.Fields(3))
.TextMatrix(.Rows - 1, 3) = Trim(mrc1.Fields(4))
.TextMatrix(.Rows - 1, 4) = Trim(mrc1.Fields(5))
.TextMatrix(.Rows - 1, 5) = Trim(mrc1.Fields(6))
mrc1.MoveNext
Loop
End With
6.让所有学生都下线
'删除online表中的信息,让所有的学生下线
OnlineSQL = "select * from online_Info "
Set mrcOnline = ExecuteSQL(OnlineSQL, OMsgtext)
'如果没有人上线,提示
If mrcOnline.RecordCount = 0 Then
MsgBox "没有学生上线!", vbOKOnly + vbInformation, "提示"
Exit Sub
End If
a = myflexgrid.Rows - 1
If myflexgrid.Rows = 0 Then
MsgBox "没有学生上线!", vbOKOnly + vbInformation, "提示"
Exit Sub
End If
myflexgrid.Rows = 1
For b = a To 1 Step -1
'从basicdata表中读取数据
BasicDataSQL = "select * from basicdata_Info"
Set mrcBasicData = ExecuteSQL(BasicDataSQL, BMsgtext)
'从student表中读取数据
studentSQL = "select * from student_Info"
Set mrcStudent = ExecuteSQL(studentSQL, Smsgtext)
'从line表中读取数据
LineSQL = "select * from line_Info"
Set mrcLine = ExecuteSQL(LineSQL, LMsgtext)
'从online表中读取数据
OnlineSQL = "select * from online_Info"
Set mrcOnline = ExecuteSQL(OnlineSQL, OMsgtext)
CostTime = DateDiff("n", Trim(Hour(Time)), Trim(mrcOnline!ontime))
CostDate = DateDiff("n", Trim(Date), Trim(mrcOnline!OnDate))
intLineTime = Format(Str(Val(CostTime) + Val(CostDate)))
'判断实际在线时间是否小于准备时间,若小于则消费时间为0
If intLineTime < mrcBasicData!prepareTime Then
intConsumeTime = 0
'判断实际在线时间是否小于最低消费时间,若小于,则消费时间为最低消费时间
ElseIf intLineTime < mrcBasicData!leasttime Then
intConsumeTime = mrcBasicData!leasttime
Else
intConsumeTime = Round(intLineTime / mrcBasicData!unittime) * mrcBasicData!unittime 'round()函数为四舍五入函数
End If
'计算消费金额(消费金额=消费时间/30*用户类型的半小时费用)
'固定用户(为什么要除以30)
If Trim(mrcStudent.Fields(14)) = "固定用户" Then
curConsume = intConsumeTime / 30 * mrcBasicData!rate
Else
curConsume = intConsumeTime / 30 * mrcBasicData!tmpRate
End If
'计算余额(账户余额=原账户余额-消费金额)
curBalance = mrcStudent!cash - curConsume
'更新学生信息表的余额
mrcStudent.Fields(7) = curBalance
mrcStudent.Update
mrcStudent.Close
'更新上机记录表(line表)
LineSQL = "select * from line_Info"
Set mrcLine = ExecuteSQL(LineSQL, LMsgtext)
mrcLine.AddNew
mrcLine.Fields(1) = Trim(mrcOnline!Cardno)
mrcLine.Fields(2) = Trim(mrcOnline!studentNo)
mrcLine.Fields(3) = Trim(mrcOnline!studentName)
mrcLine.Fields(4) = Trim(mrcOnline!Department)
mrcLine.Fields(5) = Trim(mrcOnline!Sex)
mrcLine.Fields(6) = Trim(mrcOnline!OnDate)
mrcLine.Fields(7) = Trim(mrcOnline!ontime)
mrcLine.Fields(8) = Date
mrcLine.Fields(9) = Trim(Time & "")
mrcLine.Fields(10) = intConsumeTime
mrcLine.Fields(11) = curConsume
mrcLine.Fields(12) = curBalance
mrcLine.Fields(13) = "强制下机"
mrcLine.Fields(14) = Trim(Environ("computername"))
mrcLine.Update
'删除在线表中的信息
OnlineSQL = "select * from online_Info"
Set mrcOnline = ExecuteSQL(OnlineSQL, OMsgtext)
mrcOnline.Delete
mrcOnline.Update
Next b
7.选中学生下线
If myflexgrid.RowSel = 0 Then
MsgBox "请选择数据!", 48, "警告"
Exit Sub
End If
txtSQL = "select * from basicdata_info "
Set mrccc = ExecuteSQL(txtSQL, MsgText)
With myflexgrid
For j = 0 To .Rows - 1
i = 0
If j > .Row Then
Exit Sub
End If
If .TextMatrix(j, 5) = "√" Then
hanghao(i) = j
txtSQL = "select * from online_info where cardno = '" & Trim(myflexgrid.TextMatrix(Val(j), 0)) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from student_info where cardno = '" & Trim(myflexgrid.TextMatrix(Val(j), 0)) & "'"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
SJ = 0: XF = 0: ontime = ""
SJ = Abs(Val(DateDiff("n", Time, Trim(mrc.Fields(7)))))
If SJ < Trim(mrccc.Fields(3)) Then
Else
If Trim(mrcc.Fields(14)) = "临时用户" Then
XF = (CInt(Trim(SJ) / 30 + 1)) * (Trim(mrccc.Fields(1)) / 3)
mrcc.Fields(7) = Val(Trim(mrcc.Fields(7))) - XF
mrcc.Update
Else
XF = (CInt(Trim(SJ) / 30) + 1) * (Trim(mrccc.Fields(0)) / 2)
mrcc.Fields(7) = Val(Trim(mrcc.Fields(7))) - XF
mrcc.Update
End If
End If
ontime = mrc.Fields(7)
mrc.Delete
mrc.Update
mrc.Close
'
txtSQL = "select * from line_info where ontime = '" & ontime & "'"
Set mrcccc = ExecuteSQL(txtSQL, MsgText)
txtSQL = txtSQL & txtOnTime & " " & " txtcardno = '" & Trim(myflexgrid.TextMatrix(Val(j), 0)) & "'"
Set mrccccc = ExecuteSQL(txtSQL, MsgText)
mrcccc.Fields(8) = Date
mrcccc.Fields(9) = Time
mrcccc.Fields(10) = SJ
mrcccc.Fields(11) = XF
mrcccc.Fields(12) = mrcc.Fields(7)
mrcccc.Fields(13) = "正常下机"
mrcccc.Update
myflexgrid.TextMatrix(Val(j), 5) = ""
myflexgrid.RemoveItem hanghao(i)
j = j - 1
End If
Next j
End With
MsgBox "选中学生已下机!", vbOKOnly + vbInformation, "提示"
8.注册
https://blog.csdn.net/yyp0304Devin/article/details/81415405
9.充值
https://blog.csdn.net/yyp0304Devin/article/details/81542552
10.学生基本信息维护
https://blog.csdn.net/yyp0304Devin/article/details/82707661
11.结账
结账在机房收费系统中也是三大难点之一,有很多让人头疼的东西。
(1)通过用户名让显示操作员的真实姓名
txtSQL = "select * from User_Info where UserID='" & Trim(comboUserName.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
comboTrueName.Text = mrc.Fields(3)
mrc.Close
(2)汇总
其他的还好弄,就是在汇总这一块有点烧脑,算账的时候不用心就算不对了,包括一些售卡统计等,在这里有涉及到了临时用户应收金额等就难做了,但是思路理对了也没有多难。
'汇总
'售卡数量
txtSQL = "select * from student_Info where UserID='" & Trim(comboUserName.Text) & _
"' and Ischeck='" & "未结账" & " '"
Set mrcS = ExecuteSQL(txtSQL, MsgText)
If mrcS.RecordCount = 0 Then
txtSellCard.Text = "0"
Else
txtSellCard.Text = mrcS.RecordCount
End If
'退卡数量
txtSQL = "select * from CancelCard_Info where UserID='" & Trim(comboUserName.Text) & _
"'and status='" & "未结账" & " '"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
If mrcc.RecordCount = 0 Then
txtRtnNum.Text = "0"
Else
txtRtnNum.Text = mrcc.RecordCount
End If
'退卡金额=该操作员操作的所有用户退卡金额的总和
txtSQL = "select sum(CancelCash) from CancelCard_Info where UserID='" & Trim(comboUserName.Text) & _
"'and status='" & "未结账" & "'"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
If IsNull(Trim(mrcc.Fields(0))) Then
txtRtnSum.Text = "0"
Else
txtRtnSum.Text = Val(mrcc.Fields(0))
End If
'充值金额(不区分临时用户和固定用户)
txtSQL = "select sum(addmoney) from Recharge_Info where UserID='" & Trim(comboUserName.Text) & _
"'and status='" & "未结账" & "'"
Set mrcR = ExecuteSQL(txtSQL, MsgText)
If IsNull(Trim(mrcR.Fields(0))) Then
txtRechargeSum.Text = "0"
Else
txtRechargeSum.Text = Val(mrcR.Fields(0))
End If
'总售卡数=售卡数量-退卡数量
txtSaleCardNumber.Text = Val(txtSellCard.Text) - Val(txtRtnNum.Text)
'应收金额=充值金额-退卡金额
txtSum.Text = Val(txtRechargeSum.Text) - Val(txtRtnSum.Text)
Dim mrc1111 As ADODB.Recordset
'临时收费金额=临时用户注册金额
txtSQL = "select sum(cash) from student_Info where UserID = '" & Trim(comboUserName.Text) & "'and Ischeck='未结账' and type='临时用户'"
Set mrc1111 = ExecuteSQL(txtSQL, MsgText)
If IsNull(Trim(mrc1111.Fields(0))) Then
txtTemporarySum.Text = "0"
Else
txtTemporarySum.Text = Val(mrc1111.Fields(0))
End If