上下机实现

7 篇文章 0 订阅
    软件开发可分为计划阶段、需求分析阶段、设计阶段、编码阶段、测试阶段、运行维护阶段。在机房的学习中需求分析显得很突出,只要思路不顺,代码敲出来也实现不了自己的要求,所以一定要想清楚思路,然后再去做。我感觉自己的思路是对的,但是敲的时候还是在不断的完善,改进,最后便有了融会贯通的感觉,原来这么简单,下面就和大家一起学习一下吧。
上机:
    上机时首先判断输入框,然后调用student_info表 判断账号是否存在,是否注册,是否退卡,余额是否充足。用oline_info表 判断账号是否正在使用。最后显示数据,将上机信息保存在online_info表中,统计表中总数,显示上机人数。

    

                                                                         

 

下机:
    下机这里就比较复杂了。我作为一个慷慨又小气的老板设置的小于最小上机时间的时候是免费的,小于准备时间和最小上机时间之和也是免费的!但是,只要大于了就按递增时间来要钱,而且没有四舍五入,只有入,多一分钟也按一个递增时间单位要钱。计算时间这里有运算,所以这里需要将自己需要的变量定义好,然后直接调用比较方便,我开始的时候就是空想,然后就乱七八糟了,感觉什么都乱套了,但是用定义好的变量问题就简单了。
    思路:判断是否可以使用,是否注册,是否正在上机。
          判断消费时间是否大于准备时间
          判断消费时间是否大于准备时间与最少上机时间之和(这一步可以更改最少上机时间然后改为收费)
          判断用户类型— 固定或临时
          收费——显示数据——更新余额(student_info)——更新line_info——删除online_info数据——更新在线人数

                                                                        

 

Private Sub CmdOffline_Click()
                                                            
    Dim mrc As ADODB.Recordset
    Dim mrc1 As ADODB.Recordset
    Dim mrc2 As ADODB.Recordset
    Dim mrc3 As ADODB.Recordset
    Dim txtsql As String, txtSQL1 As String, txtSQL2 As String, txtSQL3 As String
    Dim msgtext As String, MsgText1 As String, MsgText2 As String, Msgtext3 As String
    Dim intlineTime As Integer                                 '用于存储实际在线时间
    Dim FreeTime As Integer                                     '用于存储不花钱的时间
    Dim curConsume As Integer                                   '用于存储真正花费钱的时间
    Dim curBalance As Single                                   '用于存储用户的余额
    Dim fixedRate As Single                                    '用于存储固定用户单价
    Dim tempRate As Single                                     '用户存储临时用户上机单价
    Dim unitTime As Integer                                     '用于存储递增单位时间
    
                                                               '判断条件

    If txtcardno.Text = "" Then
        MsgBox "请输入卡号!", vbOKOnly, "警告"
        txtcardno.SetFocus
        Exit Sub
   End If

     If Not IsNumeric(txtcardno.Text) Then
         MsgBox "卡号请输入数字!", vbOKOnly, "警告"
         txtcardno.Text = ""
         txtcardno.SetFocus
         Exit Sub
    End If
   
        txtsql = "select * from student_Info where cardno = '" & Trim(txtcardno.Text) & "'"
        Set mrc = ExecuteSQL(txtsql, msgtext)
        If mrc.EOF Then
            MsgBox "该用户尚未注册!", vbOKOnly, "警告"
            txtcardno.SetFocus
            Exit Sub
        Else
            
            If Trim(mrc.Fields(10)) = "不使用" Then
                MsgBox "该卡号已经退卡,不能使用!", vbOKCancel + vbExclamation, "提示"
                txtcardno.SetFocus
                Exit Sub
            Else
            
                txtSQL1 = "select * from online_info where cardno = '" & Trim(txtcardno.Text) & "'"
                Set mrc1 = ExecuteSQL(txtSQL1, MsgText1)
                
                If mrc1.EOF Then
                    MsgBox "该卡没有上机!", vbOKCancel + vbExclamation, "提示"
                    txtcardno.SetFocus
                    Exit Sub
                End If
            
            End If
        End If
     

    txtSQL2 = "select * from basicdata_info"
    Set mrc2 = ExecuteSQL(txtSQL2, MsgText2)
    
    
    
    FreeTime = Val(Trim(mrc.Fields(3)) + Trim(mrc2.Fields(4)))        '不需要花钱的时间
        
                                                                 '计算消费时间
    intlineTime = (Date - DateValue(mrc1!ondate)) * 1440 + (Hour(Time) - Hour(TimeValue(mrc1!OnTime))) * 60 + (Minute(Time) - Minute(TimeValue(mrc1!OnTime)))
    
    curConsume = intlineTime - FreeTime                           '真正花钱的时间
    
    fixedRate = Trim(mrc2!Rate)                                   '固定用户单价
    tempRate = Trim(mrc2!tmprate)                                 '临时用户单价
    unitTime = Trim(mrc2!unitTime)
    
    
    If intlineTime <= Val(Trim(mrc2.Fields(4))) Then             '是否小于准备时间
        txtconsume.Text = 0
    Else
        If intlineTime <= FreeTime Then                             '是否小于免费时间
            txtconsume.Text = 0
        Else
            If intlineTime > FreeTime And Trim(mrc.Fields(14)) = "固定用户" Then     ' 固定用户消费
                txtconsume.Text = fixedRate * Int(((curConsume / unitTime) + 1))
            Else
                If intlineTime > FreeTime And Trim(mrc.Fields(14)) = "临时定用户" Then     ' 临时用户消费
                txtconsume.Text = tempRate * Int(((curConsume / unitTime) + 1))
                
                End If
            End If
        End If
    End If
    
    
    curBalance = Trim(mrc!cash) - txtconsume.Text                                '余额
                                                              '显示数据
        txtcardno.Text = Trim(mrc.Fields(0))
        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))
        txtondate.Text = Trim(mrc1.Fields(6))
        txtontime.Text = Trim(mrc1.Fields(7))
        txtofftime.Text = Time
        txtoffdate.Text = Date
        txtconsumetime.Text = intlineTime
        txtcash.Text = curBalance
    
                                                                     
        MsgBox "下机成功,欢迎下次再来!", vbOKCancel + vbExclamation, "提示"
        
                                           '更新student_info
        mrc.Fields(7) = curBalance
        mrc.Update
        mrc.Close
        
        txtSQL3 = "select * from line_info"
        Set mrc3 = ExecuteSQL(txtSQL3, Msgtext3)
        
                                           '更新line_info
        mrc3.AddNew
        mrc3.Fields(1) = Trim(txtcardno.Text)
        mrc3.Fields(2) = Trim(txtstudentno.Text)
        mrc3.Fields(3) = Trim(txtstudentname.Text)
        mrc3.Fields(4) = Trim(txtdepartment.Text)
        mrc3.Fields(5) = Trim(txtsex.Text)
        mrc3.Fields(6) = Trim(txtondate.Text)
        mrc3.Fields(7) = Trim(txtontime.Text)
        mrc3.Fields(8) = Trim(txtoffdate.Text)
        mrc3.Fields(9) = Trim(txtofftime.Text)
        mrc3.Fields(10) = Trim(Val(txtconsumetime.Text))
        mrc3.Fields(11) = Trim(Val(txtconsume.Text))
        mrc3.Fields(12) = Trim(Val(txtcash.Text))
        mrc3.Fields(13) = "正常下机"
        mrc3.Fields(14) = Environ("computername")
        mrc3.Update
                                                     '更新online_info
        mrc1.Delete
        mrc1.Update
        mrc1.Close
        
        txtonflag.Caption = Str(txtonflag.Caption - 1)             '更新在线人数

End Sub

 

 

 

 

    每一个难点的学习都是经过了很煎熬的过程,感觉身体被掏空,但是做过之后就感觉其实并没有那么难,但是只是有些地方被卡住了,经过看好多次的博客,一点点往前走就成功了。最后最重要的一点就是要好好总结出来,不然用过的东西会很快忘掉。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值