【问题标题】:Generation of a 7 digit student number生成一个 7 位数的学号
【发布时间】:2014-04-06 21:29:46
【问题描述】:

我刚开始使用 vb.net,所以请耐心等待。

我正在完成一项大学作业,我需要建立一个小型学生注册计划。

每当用户点击注册时,我都需要创建一个 7 位数的学号,我的代码和验证以及与 DB 的连接工作正常,我只是在努力生成学号

生成学生编号的说明

  1. 学号应为 7 位数字
  2. 前两位数字代表学生注册的年份(全年的最后两位数字)我得到这样的结果,它工作正常:Dim cyear = DateTime.Now.ToString("yy")

  3. 这是我的问题: 接下来的4个数字代表到目前为止已经注册的学生人数,这个数字总是从左边补0组成四位数字。


示例

如果到目前为止(2014 年)有 20 名学生注册,那么下一个学生将 学号140021


4 最后一位是校验位,您可以将学号的前 6 个单独数字相加,然后将结果除以 10 并取余数,然后将余数减去 10 即可得到最后一位。 很好,这很容易,但是如果到目前为止只有一个学生注册了怎么办?肯定不能产生正确的结果

我的问题

(参见上面的数字 3)如何生成数字 3 到 6,从左到右填充每个新注册时递增一个?

我尝试了以下代码,但它离工作还很远

'Generate Student NR'
Dim newstudent As Integer
'displays 1st 2 letter of current year for student number'
Dim cyear = DateTime.Now.ToString("yy")
Dim lastdigit As Double
Dim lastdigitRemainder
Dim studentnr As Integer
'if statment to generate new student number for each registration'
If (register.Enabled = True) Then
    newstudent = cyear + 0 + 0 + 0 + 1
    'generate last digit of student nr'
    lastdigit = (cyear + newstudent) / 10
    lastdigitRemainder = lastdigit - 10
    studentnr = lastdigit + lastdigitRemainder
    MsgBox(studentnr)

我的界面是这样的

请注意,我不是要求某人为我完成此代码,我只是在寻找一些建议,有人可以为我指出正确的方向等。IF 语句也是我应该使用的正确选择结构学号的生成?

【问题讨论】:

    标签: vb.net winforms


    【解决方案1】:

    这是你填充数字的方式:

    int number = 1;
    Console.WriteLine(number.ToString("0000"));
    

    VB

    Dim number As Integer = 1
    Console.WriteLine(number.ToString("0000"))
    

    【讨论】:

    • 感谢您的帮助!如果最后一位数字达到 9 会自动转到下一个数字会怎样?
    • 你为什么不试试呢?应该像编写 2 行控制台应用程序一样简单。 dotnetfiddle.net/tuDnWe
    • 非常感谢你们真的帮了大忙,如果您不介意再问一个问题,我在这里使用 IF 语句是否正确?
    【解决方案2】:
      Dim intYear As Integer = TextBox1.Text 'The years last two digits'
      'Show the student id: pad the students number with 0's, works with single, double etc digits. The intStudents is the variable I used for the student totals.
      MessageBox.Show(CStr(intYear.ToString) & intStudents.ToString("0000")) 
    

    更推荐的方式...

      Dim strYear As String = TextBox1.Text
      MessageBox.Show(strYear & intStudents.ToString("D4")) 'D means the format and the number 4 is the length...
    

    如果你问过你的问题...

    'I assume this is your register button... if so you can do this..
     If (register.Enabled) Then
      'whatever else you need
     End If 
    

    这是完整的编辑代码...

     'Generate Student NR'
     Dim newstudent As String
     Dim cyear As String = DateTime.Now.ToString("yy")
     Dim studentTotal As Integer = 13 'However many students registered so far...
    'if statment to generate new student number for each registration'
     If (register.Enabled = True) Then
       newstudent = cyear & studentTotal.ToString("D4") 
       MessageBox.Show(newstudent) 'Use this as "MsgBox" is depreciated in newer frameworks'
     End If
    

    '向用户变量添加一个...如您所愿:)

     Dim studentTotal As Integer = 13 
    
     'Put in your click event ...
     studentTotal = studentTotal += 1
    

    【讨论】:

    • 你也可以去掉一些变量;最后一位和最后一位余数...
    • 查看我的编辑...应该可以正常工作 :) 欢迎您!
    • 是的,它可以完美地产生 140000,这是正确的,你是一个活生生的救星!!!只有一个问题,每当注册发生时,如何使用上述代码加 1?
    • 简单.. 只需使用“+= 1”
    • 欢迎您,我把它放在答案中。如果您有 Dims(您在点击事件中声明的变量),您至少需要将 studenttotal 移到点击事件之外,因为每次点击它都会有所不同。为了保持计数,使其成为您班级中的私有全局变量...
    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2020-11-19
    • 2011-06-26
    • 2014-06-30
    • 1970-01-01
    相关资源
    最近更新 更多