上下机实现

    软件开发可分为计划阶段、需求分析阶段、设计阶段、编码阶段、测试阶段、运行维护阶段。在机房的学习中需求分析显得很突出,只要思路不顺,代码敲出来也实现不了自己的要求,所以一定要想清楚思路,然后再去做。我感觉自己的思路是对的,但是敲的时候还是在不断的完善,改进,最后便有了融会贯通的感觉,原来这么简单,下面就和大家一起学习一下吧。
上机:
    上机时首先判断输入框,然后调用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

 

 

 

 

    每一个难点的学习都是经过了很煎熬的过程,感觉身体被掏空,但是做过之后就感觉其实并没有那么难,但是只是有些地方被卡住了,经过看好多次的博客,一点点往前走就成功了。最后最重要的一点就是要好好总结出来,不然用过的东西会很快忘掉。
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值