vb编程,有没有大佬讲一下步骤,最好有代码,谢谢

lllllzzzzk 2020-06-17 10:06:48
一你所在班级人员为基础,编写一个课堂随机点名程序,要求不能重复点名,点名结果要写入文件保存
...全文
151 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
脆皮大雪糕 2020-06-20
  • 打赏
  • 举报
回复
换一个思路,把学生名字写在一副扑克牌上,然后洗牌洗乱。老师拿着这叠扑克牌一张一张掀开念名字,是不是就达到了你随机加不重复的的要求了? 接下来就看怎样洗牌能够尽量“随机” 推荐简单高效且有数学证明的knuth洗牌算法 以下为例程,但不包含你的记录点名结果部分。 一个窗体一个按钮拷贝以下代码

Option Explicit
Dim arr() As String
'初始化
Private Sub Form_Load()
    arr = Split("A001,A002,A003,A004,A005,A006", ",")
End Sub

Private Sub Command1_Click()
    'knuth洗牌算法将顺序打乱
    Dim i As Integer
    For i = UBound(arr) To LBound(arr) Step -1
        Dim strtmp As String, irnd As Integer
        irnd = Rnd(Now()) * i
        strtmp = arr(i)
        arr(i) = arr(irnd)
        arr(irnd) = strtmp
    Next
    
    '输出点名顺序
    For i = LBound(arr) To UBound(arr)
        Me.Print arr(i),
    Next
    Me.Print
End Sub

ruan1978 2020-06-18
  • 打赏
  • 举报
回复
step1: 一个班级的人员名单,需要有一个字段一一对应班级里的人,这个字段可以是学号; step2: 调用随机函数,产生的范围就在这个学号的范围之间,当然不重复; step3: 随机点名程序开启,产生一个编号写入文件
无·法 2020-06-18
  • 打赏
  • 举报
回复
Option Explicit
Dim arr
Dim a As Integer
'初始化
Private Sub Form_Load()
arr = Split("A001,A002,A003,A004,A005,A006", ",")
a = UBound(arr)
End Sub
'点一次,随机一个出来
Private Sub Command1_Click()
Dim i As Integer, intRnd As Integer, strTmp As String

If a = -1 Then
MsgBox "所有成员都随机过一次了!", vbExclamation
Exit Sub
End If

Randomize
intRnd = Int(Rnd * a)

Me.Print "索引:" & intRnd, arr(intRnd), "提取前:" & Join(arr, ",") & " 参与随机" & a + 1 & "个", '输出并写入文件
Open "结果.txt" For Append As #1
Print #1, arr(intRnd)
Close #1

strTmp = arr(intRnd)
arr(intRnd) = arr(a)
arr(a) = strTmp
a = a - 1
Me.Print "提取后:" & Join(arr, ",") & " 剩余" & a + 1 & "个"
End Sub


无·法 2020-06-18
  • 打赏
  • 举报
回复
1.将姓名都装入一个数组
2.记录下课随机的数量a,默认为数组长度
3.随机产生0~a的一个整数i
4.将数组arr(i)写入文件,同时将arr(i)和arr(a)交换,并且a--
5.重复执行3

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