PDA

View Full Version : giúp mình tự động sinh mã sinh viên trong c#



matmeoviet
23-04-2009, 13:54
mình đang làm một bài tập về windowform quản lý sinh viên
trong đó có chức năng thêm mới sinh viên
khi thêm mới sinh viên thì mã sinh viên tự đông được sinh
vi du học sinh la: nguyễn văn Anh sinh 1/1/1987 thì mã sẽ là nva111987
cơ sở dữ liệu là access
bảng sinhvien gồm:
StudentID(PK): ma sinh vien
Name:
DOB:ngày sinh
Tel
Mobile
Adress
MarkID

bạn nào có thể giúp mình được không
mình vẫn chưa nghĩ ra
đây là c# kết nối access nhé

huonghx
23-04-2009, 17:09
làm sinh kiểu này thì có mà luôn luôn thì trượt.
Nguyễn Văn Anh và Nguyễn Vân Anh,, Nguyên Vân Ánh cùng sinh ngày 1/1/1988 thì đều có mã sv là nva111988 ah, chuối cả vườn.
Nguyễn Văn Anh thì dùng split tác ra rồi lấy ký tự đầu tiên, còn ngày tháng thì replace / rồi tạo 1 số ngẫu nghiên 2 lần từ 1000 đến 9999 để lấy ra 1 số rồi nối lại với chuối trên thì may ra còn có lý.

matmeoviet
23-04-2009, 18:14
mấy khi trong 1 lớp có 2 người giống tên nhau mà cùng ngày sinh đâu bạn
ma chỉ là bài tập thui chứ là chương trình thì hỏng
bạn có thể nói rõ hơn cho mình không?

lamsononline
23-04-2009, 19:17
mấy khi trong 1 lớp có 2 người giống tên nhau mà cùng ngày sinh đâu
nói thiệt bạn đừng buồn nhé, sinh viên bây giờ càng ngày càng ngu

cứ cho là mấy khi đi. Vậy nếu thực tế có trường hợp đó thì phần mềm chạy ra sao? sinh thêm khóa chính trùng à? rồi có insert vào được không

mà nói nghe, người đi làm lập trình thì phải có kiến thức toán nhất định. Mà nói đến toán là phải chính xác, không bao giờ ng học toán lại trình bày ván đề mà dùng từ "mấy khi" đâu. Nực cười.



chỉ là bài tập thui chứ là chương trình thì hỏng

lại còn thế nữa. Nếu các bài tập làm như thế này thì chương trình thực tế sau này viết đến đâu

Riết chẳng muốn vào ~ forum như thế này

aochoangxanh
23-04-2009, 20:44
vậy thì đi luôn đi :|

matmeoviet
24-04-2009, 20:37
hix các bạn này bắt bẻ kinh quá
nếu tớ làm được thì tớ đã không nhờ
đây chỉ là bài tập nhỏ tớ mới học c# nên không rõ lắm
chỉ làm với danh sách lớp tớ thui nên cũng không cần chính xác quá
các bạn nói kinh thật
ai mà lại chưa từng không hiểu một vấn đề gì

kuongnp
24-04-2009, 22:01
Toàn làm phức tạp vấn đề, cứ để autonumber trong db làm khóa chính là ok, mỗi lúc thêm sinh viên thì không cần quan tâm tới vấn đề đó, mã gì? có ai lấy cái mã ấy làm tên đâu:D
còn trong trường hợp bắt buộc phải tạo account cho sinh viên đăng nhập vào các ứng dụng của nhà trường thì bạn chỉ việc lấy các ký tự đầu của tên sinh viên ghép với mã tự tăng trong db thì sẽ ra username không bao giờ trùng nhau cả, ví dụ :Nguyễn Văn A/sv1 : NVA1, Nguyễn Văn A/sv2: NVA2, phân cho thằng nào thì thằng đó phải nhớ:D(gửi qua mail cho người ta lúc đăng ký chẳng hạn)
:D
"Make everything as simple as possible, but not simpler"
Cái này là Albert Einstein nói chứ không phải tui nói :D

Donnie
25-04-2009, 08:07
Đây là một đoạn code sinh mã sinh viên:



//(chưa kiểm tra cho các trường hợp ký tự đầu tiên cũng viết tiếng Việt, chẳng hạn như chữ Đ):
public string GenerateCode(string studentName, DateTime dob)
{
string code = "";
string[] words = studentName.Split(' ');
foreach (string word in words)
{
code += word.Substring(0, 1);
}
code += dob.ToString("ddMMyyyy");
return code;
}

lamsononline
25-04-2009, 15:39
@matmeoviet

xin lỗi, mình rất là nóng tính và ưa nói thẳng.

Để mình nói cho nghe. Khi làm điều gì cũng phải khảo sát thực tế. Nhất là nhữg thứ đã có rồi, hợp lý và ổn định, thì đừng tìm cách "cải lùi" <> (cải tiến)

Bạn thử xem cái mã số sinh viên của chính bạn xem thế nào, hoặc đi kháp các khoa lớp hỏi bạn bè xem.

Nếu để cho đơn giản, thì mã sv sẽ là autonumber như đa phần vẫn nghĩ.

Còn nếu để cho thực tế, thì mình đưa ra ví dụ này:

Lúc còn đi học dh, mình được phát cho cái thẻ sv: 02100080

Cái mã trên có ý nghĩa:
02: niên khóa 2002,
100: là mã ngành cntt
0: lớp thứ 0 (tức là 1 khoa của khóa đó có nhiều lóp)
80: số thứ tự sv trong lớp đó

không ai sinh giá trị cho Field mã số (pkey) dựa vào DOB cả

dammio
26-04-2009, 13:07
dùng chỉ số ID đếm lên tự tăng cho rồi, bây h quản lý ai cũng dùng vậy cả ...

matmeoviet
26-04-2009, 19:19
mình xin tiếp thu và cảm ơn các bạn đã góp ý với mình
mình cũng thấy diều thầy giáo ra la bất hợp lý
và mình cũng làm database với mã SV bắt đầu từ SV 01
cảm ơn mọi người nhê
mình mới học có gì mọi người chỉ dạy mình nhé

dangviethai
27-04-2009, 13:52
dùng uniqueidentifier trong SQL Server đi cho nhanh :)