标题:求VB程序()
只看楼主
godkong
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2023-3-23
结帖率:33.33%
已结贴  问题点数:20 回复次数:7 
求VB程序()
求VB程序,实现以下功能:
1、输入一组姓名
2、点一个按钮,对这些姓名随机排序(或者给每个姓名加个序号),屏幕显示出来
搜索更多相关主题的帖子: VB 屏幕 姓名 序号 显示 
2023-03-23 10:43
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
得分:5 
这段代码假设输入5个姓名,你可以根据实际情况修改数组大小。在点击按钮时,会对这些姓名进行随机排序,并在屏幕上显示出来。如果你想给每个姓名加个序号,可以在显示结果时加上序号即可。

Private Sub Command1_Click()
   Dim names(1 To 5) As String ' 假设输入5个姓名
    names(1) = "张三"
    names(2) = "李四"
    names(3) = "王五"
    names(4) = "赵六"
    names(5) = "钱七"
   
    ' 随机排序
    Dim i As Integer, j As Integer
    Dim temp As String
    For i = 1 To 5
        j = Int(Rnd() * 5) + 1
        temp = names(i)
        names(i) = names(j)
        names(j) = temp
    Next i
   
    ' 显示结果
    Dim result As String
    For i = 1 To 5
        result = result & i & ":" & names(i) & vbCrLf
    Next i
    MsgBox result
End Sub
2023-03-23 11:37
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:15 
程序代码:
Private Sub Command1_Click()
    s = Split(Trim(Text1.Text), vbCrLf)
    sSize = UBound(s)
    
    For i = 0 To sSize
        s(i) = i + 1 & " " & s(i)
    Next i
    
    For i = 0 To sSize
        k = Int(Rnd() * sSize) + 1
        t = s(i)
        s(i) = s(k)
        s(k) = t        
    Next i
    
    sr = ""
    For i = 0 To sSize
        sr = sr & s(i) & vbCrLf
    Next i
    Text2.Text = sr    
    
End Sub



2023-03-23 15:40
godkong
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2023-3-23
得分:0 
谢谢谢两位大神!
2023-03-29 09:59
godkong
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2023-3-23
得分:0 
回复 3楼 apull
谢谢大神!
如果把程序改为:
1、把一组要摇号的姓名放在一个1.TXT文档中,
2、读取1.TXT文件的姓名,点击按钮,随机排序,并加序号,显示在屏幕的TEXT上。
请问大神,这样的话程序怎么写?
2023-03-29 11:23
godkong
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2023-3-23
得分:0 
回复 2楼 wds1
谢谢你的解答。
版主的程序更全面一点。
2023-03-29 11:25
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:0 
以下是一个简单的VB程序,实现了您所需的功能:
Private Sub btnSort_Click()
    Dim names() As String
    Dim i As Integer, j As Integer
    Dim temp As String
   
    '将输入的姓名按逗号分隔成数组
    names = Split(txtNames.Text, ",")
   
    '使用冒泡排序算法对姓名进行随机排序
    For i = LBound(names) To UBound(names) - 1
        For j = i + 1 To UBound(names)
            If Rnd() < 0.5 Then
                temp = names(i)
                names(i) = names(j)
                names(j) = temp
            End If
        Next j
    Next i
   
    '将排序后的姓名显示在屏幕上
    For i = LBound(names) To UBound(names)
        lstNames.AddItem names(i)
    Next i
End Sub

在这个程序中,我们首先将输入的姓名按逗号分隔成一个字符串数组。然后使用冒泡排序算法对姓名进行随机排序,最后将排序后的姓名显示在屏幕上。
您可以将上述代码复制到VB的代码编辑器中,并在窗体上添加一个文本框(用于输入姓名)、一个按钮(用于触发排序操作)和一个列表框(用于显示排序后的姓名)。然后运行程序,输入一组姓名,点击按钮即可看到随机排序后的结果。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2023-03-29 17:40
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:109
专家分:0
注 册:2009-3-17
得分:0 
程序代码:
Private Sub Command1_Click()
    Dim Count   As Long, P As Long
    Dim Names() As Variant
    Dim Index() As Long

    Names() = Array("A", "B", "C", "D", "E")
    Count = UBound(Names)
    Call GetRandoms(Count, Index())
    For P = 0 To Count
        Debug.Print Names(Index(P)), Index(P)
    Next
    Erase Names(), Index()
End Sub

Private Sub GetRandoms(ByVal Count As Long, Randoms() As Long)
    Dim iRnd        As Long, P As Long
    Dim Exists()    As Byte

    ReDim Exists(Count) As Byte, Randoms(Count) As Long
    VBA.Randomize
    Do
        iRnd = Int((Count + 1) * VBA.Rnd())
        If Exists(iRnd) = 0 Then
            Exists(iRnd) = 1
            Randoms(P) = iRnd
            P = P + 1
        End If
    Loop Until P > Count
    Erase Exists()
End Sub
2023-04-05 10:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511643-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015860 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved