机房收费系统——退卡

机房收费系统——退卡机房收费系统——退卡

大家好,又见面了,我是你们的朋友全栈君。

今天第一次验收,却出现了很多问题,主要就是在涉及到钱的问题上就比较混乱,出现这个问题的原因也就是因为当时思路没有理清楚就着急实现功能。出来混迟早要还的,今天自己又再一次验证了这个理论。已经退了的卡,为什么还能上机,而且卡里还有钱?出现这种情况自己也大吃了一惊,后来又重新理了一遍,现在应该就没有问题了。

下面就谈谈怎么退卡:首先是进行一系列的判断,判断卡号是否为空,是否为数字,接着进行查询,然后再进行判断,判断卡号是否存在,是否已经退卡,是否正在上机,最后就是对数据的进行操作,更新student_Info表中的status字段为“不使用”,cash=0,并将相应的student_Info表中的部分信息插入到CancelCard_Info表中。

具体思路如图
机房收费系统——退卡

代码如下

'判断卡号是否为空
    If Not Testtxt(txtCardno.Text) Then
        MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示"
        txtCardno.SetFocus
        Exit Sub
    End If
'新建查询
    strSQL = "select status,studentNo,Cash,UserID,Ischeck from student_Info where cardno = '" & txtCardno.Text & "'"
    Set mrc = ExecuteSQL(strSQL, msgText)
    
    studentNo = Trim(mrc.Fields(1))
    Cash = mrc.Fields(2)
    UserID = mrc.Fields(3)
    Ischeck = mrc.Fields(4)
'判断是否注册
    If mrc.EOF Then
        MsgBox "没有该卡号!", vbOKOnly + vbExclamation, "提示"
        txtCardno.SetFocus
        txtCardno.Text = ""
        Exit Sub
'判断是否退卡
    ElseIf Trim(mrc.Fields(0)) = Trim("不使用") Then
        MsgBox "此卡已退卡!", 48, "提示"
        txtCardno.SetFocus
        txtCardno.Text = ""
        Exit Sub
    Else
'判断是否正在上机
        strSQL = "select * from Online_Info where cardno= '" & txtCardno.Text & "'"
        Set mrcO = ExecuteSQL(strSQL, msgText)
        
        If Not mrcO.EOF Then
            MsgBox "此卡正在上机,请先下机再退卡!", 48, "提示"
            txtCardno.SetFocus
            txtCardno.Text = ""
            Exit Sub
        End If
'更新student_Info表

        strSQL = "update student_Info set status = '" & "不使用" & "'" & "where cardno = '" & txtCardno.Text & "'"
        Set mrc2 = ExecuteSQL(strSQL, msgText)

        strSQL = "update student_Info set cash= '" & Val(0) & "'" & "where cardno = '" & txtCardno.Text & "'"
        Set mrcS = ExecuteSQL(strSQL, msgText)
'把数据插入到CancelCard_Info表
        strSQL = "select * from CancelCard_Info"
        Set mrcC = ExecuteSQL(strSQL, msgText)
        
        mrcC.AddNew
        mrcC.Fields(0) = studentNo
        mrcC.Fields(1) = txtCardno.Text
        mrcC.Fields(2) = Cash
        mrcC.Fields(3) = Date
        mrcC.Fields(4) = Time
        mrcC.Fields(5) = UserID
        mrcC.Fields(6) = Ischeck
        mrcC.Update
        mrcC.Close
        
        txtReturnAmount.Text = Cash
        
        txtMessage.Text = "退款卡号:" & txtCardno.Text & vbCrLf & vbCrLf & _
                          "应退款金额:" & Cash & vbCrLf & vbCrLf & _
                          "退款日期:" & CancelDate & vbCrLf & vbCrLf & _
                          "退款时间:" & CancelTime & vbCrLf & vbCrLf & _
                          "办理退卡老师:" & UserID
        
        MsgBox "退卡成功!", vbOKOnly + vbExclamation, "提示"
    End If

最后在往CancelCard_Info表中插入数据是,也可以使用 insert 语句

    strSQL = "insert into CancelCard_Info values('" & studentNo & "','" & txtCardno.Text & "','" & Cash & "','" & Date & _
             "','" & Time & "','" & UserID & "','" & Ischeck & "')"
    Call ExecuteSQL(strSQL, msgText)

两种方法实现的功能是一样的,但是我们因为敲学生的问题,一开始都比较习惯用select语句,但是insert语句用起来也挺简单的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105790.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 取余和取模运算之间的区别「建议收藏」

    java 取余和取模运算之间的区别「建议收藏」转自lee371042https://blog.csdn.net/lee371042/article/details/102553342packageOperator;importjava.math.BigInteger;/***假如有两个数:*amod(b)与a%b,b为正整数,*一种叫a对b取模,另一个叫a对b取余,两种叫法有什么区别呢?*通常情况下,取模运算也叫取余运算,*它们返回的结果都是一个数对另一个数的余数,**区别在于当a是一

    2022年6月3日
    35
  • 不是单组分组函数「建议收藏」

    不是单组分组函数「建议收藏」问题:一:SELECT tablespace_name, SUM(bytes) freeFROM dba_free_space不是单组分组函数原因: 1、如果程序中使用了分组函数,则有两种情况可以使用:程序中存在group by,并指定了分组条件,这样可以将分组条件一起查询出来改为:  SELECT tablespace_name, SUM(bytes) freeFROM dba_free_spa…

    2022年6月30日
    31
  • fastCGI详解「建议收藏」

    fastCGI详解「建议收藏」http{#缓存路径fastcgi_cache_path/usr/local/nginx/fastcgi_cachelevels=1:2keys_zone=licache:10minact

    2022年7月4日
    18
  • java之Scanner详解「建议收藏」

    java之Scanner详解「建议收藏」1.包:importjava.util.Scanner2.使用方法:Scannerreader=newScanner(System.in);  然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型:   nextByte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),next

    2022年7月20日
    10
  • C语言 JSON数据格式解析

    C语言JSON数据格式解析一、如何用c语言编写与解析json数据格式,这篇主要是使用一个第三方的json库,本人已经上传至csdn,下载链接在下方。 二、json库代码文件下载地址(json.rar内部只有两个文件json.h与json.c) 1.http://download.csdn.net/download/jxyb2012/10234057

    2022年4月6日
    272
  • 耳机线的接法_耳机线焊接法图解大全

    耳机线的接法_耳机线焊接法图解大全耳机是我们日常必备工具,尤其是在公共场所或是夜深人静时!之前一直用的是入耳式的耳机,隔音效果好,声音大,所以下狠心买了一个用过最贵的耳机90+元。但是买回用了不到两个星期就让我给弄报废了,而且入耳式的耳机戴久了耳朵塞的疼。所以我就淘宝买了个8.6元包邮的山寨苹果耳机,结果带给了我很多惊喜,没想到音质丝毫不比之前的任何耳机差,戴着也舒服。最重要的是隔音效果好,每当夜深人静时无论是听音乐还是看剧都与世…

    2022年10月27日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号