文明4吧 关注:20,418贴子:759,491

吧里有没有会写vb的大神?求教一个代码问题

只看楼主收藏回复

是这样的,我的老师让我想办法弄一个点名器,就是那种他可以不动脑子考虑学生学业水平与学习态度按按鼠标就可以点人回答问题的软件,我绞尽脑汁用vb写了一个,代码是这样的:
Private Sub Command1_Click()
Timer1.Enabled = Not Timer1.Enabled
End Sub
Private Sub Form_Load()
Timer1.Interval = 1
Timer1.Enabled = True
End Sub
Private Sub Text1_Change()
End Sub
Private Sub Timer1_Timer()
Randomize
a = Int(60 * Rnd) + 1
If a = 1 Then
Text1 = "xxx"
End If
If a = 2 Then
Text1 = "xxx"
End If


IP属地:四川1楼2017-04-30 18:15回复
    但是这个程序经常会重复出现某一个人,这就比较尴尬了,所以求教吧里大神怎样修改才能达到在一个周期内一人只能随机出现一次的效果
    知道吧里有学计算机的大神,请帮助一下这个老师的狗腿子吧


    IP属地:四川2楼2017-04-30 18:22
    回复
      在文明4吧你甚至能讨论文明4 ,大神帮我一把


      IP属地:四川3楼2017-04-30 18:24
      回复
        不懂,帮顶。


        4楼2017-04-30 18:27
        收起回复
          应该要在数据库里面加一列,把点过名的学生标注一下,下次随机时只挑没点过名的作为数据库。


          5楼2017-04-30 18:30
          收起回复
            看了一下不知道为啥你要用Timer控件......


            6楼2017-04-30 18:40
            收起回复
              如果是我来写的话我会倾向于把人名和学号写成一个字典结构(不过不知道VB有没有字典)
              如果要看有没有点名的话,我可能会写个学生类,把学号,姓名,点名与否放进去,然后把学生对象排进数组
              如果不会面向对象的话,多写两个数组吧
              如果数组也不会用,那就只能定义60个choiced_1,chiocced_2......了
              不过为什么要用VB呢


              7楼2017-04-30 18:48
              收起回复
                randomize(time)


                IP属地:北京8楼2017-04-30 19:52
                收起回复
                  vb好久没写过了,可以给你个思路,你这是按照数字给每个人编号的,一旦点名之后把点到的人物编号+60。最好还是用数据库或者数组把,不然不好写


                  IP属地:浙江来自Android客户端10楼2017-05-01 10:43
                  收起回复
                    什么老师这是。。。。


                    IP属地:山东11楼2017-05-01 12:40
                    收起回复
                      你还不如给他一个计算器,让他按随机数,随机到哪个学号就叫哪个……


                      IP属地:北京12楼2017-05-02 18:02
                      收起回复
                        经常出现某个人没毛病啊,活该他倒霉


                        IP属地:江苏来自Android客户端13楼2017-05-02 18:18
                        收起回复
                          突然想到了解决方案,代码就用你这个就行,要是被叫到的同学有重复的就再运行一次直到没重复的,supervised learning没毛病


                          IP属地:山东14楼2017-05-02 19:22
                          收起回复

                            6人规模的,从下往上刷新(最近记录永远在第一列)


                            IP属地:北京15楼2017-05-03 11:01
                            收起回复
                              Public Class Form1
                              Const MAX_NUM As Integer = 6
                              Dim round As Integer = 1
                              Dim txt(MAX_NUM) As String
                              Dim num(MAX_NUM) As Integer
                              Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
                              For i As Integer = 0 To MAX_NUM
                              txt(i) = "满洲尿黄旗·京城八大铁帽子王之绿帽子王·于·列祖列宗门捷列夫·谦" & i & "世" & vbCrLf
                              Next i
                              End Sub
                              Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
                              If num(MAX_NUM) <> 0 Then
                              For i As Integer = 0 To MAX_NUM
                              num(i) = 0
                              Next i
                              TextBox1.Text = "round:" & round & vbCrLf & TextBox1.Text
                              round = round + 1
                              End If
                              Dim out As Integer = 0
                              Dim got As Integer = 0
                              Do While out = 0
                              Randomize()
                              got = Int(Rnd() * MAX_NUM) + 1
                              For j As Integer = 1 To MAX_NUM
                              If num(j) = got Then
                              Exit For
                              ElseIf num(j) = 0 Then
                              num(j) = got
                              out = 1
                              Exit For
                              End If
                              Next j
                              Loop
                              TextBox1.Text = txt(got) & TextBox1.Text
                              End Sub
                              End Class


                              IP属地:北京16楼2017-05-03 11:02
                              收起回复