第一次机房收费系统问题和感受

在找师傅之前,先找小伙伴们挑了两边错,出了很多的问题之后又找了师傅还是出了问题,下面是我出的问题得总结。

在验项目之前

1.上下机逻辑问题
之前我一直将系统的初衷理解错了,所以我在设计的时候时在上机了一个号之后就不可以上机了(cmdOK.Enabled=True)(下机亦是如此),后来发现理解错了,后来删除了这一行程序。
2.查看上机状态的窗体中下机后仍然可查询
产生这个问题的原因是将选中或者全部下机后,仅仅将line_info中的时间等内容改了过来,忘记删除了online_info表里的相关数据,以致于可以查询出来。
3.MSHFlexGrid控件点击多次查询,出现重复记录
这个问题产生的原因是在点击查询的时候没有将之前的内容删除,导致的问题,添加以下程序即可:

Private Sub cmdInquery_Click()
    MSHFlexGrid.Clear
        With MSHFlexGrid
        .Rows = 1
        .CellAlignment = 4
        .TextMatrix(0, 0) = "卡号"
        .TextMatrix(0, 1) = "姓名"
        .TextMatrix(0, 2) = "上机日期"
        .TextMatrix(0, 3) = "上机时间"
        .TextMatrix(0, 4) = "下机日期"
        .TextMatrix(0, 5) = "下机时间"
        .TextMatrix(0, 6) = "消费金额"
        .TextMatrix(0, 7) = "余额"
        .TextMatrix(0, 8) = "备注"
    End With
    End Sub

4.在改密码后点击取消仍然要退出系统重新登陆
添加一个变量用于判断消息框结果

Private Sub cmdOK_Click()
    Dim a As VbMsgBoxResult
    a = MsgBox("密码已修改完毕,是否重新登录?", vbOKCancel + vbQuestion, "提示")
    If a = vbOK Then
         Unload Me
         Unload frmMain
         frmLogin.Show
     End If
End Sub     

5.全部删除但还是一条一条删除
之前试过全部删除,用for…next循环但是错误没有改过来,就是一直出现下标越界的问题,一直就是改不过来后来问了几个小伙伴解决了这个问题,我之前时从第一行检索到最后一行,后来是改到了最后一行到第一行,又进行小部分的改变,以下是整改之后的程序例子如下:

Private Sub cmdDelete_Click()
    Dim line As Integer '定义行数
    Dim a As VbMsgBoxResult '定义消息框结果
    Dim i As Integer '定义一个整型变量,用户判断删除记录数
    '对user_info表操作
    Dim mrcuser As ADODB.Recordset '用于存放记录集 '用户存放记录集
    Dim userSQL As String '用于存放SQL语句 '用于存放SQL语句
    Dim userMsgText As String '用于存放返回信息 '用户存放返回信息
    i = 0 '初始值i等于0
    a = MsgBox("确定所选删除用户吗?", vbOKCancel + vbQuestion, "询问")
    '当a为OK时进行删除记录,否则退出记录
    If a = vbOK Then
        '以MSHFlexGrid控件的行数为基础做循环,进行删除记录
        For line = MSHFlexGrid.Rows To 1 Step -1
            '判断是否选中
            If MSHFlexGrid.TextMatrix(line - 1, 3) = "√" Then
            
                userSQL = "select * from user_info where userID='" & Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) & "'"
                Set mrcuser = ExecuteSQL(userSQL, userMsgText)
                
                '当MSHFlexGrid里的第一列内容和本机登录的内容一样时不允许删除
                If Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) = Trim(frmLogin.txtUserName.Text) Then
                    MsgBox "用户:" & Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) & " 正在登录,无法删除!", vbOKOnly + vbExclamation, "警告"
                Else
                    '删除MSHFlexGrid和数据表中的数据
                    i = i + 1
                    MSHFlexGrid.RemoveItem line - 1
                    mrcuser.Delete
                    mrcuser.Close
                End If
            End If
        Next line
    If i <> 0 Then
            MsgBox "删除用户成功!", vbOKOnly + vbInformation, "提示"
    Else
        MsgBox "请选择所删除的用户!", vbOKOnly + vbInformation, "提示"
        Exit Sub '退出过程
    End If
                
End Sub

6.函数应用的问题
对VB中的各个函数用法不是很灵活,出了以些小错误。
7.登录错误次数过多时没有弹出消息框自动退出系统
当时由于急于求成,急于快点写完程序,忘记了添加代码,后来又忘了这件事,导致出现问题。
8.出现的以下细节方面的问题
由于没注意到从而出现一些小问题,例如强制下机,时间超过当前日期,粘贴问题的等等。解决方法见以下博客:
https://blog.csdn.net/TGB__15__ZYB/article/details/97781785

在验收项目之后

1.在上机状态显示全部时,点击多次出现重复
这个真没注意到,前面未验收前想到过这个问题,但是这个窗忽略了,以致于出了错。解决方法同上

