【问题标题】:Generating a unique student number with a check digit using vb.Net使用 vb.Net 生成带有校验位的唯一学号
【发布时间】:2014-02-25 15:32:23
【问题描述】:

我正在编写一个程序,该程序需要生成一个八位数的学生号,第 8 位(最后一位)是校验位,通过将前七位数字相加来计算,将结果除以 10 并取余数并从 10 中减去它。用户没有输入。单击按钮时,代码必须执行并在 msgBox 中显示学生编号。每次学生注册时,学生编号必须加 1。 请帮忙...

【问题讨论】:

  • 您期待什么结果?此外,由于与先前创建的数字无关,因此每次的结果都是相同的。您的消息框也不会显示该数字,因为您没有使用变量 StudentNumber
  • 我真的被产生这行代码和匹配注释的思考过程难住了:Dim Sum As Integer = 0 'increment student number by 1
  • @XN16- 从我的代码中的数字中,我正在寻找类似的内容:在校验位=1200001 之前和计算校验位之后的学号应该是 12000017(校验位=7)。对于另一行评论,我不确定我是否理解你,我是 vb 新手,我想尽可能多地学习。
  • @Damien_The_Unbeliever- 这是一个错误,因为我编写和编辑这段代码的时间比我不知道的要多。我想评论应该是 i 变量..
  • @SATSON- 第一个学生注册时,学号为1200001_(_是需要计算的校验位),然后得到1200001的总和(1+2+0 +0+0+0+1),然后将其除以 10,然后从 10 中减去余数……这应该给出校验位(第 8 位)。

标签: vb.net


【解决方案1】:

这样试试

 Public Number As Integer = 1200000 'first seven digits of student number

  Private Sub Button1_Click(ByVal sender As System.Object,
  ByVal e As System.EventArgs) Handles Button1.Click

        Dim i As Integer = Number
        Dim StudentNumber As Integer
        i += 1

        While (i > 0)

            StudentNumber += (i Mod 10)
            i /= 10

        End While

        StudentNumber = 10 - (StudentNumber Mod 10)

        StudentNumber = CInt(Number.ToString & StudentNumber.ToString)

        Number +=1

        MsgBox("Your student number is "" StudentNumber" & StudentNumber)

    End Sub

【讨论】:

  • @SATSON- 谢谢,但仍然缺少一些东西。在任何人注册之前,数字是 1200000。但是随着更多学生注册,数字会发生变化,例如第一个学生的数字是 1200001,第二个学生的数字是 1200002,等等。因此,第一个学生的学号类似于:1200001+校验位。
  • 是的。你问这个正确。缺少的东西意味着想要吗?想要你需要的改变
  • @SATSON- 每次学生注册时,我都需要将数字的第七位加 1。一旦第七位数字增加,则可以计算校验位(第 8 位)。
  • 总是注册号是1200000。或者1200000+1, 0+1 (1200000)有什么区别
  • @SATSON- 不同之处在于,120000+1=1200001 是我需要与校验位一起显示在 msgbox 中的...忘记 0+1 (1200000),我不知道不需要那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-06
  • 2014-04-12
  • 2011-07-24
  • 1970-01-01
  • 2019-01-12
  • 2012-04-20
相关资源
最近更新 更多