首页 > 其他分享 >第一次机房收费系统之下机

第一次机房收费系统之下机

时间:2022-12-23 11:04:45浏览次数:36  
标签:Trim 之下 Fields txtSQL OnLine 机房 Text 收费 line


做下机的时候刚开始是一点思路都没有的,只是知道一个大概的框架,但是里面的细节比如说更新哪个表、删除哪个表,什么时候删除等,这些还是不是太明白。但是把想法体现在流程图上就会清晰很多。

第一次机房收费系统之下机_Time

在这个窗体中涉及到的表有basicdata(进行单价对比)、lin表、online表、student表。

代码展示

在下机的过程中,首先判断卡号是否为空,是否已经上机

If txtCardNum.Text = "" Then '判断卡号是否为空
MsgBox "请输入卡号上机", vbOKOnly + vbExclamation, "提示"
Exit Sub
End If

txtSQL = "select * from OnLine_info where cardno='" & txtCardNum.Text & "'"'连接上机表,判断段是否已经上机
Set OnLine = ExecuteSQL(txtSQL, Msgtext)

txtSQL = "select * from BasicData_info "
Set bas = ExecuteSQL(txtSQL, Msgtext)

txtSQL = "select * from student_info "
Set stu = ExecuteSQL(txtSQL, Msgtext)

If OnLine.EOF = True Then '?判断是否上机
MsgBox "此卡号未上机", vbOKOnly + vbExclamation, "提示"

如果以上条件都满足的话,就开始正常下机了,在这个还要判断消费时间是否2分钟以上,在这里需要注意的是,比较时间的时候一定要直接连接数据库,不要直接写数字,如果数据库的值变了,相应的消费时间也会改变

a = MsgBox("确认要下机?", vbOKOnly + vbExclamation, "提示")
If a = vbOK Then
consumtime = DateDiff("n", Trim(OnLine!Date), Now) '计算消费时间
txttime.Text = Val(consumtime)’消费时间的值赋给消费时间文本框

If consumtime <= Val(bas!PrepareTime) Then '?判断有没有达到最低上机时间
consum = 0
consumptionAmount.Text = Val(consum)
MsgBox "没有达到上机准备时间,不收取费用", vbOKOnly + vbExclamation, "提示"

更新数据库(online表、line 表)

txtSQL = "select * from Line_Info "
Set line = ExecuteSQL(txtSQL, Msgtext)
line.AddNew

line.Fields(1) = Trim(txtCardNum.Text)

line.Fields(2) = Trim(stu.Fields(1))

line.Fields(3) = Trim(stu.Fields(2))

line.Fields(4) = Trim(stu.Fields(4))

line.Fields(5) = Trim(stu.Fields(3))

line.Fields(6) = Trim(OnLine.Fields(6))

line.Fields(7) = Trim(OnLine.Fields(7))

line.Fields(8) = Format(Now(), "yyyy-MM-dd")

line.Fields(9) = Format(Now(), "HH:mm:ss")

line.Fields(10) = txttime.Text

line.Fields(11) = consume

line.Fields(12) = txtCash

line.Fields(13) = "正常下机"

line.Fields(14) = Environ("computername")

line.Update

txtSQL = "delete from Online_Info where cardno='" & txtCardNum.Text & "'"
Set OnLine = ExecuteSQL(txtSQL, Msgtext)

txtSQL = "select * from OnLine_info"
Set OnLine = ExecuteSQL(txtSQL, Msgtext)

OnlinePerson.Caption = OnLine.RecordCount '显示上机人数
OffDate.Text = Date
OffTime.Text = Time
MsgBox "下机完成", vbOKOnly + vbExclamation, "提示"

以上所有代码是上机未达到最低消费时间的,那么达到消费时间后需要判断是固定用户还是临时用户,在这里首先还是判断消费时间

If Val(consumtime) Mod Val(bas!unitTime) = 0 Then'如果消费时间为整小时数
t = Val(consumtime) / Val(bas!unitTime) '计算消费时间(单位为小时)

Else
t = Val(consumtime) / Val(bas!unitTime) + 1'如果不满一小时按一小时算
End If

判断是固定用户还是临时用户

txtSQL = "select * from student_info"
Set stu = ExecuteSQL(txtSQL, Msgtext)

If Trim(stu!Type) = Trim("固定用户") Then
consume = t * bas.Fields(0) '计算消费金额
consumptionAmount.Text = Val(consume)
Else
consume = t * bas.Fields(1)
consumptionAmount.Text = Val(consume)
End If
txtCash = Val(stu!cash) - consume '计算剩余金额
txtBalance.Text = Val(txtCash)

