机房收费系统——上机&下机

本文介绍了机房收费系统中主窗体的设计,包括上机和下机的逻辑处理。在上机流程中,涉及卡号验证、余额检查等步骤;下机时则需要计算消费时间和金额。在实现过程中遇到了数据匹配错误和计算复杂性等问题,通过学习和调试得以解决,强调了逻辑清晰对编程的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

综述机房收费系统,在刚刚接触时,已经问过了很多大佬,怎样进行会比较好,虽然每个人都有一套自己的进行方式,但有一点他们都提到了,就是逻辑,逻辑是窗体的灵魂,没有逻辑,就是再乱敲代码,即使是错了,也是在没有逻辑地调试。所以在每进行一个窗体之前,我都会把逻辑理清,先结合已给的程序,自己在纸上画流程图,画完再和大佬们的流程图对照,觉得差不多基本思路一致,就照着流程图开始敲代码,这种感觉,就是代码里面有自己的思维。夸张点说,这样像是自己的孩子自己养,反之,是自己的孩子,但不是自己养的,不和自己亲,哈哈

 

正文:

以下是我对于主窗体,一般用户里面的窗体的一个理解,以及我遇到的问题,并解决的方法

 

主窗体

  • 上机
    • 逻辑
      • 判卡号是否为空
      • 是否注册
      • 是否上机
      • 是否已退卡
      • 余额是否充足
      • 将信息显示在主窗体界面上
      • 更新online
      • 更新line
      • 上机成功
  • 问题

这个问题的出现是因为:从主界面向line表更新数据时,数据对应出错,未能正确匹配,我当时把计算机名称放到了别的字段上,导致运行时识别到将Null值插入列'computer'。

 

  • 下机
    • 逻辑
      • 判卡号是否为空
      • 是否注册
      • 是否正在上机
      • 计算消费时间
      • 消费金额(判断用户类型)
      • 下机成功(将信息显示在主界面上,更新line表,并显示上机人数
    • 问题

在结算的时候,我对于计算时间,计算金额没什么概念,这才看了大佬们的博客,解开了我的结儿

看了大家的博客,发现每个人的想法都不一样,但结合着小程序,知道了下机并不简单,准确讲,是没我想的那么简单。还需要判断用户类型,通过多表连接查询,计算。也在这个过程中,不断知道哪些数据出自哪个表格,收获颇多。

结算部分代码如下:

'计算消费时间
costtime = DateDiff("n", mrcOnLine.Fields(7), Time)
costdate = DateDiff("n", mrcOnLine.Fields(6), Date)
                                
BasicDataSQL = "select * from BasicData_info"
Set mrcBasicData = ExecuteSQL(BasicDataSQL, MsgText)
                                
'若消费时间小鱼最低消费时间
If Val(costtime) + Val(costdate) < Val(mrcBasicData.Fields(3)) Then  
    '则不收取费用    
    timeconsume = 0    
Else
    timeconsume = Val(costtime) + Val(costdate) - Val(mrcBasicData.Fields(3)) 
    '更新消费时间
    lblconsumeTime.Caption = Val(timeconsume)
                                
                                
        '判断用户类型,并计算金额
        If mrcOnLine.Fields(1) = "固定用户" Then
            lblconsume.Caption = Int(mrcBasicData.Fields(0) / 60 *                  Val(lblconsumeTime.Caption))

        Else
            lblconsume.Caption = Int(mrcBasicData.Fields(1) / 60 * Val(lblconsumeTime.Caption))
            mrcBasicData.Close
        End If
                                    
                                    
        studentsql1 = "select * from student_Info where cardno= '" & Trim(txtCardNO.Text) & "'"       
        Set mrcstudent1 = ExecuteSQL(studentsql1, MsgText)
        '得出余额                    
        lblcash.Caption = Val(Trim(mrcstudent1.Fields(7)) - Val(lblconsume.Caption))
        mrcstudent1.Fields(7) = Val(lblcash.Caption)
        mrcstudent1.Update

        '后续更新表格就不在这里展示了
End If

结语

在书写代码是,最重要的就是思想,逻辑,让代码有灵魂,不做傻乎乎的码农

后续更精彩,敬请期待!!

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值