2014-03-05 123 views
0

我剛從vb.net開始,所以請耐心等待我。一代7位數的學生號碼

我正在開展uni作業,我需要建立一個小型學生註冊計劃。

我需要創建一個7位數的學生人數,每當用戶點擊註冊,我的代碼和驗證,並連接到DB工作正常,我只是與學生數量

說明的一代掙扎生成學生NR

  1. 學生數應具有7位數字
  2. 前兩位數字代表年份在學生寄存器(滿一年的最後兩位數字),我得到這樣和正常工作:Dim cyear = DateTime.Now.ToString("yy")

  3. 這裏是我的問題: 接下來的4個數字,代表迄今爲止誰已註冊學生的號碼,這個號碼總是用從左邊的0填充以構成四位數字。


如果20名學生已經註冊迄今(在2014),那麼下一個學生將 有學生編號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) 

我的界面看起來像這樣

enter image description here

請注意我不是要求別人來完成這個代碼對我來說,我只是在尋找一些建議,能夠指引我走向正確方向的人等等。另外,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 
+0

你也可以去掉一些變量;最後一位數字和最後一位數字... – Codexer

+0

非常感謝您的幫助 – Marilee

+0

查看我的編輯...這應該工作得很好:)和你的歡迎! – Codexer

2

你這是怎麼墊數字:

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

VB

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

謝謝你幫助很大!如果最後一位數字達到9,會發生什麼情況會自動轉到下一個數字? – Marilee

+1

你爲什麼不試試?應該像編寫2線控制檯應用一樣簡單。 http://dotnetfiddle.net/tuDnWe – lahsrah

+0

非常感謝你這麼多幫助大家度過了愉快時光的傢伙,如果你不介意的話,還有一個問題,我是否正確使用了IF中的這個名詞? – Marilee