您的位置:首页 > 其它

机房收费系统上下机

2018-01-01 19:28 239 查看
前言

       机房收费系统最关键的几个部分包括上下机,组合查询,结账。上下机这部分主要还是理逻辑关系,理清各个窗体之间的关系,还有表与表之间的关系。把基本功能实现之后,自己就会发现原来需要注意和完善的地方还有很多,需要我们认真细心去对待。

主要内容

        由于frmMain窗体为MDI窗体,所以不能直接添加控件,需要借助picturebox。

一、上机

       上机涉及到的表有student表(判断该卡是否注册和不使用),basicdata表(卡内余额是否小于最小上机金额),online表(将上机信息更新到online表中)

              上机逻辑图:



上机代码:

Private Sub cmdonline_Click()

Dim txtSQL, txtSQL1, txtSQL2, MsgText As String
Dim mrc As ADODB.Recordset
Dim mrc1 As ADODB.Recordset
Dim mrc2 As ADODB.Recordset

'判断是否为空
If txtcardno.Text = "" Then
MsgBox "请输入要上机的卡号!", 48, "提示"
txtcardno.SetFocus
Exit Sub
End If

'判断卡号是否注册
txtSQL = "select * from student_Info where cardno= '" & Trim(txtcardno.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = True Then
MsgBox "此卡号不存在", vbOKOnly + vbExclamation, "警告"
txtcardno.Text = ""
txtcardno.SetFocus
mrc.Close
Exit Sub
End If

'查BasicData_Info,判断卡内余额是否小于最小金额
txtSQL2 = "select * from BasicData_Info"
Set mrc2 = ExecuteSQL(txtSQL2, MsgText)
'mrc2.MoveFirst
If Val(mrc.Fields(7)) < Val(mrc2.Fields(5)) Then
MsgBox "余额不足,请充值后上机", 48, "提示"
Exit Sub
End If

'数据集中有记录,但是该卡已经停用
txtSQL = "select * from student_Info where cardno='" & txtcardno.Text & "'and status='不使用'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = False Then
MsgBox "该卡已经注销,请重新输入!", 48, "提示"
txtcardno.Text = ""
txtcardno.SetFocus
Exit Sub
End If

'查OnLine_Info,看该卡是否在上机
txtSQL1 = "select * from OnLine_Info where cardno='" & Trim(txtcardno.Text) & "'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
If mrc1.EOF = False Then
MsgBox "该卡正在上机!"
'正常上机,显示卡号信息
txtSQL = "select * from student_Info where cardno='" & Trim(txtcardno.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
txttype.Text = Trim(mrc.Fields(14))
txtstudentno.Text = Trim(mrc.Fields(1))
txtstudentname.Text = Trim(mrc.Fields(2))
txtdepartment.Text = Trim(mrc.Fields(4))
txtsex.Text = Trim(mrc.Fields(3))
txtontime.Text = Trim(mrc.Fields(6))
txtontime1.Text = Trim(mrc.Fields(7))
Else
txttype.Text = Trim(mrc.Fields(14))
txtstudentno.Text = Trim(mrc.Fields(1))
txtstudentname.Text = Trim(mrc.Fields(2))
txtdepartment.Text = Trim(mrc.Fields(4))
txtsex.Text = Trim(mrc.Fields(3))
txtontime.Text = Trim(mrc.Fields(6))
txtontime1.Text = Trim(mrc.Fields(7))

mrc.Close
mrc1.Close
Exit Sub
End If

'更新OnLine_Info数据
txtSQL1 = "select * from OnLine_Info"        '增加状态为上机的表的数据
Set mrc1 = ExecuteSQL(txtSQL1, MsgText)
mrc1.AddNew
mrc1.Fields(0) = Trim(txtcardno.Text)
mrc1.Fields(1) = Trim(txttype.Text)
mrc1.Fields(2) = Trim(txtstudentno.Text)
mrc1.Fields(3) = Trim(txtstudentname.Text)
mrc1.Fields(4) = Trim(txtdepartment.Text)
mrc1.Fields(5) = Trim(txtsex.Text)
mrc1.Fields(6) = Trim(Date)
mrc1.Fields(7) = Trim(Time)
mrc1.Fields(8) = "SOPHIA"     '将计算机名同步到数据库的相应表格中
mrc1.Fields(9) = Date
mrc1.Update

'显示当前上机人数
txtSQL = "select * from OnLine_Info"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
If mrc1.EOF Then
labcount.Caption = 0
Else
labcount.Caption = mrc1.RecordCount
End If

End Sub

1、当前时间显示以秒计算:

        需要用到timer控件,设置timer控件的interval为1000

代码:

Private Sub Timer1_Timer()
labtime.Caption = Time
End Sub
2、label显示设置为不透明:

     只需要更改一下label的属性即可实现,将backstyle设置为0—transparent

 二、下机    

     下机逻辑图:



      下机部分需要考虑的地方比上机多一些,重点是计算消费时间和消费金额,只要按照自己的思路走,不同的计算方法也可以,在这部分我看到了百花齐放。

      下机涉及到的表有:

line表:下机的时候把下机有关的信息更新到line表中。

online表和student表:判断卡号是否存在和上机,显示当前的上机人数,卡号下机之后把online表中的信息需要删除。

basicdata表:消费时间需要和准备时间和最小上机时间做比较,计算消费时间和消费金额用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: