vb存储柜的实现,【一个超实用的小软件】

vb存储柜的实现,【一个超实用的小软件】

vb存储柜的实现,【一个超实用的小软件】

老规矩,先上效果图
在这里插入图片描述
1初始化

Private Sub Form_Load()
    Dim i As Integer
    If Dir(App.Path & "\data.dat") <> "" Then
        Open App.Path & "\data.dat" For Random As 1 Len = Len(Infos(0))
        For i = 0 To 23
            Get #1, , Infos(i)
        Next
        Close 1
    End If
    Set pic_lighton = LoadPicture(App.Path & "\lighton.bmp")
    Set pic_lightoff = LoadPicture(App.Path & "\lightoff.bmp")
    Set pic_cabineton = LoadPicture(App.Path & "\cabineton.bmp")
    Set pic_cabinetoff = LoadPicture(App.Path & "\cabinetoff.bmp")
    For i = 0 To 23
        If Infos(i).Occupied Then
            Set imgCab(i).Picture = pic_cabinetoff
            Set imgLight(i).Picture = pic_lighton
        Else
            Set imgCab(i).Picture = pic_cabinetoff
            Set imgLight(i).Picture = pic_lightoff
        End If
    Next
     
    Shape1.FillColor = RGB(3, 82, 35)
    DrawNumber ("-------")
End Sub

在这里插入图片描述

在一开始加载的时候,需要读入二进制文件的数据,这个数据是保存了存储柜是否保存了东西,保存密码是多少,保存的东西是什么。然后根据数据进行红灯亮起。

2数据保存

Private Sub Form_Unload(Cancel As Integer)
    Dim i As Integer
    Open App.Path & "\data.dat" For Random As 1 Len = Len(Infos(0))
    For i = 0 To 23
        Put #1, , Infos(i)
    Next
    Close 1
End Sub

既然在加载的时候需要把数据读进来,那么卸载的时候就需要把数据保存起来。

3存放东西,随机出一个密码

 For i = 0 To 23
        If Infos(i).Occupied = False Then Exit For
    Next
    If i > 23 Then
        DrawNumber ("0000000")
        Beep
        Exit Sub
    End If
    
    Do
        Randomize
        n = Rnd * 23
        If Not Infos(n).Occupied Then
            Do
                i = Rnd * 10000000
                strPassword = Right("0000000" & CStr(i), 7)
                For i = 0 To 23
                    If Infos(i).Occupied Then
                        If strPassword = Infos(i).Code Then
                            Exit For
                        End If
                    End If
                Next
                If i > 23 Then Exit Do
            Loop
            Infos(n).Occupied = True
            Infos(n).Code = strPassword
            Exit Do
        End If
    Loop
    
    no = n
    state = 1
    MsgBox "箱号为:" & n + 1 & ",密码为:" & strPassword & "" & vbCrLf & "请放入物品并关上柜门。", vbInformation, "请记录"
    
    
    imgCab(n).Picture = pic_cabineton
    lblCab(n).Visible = False
    Command1.Visible = True
    Command1.Caption = "放入物品"
    Command1.Left = imgCab(n).Left + 38
    Command1.Top = imgCab(n).Top + 40
    imgGoods.Left = imgCab(n).Left + 32
    imgGoods.Top = imgCab(n).Top + 8

在这里插入图片描述
这里面完整的流程是先知道一个有空的箱子,这里只需要找到没有保存密码的数据就行。然后随机出一个密码,让客户记住就行。

4取物品

