机房收费系统之上下机

前言:

     一不留神上下机界面就耽误了两天才搞定,本以为挺好整的,结果一遍遍推翻了自己原来的想法,总是认为逻辑顺序不合理包括现在,不过现在想了想,为什么非要做到极致呢?哈哈....

小谈:其实在上下机进行到一半的时候突然醒悟原来这个模块类似于登录模块的;

  • 登录和退出界面

          表:user_info、work_info、worklog_info

          登录:user(if)--->work_info(add all)--->worklog(add some)

          退出:work_info(delete)--->worklog(add others)

  • 上机和下机界面

         表:student、online、line、basicdata

         上机:student(if)--->basicdata(if)--->online(add some)--->line(add some)

         下机:online(if)--->student(show)--->basicdata(inquiry)--->online(delete)--->line(add others)

         准备工作(各不相同,并不统一)

过程:

  一、细化表的信息(各个模块细化,非整体)


  二、需求分析(流程图)


  

  三、逻辑设计(设计知识点)

  • 上机
  1. 哪些表中增添多大范围信息---全部、某些、几个
  2. 查询、更新、增添在多个表中的逻辑顺序
  3. 及时更新上机人数(RecordCount)---引申实时更新,添加到timer控件事件中
  • 下机
  1. 上机模块中涉及的;
  2. 结账方式(判断用户类型+结算方式)

  四、编码

  部分重要代码(上机

'筛选注册表中信息,核查登录登录卡号
        CardNo = Val(txtCardNo(0).Text)
        txtSQL = "select * from student_Info where cardno='" & CardNo & "'"
        Set mrc = ExecuteSQL(txtSQL, msgText)
        If mrc.EOF And mrc.BOF Then
            MsgBox "不存在此用户,请重新输入!", vbOKCancel + vbExclamation, "警告!"
            mrc.Close
            txtCardNo(0).Text = ""
            txtCardNo(0).SetFocus
        Else
            '判断是否和正在上机用户冲突
            txtSQL = "select * from OnLine_Info"
            Set mrc1 = ExecuteSQL(txtSQL, msgText)
            If Not (mrc1.EOF And mrc1.BOF) Then '记录集中显示第一个
                mrc1.MoveFirst
            End If
    
            While (mrc1.EOF = False)
                If (Trim(mrc1.Fields(0)) = Trim(CardNo)) Then
                    MsgBox "此卡号正在上机,请更换卡号后重新操作!", vbOKOnly + vbExclamation, "警告"
                    txtCardNo(0).Text = ""
                    txtCardNo(0).SetFocus
                    Exit Sub
                Else
                    mrc1.MoveNext
                End If
            Wend
            '判断此卡是否不低于最小余额
            txtSQL = "select * from BasicData_Info"
            Set mrc2 = ExecuteSQL(txtSQL, msgText)
            If Trim(mrc.Fields(7)) < Trim(mrc2.Fields(5)) Then
                MsgBox "此卡的余额不足,请尽快充值!", vbOKCancel + vbExclamation, "提示"
                mrc1.Close
                mrc2.Close
                txtCardNo(0).Text = ""
                txtCardNo(0).SetFocus
                Exit Sub


部分重要代码(下机)---结算金钱

txtSQL = "select * from student_Info where cardno='" & CardNo & "'"
                Set mrc = ExecuteSQL(txtSQL, msgText)
                Call viewData
                endTime = Time
                endDate = Date
                CostDate = DateDiff("n", mrc1.Fields(6), endDate)
                CostTime = DateDiff("n", mrc1.Fields(7), endTime)
                allTime = CostDate + CostTime
                '查询basicdata表中的信息
                txtSQL = "select * from BasicData_Info"
                Set mrc2 = ExecuteSQL(txtSQL, msgText)
                
                Rate = mrc2.Fields(0)
                tmpRate = mrc2.Fields(1)
                unitTime = mrc2.Fields(2)
                leastTime = mrc2.Fields(3)
                prepareTime = mrc2.Fields(4)
                
            '收费情况
                If allTime <= prepareTime Then
                    ConsumeMoney = 0
                Else
                    If allTime <= leastTime Then
                        ConsumeMoney = Val(Rate / 2)
                    Else
                        useTime = allTime - prepareTime
                        unitNumber = useTime Mod Val(unitTime)
                        If unitNumber = 0 Then
                            unitNumber = Int(useTime / unitTime)
                        Else
                            unitNumber = Int(useTime / unitTime) + 1
                        End If
                        If txtType(3).Text = "固定用户" Then
                            a = Rate
                        Else
                            a = tmpRate
                        End If
                        ConsumeMoney = Format(unitNumber * a, "0.0")
                    End If
                End If
                
                txtOffTime(10).Text = endTime
                txtOffDate(7).Text = endDate
                txtCTime(11).Text = allTime
                txtCMoney(12).Text = ConsumeMoney
                Cash = txtBalance(8) - ConsumeMoney
                txtBalance(8).Text = Cash


  总结:其中涉及到命名全局变量调用过程(两次或多次)、函数和过程区别、变量的数据类型等,总之比较多的知识相结合起来,然后一遍又一遍的加深印象和理解;

  体会:其实只要我们按照类似软件工具开发这本书中提到的软件开发过程的几种要点来做的话,虽然有难度,但是却不会让我们望而却步,只不过会死比较多的脑细胞和时间;仅此而已,等下.....,我还有最后一句话;

世界上最遥远的距离不是生与死,而是你站到了机房收费系统的大门口,又尼玛关上了!

--------------------欢迎在评论区推荐好的思路和指正其中代码的问题------------Iwait foryou---------


评论 77
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值