求VB编写的一个学生姓名随机抽取程序

像上图这样的功能,选择班级和性别(男/女/不限)后进行抽选,左边显示结果。学生名单可以是一个班保存为一个txt文件/Excel工作表。
我是VB小白,在网上找过很多VB随机抽取的例子,但都没找到这样选定条件进行抽取的。
所以求高手帮忙、指教,也可以直接发源代码到我邮箱kohiko@163.com,不胜感谢!

你的功能我可以帮你实现,并且还可以实现随机抽取的记录保证不一样,当然了编码的时候用随机函数生成一个学生号,再根据编号判断是否重复,不重复信息将实时显示出来,以下是关键代码,如果你调试通过,则你太幸运了,哈哈,希望能帮到你吧,当时费了好多脑细胞才编写出来

我的程序例子将发布在csdn博客上,你到时候可以关注的,http://blog.csdn.net/twtiqfn

Private Sub Command4_Click()
On Error Resume Next
    Dim db, rs, k, num
    Dim sSQL As String
    Static n  As Integer
    Dim lCurRow As Integer, mCount As Long
    Set db = CreateObject("ADODB.Connection")
    db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb"
    sSQL = "SELECT *  FROM shiyan"
    Set rs = CreateObject("adodb.recordset")
    rs.Open sSQL, db, 1, 1
    mCount = rs.RecordCount
            Randomize Timer
            lCurRow = Int(Rnd * mCount) + 1 '产生一个随机数
            Label1.Caption = lCurRow
            rs.Move lCurRow - 1 '定位
            Label2.Caption = rs!bh
            Label4.Caption = rs!xm
            If CheckItem01(rs!bh) Then
                   List1.AddItem rs!bh
                   List1.AddItem rs!xm
                   a = rs!bh
                   db.Execute ("update shiyan set flag=1 where bh=" & a & "")
                   Adodc1.RecordSource = "SELECT bh,xm FROM shiyan where flag='1'union select  '总计',count(*)  as 数量 from shiyan where flag='1'"
                   intRecCount = Adodc1.Recordset.RecordCount
                   Label5.Caption = intRecCount
            Else
                    MsgBox "存在重复项,无法添加!", , App.EXEName
            End If
   
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    Adodc1.Refresh
End Sub

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-10

我帮你解答,只接下载就好了不需要发邮箱

本回答被提问者采纳
第2个回答  2013-09-10
学生的名单只是txt文件么?还是也有Excel也有txt.
如果是excel的话请问版本是什么?
还有这些文件的路径在哪里?还是需要自己指定?
第3个回答  2013-09-10
条件不够。。
试问你的学号跟名字在哪里查询?追问

学生名单在txt文件里保存,格式是这样,例如:“1 张三”“2 李四”,一个名字一行。

求VB编写的一个学生姓名随机抽取程序
db, 1, 1 mCount = rs.RecordCount Randomize Timer lCurRow = Int(Rnd * mCount) + 1 '产生一个随机数 Label1.Caption = lCurRow rs.Move lCurRow - 1 '定位 Label2.Caption = rs!bh Label4.Caption = rs!xm If CheckItem01(rs!bh) Then List1.AddIt...

用vb编写了这个随机抽取人名的程序,要求一个文本框,一个按钮
Dim xm, n As IntegerPrivate Sub Command1_Click() Static k k = k + 1 If k Mod 2 = 1 Then Timer1.Interval = 20 Command1.Caption = "停" Else Timer1.Interval = 0 Command1.Caption = "开始" End IfEnd SubPrivate Sub Form_Load() xm = Array("张三...

用VB编程 随机抽取姓名
Private Sub Command1_Click() '写入数据 Dim stu As student Open "d:\\student.txt" For Random As #1 Len = Len(stu)For i = 1 To 60 stu.name = InputBox("请输入姓名")Put #1, i, stu Next i Close #1 End Sub Private Sub Command2_Click() '抽取 Randomize Dim bb As stude...

如何用VB设计随机抽取人名程序?
'ss(1)="zhangsan"'ss(2)="lisi"'vb中随机函数'Int((upperbound - lowerbound + 1) * Rnd + lowerbound)这里,'upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。RandomizeMyValue = Int((rnd * (UBound(ss) - 1 + 1)) + 1)MsgBox ss(MyValue)End Sub ...

如何用vb做抽名字的程序(不是抽号)
利用Visual Basic (VB) 编写一个简单的程序,实现抽名字的功能,无需抽号,只需将参与者的名字放入数组中。首先,确保程序中使用了“Option Explicit”语句,这能强制VB在使用变量前必须先声明。接下来,定义一个整数变量“i”,并利用随机数函数“Rnd”结合数组的长度,计算出一个随机索引。使用“Int...

菜鸟,想做一个随机点名软件,抽取班上同学名字的那种。求方法,具体步骤...
VB可以做,什么软件都可以,就是随机数 要点名很容易,随机抽取一名同学即可。但是点名以后的数据记录和分析处理比较复杂。你可以下载“倪大侠点名计分器”看一看,去“倪大侠软件”官网下载最新版,不断更新中。

怎么用vb编个随机抽取人名的小程序,做到不重复并能直接打印显示已抽到...
Private Sub Command1_Click()If n = 0 Then '第点击执行 m = Val(Text1)ReDim a(1 To m)For i = 1 To m '数组a元素1至mm数 a(i) = i Next For i = 1 To m - 1 '随机打乱数组a元素 r = Int(Rnd * m + 1)tmp = a(i)a(i) = a(r)a(r) = tmp Next...

如何用VB设计随机抽取人名程序?
很简单啊,比如你要从5个人名:张三,李斯,王五,马六,田七 你产生1-5个数字:一一对应就行了,如果产生的随机数是1 那么label1.caption="张三",以此类推!例子:Private Sub Command1_Click()Randomize Select Case Int(Rnd * 5 + 1)Case 1 Label1.Caption = "张三"Case 2 Label1.Caption = "...

用VB做一个姓名随机抽取的软件 但是 名字不能重复抽取谢谢
Then Exit Sub '抽取数量不能为大于已经存在姓名列表 Randomize For i = 0 To n - 1 x = Int((y - 1 + 1) * Rnd + 1) '随生成机数字 ReDim Preserve a(i) a(i) = x For j = 0 To UBound(a) - 1 If x = a(j) Then i = i - 1: Exit For ...

用VB 做一个随机抽名字。随机从所有人名字里中选取4个人的名字,这4个...
Label1.AutoSize = True Timer1.Enabled = 0 '计时器赋值,产生动态效果 Timer1.Interval = 100 '给数组加上20个名字方便测试 ,这里可以自己用Array修改数组内容 For i = 0 To 19 sName(i) = "张 " & i Next End Sub Private Sub Timer1_Timer()'这里用来显示一个动态抽取效果 Label1....

相似回答