Private Sub cmdNumber_Click(Index As Integer)
    Dim i As Integer
    
    If state <> 0 Then Exit Sub
    
    If Len(strInput) = 7 Then strInput = ""
    strInput = strInput & Index
    DrawNumber (strInput)
    
    If Len(strInput) = 7 Then
        For i = 0 To 23
            If Infos(i).Occupied And Infos(i).Code = strInput Then Exit For
        Next
        If i > 23 Then
           ' strInput = ""
            Beep
        Else
            no = i
            state = 2
            imgCab(no).Picture = pic_cabineton
            lblCab(no).Visible = False
            Command1.Visible = True
            Command1.Caption = "取出物品"
            Command1.Left = imgCab(no).Left + 38
            Command1.Top = imgCab(no).Top + 40
            imgGoods.Left = imgCab(no).Left + 32
            imgGoods.Top = imgCab(no).Top + 8
            DrawNumber (no + 1)
            imgGoods.Picture = LoadPicture(App.Path & "\" & Infos(no).Goods & ".bmp")
             imgGoods.Visible = True

        End If
    End If
    
   
End Sub

最后只剩下一个动作了,那就是输入密码取物品。只要连续输入的数字和存储的密码是相同的,那就打开对应的柜子。

在这个平台上有收徒的打算,如果小伙伴刚好需要一个能答疑,能带着你学习的师父,请联系我,q:2316773638

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2862.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • isNotBlank的用法「建议收藏」

    isNotBlank的用法「建议收藏」isNotEmpty将空格也作为参数,isNotBlank则排除空格参数QuoteStringUtils方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应处理,例如,如果输入为null则返回也是null等,具体可以查看…

  • SENT协议译码的深入探讨

    SENT协议译码的深入探讨作者:Ben在工作期间,我有机会仔细地研究现代车辆上的一些最新传感器技术。虽然这些特殊的传感器已经存在一段时间了,但是SENT技术越来越多地出现在车辆中。在汽车论坛中,我发现有关使用这些传感器的问题和讨论有所增加。这些现象促使我去研究如何利用虹科Pico示波器从这些传感器中获得尽可能多的信息。我不会在SENT协议上花费太多时间,因为网络上有很多关于该协议如何工作的资料。但是,我会简单介绍一下这个网络。SENT代表单边半字节传输,并遵循J2716标准。它是低成本且单向的(仅一个方向),这意味着传

  • 中国蚁剑安装教程_剑形虹臭蚁的天敌

    中国蚁剑安装教程_剑形虹臭蚁的天敌中国蚁剑:https://www.freebuf.com/sectool/98681.htmlgithub地址:https://github.com/AntSwordProject我下载好的(这里的版本太旧了,去github下载吧):https://www.lanzous.com/b548184/密码:cbek教程:两个全部解压好(一个是源码,一个是启动文件)先…

    2022年10月21日
  • pwm波控制舵机原理(转)[通俗易懂]

    pwm波控制舵机原理(转)[通俗易懂]文章转自:http://www.geek-workshop.com/thread-70-1-1.html一、关于舵机:舵机(英文叫Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,指定输出轴旋转角度。舵机一般而言都有最大旋转角度(比如180度。)与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动,不能一圈圈转(数字舵机可…

  • Android程序员接私活完整攻略「建议收藏」

    Android程序员接私活完整攻略「建议收藏」接私活对程序员这个圈子来说是一个既公开又隐私的话题,不说全部,应该大多数程序员都有过想要接私活的想法,当然,也有部分得道成仙的不主张接私活。但是很少有人在公开场合讨论私活的问题,似乎都在避嫌。就跟有人下班后跑滴滴一样,程序员私有时间接点活挣点钱不也很正常么,不过不要在上班时间就行,就跟你上班期间出去跑滴滴一样。当你竭尽全力想要去接私活的时候一定做过这样的事,百度搜索“程序员如何接私活”或者…

  • 阿里java高级工程师面试100题「建议收藏」

    阿里java高级工程师面试100题「建议收藏」大型网站架构技术QQ群:3686148491,java堆,分新生代老年代,新生代有Eden,fromsurviver,tosurviver三个空间,堆被所有线程共。eden内存不足时,发生一次minorGC,会把fromsurvivor和eden的对象复制到tosurvivor,这次的to survivor就变成了下次的fromsurvivor,经过多次minorGC,默认15次…

发表回复

您的电子邮箱地址不会被公开。

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