【第一次机房收费系统】学生下机

在敲普通用户学生上机装态查看的时候,里面有几个点大家需要注意一下。
这里写图片描述
查询基本没什么问题,运用的是组合查询的相关知识。点此查看组合查询知识
显示全部前面也提到过,运用代码实现将数据库中的信息调用到MSHFlexgrid控件中。
其实最好玩的还是上机管理这部分,先不管这个功能放在这里合适不合适,反正学到了就是自己的。
这两个功能非常类似,唯一区别就是一个全部下线,一个选中下线。
还是那句话,先把思路理清,后面的就不是事了。
以所有学生下线为例。
这里写图片描述
涉及到的表:online student line basicdata
展示部分代码。

'定义所需变量'
Dim OnlineSQL As String, LineSQL As String, BasicDataSQL As String, studentSQL As String
Dim mrcBasicData As ADODB.Recordset
Dim mrcLine As ADODB.Recordset
Dim mrcStudent As ADODB.Recordset
Dim mrcOnline As ADODB.Recordset

Dim OnlineMsgtext As String, LineMsgtext As String, BasicdataMsgtext As String, Studentmsgtext As String
Dim intLineTime As Integer
Dim intConsumeTime As Integer
Dim curConsume As Currency
Dim curBalance As Currency
Dim CostDate As Integer
Dim CostTime As Integer
Dim a As Integer
Dim b As Integer

'删除online表中的信息,让所有的学生下线'
OnlineSQL = "select * from online_Info "
Set mrcOnline = ExecuteSQL(OnlineSQL, OnlineMsgtext)
'如果没有人上线,提示'
If mrcOnline.RecordCount = 0 Then
    MsgBox "没有学生上线!", vbOKOnly + vbInformation, "苏轼提醒您"
    Exit Sub
End If

a = myFlexGrid.rows - 1
If myFlexGrid.rows = 0 Then
   MsgBox "没有学生上线!", vbOKOnly + vbInformation, "苏轼提醒您"
   Exit Sub
End If
myFlexGrid.rows = 1
    For b = a To 1 Step -1
        '从basicdata表中读取数据'
        BasicDataSQL = "select * from basicdata_Info"
        Set mrcBasicData = ExecuteSQL(BasicDataSQL, BasicdataMsgtext)

        '从student表中读取数据'
        studentSQL = "select * from student_Info"
        Set mrcStudent = ExecuteSQL(studentSQL, Studentmsgtext)

        '从line表中读取数据'
        LineSQL = "select * from line_Info"
        Set mrcLine = ExecuteSQL(LineSQL, LineMsgtext)

        '从online表中读取数据'
        OnlineSQL = "select * from online_Info"
        Set mrcOnline = ExecuteSQL(OnlineSQL, OnlineMsgtext)

        CostTime = DateDiff("n", Trim(Hour(Time)), Trim(mrcOnline!OnTime))
        CostDate = DateDiff("n", Trim(Date), Trim(mrcOnline!OnDate))
        intLineTime = Format(Str(Val(CostTime) + Val(CostDate)))

        '判断实际在线时间是否小于准备时间,若小于则消费时间为0'
        If intLineTime < mrcBasicData!prepareTime Then
            intConsumeTime = 0
         '判断实际在线时间是否小于最低消费时间,若小于,则消费时间为最低消费时间'
         ElseIf intLineTime < mrcBasicData!leastTime Then
            intConsumeTime = mrcBasicData!leastTime
         Else
            intConsumeTime = Round(intLineTime / mrcBasicData!unitTime) * mrcBasicData!unitTime  'round()函数为四舍五入函数'
         End If

         '计算消费金额(消费金额=消费时间/30*用户类型的半小时费用)'
         '固定用户(为什么要除以30) 最小计费单位'
         If Trim(mrcStudent.Fields(14)) = "固定用户" Then
            curConsume = intConsumeTime / 30 * mrcBasicData!Rate
        Else
            curConsume = intConsumeTime / 30 * mrcBasicData!tmpRate
         End If

        '计算余额(账户余额=原账户余额-消费金额)'
        curBalance = mrcStudent!cash - curConsume

         '更新学生信息表的余额'
         mrcStudent.Fields(7) = curBalance
         mrcStudent.Update
         mrcStudent.Close

         '更新上机记录表(line表)'
         LineSQL = "select * from line_Info"
         Set mrcLine = ExecuteSQL(LineSQL, LineMsgtext)
         mrcLine.AddNew
          '更新上机记录表(line表)'
         LineSQL = "select * from line_Info"
         Set mrcLine = ExecuteSQL(LineSQL, LineMsgtext)
         mrcLine.AddNew
         mrcLine.Fields(1) = Trim(mrcOnline!cardno)
         ……
         mrcLine.Fields(13) = "强制下机"
         mrcLine.Fields(14) = Trim(Environ("computername"))
         mrcLine.Update

         '删除在线表中的信息'
         OnlineSQL = "select * from online_Info"
         Set mrcOnline = ExecuteSQL(OnlineSQL, OnlineMsgtext)
         mrcOnline.Delete
         mrcOnline.Update

         Next b
         MsgBox "所有学生已下线!", vbOKOnly + vbInformation, "苏轼提醒您"

选中学生下机多了一个选择学生的过程,也很简单。

'选中 删除'
myFlexGrid.RemoveItem myFlexGrid.RowSel

弄完这个,学生下机就搞定了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 57
    评论
评论 57
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值