您的位置:首页 > 数据库

机房收费系统—结账

2013-12-01 21:28 357 查看
第一遍机房收费系统很顺利就完成了,但是并没有完善,借着建一个样板的机会,写一个相对完善的机房收费系统。首先,就是完善结账功能,很多同学都没有做这个,因为前模板就没有完善这个功能,所以我就写这篇文章,给大家消除一下恐惧感。

 

首先,我们要了解它的控件窗体里面都有些什么。

从表中我们不难看出:左边的是一部分(主要是用到student表),右边的是另一部分(主要是用到recharge表),我分类的依据是数据库。

第二步:细化功能:

这里可以根据SStab控件的属性里面的每一个选项卡来进行细分。这里我来做最难的一个,当然,你们要是做的话,就按顺序做,因为前面的购卡、充值、退卡、临时用户都很简单。我现在就仅仅讲一下汇总选项卡。



从这里可以看到,很散,我用另一张表来记录它。



是不是看上面的表就可以很清楚的看到他们的数据关系:

不管是张数还是金额,都是很简单的,因为它们都是在select语句中限定条件外加循环做成的。

接下来就是代码实现了:



 

我觉得就是两部分:

第一:

 

Select Case SSTab1.Tab
Case 0
With myFlexGrid
.Rows = 1
.CellAlignment = 4
.TextMatrix(0, 0) = "学号"
.TextMatrix(0, 1) = "卡号"
.TextMatrix(0, 2) = "日期"
.TextMatrix(0, 3) = "时间"

txtsql = "select * from student_info where userid='" & CmbUserId & "'"     '从student表中查询出购卡的记录
Set mrc = ExecuteSQL(txtsql, msgtext)

If (mrc.EOF Or mrc.BOF) = False Then

While (mrc.EOF = False)

.Rows = .Rows + 1
.CellAlignment = 4

.TextMatrix(.Rows - 1, 0) = Trim(mrc.Fields(0))
.TextMatrix(.Rows - 1, 1) = Trim(mrc.Fields(1))
.TextMatrix(.Rows - 1, 2) = Trim(mrc.Fields(12))
.TextMatrix(.Rows - 1, 3) = Trim(mrc.Fields(13))
mrc.MoveNext

Wend
End If
mrc.Close

End With


 

这是购卡的一个实现,其他的跟这个很类似。

第二就是:结账

Private Sub CmdCheckout_Click()
Dim txtsql As String
Dim msgtext As String
Dim mrc As ADODB.Recordset
Dim AddCheckout_I As Integer
Dim AddCheckOut_TmpRate As Single
Dim AddCheckOut_cancelcash As Single

txtsql = "select * from student_info where userid='" & CmbUserId & "'and status='使用'"    '查询student表中的信息售卡情况
Set mrc = ExecuteSQL(txtsql, msgtext)

AddCheckout_I = 0
AddCheckOut_TmpRate = 0
While (mrc.EOF = False)
AddCheckout_I = AddCheckout_I + 1
AddCheckOut_TmpRate = AddCheckOut_TmpRate = mrc.Fields(7)
mrc.Fields(11) = Trim("结账")
mrc.MoveNext
Wend
txtSaleNum = AddCheckout_I    '这里算出卖出的钱数
mrc.Close

txtsql = "select * from student_info where userid='" & CmbUserId & "'and status='不使用'"    '查询student表中的信息退卡情况
Set mrc = ExecuteSQL(txtsql, msgtext)

AddCheckout_I = 0
AddCheckOut_cancelcash = 0
While (mrc.EOF = False)
AddCheckout_I = AddCheckout_I + 1
AddCheckOut_cancelcash = AddCheckOut_cancelcash = mrc.Fields(7)     '这里是退卡的钱数
mrc.Fields(11) = Trim("结账")
mrc.MoveNext
Wend
TxtCancelNum = AddCheckout_I
TxtCancelCash = AddCheckOut_cancelcash
TxtAllCash = AddCheckOut_TmpRate - AddCheckOut_cancelcash         '这里算出的总的钱数

mrc.Close

txtsql = "select * from student_info where userid='" & CmbUserId & "'and type='临时用户'and status='使用'"    '查询student表中的信息临时用户的金额情况
Set mrc = ExecuteSQL(txtsql, msgtext)

AddCheckOut_TmpRate = 0
While (mrc.EOF = False)
AddCheckOut_TmpRate = AddCheckOut_TmpRate + mrc.Fields(7)
mrc.Fields(11) = Trim("结账")
mrc.MoveNext
Wend
TxtTmpCash = AddCheckOut_TmpRate
mrc.Close

txtsql = "select * from recharge_info where userid='" & CmbUserId & "'"    '查询student表中的信息充值金额情况
Set mrc = ExecuteSQL(txtsql, msgtext)
AddCheckOut_TmpRate = 0
While (mrc.EOF = False)
AddCheckOut_TmpRate = AddCheckOut_TmpRate + mrc.Fields(3)
mrc.Fields(7) = Trim("结账")
mrc.MoveNext
Wend
txtRechargeCash = AddCheckOut_TmpRate
mrc.Close

MsgBox "结账成功"

End Sub

别看它的代码这么长,其实懂了里面的一个功能段其他的就很简单了,无非就是循环相加和注意它的数据类型就行了。

 

上升到思想的高度,首先我们要有全局观,知道我们大体是要实现什么样的功能,哪里的功能是一样的。其次就是细节决定成败,我没有自己把自己给弄乱了,是应为我干什么都用自己的笔记从新给他们分类,就简单了。最后,就是代码的思维了,我一直想这事一种什么思维,其实,很简单,当你把前两条做好了,然后参照代码就行了。

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