SQL Server 2000 thích hợp để làm DBMS cho chương trình này vì : + Cơ sở dữ liệu ở đây trung bình .
+ SQL Server 2000 cĩ thể chạy trong các hệ điều hành Windows NT 4.0 (từ Srevice Pack 5 trở đi) , Windows 2000 , Windows 98 hoặc Windows Me và cĩ thể sử dụng với hệ điều hành Windows CE .
+ SQL Server của Microsoft là một phương tiện cơ sở dữ liệu Client/Server .
1. Từ điển dữ liệu :
SINHVIENID Mã Sinh Viên MASINHVIEN Mã số Sinh Viên LOPID Mã Lớp
HO Họ
TEN Tên
PHAI Phái NGAYSINH Ngày Sinh DIACHI Địa Chỉ MALOP Mã Số Lớp TENLOP Tên Lớp MONID Mã Mơn MAMON Mã số mơn TENMON Tên mơn
SODVHT Số đơn vị học tập KYTHIID Mã kỳ thi
MAKYTHI Mã số kỳ thi TENKYTHI Tên kỳ thi GIAOVIÊNID Mã Giáo Viên MAGIAOVIEN Mã số GV DIENTHOAI Điện Thọai CHUCDANH Chức Danh
CAUHOIID Mã câu hỏi NOIDUNG Nội dung MUCDO Mức độ DETHIID Mã đề thi
THOIGIANLAMBAI Thời gian làm bài SOCH Số Câu Hỏi CAUTRALOIID Mã Câu Trả Lời NOIDUNG Nội Dung
STT Số thứ tự câu hỏi CAUTRALOIIDCHON Mã câu trả lời BAILAMID Mã bài làm DIEM Điểm Thi NGAYTHI Ngày Thi GROUPID Mã nhĩm TENGROUP Tên Nhĩm USERID Mã User
USERNAME Tên Đăng Nhập PASSWORDS Mật Khẩu
CAUTRALOIDUNG Câu Trả Lời Đúng
2. Mơ tả các Table :
SINHVIEN ( SINHVIENID , MASINHVIEN , LOPID , HO , TEN , PHAI , NGAYSINH , DIACHI , USERID)
FieldName Keys Data Type Size Allow Nulls SINHVIENID Khĩa Numeric 9
MASINHVIEN Varchar 15 Not null LOPID Numeric 9 Not null HO Varchar 50 Not null TEN Varchar 50 Not null PHAI Bit 1 Not null NGAYSINH Date/Time 8 Not null
DIACHI Varchar 50 Null USERID Numeric 9 Not null LOP ( LOPID , MALOP , TENLOP )
Field Name Keys Data Type Size Allow Nulls LOPID Khĩa Numeric 9
MALOP Varchar 15 Not null TENLOP Varchar 50 Not null MON (MONID, MAMON , TENMON , SDVHT )
Field Name Keys Data Type Size Allow Nulls MONID Khĩa Numeric 9
MAMON Varchar 15 Not null Ten MON Varchar 50 Not null SODVHT Integer 4 Not null KYTHI ( KYTHIID , MAKYTHI , TENKYTHI)
Field Name Keys Data Type Size Allow Nulls KYTHIID Khĩa Numeric 9
MAKYTHI Varchar 15 Not null TENKYTHI Varchar 50 Not null GIAOVIEN (MAGV ID, MAGIAOVIEN, HO , TEN , PHAI , DIA CHI ,
DIENTHOAI , CHỨC DANH , ACTIVE , UERID ) Field Name Keys Data Type Size Allow Nulls GIAOVIÊNID Khĩa Numeric 9
MAGIAOVIEN Varchar 15 Not null HO Varchar 50 Not null TEN Varchar 20 Not null PHAI Bit 1 Not null DIACHI Varchar 50 Not null DIENTHOAI Varchar 20 null CHUCDANH Varchar 50 Not null
ACTIVE Bit 1 Not null USERID Numeric 9 Not null
Field Name Keys Data Type Size Allow Nulls GIAOVIENID Khĩa Numeric 9 Not null
MONID Khĩa Numeric 9 Not null
CAUHOI ( CAUHOIID , MONID , GIAOVIENID, NOIDUNG , MUCDO , CAUTRALOIDUNGID )
Field Name Keys Data Type Size Allow Nulls CAUHOIID Khĩa Numeric 9
MONID Numeric 9 Not null GIAOVIENID Numeric 9 Not null NOIDUNG Varchar 200 Not null MUCDO Integer 4 Not null CAUTRALOIDUNGID Numeric 9 Null CAUTRALOI ( CAUTRALOIID , CAUHOIID , NOIDUNG )
Field Name Keys DataType Size Allow Nulls CAUTRALOIID Khĩa Numeric 9 Not null CAUHOIID Numeric 9 Not null NOIDUNG Varchar 60 Not null
DETHI ( DETHIID , MONID, GIAOVIENID , THOIGIANLAMBAI , SOCH ) Field Name Keys DataType Size Allow Nulls DETHIID Khĩa Numeric 9
MONID Numeric 9 Not null GIAOVIENID Numeric 9 Not null THOIGIANLAMBAI Integer 4 Not null SOCH Integer 4 Not null
CAUHOIDETHI ( CAUHOIID , DETHIID , NOIDUNG , MUCDO , CAUTRALOIDUNGID )
Field Name Keys Data Type Size Allow Nulls CAUHOIID Khĩa Numeric 9 Not null DETHIID Numeric 9 Not null NOIDUNG Varchar 200 Not null MUCDO Integer 4 Not null CAUTRALOIDUNGID Numeric 9 Null BODERATHI ( DETHIID ,KYTHIID )
Field Name Keys Data Type Size Allow Nulls DETHIID Khĩa Numeric 9 Not null KYTHIID Khĩa Numeric 9 Not null CAUTRALOIDETHI (CAUTRALOIID , CAUHOIID , NOIDUNG )
Field Name Keys Data Type Size Allow Nulls CAUTRALOIID Khĩa Numeric 9 Not null CAUHOIID Numeric 9 Not null NOIDUNG Varchar 60 Not null
CAUHOIBAILAM (BAILAMID , CAUHOIID, STT, CAUTRALOIIDCHON) Field Name Keys Data Type Size Allow Nulls
STT Numeric 9 Not null CAUHOIID Khĩ
a
Numeric 9 Not null CAUTRALOIIDCHON Numeric 9 Null BAILAMID Khĩ
a
Numeric 9 Not null
CAUTRALOIBAILAM (STT, CAUTRALOIID, BAILAMID)
CAUTRALOIID Khĩ a
Numeric 9 Not null BAILAMID Khĩ
a
Numeric 9 Not null
DSSVDUTHI ( MONID , SINHVIENID , KYTHIID , BAILAMID , DETHIID , DIEM , NGAYTHI )
Field Name Keys Data Type Size Allow Nulls MONID Khĩa Numeric 9 Not null SINHVIENID Khĩa Numeric 9 Not null KYTHIID Khĩa Numeric 9 Not null BAILAMID Numeric 9 Not null DETHIID Numeric 9 Not null DIEM Integer 4 Not null NGAYTHI Date / time 8 Not null GROUPS (GROUPID , TENGROUP)
Field Name Keys Data Type Size Allow Nulls GROUPID Khĩa Numeric 9
TENGROUP Varchar 50 Not null USERS ( USERID , USERNAME , PASSWORDS , GROUPID )
Field Name Keys Data Type Size Allow Nulls USERID Khĩa Numeric 9 Not null USERNAME Varchar 50 Not null PASSWORDS Varchar 50 Not null GROUPID Numeric 9 Not null GIAOVIENCOITHI (GIAOVIENID , KYTHIID , MONID)
Field Name Keys Data Type Size Allow Nulls GIAOVIENID Khĩa Numeric 9 Not null
KYTHIID Khĩa Numeric 9 Not null MONID Khĩa Numeric 9 Not null
3. Ràng buột tồn vẹn :
3.1 RBTV cĩ bối cảnh trên một lược đồ quan hệ a. RBTV về miền giá trị :
R1 : m MON m.DVHT > 0 Tầm ảnh hưởng :
R1 Thêm Xĩa Sửa
MON + +
R2 : sv SINHVIEN
sv.NGAYSINH < GETDATE ( ) Tầm ảnh hưởng :
R2 Thêm Xĩa Sửa SINHVIEN + + R3 : dt DETHI dt.THOIGIANLAMBAI >0 R4 : dt DETHI dt.SOCAUHOI >0 Tầm ảnh hưởng :
R3,4 Thêm Xĩa Sửa
DETHI + +
R 5 : d DSSVDUTHI
d.DIEM BETWEEN 0 AND 10 R 6 : d DSSVDUTHI
d.NGAYTHI > = GETDATE ( ) Tầm ảnh hưởng :
DSSVDUTHI + +
R 7 : ch CAUHOI
ch.MUCDO BETWEEN 1 AND 3
( MUCDO = 1 : Khĩ , 2: Trung Bình , 3: Dễ ) Tầm ảnh hưởng :
R7 Thêm Xĩa Sửa
CAUHOI + +
R 8 : chdt CAUHOIDETHI
chdt.MUCDO BETWEEN 1 AND 3
( MUCDO = 1 : Khĩ , 2: Trung Bình , 3: Dễ ) Tầm ảnh hưởng :
R8 Thêm Xĩa Sửa CAUHOIDETHI + + b. RBTV liên bộ (khĩa nội ) :
R9 : sv1 sv2 SINHVIEN sv1.SINHVIENID sv2.SINHVIENID R10 : sv1 sv2 SINHVIEN sv1.MASINHVIEN sv2.MASINHVIEN R11 : sv1 sv2 SINHVIEN sv1.USERID sv2.USERID R12 : lop1 lop2 LOP
lop1.LOPID lop2.LOPID R13 : lop1 lop2 LOP
lop1.MALOP lop2.MALOP R14 : m1 m2 MON m1.MONID m2.MONID R15 : m1 m2 MON m1.MAMON m2.MAMON R16 : k1 k2 KYTHI k1.KYTHIID m2.KYTHIID R17 : k1 k2 KYTHI
k1.MAKYTHI m2.MAKYTHI R18 : gv1 gv2 GIAOVIEN gv1. GIAOVIENID gv2. GIAOVIENID R19 : gv1 gv2 GIAOVIEN gv1.MAGIAOVIEN gv2.MAGIAOVIEN R20 : gv1 gv2 GIAOVIEN gv1.USERID gv2.USERID R21 : gvd1 gvd2 GIAOVIENDAY gvd1.GIAOVIENID gvd2.GIAOVIENID OR gvd1.MONID gvd2.MONID R22 : ch1 ch2 CAUHOI ch1.CAUHOIID ch2.CAUHOIID R23 : ctl1 ctl2 CAUTRALOI ctl1. CAUTRALOIID ctl2.CAUTRALOIID R24 : dt1 dt2 DETHI dt1. DETHIID dt2.DETHIID R25 : chdt1 chdt2 CAUHOIDETHI chdt1.CAUHOIID ch2dt.CAUHOIID R26 : bd1 bd2 BODERATHI bd1.DETHIID bd2.DETHIID OR bd1.KYTHIID bd2.KYTHIID R27 : ctldt1 ctldt2 CAUTRALOIDETHI ctldt1. CAUTRALOIID ctldt2.CAUTRALOIID R28 : chbl1 chbl2 CAUHOIBAILAM chbd1.CAUHOIID chbd2.CAUHOIID OR chbd1.BAILAMID chbd2.BAILAMID R29 : chbl1 chbl2 CAUHOIBAILAM chbd1.STT chbd2.STT OR chbd1.BAILAMID bd2.BAILAMID R30 : ctlbl1 ctlbl2 CAUTRALOIBAILAM chtld1.CAUTRALOIID chbd2. CAUTRALOIID OR ctlbd1.BAILAMID ctlbd2.BAILAMID R31 : dssvdt1 dssvdt2 DSSVDUTHI dssvdt1.MONID dssvdt2. MONID OR dssvdt1.SINHVIENID dssvdt2.SINHVIENID OR dssvdt1.KYTHIID dssvdt2. KYTHIID R32 : dssvdt1 dssvdt2 DSSVDUTHI
R33 : gvct1 gvct2 GIAOVIENCOITHI gvct1.GIAOVIENID gvct2. GIAOVIENID OR gvct1.KYTHIID gvct2. KYTHIID OR gvct1.MONID gvct2. MONID R34 : u1 u2 USERS u1.USERID u2.USERID R35 : u1 u2 USERS u1.USERNAME u2.USERNAME R36 : g1 g2 GROUPS g1. GROUPID g2. GROUPID
3.2 RBTV cĩ bối cảnh trên nhiều lược đồ quan hệ a. RBTV phụ thuộc tồn tại (khĩa ngoại ) :
R37 : sv SINHVIEN
lop LOP : sv.LOPID = lop.LOPID Tầm ảnh hưởng :
R37 Thêm Xĩa Sửa SINHVIEN + +
LOP + +
R38 : sv SINHVIEN
u USERS : sv.USERID = u.USERID Tầm ảnh hưởng :
R38 Thêm Xĩa Sửa SINHVIEN + +
USERS + +
R39 : gv GIAOVIEN
u USERS : gv.USERID = u.USERID Tầm ảnh hưởng :
R39 Thêm Xĩa Sửa GIAOVIEN + +
USERS + +
R40 : gvd GIAOVIENDAY
Tầm ảnh hưởng :
R40 Thêm Xĩa Sửa GIAOVIENDAY + +
GIAOVIEN + + R41 : gvd GIAOVIENDAY
m MON : gvd.MONID = m.MONID Tầm ảnh hưởng :
R41 Thêm Xĩa Sửa GIAOVIENDAY + +
MON + +
R42 : ch CAUHOI
gv GIAOVIEN : ch.GIAOVIENID = gv.GIAOVIENID Tầm ảnh hưởng :
R42 Thêm Xĩa Sửa
CAUHOI + +
GIAOVIEN + + R43 : ch CAUHOI
m MON : ch.MONID = m.MONID Tầm ảnh hưởng :
R43 Thêm Xĩa Sửa
CAUHOI + +
MON + +
R44 : ctl CAUTRALOI
ch CAUHOI : ctl.CAUHOIID = ch.CAUHOIID Tầm ảnh hưởng :
CAUTRALOI + +
CAUHOI + +
R45 : dt DETHI
gv GIAOVIEN : dt.GIAOVIENID = gv.GIAOVIENID Tầm ảnh hưởng :
R45 Thêm Xĩa Sửa
DETHI + +
GIAOVIEN + + R46 : dt DETHI
m MON : dt.MONID = m.MONID Tầm ảnh hưởng :
R46 Thêm Xĩa Sửa
DETHI + +
MON + +
R47 : chdt CAUHOIDETHI
dt DETHI : chdt.DETHIID = dt.DETHIID Tầm ảnh hưởng :
R47 Thêm Xĩa Sửa CAUHOIDETHI + +
DETHI + +
R48 : bd BODERATHI
dt DETHI : bd.DETHIID = dt.DETHIID Tầm ảnh hưởng :
R48 Thêm Xĩa Sửa BODERATHI + +
DETHI + +
R49 : bd BODERATHI
Tầm ảnh hưởng :
R49 Thêm Xĩa Sửa BODERATHI + +
KYTHI + +
R50 : ctldt CAUTRALOIDETHI
chdt CAUHOIDETHI : ctldt.CAUHOIID = chdt.CAUHOIID Tầm ảnh hưởng :
R50 Thêm Xĩa Sửa CAUTRALOIDETHI + +
CAUHOIDETHI + + R51 : dssv DSSVDUTHI
m MON : dssv.MONID = m.MONID Tầm ảnh hưởng :
R51 Thêm Xĩa Sửa DSSVDUTHI + +
MON + +
R52 : dssv DSSVDUTHI
sv SINHVIEN : dssv.SINHVIENID = sv.SINHVIENID Tầm ảnh hưởng :
R52 Thêm Xĩa Sửa DSSVDUTHI + +
SINHVIEN + + R53 : dssv DSSVDUTHI
kt KYTHI : dssv.KYTHIID = kt.KYTHIID Tầm ảnh hưởng :
R53 Thêm Xĩa Sửa DSSVDUTHI + +
KYTHI + +
R54 : dssv DSSVDUTHI
IF dssv.DETHIID NULL THEN
dt DETHI : dssv.DETHIID = dt.DETHIID END IF
Tầm ảnh hưởng :
R54 Thêm Xĩa Sửa DSSVDUTHI + +
DETHIID + +
R55 : gvct GIAOVIENCOITHI
kt KYTHI : gvct.KYTHIID = kt.KYTHIID Tầm ảnh hưởng :
R55 Thêm Xĩa Sửa GIAOVIENCOITHI + +
KYTHI + +
R56 : gvct GIAOVIENCOITHI
gv GIAOVIEN : gvct.GIAOVIENID = gv.GIAOVIENID Tầm ảnh hưởng :
R56 Thêm Xĩa Sửa GIAOVIENCOITHI + +
GIAOVIEN + +
R65 : gvct GIAOVIENCOITHI
m MON : gvct.MONID = m.MONID Tầm ảnh hưởng :
R65 Thêm Xĩa Sửa GIAOVIENCOITHI + +
R57 : chbl CAUHOIBAILAM
chdt CAUHOIDETHI : chbl.CAUHOIID = chdt.CAUHOIID
Tầm ảnh hưởng :
R57 Thêm Xĩa Sửa CAUHOIBAILAM + +
CAUHOIDETHI + + R58 : chbl CAUHOIBAILAM
dssv DSSVDUTHI : chbl.BAILAMID = dssv.BAILAMID Tầm ảnh hưởng :
R58 Thêm Xĩa Sửa CAUHOIBAILAM + +
DSSVDUTHI + + R59 : ctlbl CAUTRALOIBAILAM
ctldtCAUTRALOIDETHI :ctlbl.CAUTRALOIID = ctldt.CAUTRALOIID Tầm ảnh hưởng :
R59 Thêm Xĩa Sửa CAUHOIBAILAM + + CAUTRALOIDETHI + + R60 : ctlbl CAUTRALOIBAILAM
dssv DSSVDUTHI : ctlbl.BAILAMID = dssv.BAILAMID Tầm ảnh hưởng :
R60 Thêm Xĩa Sửa CAUTRALOIBAILAM + +
DSSVDUTHI + +
R61 : u USERS
g GROUPS : u.GROUPID = g.GROUPID
R61 Thêm Xĩa Sửa
USERS + +
GROUPS + +
b. RBTV liên thuộc tính liên quan hệ : R62 : ch CAUHOI
ctl CAUTRALOI :
ch.CAUTRALOIDUNGID = ctl.CAUTRALOIID AND ctl.CAUHOIID = ch.CAUHOIID
R63 : chdt CAUHOIDETHI
ctldt CAUTRALOIDETHI :
chdt.CAUTRALOIDUNGID = ctldt.CAUTRALOIID AND ctldt.CAUHOIID = chdt.CAUHOIID
R64 : chbl CAUHOIBAILAM
IF chbl.CAUTRALOIIDCHON NULL THEN ctldt CAUTRALOIDETHI :
chbl.CAUTRALOIIDCHON = ctldt.CAUTRALOIID AND ctldt.CAUHOIID = chbl.CAUHOIID END IF
III. CAØI ĐẶT CHƯƠNG TRÌNH
Các giao diện chính :
2. Giao diện Quản Lý Mơn :
4. Giao diện Quản Lý DSSV Dự Thi
6. Giao diện Tạo Đề Thi :
8. Giao diện MainMenu Sinh Viên :
PHẦN III. TỔNG KẾT I. NHẬN XÉT CHUNG :
1. Đánh giá kết quả của chương trình
Qua quá trình nghiên cứu , học hỏi và xây dựng chương trình Thi Trắc Nghiệm , chương trình đã đạt được một số kết quả là :
+ Hổ trợ Giáo Viên soạn Câu Hỏi và tạo Đề Thi theo yêu cầu .
+ Hổ trợ Sinh Viên thi trên máy Client được dễ dàng hơn và được xem lịch thi , xem kết quả thi .
+ Trong quá trình Sinh Viên thi trên máy , Giám Thị Coi Thi cĩ thể can thiệp trực tiếp vào bài làm của Sinh Viên ( cấm thi , hủy bài thi , tạm ngưng thời gian thi của Sinh viên , cho Sinh Viên tiếp tục thời gian thi của mình ) nếu Sinh Viên hoặc bài làm của Sinh Viên đĩ cĩ vấn đề .
+ Giáo Vụ được hổ trợ nhiều tác vụ về nghiệp vụ như quản lý Giáo Viên , Sinh Viên , Mơn Học , Lớp và tổ chức một Kỳ Thi bao gồm các cơng việc : lên danh sách Sinh Viên Dự Thi , quy định các Đề Ra Thi , lên danh sách Giáo Viên Coi Thi .
+ Và với chương trình Thi Trắc Nghiệm này Giáo Viên khơng cịn phải chấm từng bài thi của SV bằng tay nữa , mà hệ thống sẽ tự chấm điểm và in bảng điểm ra theo yêu cầu .
+ Để phân biệt được người sử dụng hệ thống , người sử dụng đăng nhập vào hệ thống bằng tên đăng nhập và mật khẩu riêng của mình , và để bảo mật các mật khẩu của người sử dụng đựơc an tồn , hệ thống sẽ mã hĩa mật khẩu trước khi lưu vào cơ sở dữ liệu.
2. Hạn chế của chương trình :
Trong thời gian ngắn , với tất cả sự nổ lực của chúng em để hồn thành đề tài này .Tuy đạt được những kết quả cụ thể nhưng vẫn khơng tránh khỏi những thiếu sĩt , hạn chế , và cịn tồn tại vấn đề chưa giải quyết tốt cần được gĩp ý bổ sung thêm .
Ngồi ra do kiến thức và kinh nghiệm hạn hẹp nên đề tài muốn phát triển thêm thì cần cĩ thời gian để tiếp tục nghiên cứu , tiếp thu ý kiến đĩng gĩp và hồn thiện về mặt kỹ thuật để chương trình cĩ thể trở thành một ứng dụng tốt và đạt hiệu quả cao.
II.HƯỚNG PHÁT TRIỂN CHƯƠNG TRÌNH :
Với đề tài này chúng ta cĩ thể phát triển thêm :
+ Mở rộng phạm vi soạn thảo đề thi của Giáo Viên bằng một trình soạn thảo nào đĩ và lưu vào file , chương trình sẽ tự động kết nối file đĩ vào cơ sở dữ
+ Câu Hỏi bổ sung thêm hình ảnh minh họa . + In đề thi và cho Sinh Viên thi trên giấy .
+ Thay đổi quyền sử dụng hệ thống một cách linh động
III. KẾT LUẬN
Sự phát triển mạnh mẻ của Cơng Nghệ Thơng Tin cùng với sự địi hỏi ngày càng cao sự tự động hĩa , tin học hĩa của con người vào tất cả các lỉnh vực khiến cho xã hội luơn đổi mới . Qua quá trình tìm hiểu , nghiên cứu và áp dụng những cơng nghệ mới của lĩnh vực Tin Học trong cơng cuộc cải cách của Bộ Giáo Dục , chúng em xây dựng đề tài này với mong muốn được gĩp một phần cơng sức vào cơng cuộc đổi mới này .
Dựa trên những mặt đạt được và chưa đạt được của đề tài , chúng em hy vọng sẽ nhận được nhiều ý kiến đĩng gĩp , nhận xét để cĩ điều kiện phát triển ứng dụng này lên cao hơn nữa .
TAØI LIỆU THAM KHẢO
[1] TEACH YOURSELF OBJECT- ORIENTED PROGRAMMING WITH VISUAL BASIC.NET IN 21 DAYS
Tác giả : Richard J.Simon NXB : Sam
[2] KỸ NĂNG LẬP TRÌNH VISUAL BASIC.NET Tác giả : Nguyễn Tiến Dũng
NXB : Nhà Xuất Bản Thống Kê
[3] LẬP TRÌNH CHUYÊN SÂU VISUAL BASIC.NET Tác giả : Phương Lan
NXB : Nhà Xuất Bản Lao Động - Xã Hội [4] ADO.NET LẬP TRÌNH VAØ ỨNG DỤNG
Tác giả : Nguyễn Tiến _Nguyễn Vũ Thịnh
NXB : Nhà Xuất Bản Thống Kê Lao Động – Xã Hội [5] SQL SERVER 2000 DATABASE DESIGN
Tác giả : Louis Davidson NXB : Wrox
[6] MICROSOFT SQL SERVER 2000
Tác giả : Nguyễn Ngọc Minh_Hồng Đức Hải NXB : Nhà Xuất Bản Lao Động – Xã Hội
[7] VISUAL MODELING WITH RATIONAL ROSE 2000 AND UML Tác giả : Terry Quatrani
NXB : Grady Booch
[8] PHÂN TÍCH VAØ THIẾT KẾ HƯỚNG ĐỐI TƯỢNG BẰNG UML Tác giả : Dương Anh Đức