机房收费系统令我头疼的收费问题

        转眼间又到周日了,一周的生活很快结束了,回想自己一周的经历,主要有以下几个:

        1、 每天的两个小时英语

        2、 每天三或者四个番茄时间自考书

        3、 每天上下的时间学生收费系统

        一天之后总共19个番茄,出去英语四个番茄、自考四个剩下的10个番茄都给力机房收费系统,这周对于收费系统可谓是呕心沥血啊。在这机房收费系统中对于上机下机中的收费问题可是费了好大的周折才弄清楚,写完代码。

对于收费问题,当我们刷卡上机时,系统显示卡号,学生信息、刷卡时间以及卡的余额(此处需要使用表(student_Info)中该卡的余额),然后可以立刻将主窗体中得到的上机信息更新到数据表(Online_Info)中。这都没有问题,上机完成,接下来就是下机了。

    此时考虑问题

    上机要求:

消费/半小时

递增时间/m

至少上机时间/m

准备时间/m

最少金额/RMB

固定用户

10

20

10

2

5

临时用户

15

        看上去是听少,就几点。但是细细想起来还是真够麻烦的。这个过程中用到的数据库有student_InfoOnline_InfoLine_Info.

从数据表online_Info中获取上机日期(txtoffdate)以及上机日期(txtofftime),然后传到主窗体的上机日期(txtondate)上机时间(txtontime)在计算上机时间(time)的时候就应该考虑上机的要求了。

        上机时间(time=上机时间(time-准备时间(time

        上机时间太短,不能让改卡下机,或者有信息提示。

        此时应该考虑上机计算的时间(time)和0的比较如果小于0则消费金额为0,剩余金额是原来金额(这个金额是student_Info中的cash这个取值之后然后更新)

        如果上机计算的时间(time)和0的比较如果大于0,剩余金额就应该按照上机要就计算消费了。

        1................固定用户下:(上机时间/30*消费。

                1.1................当上机时间不足半小时:

                        1.1.1................不足半小时的情况下而且消费时间大于递增时间,消费金额为半小时费用。

                        1.1.2................不足半小时的情况下而且消费时间也小于半小时,金额为0

                1.2................当上机时间超过半小时此时还得考虑余数(加入上机时间为50分钟,每半小时收费固定金额那么省下的20分钟该如何收取,社该20分钟为余数)问题,

                         1.2.1................如果余数大于递增时间。

                         1.2.2................如果余数小于递增时间。

        2................临时用户下:(上机时间/60*消费

        此时考虑的应该和固定用户一样就不重复写了。

        写完之后总有种不真实的感觉,是不是我想得有些复杂了,还是思路正确,代码实现的过程中走了弯路。

        下面是代码实现。

         '获取student_Info表中的cash       

    txtslq = "select * from student_Info where cardno='" & Trim(txtcardNo.Text) & "'" & "and status='" & "使用" & "'"
    Set Mrc = ExecuteSQL(txtSQL, MsgText)
    txtcash.Text = Mrc!cash
    Mrc.Close

        'online_Info 数据表中的数据信息,同步到文本框中去     

    txtSQLon = "select * from online_info where cardno='" & Trim(txtcardNo.Text) & "'"
    Set Mrcon = ExecuteSQL(txtSQLon, MsgText)
    txtcardNo.Text = Mrcon!cardno
    txtType.Text = Mrcon!cardtype
    txtStudentNo.Text = Mrcon!studentNo
    txtStudentname.Text = Mrcon!studentname
    txtDepartment.Text = Mrcon!department
    txtSex.Text = Mrcon!sex
    txtOnDate.Text = Mrcon!ondate
    txtOnTime.Text = Mrcon!ontime
    txtOffDate.Text = Date
    txtOffTime.Text = Hour(Time) & ":" & Minute(Time)
    Mrcon.Close

                '计算消费时间(刷卡下机时间-准备时间-开始刷卡上机时间)

                               '准备时间在Basic_Info 表中获得

                txtsqlB = "select * from basicdata_Info "
                Set MrcB = ExecuteSQL(txtsqlB, MsgText)
                    Dim Rate
                    Dim tmpRate
                    Dim preparetime
                    Dim unitTime
                    Dim leasttime
                    Rate = MrcB!Rate
                    tmpRate = MrcB!tmpRate
                    unitTime = MrcB!unitTime
                    preparetime = MrcB!preparetime
                    leasttime = MrcB!leasttime
                    
                MrcB.Close

                              '计算消费时间

                    txtconsumeTime.Text = DateDiff("n", CDate(txtOnDate.Text), CDate(txtOffDate.Text))
                    txtconsumeTime.Text = txtconsumeTime.Text + DateDiff("n", CDate(txtOnTime.Text), CDate(txtOffTime.Text))
                    txtconsumeTime.Text = txtconsumeTime.Text - preparetime
                    If txtconsumeTime.Text < 0 Then
                        txtconsumeTime.Text = 0
                        txtconsume.Text = 0
                    Else
                        If txtconsumeTime.Text - leasttime < 0 Then
                            MsgBox "对不起您的上机时间太短不允许下机", , "提示"
                            Exit Sub
                        Else

                                              ’有消费时间,计算消费金额

                                                       ’先要看改用户是不是固定的或者是临时用户

                            If Trim(txtType.Text) = "固定用户" Then
                                txtconsume.Text = Int(txtconsumeTime.Text / 30) * Val(Rate)
                                If Val(((Val(txtconsumeTime.Text) + 30) Mod 30) * 60) > Val(Trim(unitTime)) Then
                                    txtconsume.Text = Val(Trim(txtconsume.Text)) + Val(Trim(Rate))
                                End If
                            Else
                                txtconsume.Text = Int(txtconsumeTime.Text / 60) * Val(tmpRate)
                                  If Val((txtconsume.Text Mod 60) * 60) > Val(Trim(unitTime)) Then
                                    txtconsume.Text = txtconsume.Text + Trim(tmpRate)
                                End If
                            End If
                        End If
                    End If
                    txtcash.Text = txtcash.Text - txtconsume.Text


        ’删除online_Info 中该学生的上机记录

    txtSQLon = "select * from online_Info where cardno='" & Trim(txtcardNo.Text) & "'"
    Set Mrcon = ExecuteSQL(txtSQLon, MsgText)
    Mrcon.Delete
    Mrcon.Close

        ‘所有该学生的信息都显示在主窗体的各个文本框中,然后添加到line_Info中

        txtSQL = "select * from line_Info "
        Set Mrc = ExecuteSQL(txtSQL, MsgText)
        Mrc.AddNew
        
        Mrc!cardno = Trim(txtcardNo.Text)
        Mrc!studentNo = Trim(txtStudentNo.Text)
        Mrc!studentname = Trim(txtStudentname.Text)
        Mrc!department = Trim(txtDepartment.Text)
        Mrc!sex = Trim(txtSex.Text)
        Mrc!ondate = Trim(txtOnDate.Text)
        Mrc!ontime = Trim(txtOnTime.Text)
        Mrc!offDate = Trim(txtOffDate.Text)
        Mrc!offTime = Trim(txtOffTime.Text)
        Mrc!consumetime = Trim(txtconsumeTime.Text)
        Mrc!consume = Trim(txtconsume.Text)
        Mrc!cash = Trim(txtcash.Text)
        Mrc!Status = "正常下机"
        Mrc!computer = Trim(VBA.Environ("computername"))
    Mrc.Update
    Mrc.Close

        ’更新student_info表中cash数据

    txtSQL = "select * from student_Info where cardno='" & Trim(txtcardNo.Text) & "'" & "and status='" & "ʹÓÃ" & "'"
    Set Mrc = ExecuteSQL(txtSQL, MsgText)
    Mrc!cash = txtcash.Text
    Mrc.Update
    Mrc.Close
    MsgBox "下机成功,欢迎下次光临", , "提示"


       


       

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了python应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值