前言
感觉机房中最难的一部分就是结账这一部分了,越敲越乱,敲的曲曲折折的,真正弄懂结账这一块是第一次验收之后。结账是整个机房收费系统中除了上下机最核心的地方了,所以理清逻辑之后再敲,不然敲的时候会感觉乱七八糟的
分析
管理员是否需要结账?我认为的管理员就是大BOSS,大BOSS是不需要结账的,所以管理员是不需要结账的,而操作员是不需要结账的,而操作员就是大BOSS底下的员工,结账这个功能只有大BOSS才有,大BOSS是不用结自己的帐的,而结账结的是什么呢,就是操作员的营业额。一开始我理解的汇总是没什么作用的,只有点结账的时候才把售卡张数之类的东西显示出来,后来在敲代码的时候我发现不是这样的,点结账只是改变的结账状态,而汇总才是把所有的东西显示出来,这两种是不一样的,第一种在逻辑上是不合理的
下面介绍一下结账窗体的所有功能:
购卡:该操作员操作注册的学生
充值:该操作员操作的充值的学生
退卡:通过该操作员操作的退卡的所有学生
临时用户:该操作员操作注册的临时用户
退出:卸载窗体
下面分析一下汇总的逻辑,请看下图,是我个人理解的汇总的流程
代码
以汇总为例,请看如下代码,每个人都有每个人的思维方式
'使汇总成为一个按钮,单击汇总显示所有信息
If SSTab1.Caption = "汇总" Then
Dim i As Integer
Dim recharge As Long '定义充值金额
Dim consume As Long '定义消费金额
Dim returncash As Long '定义退卡金额
Dim profit As Long '
Dim Cash As Long '定义余额
If txtcash.Text = "0" Then '限制重复结账
'售卡张数=未结账的学生人数
txtConsumeCard.Text = mrc.RecordCount
'退卡张数=退卡表里未结账的学生
txtCancelCard.Text = mrc3.RecordCount
'总售卡数=售卡张数+退卡张数
txtAllcard.Text = Val(txtConsumeCard.Text) + Val(txtCancelCard.Text)
'建立退卡表连接,计算退卡金额总和
txtSQL5 = "select sum(CancelCash) from CancelCard_Info where status='正常下机'"
Set mrc5 = ExecuteSQL(txtSQL5, MsgText5)
If mrc5.BOF And mrc5.EOF Then
returncash = 0
txtCancelCash.Text = returncash
Else
If IsNull(Trim(mrc5.Fields(0))) Then
returncash = 0
txtCancelCash.Text = returncash
Else
returncash = mrc5.Fields(0)
txtCancelCash.Text = returncash
End If
End If
'建立充值表的连接,计算充值总金额
txtSQL6 = "select sum(addmoney) from ReCharge_Info where UserID='" & Trim(cmbUserId.Text) & "' and status='未结账'"
Set mrc6 = ExecuteSQL(txtSQL6, MsgText6)
If mrc6.EOF And mrc6.BOF Then
recharge = 0
txtRechargeCash.Text = recharge
Else
If IsNull(Trim(mrc5.Fields(0))) Then
recharge = 0
txtRechargeCash.Text = recharge
Else
recharge = mrc6.Fields(0)
txtRechargeCash.Text = recharge
End If
End If
'建立学生表的连接,计算临时用户金额
txtSQL7 = "select * from student_Info where userID='" & Trim(cmbUserId.Text) & "'" & " and type='临时用户'" & " and status='使用'"
Set mrc7 = ExecuteSQL(txtSQL7, MsgText7)
For i = 1 To mrc5.RecordCount
txtTmpCash.Text = Val(txtTmpCash.Text) + Val(Trim(mrc5.Fields(7)))
Next i
mrc.Close
'应收金额=临时收费金额+充值金额-退卡金额
txtcash.Text = Val(txtTmpCash.Text) + Val(txtRechargeCash.Text) - Val(txtCancelCash.Text)
End If
End If
汇总之后需要把汇总的数据写到账单里面,这是需要注意的,代码很简单,具体代码我就不展示了