机房收费系统之下机

来源:互联网 发布:java销售 编辑:程序博客网 时间:2024/05/18 22:14

前言

 

                    上次在“取经”的过程中闯过了“上机"这一关(点我),今天小编带大家一起过”下机“这一关。


.流程图:

 

 

 

.注意:

 

 *计算消费余额:分为四种情况(注意分固定用户和临时用户

查询基本数据表,获得设定的基本数据:

1.判断实际上机时间是否小于准备时间,若小于则消费时间为0

2.判断实际上机时间是否小于最低消费时间,若小于则消费时间为0

3.实际上机时间大于最低消费时间则按单位时间算,分为固定用户和临时用户

4.当实际上机时间大于单位时间,就按有几个单位时间算,分为固定用户和临时用户

 

*计算余额:账户余额=原账户余额-消费金额 (原账户余额是学生表中的cash)

 

.代码:


Private Sub cmdDOWN_Click()  '定义数据集对象  Dim mrcStudent As ADODB.Recordset  Dim mrcRecharge As ADODB.Recordset  Dim mrcLine As ADODB.Recordset  Dim mrcOnLine As ADODB.Recordset  Dim mrcBasicData As ADODB.Recordset    '定义字符串语句  Dim OnLineSQL As String, StudentSQL As String, BasicDataSQL As String, LineSQL As String    '定义字符串变量,返回查询信息  Dim OnMsgtext As String, StuMsgtext As String, BMsgtext As String, LMsgtext As String    '存储实际在线时间  Dim intLineTime As Integer  Dim intConsumeTime As Integer   '存储用户真正花的钱的时间  Dim curConsume As Single    '存储用户的余额  Dim curBalance As Single    '用于存储固定用户的单位金额  Dim fixedunit As Single    '用于存储临时用户的单位金额  Dim temunit As Single      '判断是否输入卡号  If Not Testtxt(txtCard.Text) Then     MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "警告"     txtCard.SetFocus     Exit Sub   Else      '判断此卡号是否存在    StudentSQL = "select * from student_Info where cardno = '" & Trim(txtCard.Text) & "'"    Set mrcStudent = ExecuteSQL(StudentSQL, StuMsgtext)    If mrcStudent.EOF Then        MsgBox "该卡号尚未注册!请重新输入!", vbOKOnly, "警告"        txtCard.SetFocus        Exit Sub    Else        '判断该卡号是否可以使用(是否已被退卡)        If mrcStudent.Fields(10) = "不使用" Then            MsgBox "该卡已经退卡,不能进行下机处理!", vbOKOnly + vbExclamation, "提示"            txtCard.Text = ""            txtCard.SetFocus            Exit Sub            Else       '判断是否上机                       OnLineSQL = "select * from OnLine_Info where cardno ='" & Trim(txtCard.Text) & "'"    Set mrcOnLine = ExecuteSQL(OnLineSQL, OnMsgtext)        If mrcOnLine.EOF Then            MsgBox "此卡没有上机,请上机!", 0 + 48, "提示"        txtCard.Text = ""        txtStuNo.Text = ""        txtDepartment.Text = ""        txtSex.Text = ""        txtOnDate.Text = ""        txtOnTime.Text = ""        txtStyle.Text = ""        txtName.Text = ""        txtConsumTime.Text = ""        txtConsumCash.Text = ""        txtBalance.Text = ""        txtDownDate.Text = ""        txtDownTime.Text = ""        Exit Sub            End If   End If End IfEnd If'查询基本数据表,获得设定的基本数据    BasicDataSQL = "select * from BasicData_Info "    Set mrcBasicData = ExecuteSQL(BasicDataSQL, BMsgtext)  '计算消费时间     '实际在线时间     intLineTime = (Date - DateValue(mrcOnLine!onDate)) * 1440 + (Hour(Time) - Hour(TimeValue(mrcOnLine!OnTime))) * 60 + (Minute(Time) - Minute(TimeValue(mrcOnLine!OnTime)))         '把固定用户,临时用户单位时间的费用分别赋给费用     fixedunit = Val(mrcBasicData.Fields(0))  '把固定金额的费用赋给固定用户     temunit = Val(mrcBasicData.Fields(1))    '把临时用户的费用赋给临时用户      '判断时间3种情况          '判断实际上机时间是否小于准备时间,若小于则消费时间为0     If intLineTime <= Val(Trim(mrcBasicData.Fields(4))) Then        txtConsumCash.Text = 0     Else             '判断实际上机时间是否小于最低消费时间,若小于则消费时间为0        If intLineTime <= Val(Trim(mrcBasicData.Fields(3))) Then           txtConsumCash.Text = 0        Else                  '实际上机时间大于最低消费时间则按单位时间算,分为固定用户和临时用户         If intLineTime >= Val(Trim(mrcBasicData!leastTime)) And intLineTime < Val(Trim(mrcBasicData!unitTime)) And Trim(mrcStudent.Fields(14)) = "固定用户" Then           txtConsumTime.Text = fixedunit         Else           If intLineTime >= Val(Trim(mrcBasicData!leastTime)) And intLineTime < Val(Trim(mrcBasicData!unitTime)) And Trim(mrcStudent.Fields(14)) = "临时用户" Then             txtConsumTime.Text = temunit           Else                        '当实际上机时间大于单位时间,就按有几个单位时间算,分为固定用户和临时用户            If intLineTime >= Val(Trim(mrcBasicData!unitTime)) And Trim(mrcStudent.Fields(14)) = "固定用户" Then              curConsume = intLineTime / Val(Trim(mrcBasicData!unitTime))              txtConsumCash.Text = Val(curConsume) * Val(fixedunit)            Else              If intLineTime >= Val(Trim(mrcBasicData!unitTime)) And Trim(mrcStudent.Fields(14)) = "临时用户" Then                 curConsume = intLineTime / Val(Trim(mrcBasicData!unitTime))                 txtConsumCash.Text = Val(curConsume) * Val(temunit)                               End If            End If          End If        End If      End If    End If      '计算余额(账户余额=原账户余额-消费余额)     curBalance = Val(mrcStudent!cash) - Val(txtConsumCash.Text)         '下机信息显示     txtDownDate.Text = Date     txtDownTime.Text = Time     txtStuNo.Text = Trim(mrcOnLine.Fields(2))     txtName.Text = Trim(mrcOnLine.Fields(3))     txtDepartment.Text = Trim(mrcOnLine.Fields(4))     txtStyle.Text = Trim(mrcOnLine.Fields(1))     txtSex.Text = Trim(mrcOnLine.Fields(5))     txtOnDate.Text = Trim(mrcOnLine.Fields(6))     txtOnTime.Text = Trim(mrcOnLine.Fields(7))     txtConsumTime.Text = intLineTime     txtBalance.Text = Val(curBalance)     txtConsumCash.Text = Val(curConsume) * Val(temunit)     '判断余额是否有钱          MsgBox "下机成功,欢迎下次再来!", 0 + 48, "提示"          '更新学生信息表的余额     mrcStudent.Fields(7) = Val(curBalance)     mrcStudent.Update     mrcStudent.Close          '更新上机记录表line表           LineSQL = "select * from Line_Info"      Set mrcLine = ExecuteSQL(LineSQL, LMsgtext)     mrcLine.AddNew     mrcLine.Fields(1) = Trim(txtCard.Text)     mrcLine.Fields(2) = Trim(txtStuNo.Text)     mrcLine.Fields(3) = Trim(txtName.Text)     mrcLine.Fields(4) = Trim(txtDepartment.Text)     mrcLine.Fields(5) = Trim(txtSex.Text)     mrcLine.Fields(6) = Trim(txtOnDate.Text)     mrcLine.Fields(7) = Trim(txtOnTime.Text)     mrcLine.Fields(8) = Trim(txtDownDate.Text)     mrcLine.Fields(9) = Trim(txtDownTime.Text)     mrcLine.Fields(10) = Trim(Val(txtConsumTime.Text))     mrcLine.Fields(11) = Trim(Val(txtConsumCash.Text))     mrcLine.Fields(12) = Trim(Val(txtBalance.Text))     mrcLine.Fields(13) = "正常下机"     mrcLine.Fields(14) = Trim(VBA.Environ("computername"))     mrcLine.Update     mrcLine.Close          '删除在线表中的信息       OnLineSQL = "select * from OnLine_Info"      Set mrcOnLine = ExecuteSQL(OnLineSQL, OnMsgtext)      mrcOnLine.Delete      mrcOnLine.Update'显示正在上机的人数    OnLineSQL = "select * from OnLine_Info"    Set mrcOnLine = ExecuteSQL(OnLineSQL, OnMsgtext)    If mrcOnLine.EOF = True Then       Label22.Caption = 0    Else       Label22.Caption = mrcOnLine.RecordCount    End If  End Sub


【结语

           简单与难的区别就是做完与没做完的区别、仅此而已(借用琛琛师哥的话),给自己一个成长的机会,去做,相信自己,加油!

   

    


1 0
原创粉丝点击