Private Sub cmdInquery_Click()
    MSHFlexGrid.Clear
        With MSHFlexGrid
        .Rows = 1
        .CellAlignment = 4
        .TextMatrix(0, 0) = "卡号"
        .TextMatrix(0, 1) = "姓名"
        .TextMatrix(0, 2) = "上机日期"
        .TextMatrix(0, 3) = "上机时间"
        .TextMatrix(0, 4) = "下机日期"
        .TextMatrix(0, 5) = "下机时间"
        .TextMatrix(0, 6) = "消费金额"
        .TextMatrix(0, 7) = "余额"
        .TextMatrix(0, 8) = "备注"
    End With
    End Sub

2.注册重复
当时只是着急实现功能,忘记了判断重复,在注册时,没有想到判断重复的问题,出了错误。
3.退卡等窗体在显示文本的文本框属性不妥
对仅仅用于显示的文本框,应该改变一下边框形式,即重新设置文本框的“BorderStyle”属性,选择合适的属性值
4.在添加和删除用户时删除了正在登录的用户
在删除的时候连接User_info表,查看是否用户正在登录,如果是则不允许删除,移动到下一个,否则允许删除代码如下:

Private Sub cmdDelete_Click()
    Dim line As Integer '定义行数
    Dim a As VbMsgBoxResult '定义消息框结果
    Dim i As Integer '定义一个整型变量,用户判断删除记录数
    '对user_info表操作
    Dim mrcuser As ADODB.Recordset '用于存放记录集 '用户存放记录集
    Dim userSQL As String '用于存放SQL语句 '用于存放SQL语句
    Dim userMsgText As String '用于存放返回信息 '用户存放返回信息
    i = 0 '初始值i等于0
    a = MsgBox("确定所选删除用户吗?", vbOKCancel + vbQuestion, "询问")
    '当a为OK时进行删除记录,否则退出记录
    If a = vbOK Then
        '以MSHFlexGrid控件的行数为基础做循环,进行删除记录
        For line = MSHFlexGrid.Rows To 1 Step -1
            '判断是否选中
            If MSHFlexGrid.TextMatrix(line - 1, 3) = "√" Then
            
                userSQL = "select * from user_info where userID='" & Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) & "'"
                Set mrcuser = ExecuteSQL(userSQL, userMsgText)
                
                '当MSHFlexGrid里的第一列内容和本机登录的内容一样时不允许删除
                If Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) = Trim(frmLogin.txtUserName.Text) Then
                    MsgBox "用户:" & Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) & " 正在登录,无法删除!", vbOKOnly + vbExclamation, "警告"
                Else
                    '删除MSHFlexGrid和数据表中的数据
                    i = i + 1
                    MSHFlexGrid.RemoveItem line - 1
                    mrcuser.Delete
                    mrcuser.Close
                End If
            End If
        Next line
    If i <> 0 Then
            MsgBox "删除用户成功!", vbOKOnly + vbInformation, "提示"
    Else
        MsgBox "请选择所删除的用户!", vbOKOnly + vbInformation, "提示"
        Exit Sub '退出过程
    End If
                
End Sub

5.对日结账单和周结账单的认识不足
当时就没有明白日结账单和周结账单是怎么回事,就直接将数据库中checkday_info表和checkweek_info表中的数据显示在两个窗体中,但是后来师傅说了,日结仅仅时显示当天的数据,周结根据日期显示数据,后来才明白是怎么回事,改了过了。

第一次机房的感受

这次的机房可以说是让我痛不欲生啊,程序是在学校的时候写的,当时正好还有一个月期末考试,想着还没弄完,就赶紧着写,前半个月没有复习,一直写程序,从早晨写到晚上,那半个月可以说活的很充实,回宿舍就睡觉,没空儿玩手机,那半个月的效率很高,但可以说累得快支撑不住了。这半个月过去了之后就一直没有没有在进行过机房,直到考完试,暑假来了这才开始进行优化,然而这个时候出现了一个新的问题,对之前自己写的程序的逻辑忘了,因为没有注释。之后又开始重新理解优化,改正错误,一直弄了七八天才找师傅去验收了项目,结果,还是出了一些不该错的问题。
这次的过程也给了我一个教训,对于程序一定要写注释,不仅仅是为了别人,更重要的是,当你自己回来进行重温时能后理解自己写的是什么,让自己轻松,高效率的去温习程序。之前一直没有将注释这件事放在心上,但这次之后我感觉自己应该不会在不写注释了。再有就是一定要在学习的时候静下心来,一步一步有章程的进行,不可以不按顺序,乱改动。在验收前本来这些小错误应该可以检测出来并改正过来,但是就是因为粗心,不按顺序来,导致了小错误不断的结果。因此,无论做任何事都应给脚踏实地,切忌走捷径,那样只会万劫不复。
这次的机房让我将之前放下的知识重新的捡了起来,并且感觉对VB有了新的认识和理解。同时在师傅那里学到了很多的东西。很感谢师傅们给我验收项目并且在其中给我的意见和建议。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值