zoukankan      html  css  js  c++  java
  • 机房收费系统——上下机

       自学生管理系统以后,进入了机房收费系统,开始自己真的很抵触这个东西,因为没有源码,只能靠自己了。对代码没有亲和力的我,只能硬着头皮硬闯。下面看看就讲讲我的上下机的辛酸路吧!

    【分析】

       界面:很简单,只有两个简单的Command命令按钮掌控着上下机。

       功能:上机时,窗体显示该学生的基本信息;下机时,更新学生卡里的余额。计算消费情况。上下机时及时更新上机人数。

       需求:用到的数据库为:student表;online表;line表;basicdata表;

    【逻辑】

    【实现】
    上机部分:

        1、定义变量:

        

        Dim mrs As ADODB.Recordset
        Dim strSQL As String
        Dim MsgString As String
        Dim mrs1 As ADODB.Recordset
        Dim mrs2 As ADODB.Recordset

        2、链接数据库:

        

        strSQL = "select * from student_info where cardno='" & Trim(txtCardno.Text) & "'and status='使用'" '链接学生表
        Set mrs = ExecuteSQL(strSQL, MsgString)
        strSQL = "select * from online_Info where cardno='" & Trim(txtCardno.Text) & "'" '链接online表
        Set mrs1 = ExecuteSQL(strSQL, MsgString)
        strSQL = "select * from basicdata_info " '链接basicdata表
        Set mrs2 = ExecuteSQL(strSQL, MsgString)

        3、判断部分:

            

            '判断卡号是否为空
            If txtCardno.Text = "" Then
                MsgBox "卡号不能为空,请输入卡号!", vbOKOnly + vbExclamation, "警告!"
                txtCardno.Text = ""
                txtCardno.SetFocus
                Exit Sub
            End If
            
            '判断卡号是否存在
            If mrs.EOF Then
                MsgBox "此卡尚未注册,请先注册!", vbOKOnly + vbExclamation, "警告!"
                txtCardno.Text = ""
                txtCardno.SetFocus
                Exit Sub
            Else
            
                '判断此卡是否已经上机
                If mrs1.EOF = False Then
                    MsgBox "此卡正在上机!", vbOKOnly + vbExclamation, "警告!"
                
                    txtType.Text = mrs1.Fields(1)
                    txtStudentno.Text = mrs1.Fields(2)
                    txtName.Text = mrs1.Fields(3)
                    txtDepartment.Text = mrs1.Fields(4)
                    txtSex.Text = mrs1.Fields(5)
                    txtOndate.Text = mrs1.Fields(6)
                    txtOntime.Text = mrs1.Fields(7)
                    txtCardno.Text = ""
                    txtCardno.SetFocus
                    Exit Sub
                Else            
                    '判断余额
                    If Val(mrs.Fields(7)) < Trim(mrs2.Fields(3)) Then
                        MsgBox "余额不足,请充值后再登录!"
                        txtCardno.Text = ""
                        txtCardno.SetFocus
                        Exit Sub
                    Else
                        '调用学生信息到输入框。上机成功!
                        txtType.Text = mrs.Fields(14)
                        txtStudentno.Text = mrs.Fields(1)
                        txtName.Text = mrs.Fields(2)
                        txtDepartment.Text = mrs.Fields(4)
                        txtSex.Text = mrs.Fields(3)
                        txtChargemoney.Text = mrs.Fields(7)
                        txtOndate.Text = Date
                        txtOntime.Text = Time
                        txtOfftime.Text = ""
                        txtOffdate.Text = ""
                        txtCtime.Text = ""
                        txtCmoney.Text = ""
                        MsgBox "成功上机!", vbOKOnly + vbExclamation, "警告!"
                        Label18.Caption = "欢迎使用!"
    End If
        End If 
    End If

    4、更新部分:

                        

                       With mrs1       '添加online表
                            .AddNew
                            .Fields(0) = Trim(txtCardno.Text)
                            .Fields(1) = Trim(txtType.Text)
                            .Fields(2) = Trim(txtStudentno.Text)
                            .Fields(3) = Trim(txtName.Text)
                            .Fields(4) = Trim(txtDepartment.Text)
                            .Fields(5) = Trim(txtSex.Text)
                            .Fields(6) = Date
                            .Fields(7) = Time
                            .Fields(8) = VBA.Environ("computername")
                            .Fields(9) = Date + Time
                            
                            .Update
                            txtCount.Text = mrs1.RecordCount
                            .Clone
                            .Close
                        End With
                        With mrs '更新学生表
                            .Fields(11) = "未结账"
                            .Update
                            .Clone
                            .Close
                        End With
                        strSQL = "select * from online_info " '更新上机人数
                        Set mrs2 = ExecuteSQL(strSQL, MsgString)
                        txtCount.Text = mrs2.RecordCount

    理清思路,代码敲起来才更容易。

    对于下机部分:

    基本数据设定表中存在:准备时间和至少上机时间;这里规定若上机时间不超过准备时间不收费,小于至少上机时间也不收费。难点部分也就在计算消费金额部分,所以这里就重点显示计算消费金额部分:

    '数据库连接:

        strSQL = "select * from student_info where cardno='" & Trim(txtCardno.Text) & "'and status='使用'"'连接学生数据库
        Set mrs = ExecuteSQL(strSQL, MsgString)
        strSQL = "select * from online_info where cardno='" & Trim(txtCardno.Text) & "'"'连接正在上机的卡数据库
        Set mrs1 = ExecuteSQL(strSQL, MsgString)
        strSQL = "select * from online_info"
        Set mrs2 = ExecuteSQL(strSQL, MsgString)
        strSQL = "select * from basicdata_info"'连接基本数据设定数据库
        Set mrs3 = ExecuteSQL(strSQL, MsgString)
        strSQL = "select * from line_info"'连接上机记录数据库
        Set mrs4 = ExecuteSQL(strSQL, MsgString)
            '页面更新信息
            txtStudentno.Text = mrs1.Fields(2)
            txtType.Text = mrs1.Fields(1)
            txtName.Text = mrs1.Fields(3)
            txtSex.Text = mrs1.Fields(5)
            txtDepartment.Text = mrs1.Fields(4)
            txtOntime.Text = mrs1.Fields(7)
            txtOndate.Text = mrs1.Fields(6)
            txtOfftime.Text = Time
            txtOffdate.Text = Date
            txtChargemoney.Text = mrs.Fields(7)
            txtCtime.Text = Abs(Val(DateDiff("n", Time, Trim(txtOntime.Text))))'计算消费时间
            
            '判断消费时间是否小于准备时间
            If Trim(txtCtime.Text) < OfterTime Then
                txtCtime.Text = 0
                txtCmoney.Text = 0
                txtChargemoney.Text = mrs.Fields(7)
            End If
            
            '判断消费时间是否小于至少上机时间
            If Trim(txtCtime.Text) < inTtime1 Then
                txtCtime.Text = 0
                txtCmoney.Text = 0.5
                txtChargemoney.Text = mrs.Fields(7)
            Else        
                    If Trim(mrs.Fields(14)) = "临时用户" Then'若为临时用户,消费金额的计算
                        txtCmoney.Text = (Int(Trim(txtCtime.Text) / 30) + 1) * (Trim(mrs3.Fields(1)) / 2)
                        txtChargemoney.Text = Trim(mrs.Fields(7)) - Trim(txtCmoney.Text)
                 Else'若为固定用户,消费金额的计算
                        txtCmoney.Text = (Int(Trim(txtCtime.Text) / 30) + 1) * (Trim(mrs3.Fields(0)) / 2)
                        txtChargemoney.Text = Trim(mrs.Fields(7)) - Trim(txtCmoney.Text)
                 End If
            
                MsgBox "下机成功!", vbOKOnly + vbExclamation, "提示!"
    End If

        这样一来,其实上下机只有理清逻辑关系,按照自己的思路敲下来,也很简单。所以不要给自己随便定位,没有什么不可能的,米老师说过:每天多给自己一些正能量的词汇。不要凭空的给自己压力,把自己的思维固定住了。相信自己可以做到的!我写的这个只是按着自己的思路敲了,其实有些过程可以复用的,期待自己更新~~~~~~,人生就是不断的更新,不断的超越,加油!



  • 相关阅读:
    Ubuntu 16 安装redis客户端
    crontab 参数详解
    PHP模拟登录发送闪存
    Nginx配置端口访问的网站
    Linux 增加对外开放的端口
    Linux 实用指令之查看端口开启情况
    无敌的极路由
    不同的域名可以指向同一个项目
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error
    Redis 创建多个端口
  • 原文地址:https://www.cnblogs.com/zhoulitong/p/6412468.html
Copyright © 2011-2022 走看看