机房收费系统—结账
2013-12-01 21:28
357 查看
第一遍机房收费系统很顺利就完成了,但是并没有完善,借着建一个样板的机会,写一个相对完善的机房收费系统。首先,就是完善结账功能,很多同学都没有做这个,因为前模板就没有完善这个功能,所以我就写这篇文章,给大家消除一下恐惧感。
首先,我们要了解它的控件窗体里面都有些什么。
从表中我们不难看出:左边的是一部分(主要是用到student表),右边的是另一部分(主要是用到recharge表),我分类的依据是数据库。
从这里可以看到,很散,我用另一张表来记录它。
是不是看上面的表就可以很清楚的看到他们的数据关系:
不管是张数还是金额,都是很简单的,因为它们都是在select语句中限定条件外加循环做成的。
我觉得就是两部分:
这是购卡的一个实现,其他的跟这个很类似。
别看它的代码这么长,其实懂了里面的一个功能段其他的就很简单了,无非就是循环相加和注意它的数据类型就行了。
上升到思想的高度,首先我们要有全局观,知道我们大体是要实现什么样的功能,哪里的功能是一样的。其次就是细节决定成败,我没有自己把自己给弄乱了,是应为我干什么都用自己的笔记从新给他们分类,就简单了。最后,就是代码的思维了,我一直想这事一种什么思维,其实,很简单,当你把前两条做好了,然后参照代码就行了。
首先,我们要了解它的控件窗体里面都有些什么。
从表中我们不难看出:左边的是一部分(主要是用到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
别看它的代码这么长,其实懂了里面的一个功能段其他的就很简单了,无非就是循环相加和注意它的数据类型就行了。
上升到思想的高度,首先我们要有全局观,知道我们大体是要实现什么样的功能,哪里的功能是一样的。其次就是细节决定成败,我没有自己把自己给弄乱了,是应为我干什么都用自己的笔记从新给他们分类,就简单了。最后,就是代码的思维了,我一直想这事一种什么思维,其实,很简单,当你把前两条做好了,然后参照代码就行了。
相关文章推荐
- 机房收费系统之结账
- 【机房收费系统】之结账
- VB.net版机房收费系统——结账功能实现(调错与优化)
- 机房收费系统之上下机及结账
- 机房收费系统—结账
- 机房收费系统之结账窗体理解
- 机房收费系统之结账
- 【机房收费系统——报表与vb交互之日结账和周结账】
- 机房收费系统之结账
- 机房收费系统(五)——结账
- VB机房收费系统09——日结账单和周结账单
- VB查询数据库之结账——机房收费系统总结(五)
- VB.net版机房收费系统——结账功能实现(调错与优化)
- VS制作报表(机房收费系统个人版日结账单)
- 【VB与数据库】机房收费系统设计阶段之结账
- 第一次机房收费系统【总结】——结账
- 机房收费系统之结账总结
- VB查询数据库之结账——机房收费系统总结(五)
- 机房收费系统-结账
- 机房收费系统之日结账单和周结账单