前言:
综述机房收费系统,在刚刚接触时,已经问过了很多大佬,怎样进行会比较好,虽然每个人都有一套自己的进行方式,但有一点他们都提到了,就是逻辑,逻辑是窗体的灵魂,没有逻辑,就是再乱敲代码,即使是错了,也是在没有逻辑地调试。所以在每进行一个窗体之前,我都会把逻辑理清,先结合已给的程序,自己在纸上画流程图,画完再和大佬们的流程图对照,觉得差不多基本思路一致,就照着流程图开始敲代码,这种感觉,就是代码里面有自己的思维。夸张点说,这样像是自己的孩子自己养,反之,是自己的孩子,但不是自己养的,不和自己亲,哈哈
正文:
以下是我对于主窗体,一般用户里面的窗体的一个理解,以及我遇到的问题,并解决的方法
主窗体
- 上机
- 逻辑
- 判卡号是否为空
- 是否注册
- 是否上机
- 是否已退卡
- 余额是否充足
- 将信息显示在主窗体界面上
- 更新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
结语
在书写代码是,最重要的就是思想,逻辑,让代码有灵魂,不做傻乎乎的码农
后续更精彩,敬请期待!!