机房收费系统上下机
2018-01-01 19:28
239 查看
前言
机房收费系统最关键的几个部分包括上下机,组合查询,结账。上下机这部分主要还是理逻辑关系,理清各个窗体之间的关系,还有表与表之间的关系。把基本功能实现之后,自己就会发现原来需要注意和完善的地方还有很多,需要我们认真细心去对待。
主要内容
由于frmMain窗体为MDI窗体,所以不能直接添加控件,需要借助picturebox。
一、上机
上机涉及到的表有student表(判断该卡是否注册和不使用),basicdata表(卡内余额是否小于最小上机金额),online表(将上机信息更新到online表中)
上机逻辑图:
上机代码:
1、当前时间显示以秒计算:
需要用到timer控件,设置timer控件的interval为1000
代码:
只需要更改一下label的属性即可实现,将backstyle设置为0—transparent
二、下机
下机逻辑图:
下机部分需要考虑的地方比上机多一些,重点是计算消费时间和消费金额,只要按照自己的思路走,不同的计算方法也可以,在这部分我看到了百花齐放。
下机涉及到的表有:
line表:下机的时候把下机有关的信息更新到line表中。
online表和student表:判断卡号是否存在和上机,显示当前的上机人数,卡号下机之后把online表中的信息需要删除。
basicdata表:消费时间需要和准备时间和最小上机时间做比较,计算消费时间和消费金额用。
机房收费系统最关键的几个部分包括上下机,组合查询,结账。上下机这部分主要还是理逻辑关系,理清各个窗体之间的关系,还有表与表之间的关系。把基本功能实现之后,自己就会发现原来需要注意和完善的地方还有很多,需要我们认真细心去对待。
主要内容
由于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 Sub2、label显示设置为不透明:
只需要更改一下label的属性即可实现,将backstyle设置为0—transparent
二、下机
下机逻辑图:
下机部分需要考虑的地方比上机多一些,重点是计算消费时间和消费金额,只要按照自己的思路走,不同的计算方法也可以,在这部分我看到了百花齐放。
下机涉及到的表有:
line表:下机的时候把下机有关的信息更新到line表中。
online表和student表:判断卡号是否存在和上机,显示当前的上机人数,卡号下机之后把online表中的信息需要删除。
basicdata表:消费时间需要和准备时间和最小上机时间做比较,计算消费时间和消费金额用。