这些完成之后就更新数据库就好了,只不过这里需要多更新一个学生的表,其他的(line 表、online表跟上面更新的数据一样)

txtSQL = "update student_Info set cash=" & txtCash & " where cardno='" & txtCardNum.Text & "'"
Set stu1 = ExecuteSQL(txtSQL, Msgtext)
‘把余额更新到学生表中

全部代码展示

Private Sub OffLine_Click() '下机
Dim OnLine As ADODB.Recordset '
Dim stu As ADODB.Recordset
Dim line As ADODB.Recordset
Dim bas As ADODB.Recordset
Dim consum As String
Dim consumtime As String
Dim txtSQL As String
Dim Msgtext As String
Dim txtCash As Integer
Dim stu1 As ADODB.Recordset


If txtCardNum.Text = "" Then '判断卡号是否为空
MsgBox "请输入卡号上机", vbOKOnly + vbExclamation, "提示"
Exit Sub
End If

txtSQL = "select * from OnLine_info where cardno='" & txtCardNum.Text & "'"
Set OnLine = ExecuteSQL(txtSQL, Msgtext)

txtSQL = "select * from BasicData_info "
Set bas = ExecuteSQL(txtSQL, Msgtext)

txtSQL = "select * from student_info "
Set stu = ExecuteSQL(txtSQL, Msgtext)

If OnLine.EOF = True Then '判断是否上机
MsgBox "此卡号未上机", vbOKOnly + vbExclamation, "提示"

Else
a = MsgBox("确认要下机?", vbOKOnly + vbExclamation, "提示")
If a = vbOK Then
consumtime = DateDiff("n", Trim(OnLine!Date), Now) '计算消费时间
txttime.Text = Val(consumtime)

If consumtime <= Val(bas!PrepareTime) Then '判断有没有达到上机时间
consum = 0
consumptionAmount.Text = Val(consum)
MsgBox "没有达到上机准备时间,不收取费用", vbOKOnly + vbExclamation, "提示"

'更新数据库
txtSQL = "select * from Line_Info "
Set line = ExecuteSQL(txtSQL, Msgtext)
line.AddNew

line.Fields(1) = Trim(txtCardNum.Text)

line.Fields(2) = Trim(stu.Fields(1))

line.Fields(3) = Trim(stu.Fields(2))

line.Fields(4) = Trim(stu.Fields(4))

line.Fields(5) = Trim(stu.Fields(3))

line.Fields(6) = Trim(OnLine.Fields(6))

line.Fields(7) = Trim(OnLine.Fields(7))

line.Fields(8) = Format(Now(), "yyyy-MM-dd")

line.Fields(9) = Format(Now(), "HH:mm:ss")

line.Fields(10) = txttime.Text

line.Fields(11) = consume

line.Fields(12) = txtCash

line.Fields(13) = "正常下机"

line.Fields(14) = Environ("computername")

line.Update

txtSQL = "delete from Online_Info where cardno='" & txtCardNum.Text & "'"
Set OnLine = ExecuteSQL(txtSQL, Msgtext)

txtSQL = "select * from OnLine_info"
Set OnLine = ExecuteSQL(txtSQL, Msgtext)

OnlinePerson.Caption = OnLine.RecordCount '显示上机人数
OffDate.Text = Date
OffTime.Text = Time
MsgBox "下机完成", vbOKOnly + vbExclamation, "???"
Else

If Val(consumtime) Mod Val(bas!unitTime) = 0 Then
t = Val(consumtime) / Val(bas!unitTime) '计算消费时间(单位为小时)

Else
t = Val(consumtime) / Val(bas!unitTime) + 1
End If

'更新数据库
txtSQL = "select * from student_info"
Set stu = ExecuteSQL(txtSQL, Msgtext)

If Trim(stu!Type) = Trim("固定用户") Then
consume = t * bas.Fields(0) '计算消费金额
consumptionAmount.Text = Val(consume)
Else
consume = t * bas.Fields(1)
consumptionAmount.Text = Val(consume)
End If
txtCash = Val(stu!cash) - consume '余额
txtBalance.Text = Val(txtCash)
'更新数据库
txtSQL = "update student_Info set cash=" & txtCash & " where cardno='" & txtCardNum.Text & "'"
Set stu1 = ExecuteSQL(txtSQL, Msgtext)

txtSQL = "select * from Line_Info "
Set line = ExecuteSQL(txtSQL, Msgtext)
line.AddNew

line.Fields(1) = Trim(txtCardNum.Text)

line.Fields(2) = Trim(stu.Fields(1))

line.Fields(3) = Trim(stu.Fields(2))

line.Fields(4) = Trim(stu.Fields(4))

line.Fields(5) = Trim(stu.Fields(3))

line.Fields(6) = Trim(OnLine.Fields(6))

line.Fields(7) = Trim(OnLine.Fields(7))

line.Fields(8) = Format(Now(), "yyyy-MM-dd")

line.Fields(9) = Format(Now(), "HH:mm:ss")

line.Fields(10) = txttime.Text

line.Fields(11) = consume

line.Fields(12) = txtCash

line.Fields(13) = "正常下机"

line.Fields(14) = Environ("computername")

line.Update

txtSQL = "delete from Online_Info where cardno='" & txtCardNum.Text & "'"
Set line = ExecuteSQL(txtSQL, Msgtext)

txtSQL = "select * from OnLine_info"
Set OnLine = ExecuteSQL(txtSQL, Msgtext)
OnlinePerson.Caption = OnLine.RecordCount '显示上机人数
OffDate.Text = Date
OffTime.Text = Time
MsgBox "下机完成", vbOKOnly + vbExclamation, "提示"
stu.Close

OnLine.Close

End If

End If
End If
End Sub

自我觉得代码有些冗余,如果有更好的写法,请大神们指点一二!!

标签:Trim,之下,Fields,txtSQL,OnLine,机房,Text,收费,line
From: https://blog.51cto.com/u_15902978/5965185

相关文章

  • 第一次机房收费系统之结账
    机房收费系统终于快弄完了,在结账的时候会有选择用户名,而选择了用户名操作员的真实姓名就会随着出现。那么就需要的form_load中添加用户名,在用户名点击事件中加载真实姓名。P......
  • 第一次机房收费系统指点击查询按钮重复出现查询结果
    大家在写机房的时候不知道有没有遇到过这种情况,在本来应该是点击查询就出现一遍要出来的东西,但是如果一直重复点击一直重复出现,如下图:有人可能又说了,那在程序运行的开始直接......
  • 苏州BGP机房托管方案-江苏高防BGP案例
        BGP是用来连接互联网的独立系统的路由选择协议。它是一个加强、完善、可伸缩的协议。BGP支持CIDR寻址方案,该方案增加了互联网上可用IP地址的数量。BGP是为取代最......
  • 云渲染一张图多少钱?云渲染怎么收费的??
    我们知道使用云渲染可以个高效快捷的渲染工程项目文件,节省很多时间,广受CG行业人员的喜爱,而且也相信有很多小伙伴经常会有疑问,云渲染怎么收费?云渲染一张图多少钱?今天就随云......
  • 云渲染怎么收费??云渲染一张图多少钱?
    我们知道使用云渲染可以个高效快捷的渲染工程项目文件,节省很多时间,广受CG行业人员的喜爱,而且也相信有很多小伙伴经常会有疑问,云渲染怎么收费?云渲染一张图多少钱?今天就随云渲......
  • 谷歌上做SEO价钱大概多少,Google优化怎么收费?
    很多做外贸的老板一直头疼,自己组建团队去做优化跟外包其实在成本上有巨大的差距,所以目前谷歌seo代运营很火,关键是你找谁做,市场有没有性价比高的SEO服务?收费如何?答案是:非标......
  • bootstrap之下拉菜单和按钮组
    关于作者:郑云飞,程序员Java(web前端,web后端,oracle数据库ormysql数据库)艺名:天放终于把前面关于BootstrapCSS部分简单的学习了一遍,应该忽视了比较多的细节问题。不过大部分......
  • Google发外链费用预算要投入多少?谷歌seo收费组成
    对于项目方,谷歌发外链到底有投入多少钱才比较合适?答案是:项目总费用的20~30%现在市场上有很多做谷歌seo的代运营,无论他们有怎样的承诺,服务特色,还是独有的优势,都离不开几个大......
  • 期货:5日线之上逢低做多,5日线之下逢高做空
    最近一个月期货亏损达到了2万,真的要重视起来了!账户纯碱开仓时纯碱2301还是主力合约,由于快到交割月,2305成了主力合约。当时在之前的高点空了1笔,赚了100没走,因为......
  • 图扑虚拟现实解决方案,实现 VR 数智机房
    前言如今,虚拟现实技术作为连接虚拟世界和现实世界的桥梁,正加速各领域应用形成新场景、新模式、新业态。效果展示图扑软件基于自研可视化引擎HTforWeb搭建的VR数据......