到现在为止已经结束了机房收费系统基本功能的实现。看了那么多师哥师姐的博客,网上百度了那么多的知识,现在总得自己来回顾一下。下面来谈一下机房收费系统的几个关键点。
机房收费系统的主要功能分成四个部分,分别是:上、下机,结账,报表和组合查询四个模块。也就是这四块,能让我们对vb有更深刻的理解。
首先我们来整理一下关于上机、下机的逻辑关系。上机就是实现数据库中数据显示到文本框中,以及在另外一个数据表中通过代码增加数据实现数据库的“增”的功能。具体的代码如下
<pre name="code" class="vb">Private Sub cmdON_Click()
' Text1.Text = Environ("USENAME")
Dim txtSQL As String
Dim MsgText As String
Dim mrc As ADODB.Recordset '连接student表
Dim mrcc As ADODB.Recordset '连接OnLine表
Dim mrcc1 As ADODB.Recordset '连接Line表
'从Online表中选取输入输入的卡号有没有上机 判断输入卡是否已上机
txtSQL = "select * from OnLine_Info where cardno='" & Trim(txtCardno.Text) & "'"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
If Not mrcc.EOF Then
MsgBox "此卡正在上机!", vbOKOnly + vbExclamation, "提示"
Exit Sub
End If
If Trim(txtCardno.Text) = "" Then
MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示"
txtCardno.SetFocus
Exit Sub
End If
'查看卡是否使用或者余额是否充足
txtSQL = "select * from student_Info where cardno='" & Trim(txtCardno.Text) & "'" & "and status='使用'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = True Then
MsgBox "此卡没有注册或已不再使用", vbOKOnly + vbExclamation, "提示"
Exit Sub
End If
If mrc.Fields(7) <= 0 Then
MsgBox "亲,您的余额不足,请充值后重新登录", vbOKOnly + vbExclamation, "提示"
Else
txtCardno.Text = Trim(mrc.Fields(0))
txtStudentID.Text = Trim(mrc.Fields(1))
txtDepart.Text = Trim(mrc.Fields(5))
txtName.Text = Trim(mrc.Fields(2))
txtType.Text = Trim(mrc.Fields(14))
txtSex.Text = Trim(mrc.Fields(3))
txtOnDate.Text = Format(Date, "yyyy-mm-dd")
txtOnTime.Text = Format(Time, "hh:mm:ss")
txtBalance.Text = Trim(mrc.Fields(7))
End If
'从Online表中选取如果正在上机提示 没有的话就上机成功并且把数据更新到online表中
txtSQL = "select * from OnLine_Info where cardno='" & Trim(txtCardno.Text) & "'"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
If mrcc.EOF = False Then
MsgBox "该卡正在上机", vbOKOnly + vbExclamation, "提示"
txtCardno.Text = ""
txtStudentID.Text = ""
txtDepart.Text = ""
txtType.Text = ""
txtSex.Text = ""
txtOnDate.Text = ""
txtOnTime.Text = ""
txtName.Text = ""
txtBalance.Text = ""
Else
MsgBox "上机成功!", vbOKOnly + vbExclamation, "警告"
mrcc.AddNew
mrcc.Fields(0) = Trim(txtCardno.Text)
mrcc.Fields(1) = Trim(txtType.Text)
mrcc.Fields(2) = Trim(txtStudentID.Text)
mrcc.Fields(3) = Trim(txtName.Text)
mrcc.Fields(4) = Trim(txtDepart.Text)
mrcc.Fields(5) = Trim(txtSex.Text)
mrcc.Fields(6) = Date
mrcc.Fields(7) = Time
mrcc.Fields(8) = VBA.Environ("computername")
mrcc.Fields(9) = Now
mrcc.Update
onliner = onliner + 1
Label16.Caption = onliner
End If
'把数据传给line表中 上机中此时下机时间下机日期还有消费时间都是空的,消费金额为0 添加到数据库中
txtSQL = "select * from Line_Info"
Set mrcc1 = ExecuteSQL(txtSQL, MsgText)
mrcc1.AddNew
mrcc1.Fields(1) = Trim(txtCardno.Text)
mrcc1.Fields(2) = Trim(txtStudentID.Text)
mrcc1.Fields(3) = Trim(txtName.Text)
mrcc1.Fields(4) = Trim(txtDepart.Text)
mrcc1.Fields(5) = Trim(txtSex.Text)
mrcc1.Fields(6) = Trim(txtOnDate.Text)
mrcc1.Fields(7) = Trim(txtOnTime.Text)
mrcc1.Fields(8) = Null
mrcc1.Fields(9) = Null
mrcc1.Fields(10) = Null
mrcc1.Fields(11) = "0.0"
mrcc1.Fields(12) = Trim(mrc.Fields(7))
mrcc1.Fields(13) = "正常上机"
mrcc1.Fields(14) = VBA.Environ("computername")
mrcc1.Update
mrcc.Close
mrcc1.Close
End Sub
期中一些待优化的部分还是需要继续接着优化的,比如时间的获取要考虑实际情况。我们考虑的都是从本机上获取的时间,这样一旦本机发生断电或者时间校正不正确的情况可能就会导致整个系统的故障,对金额的相关计算可能也就会发生变化,这是在用户使用过程中不允许出现的。所以,为了保险起见还是要获取一下服务器的时间。这是关于上机的一些基本功能的实现。后期优化还是要发挥个人的潜力,把自己的思想融入到里面去。