【VB与数据库】机房收费系统设计阶段之结账

     近几天一直在看米老师语录,其中有一条是:“技术永远是第二 ;思想永远是第一”。在机房收费系统结账的方面体现的真是很淋漓尽致。在结账这部分中汇总了任何人员的操作记录(购卡、充值、退卡、临时用户),最后结账可以将一日的账单展示在日结账单上,同理周结账单也可以展示。


刚开始的时候这里是“ 充值金额”,最后 应收金额=充值+注册,所以我和师父讨论,是否要改,原版的可能是错误的,师父说 只要你自己看着有道理,就去改。我觉得我们不能被给的原版的机房系统束缚,要在自己做的系统中植入自己的思想,米老师语录中还有一条:“ 思想无处不在,技术无处不在,但没有思想的技术是死的”。
 一、方法思想篇
        在做结账的时候,我也有点蒙,真的不知道这是在干嘛!甚至连控件都不知道是什么,只觉得在百例中见过,什么玩意啊! 天知地知,不如GOOGLE和百度知,然后我就开始百度


        我发现百度的都是提高班的博客,按照我的习惯是: 先自己去思考,实在不行再师哥师姐是如何看待结账的,再想想自己如何组织代码将功能实现,如果实现了就和师哥师姐提供的源码对比一下,看看自己有哪里是要改进的,如果实在是解决不了,就看看师哥师姐的代码,自己先伪一个,让功能能实现,然后分布调试将代码过一遍,抽取其中的内涵并植入自己的思想,最后不仅功能实现,而且代码也是自己的了。
二、结账思考篇
结账的程序流程图:


结账的目的:管理员进行一些统计,看看每天的收益怎么样,看看有没有操作员违纪,开小车。最后计算自己一天能挣多少,并导入日结和周结账单中,可以说结账是机房最重要的一部分之一,如果帐不好,就会影响收益。

结账要达到的程度:对一个操作员或管理员结账,在SSTAB控件中依次显示此人所进行的一系列操作,在汇总中显示操作人员售卡、退卡、充值、临时以及总退卡、总金额等,点击结账后,再次点击将不再显示。

重点部分解释及代码:

购卡:

'将购卡信息显示在控件中

txtSQL = "select studentNo,cardno,date,time from student_Info where Ischeck='未结账' and UserID='" & CmdUserId.Text & "'"     Set mrcSD = ExecuteSQL(txtSQL, MsgText)

    myflexgrid1.Rows = mrcSD.RecordCount + 1

    With myflexgrid1         .Row = 0         While mrcSD.EOF = False             .Row = .Row + 1             .TextMatrix(.Row, 0) = " " & mrcSD.Fields(0)             .TextMatrix(.Row, 1) = " " & mrcSD.Fields(1)             .TextMatrix(.Row, 2) = " " & mrcSD.Fields(2)             .TextMatrix(.Row, 3) = " " & mrcSD.Fields(3)             mrcSD.MoveNext         Wend     End With

 
  

充值记录计算总和

'把该操作员的所有未结账的充值信息汇总到表格,一个注册信息对应一个充值信息     txtSQL = "select studentNo,cardno,addmoney,date,time from ReCharge_Info where status='未结账' and UserID='" & CmdUserId.Text & "'"     Set mrcRC = ExecuteSQL(txtSQL, MsgText)

    myflexgrid2.Rows = mrcRC.RecordCount + 1     If IsNull(mrcRC.Fields(2)) Then         mrcRC.Fields(2) = 0     End If     With myflexgrid2         .Row = 0         While Not mrcRC.EOF             .Row = .Row + 1             .TextMatrix(.Row, 0) = " " & Trim(mrcRC.Fields(0))             .TextMatrix(.Row, 1) = " " & mrcRC.Fields(1)             .TextMatrix(.Row, 2) = " " & mrcRC.Fields(2)             .TextMatrix(.Row, 3) = " " & mrcRC.Fields(3)             .TextMatrix(.Row, 4) = " " & mrcRC.Fields(4)             RechargeCash = Val(mrcRC.Fields(2)) + RechargeCash '计算充值总和             mrcRC.MoveNext         Wend         RechargeCash = RechargeCash + Val(zhuce) '计算总的收入     End With

退卡

'把所有信息汇总到表格     txtSQL = "select studentNo,cardNo,date,time,cancelcash from CancelCard_Info where  UserID='" & CmdUserId.Text & "'"     Set mrcCC = ExecuteSQL(txtSQL, MsgText)

    myflexgrid3.Rows = mrcCC.RecordCount + 1

    With myflexgrid3         .Row = 0

        While mrcCC.EOF = False             .Row = .Row + 1             .TextMatrix(.Row, 0) = " " & Trim(mrcCC.Fields(0))             .TextMatrix(.Row, 1) = " " & mrcCC.Fields(1)             .TextMatrix(.Row, 2) = " " & mrcCC.Fields(2)             .TextMatrix(.Row, 3) = " " & mrcCC.Fields(3)             .TextMatrix(.Row, 4) = " " & mrcCC.Fields(4)             cancelCash = cancelCash + mrcCC.Fields(4)             mrcCC.MoveNext         Wend     End With

临时用户

'临时用户显示信息并计算费用     txtSQL = "select studentNo,cardNo,date,time ,cash from student_Info where  type='" & "临时用户" & "'"     Set mrc = ExecuteSQL(txtSQL, MsgText)     myflexgrid4.Rows = mrc.RecordCount + 1     With myflexgrid4         .Row = 0         While mrc.EOF = False             .Row = .Row + 1             .TextMatrix(.Row, 0) = " " & mrc.Fields(0)             .TextMatrix(.Row, 1) = " " & mrc.Fields(1)             .TextMatrix(.Row, 2) = " " & mrc.Fields(2)             .TextMatrix(.Row, 3) = " " & mrc.Fields(3)             LinshiCash = LinshiCash + mrc.Fields(4)

            mrc.MoveNext         Wend     End With

结账

Private Sub cmdCheckOut_Click()     '把该操作员 有关的  未结账信息 修改成 已结账

    Dim txtSQL As String     Dim MsgText As String     Dim mrcSD As ADODB.Recordset     Dim mrcRC As ADODB.Recordset     Dim mrcCC As ADODB.Recordset     On Error GoTo a     txtSQL = "select Ischeck from student_Info where Ischeck='未结账' and UserID='" & CmdUserId.Text & "'"     Set mrcSD = ExecuteSQL(txtSQL, MsgText)

    txtSQL = "select status from Recharge_Info where status='未结账' and UserID='" & CmdUserId.Text & "'"     Set mrcRC = ExecuteSQL(txtSQL, MsgText)

    txtSQL = "select Ischeck from CancelCard_Info where Ischeck='未结账' and UserId='" & CmdUserId.Text & "'"     Set mrcCC = ExecuteSQL(txtSQL, MsgText)

    While mrcSD.EOF = False            '修改数据库   并且 更新         mrcSD.Fields(0) = "已结账"         mrcSD.Update        '更新数据库         mrcSD.MoveNext     Wend     mrcSD.Close         '关闭释放空间     While mrcRC.EOF = False         mrcRC.Fields(0) = "已结帐"         mrcRC.Update         mrcRC.MoveNext

    Wend     mrcRC.Close

    While mrcCC.EOF = False         mrcCC.Fields(0) = "已结帐"

        mrcCC.Update         mrcCC.MoveNext     Wend     mrcCC.Close a:     '将数据清空     txtSaleCard.Text = 0     txtCancelCard.Text = 0     txtRechargeCash.Text = 0     txtlinshi.Text = 0     txtCancelCash.Text = 0     txtSumCard.Text = 0     txtSumCash.Text = 0     MsgBox "结账成功", vbOKOnly + vbInformation, "提示"     Call viewdate       '更新  汇总信息

End Sub

三、总结篇
    通过学习结账,真心可以锻炼自己的逻辑思维,什么时候要更改数据,什么时候要提取数据,对数据库有了一部分的理解。同时,觉得数据库已经不再像一开始那么难了。总之呢!敲系统不是目的,重要的是思想的锻炼。技术永远是第二 ;思想永远是第一。
 
 
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 29
    评论
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你个佬六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值