MỤC LỤC
LỜI NÓI ĐẦU
PHẦN A: GIỚI THIỆU ĐỀ TÀI VÀ MÔ TẢ BÀI TOÁN THI TRẮC NGHIỆM
CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI 1
CHƯƠNG II: MÔ TẢ BÀI TOÁN THI TRẮC NGHIỆM 2
PHẦN B:PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG THÔNG TIN
CHƯƠNG I: PHÂN TÍCH VÀ THIẾT KẾ THÀNH PHẦN HỆ THỐNG THÔNG TIN Ở MỨC QUAN NIỆM XỬ LÝ 3
I. SƠ ĐỒ CHỨC NĂNG – BFD 3
II. SƠ ĐỒ DÒNG DỮ LIỆU – DFD 5
III. BIỂU ĐỒ USE CASE 8
1. BIỂU ĐỒ 8
2. ĐẶC TẢ HÀNH VI 9
3. BIỂU ĐỒ HOẠT ĐỘNG 12
CHƯƠNG II: PHÂN TÍCH VÀ THIẾT KẾ THÀNH PHẦN HỆ THỐNG THÔNG TIN Ở MỨC QUAN NIỆM DỮ LIỆU 13
I. SƠ ĐỒ QUAN HỆ THỰC THỂ KẾT HỢP – ERD (MỨC QUAN NIỆM) 14
II. SƠ ĐỒ THỰC THỂ KẾT HỢP (MỨC VẬT LÝ) 15
III. TẬP THỰC THỂ 16
IV. MỐI LIÊN KẾT GIỮA CÁC THỰC THỂ 17
V. MÔ HÌNH QUAN HỆ 18
VI. TỪ ĐIỂN DỮ LIỆU 21
CHƯƠNG III: CÁC RÀNG BUỘC TOÀN VẸN 24
I. RÀNG BUỘC TOÀN VẸN TRÊN MIỀN GIÁ TRỊ CỦA THUỘC TÍNH 24
II. RÀNG BUỘC TOÀN VẸN LIÊN BỘ 25
III. RÀNG BUỘC TOÀN VẸN VỀ PHỤ THUỘC TỒN TẠI 28
PHẦN C: PHỤ LỤC
A. TÌM HIỂU VỀ CÔNG NGHỆ C#.NET 31
I. SƠ LƯỢC VỀ C#.NET 31
II. MỘT SỐ KHÁI NIỆM CƠ BẢN TRONG C# 31
III. WINDOWS FORMS 34
IV. TRUY CẬP DỮ LIỆU VỚI ADO.NET 36
V. CRYSTAL REPORT 39
B. TÌM HIỂU HỆ QUẢN TRỊ SQL SERVER 2000 41
I. LỊCH SỬ VÀ PHÁT TRIỂN SQL SERVER 2000 41
II. CÁC THÀNH PHẦN CẤU THÀNH CỦA SQL SERVER 2000 41
III. CÁC PHÁT BIỂU CỦA T – SQL 42
IV. MỘT SỐ HÀM THÔNG DỤNG TRONG SQL SERVER 2000 43
V. LƯỢC ĐỒ QUAN HỆ TRONG SQL (DIAGRAM) 45
VI. QUAN HỆ (RELATIONSHIP) 46
VI. THỦ TỤC THƯỜNG TRÚ (STORED PROCEDURE) 46
1. TẠO STORED PROCEDURE 46
2. THAY ĐỔI STORED PROCEDURE 47
3. XÓA STORED PROCEDURE 47
4. PHÁT BIỂU ĐIỀU KHIỂN 47
C. THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH 49
I. MÔ HÌNH QUAN HỆ DỮ LIỆU TOÀN HỆ THỐNG 49
II. XÂY DỰNG MỘT SỐ GIẢI THUẬT XỬ LÝ CHÍNH 50
III. CÁC GIAO DIỆN CỦA CHƯƠNG TRÌNH 54
1. GIAO DIỆN ĐĂNG NHẬP VÀO CHƯƠNG TRÌNH 54
2. GIAO DIỆN CHÍNH CỦA CHƯƠNG TRÌNH 55
3. GIAO DIỆN NHẬP DANH SÁCH LỚP 56
4. GIAO DIỆN NHẬP DANH SÁCH HỌC SINH 57
5. GIAO DIỆN NHẬP ĐỀ THI 58
6. GIAO DIỆN NHẬP CÂU HỎI 58
7. GIAO DIỆN PHÂN CÔNG LỊCH THI 59
8. GIAO DIỆN ĐĂNG KÝ THI 60
9. GIAO DIỆN THI TRẮC NGHIỆM 61
10. GIAO DIÊN IN DANH SÁCH LỚP 62
11. GIAO DIÊN IN DANH SÁCH LỚP (REPORT) 63
12 GIAO DIÊN IN BẢNG ĐIỂM 64
13 GIAO DIÊN IN BẢNG ĐIỂM (REPORT) 64
14. GIAO DIỆN TRỢ GIÚP 65
KẾT LUẬN 66
TÀI LIỆU THAM KHẢO 67
68 trang |
Chia sẻ: maiphuongdc | Lượt xem: 1854 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Luận văn Phân tích, thiết kế hệ thống thông tin và xây dựng chương trình thi trắc nghiệm môn toán tại trường THPT, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ïng chuẩn thấp nhất trong các dạng chuẩn của quan hệ.
VI. TỪ ĐIỂN DỮ LIỆU:
1. PHANQUYEN (Bảng phân quyền)
SốTT
Tên trường
Diễn giải
Kiểu dữ liệu
Độ lớn
Ghi chú
1
USER
Mã USER
Nvarchar
50
Khóa
2
PASSWORD
Password của USER
Nvarchar
50
2. DSLOP (Bảng danh sách lớp)
SốTT
Tên trường
Diễn giải
Kiểu dữ liệu
Độ lớn
Ghi chú
1
MALOP
Mã lớp
Nvarchar
10
Khóa
2
TENLOP
Tên lớp
Nvarchar
50
3. HOCSINH (Bảng học sinh)
SốTT
Tên trường
Diễn giải
Kiểu dữ liệu
Độ lớn
Ghi chú
1
MAHS
Mã học sinh
Nvarchar
10
Khóa
2
TENHS
Tên học sinh
Nvarchar
50
3
MALOP
Mã lớp
Nvarchar
10
4
NGAYSINH
Ngày sinh của học sinh
Datatime
8
5
PHAI
Phái của học sinh
Bit
1
6
DIACHI
Địa chỉ của học sinh
Nvarchar
100
7
GHICHU
Ghi chú
Nvarchar
300
8
HINHANH
Hình ảnh
Nvarchar
40000
4. DETHI (Bảng đề thi)
SốTT
Tên trường
Diễn giải
Kiểu dữ liệu
Độ lớn
Ghi chú
1
MADETHI
Mã đề thi
Nvarchar
10
Khóa
2
TENDETHI
Tên đề thi
Nvarchar
100
5. CAUHOI (Bảng câu hỏi)
SốTT
Tên trường
Diễn giải
Kiểu dữ liệu
Độ lớn
Ghi chú
1
MACAUHOI
Mã câu hỏi
Nvarchar
10
Khóa
2
NOIDUNG
Nội dung câuhỏi
Nvarchar
4000
3
CAUA
Nội dung trả lời câu a
Nvarchar
3000
4
CAUB
Nội dung trả lời câu b
Nvarchar
3000
5
CAUC
Nội dung trả lời câu c
Nvarchar
3000
6
CAUD
Nội dung trả lời câu d
Nvarchar
3000
7
CAUE
Nội dung trả lời câu e
Nvarchar
3000
8
DAPAN
Đáp án của câu hỏi
Char
1
9
HINHVEMH
Hình vẽ minh hoạ
Nvarchar
4000
6. CHITIETDETHI (Bảng chi tiết đề thi)
SốTT
Tên trường
Diễn giải
Kiểu dữ liệu
Độ lớn
Ghi chú
1
MADETHI
Mã đề thi
Nvarchar
10
Khóa
2
MACAUHOI
Mã câu hỏi
Nvarchar
10
Khóa
7. KYTHI (Bảng kỳ thi)
SốTT
Tên trường
Diễn giải
Kiểu dữ liệu
Độ lớn
Ghi chú
1
MAKYTHI
Mã kỳ thi
Nvarchar
10
Khóa
2
TENKYTHI
Tên kỳ thi
Nvarchar
300
3
NGAYTHI
Ngày thi
Nvarchar
10
4
SOCAUHOI
Số câu hỏi trong đề thi
Int
4
5
THOIGIAN
Thời gian làm bài
Int
4
6
DIEM
Điểm cho mỗi câu trả lời đúng
Float
8
8. BAILAM (Bảng bài làm)
SốTT
Tên trường
Diễn giải
Kiểu dữ liệu
Độ lớn
Ghi chú
1
MAHS
Mã học sinh
Nvarchar
10
Khóa
2
MAKYTHI
Mã kỳ thi
Nvarchar
10
Khóa
3
MACAUHOI
Mã câu hỏi
Nvarchar
10
Khóa
4
TRALOI
Trả lời
Char
1
9. BANGDIEM (Bảng điểm)
SốTT
Tên trường
Diễn giải
Kiểu dữ liệu
Độ lớn
Ghi chú
1
MAKYTHI
Mã kỳ thi
Nvarchar
10
Khóa
2
MAHS
Mã học sinh
Nvarchar
10
Khóa
3
DIEMTHI
Điểm thi của học sinh
Float
8
CHƯƠNG III: CÁC RÀNG BUỘC TOÀN VẸN
I. RÀNG BUỘC TOÀN VẸN TRÊN MIỀN GIÁ TRỊ CỦA THUỘC TÍNH:
1. HOCSINH(MAHS, TENHS, NGAYSINH, MALOP, PHAI, DIACHI, GHICHU, HINHANH)
Bối cảnh: HOCSINH
Điều kiện: "q Ỵ THOCSINH
[q.NAMSINH > 1984] And [q.NAMSINH < 1990] And
[q.PHAI = 1] Or [q.PHAI = 0].
2. KYTHI(MAKYTHI, TENKYTHI, NGAY THI, SOCAUHOI, THOIGIAN, DIEM)
Bối cảnh: KYTHI
Điều kiện: "q Ỵ TKYTHI
[q.NGAYTHI > q.Now()] And [q.DIEM < 10] And [q.THOIGIAN <q.SOCAUHOI*3]
3. BANGDIEM(MAKYTHI, MAHS, DIEMTHI)
Bối cảnh: BANGDIEM
Điều kiện: "q Ỵ TBANGDIEM
[q.DIEM ³ 0 ] And [q.DIEM £ 10]
4. CAUHOI(MACAUHOI, NOIDUNG, CAUA, CAUB, CAUC, CAUD, CAUE, DAPAN, HINHVEMH)
Bối cảnh: CAUHOI
Điều kiện: "q Ỵ TCAUHOI
[q.DAPAN = “a” ] OR [q.DAPAN = “b” ] OR[q.DAPAN = “c” ] OR [q.DAPAN = “d” ] OR [q.DAPAN = “e” ]
5. BAILAM(MAKYTHI, MAHS, MACAUHOI, TRALOI)
Bối cảnh: BAILAM
Điều kiện: "q Ỵ TBAILAM
[q.TRALOI = “a” ] OR [q.TRALOI = “b” ] OR[q.TRALOI = “c” ] OR [q.TRALOI = “d” ] OR [q.TRALOI = “e” ]
II. RÀNG BUỘC TOÀN VẸN LIÊN BỘ:
1. PHANQUYEN(USER, PASSWORD)
Bối cảnh: PHANQUYEN
Điều kiện: "q1, q2 Ỵ TPHANQUYEN
q1.USER q2.USER
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
PHANQUYEN
+
USER
-
+
USER
2. DSLOP(MALOP, TENLOP)
Bối cảnh: DSLOP
Điều kiện: "q1, q2 Ỵ TDSLOP
q1.MALOP q2.MALOP
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
DSLOP
+
MALOP
-
+
MALOP
3. HOCSINH(MAHS, TENHS, NGAYSINH, MALOP, PHAI, DIACHI, GHICHU, HINHANH)
Bối cảnh: HOCSINH
Điều kiện: "q1, q2 Ỵ THOCSINH
q1.MAHS q2.MAHS
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
HOCSINH
+
MAHS
-
+
MAHS
4. DETHI(MADETHI, TENDETHI)
Bối cảnh: DETHI
Điều kiện: "q1, q2 Ỵ TDETHI
q1.MADETHI q2.MADETHI
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
DETHI
+
MADETHI
-
+
MADETHI
5. CAUHOI(MACAUHOI, NOIDUNG, CAUA, CAUB, CAUC, CAUD, CAUE, DAPAN, HINHVEMH)
Bối cảnh: CAUHOI
Điều kiện: "q1, q2 Ỵ TCAUHOI
q1.MACAUHOI q2.MACAUHOI
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
CAUHOI
+
MACAUHOI
-
+
MACAUHOI
6. CHITIETDETHI(MADETHI, MACAUHOI)
Bối cảnh: CHITIETDETHI
Điều kiện: "q1, q2 Ỵ TCHITIETDETHI
q1.MADETHI q2.MADETHI
Or q1.MACAUHOI q2.MACAUHOI
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
CHITIETDETHI
+
MADETHI, MACAUHOI
-
+
MADETHI, MACAUHOI
7. KYTHI(MAKYTHI, TENKYTHI, NGAYTHI, SOCAUHOI, THOIGIAN, DIEM)
Bối cảnh: KYTHI
Điều kiện: "q1, q2 Ỵ TKYTHI
q1.MAKYTHI q2.MAKYTHI
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
KYTHI
+
MAKYTHI
-
+
MAKYTHI
8. BAILAM(MAHS, MAKYTHI, MACAUHOI, TRALOI)
Bối cảnh: BAILAM
Điều kiện: "q1, q2 Ỵ TBAILAM
q1.MAHS q2.MAHS
Or q1.MAKYTHI q2.MAKYTHI
Or q1.MACAUHOI q2.MACAUHOI
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
BAILAM
+
MAHS, MAKYTHI, MACAUHOI
-
+
MAHS, MAKYTHI, MACAUHOI
9. BANGDIEM(MAKYTHI, MAHS, DIEM)
Bối cảnh: BANGDIEM
Điều kiện: "q1, q2 Ỵ TBANGDIEM
q1.MAHS q2.MAHS
Or q1.MAKYTHI q2.MAKYTHI
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
BANGDIEM
+
MAKYTHI, MAHS
-
+
MAKYTHI, MAHS
III. RÀNG BUỘC TOÀN VẸN VỀ PHỤ THUỘC TỒN TẠI:
1.
DSLOP (MADETHI, TENDETHI)
HOCSINH (MAHS, TENHS, MALOP, NGAYSINH, PHAI, DIACHI, GHICHU, HINHANH)
Bối cảnh: DSLOP, HOCSINH
Điều kiện: DSLOP[MALOP] É HOCSINH[MALOP]
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
DSLOP
-
+
MALOP
+
MALOP
HOCSINH
+
MALOP
-
+
MALOP
2.
CHITIETDETHI (MACAUHOI, MACAUHOI)
CAUHOI (MACAUHOI, NOIDUNG, CAUA, CAUB, CAUC, CAUD, CAUE, DAPAN, HINHVEMH)
Bối cảnh: CHITIETDETHI, CAUHOI
Điều kiện:
CAUHOI[MACAUHOI] É CHITIETDETHI[MACAUHOI]
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
DSLOP
-
+
MACAUHOI
+
MACAUHOI
HOCSINH
+
MACAUHOI
-
+
MACAUHOI
3.
CHITIETDETHI (MACAUHOI, MACAUHOI)
DETHI (MADETHI, TENDETHI)
Bối cảnh: CHITIETDETHI, DETHI
Điều kiện:
DETHI[MADETHI] É CHITIETDETHI[MADETHI]
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
DETHI
-
+
MADETHI
+
MADETHI
CHITIETDETHI
+
MADETHI
-
+
MADETHI
4.
KYTHI (MAKYTHI, TENKYTHI, NGAYTHI, SOCAUHOI, THOIGIAN, DIEM)
BAILAM (MAKYTHI,MAHS, MACAUHOI, TRALOI)
Bối cảnh: KYTHI, BAILAM
Điều kiện: KYTHI[MAKYTHI] É BAILAM[MAKYTHI]
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
KYTHI
-
+
MAKYTHI
+
MAKYTHI
BAILAM
+
MAKYTHI
-
+
MAKYTHI
5.
HOCSINH (MAHS, TENHS, MALOP, NGAYSINH, PHAI, DIACHI, GHICHU, HINHANH)
BAILAM (MAKYTHI,MAHS, MACAUHOI, TRALOI)
Bối cảnh: HOCSINH, BAILAM
Điều kiện: HOCSINH[MAHS] É BAILAM[MAHS]
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
HOCSINH
-
+
MAHS
+
MAHS
BAILAM
+
MAHS
-
+
MAHS
6.
CAUHOI (MACAUHOI, NOIDUNG, CAUA, CAUB, CAUC, CAUD, CAUE, DAPAN, HINHVEMH)
BAILAM (MAKYTHI,MAHS, MACAUHOI, TRALOI)
Bối cảnh: CAUHOI, BAILAM
Điều kiện: CAUHOI[MACAUHOI] É BAILAM[MACAUHOI]
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
CAUHOI
-
+
MACAUHOI
+
MACAUHOI
BAILAM
+
MACAUHOI
-
+
MACAUHOI
7.
KYTHI (MAKYTHI, TENKYTHI, NGAYTHI, SOCAUHOI, THOIGIAN, DIEM)
BANGDIEM (MAKYTHI,MAHS, DIEMTHI)
Bối cảnh: KYTHI, BAILAM
Điều kiện: KYTHI[MAKYTHI] É BAILAM[MAKYTHI]
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
KYTHI
-
+
MAKYTHI
+
MAKYTHI
BAILAM
+
MAKYTHI
-
+
MAKYTHI
8.
HOCSINH (MAHS, TENHS, MALOP, NGAYSINH, PHAI, DIACHI, GHICHU, HINHANH)
BANGDIEM (MAKYTHI,MAHS, DIEMTHI)
Bối cảnh: HOCSINH, BANGDIEM
Điều kiện: HOCSINH[MAHS] É BANGDIEM[MAHS]
Tầm ảnh hưởng:
Thêm
Xóa
Sửa
HOCSINH
-
+
MAHS
+
MAHS
BANGDIEM
+
MAHS
-
+
MAHS
A. TÌM HIỂU VỀ CÔNG NGHỆ C#.NET
I. SƠ LƯỢC VỀ C#.Net:
Bộ Visual Studio.Net ra đời là một bước nhảy vọt của công nghệ lập trình, nó cung cấp cho nhà lập trình những phương pháp, công cụ cùng với những đặc điểm mới mà các phiên bản của ngôn ngữ lập trình trước đây còn thiếu sót.
Ngôn ngữ lập trình C# (hay còn gọi C Shap) là một ngôn ngữ lập trình trên môi trường windows, cho phép lập trình phát triển về phần cứng, kỹ thuật truyền thông, tối ưu hoá, giao tiếp với Internet… và là phiên bản đầu tiên vừa được hãng Microsoft giới thiệu trong bộ Visual Studio.Net 2003.
Khởi đầu với tên gọi là Cool vào khoảng năm 2000, C# đã tạo ra một cuộc tranh luận lớn trên nền .NET. Từ các lời đồn đại, các ước đoán, C# đã trở thành một ngôn ngữ đơn giản và hoàn toàn hướng đối tượng làm hài lòng giới lập trình C++. Như chúng ta đã biết C++ bắt nguồn từ C: trước hết là một bổ sung phức hợp cho C, sau đó là một cố gắng thực sự của định hướng đối tượng. Để tốt hơn C, C++ phải giữ lại một số đặc điểm của ngôn ngữ không hướng đối tượng: đó là những hàm độc lập và các biến toàn cục. C# thì khác, nó tuyệt giao hoàn toàn với các đặc tính như thế. Mọi kiểu biến, kể cả kiểu giá trị đơn giản, đều được xem xét như là một đối tượng. Mọi hàm đều phải thuộc một lớp, không còn được dùng các biến toàn cục. Tuy thế, các lớp chứa các hàm tĩnh hay biến tĩnh có thể được xem và hành động như các hàm độc lập và các biến toàn cục.
II. MỘT SỐ KHÁI NIỆM CƠ BẢN TRONG C#:
1. Không gian tên (namespace):
Hỗ trợ cho sự cô lập và đóng gói các lớp (class), các giao diện, và các struct có liên quân thành một đơn vị (unit). Cú pháp cho việc khai báo một không gian tên như sau:
namespace some-namespace-name{
// các lớp (class), các giao diện, các struct…
}
Có nhiều không gian tên trong .NET Framework khi tương tác với cơ sở dữ liệu, bạn cần khai báo using trong mã nguồn của chương trình.
2. Toán tử trong C#:
Toán tử là phép toán được áp dụng cho các kiểu cơ sở hay kiểu đối tượng object. Toán tử một ngôi là toán tử thực hiện trên một toán hạng duy nhất. Toán tử hai ngôi cần phải có hai toán hạng bên phải và trái. Toán tử quan hệ có dạng là biểu thức Boolean có thể được dùng để tạo các những biểu thức điều kiện.
Toán tử
Ý nghĩa
Toán học
+, -, *, /, %
Logical
&, |, ^, !, ~, &&, ||
Cộng một ngôi, trừ một ngôi
++, --
Shift (dịch chuyển bit)
>>, <<
Quan hệ so sánh
= =, ! =, , =
Gán
=, + =, - =, * =, / =, % =,! =, ^ =, >=
Thông tin kiểu
Is
Chuyển kiểu
(Type) Variable, as
Trong đó:
- Toán tử is: toán tử is dùng để kiểm tra xem kiểu của một thực thẻ là kiểu gì. C# hỗ trợ rất mạnh thông tin về kiểu trong quá trình chạy (runtime) và toán tử is sử dụng thông tin kiểu này để xác định xem thực thể đã cho có phải là kiểu theo yêu cầu hay không. Cú pháp của toán tử is như sau:
expression is type
Toán tử is có kết quả là Boolean và có thể được sử dụng trong biểu thức điều kiện. Toán tử is trả về giá trị true nếu các điều kiện sau đây được thoã mãn:
* Biểu thức có giá trị khác null.
* Biểu thức có thể ép kiểu an toàn. Eùp kiểu ở đây được xem là ép kiểu tường minh (explicit) có dạng: (type) (expression).
Nếu cả hai điều kiện trên thỏa mãn, toán tử is sẽ trả về giá trị true, ngược lại false.
- Toán tử as: cũng sử dụng thông tin về kiểu trong quá trình thực thi như toán tử is, toán tử as sẽ cố gắng ép kiểu một biểu thức sang kiểu được yêu cầu. Cách ép kiểu thông thường có dạng T(e), trong đó T là kiểu và e là biểu thức. Phép ép kiểu sẽ tạo nên một InvalidCastException khi có sự ép
kiểu không hợp lệ. Toán tử as không phát sinh ngoại lệ exception, thay vì vậy, kết quả trả về là giá trị null.
Toán tử as sử dụng cú pháp tương tự như toán tử is:
expression as type
- Lớp: hay còn gọi là class là sự gói gọn các dữ liệu và phương thức (method) hoạt động trên dữ liệu đó. Trong C#, lớp được xem là kiểu dữ liệu tham chiếu (reference), do đó các thể hiện (instance) của lớp sẽ được chứa tại vùng nhớ heap và quản lý bởi GC (bộ thu rom rác). Khi một thể hiện của lớp được tạo, bộ nhớ sẽ phân phối vùng nhớ tương ứng trên heap và các tham chiếu đếùn đối tượng sẽ bắt đầu được đếm. Khi số đếm tham chiếu bằng 0, GC sẽ phục hồi lại vùng nhớ bị chiếm bởi đối tượng và trả bộ nhớ sang trạng thái sẵn sàng để sử dụng.
Lớp có thể chứa các field (trường), methods (phương thức), event (sự kiện), properties (thuộc tính) và các lớp lồng nhau. Lớp cũng có thể kế thừa từ những lớp khác và phát triển đa giao diện (multiple intefaces). Lớp có thể khai báo các thành phần là public, protected, private, internal hoặc protected internal.
Ví dụ một class đơn giản:
Using System;
public class hocsinh{
// trường tên học sinh
private string Tenhs;
// phương thức khởi dựng
public hocsinh (string tenhs){
Tenhs = tenhs;
}
public void speak(){
Console.WriteLine(“Chao ban. Ten toi la {0}”,Tenhs);
}
}
public class simple(){
public static void main(){
hocsinh duong = new hocsinh(“duong”);
duong.speak();
}
}
Các bổ từ truy xuất quy định tầm ảnh hưởng của chúng với các biến trong lớp
Bổ từ
Ý nghĩa
Public
Tất cả các mã đều thấy được
protected
Chỉ có thể thấy được ở lớp hiện tại và lớp kế thừa
Private
Chỉ thấy được ở lớp hiện tại
internal
Chỉ thấy được ở gói (assembly) hiện tại
protected internal
Chỉ thấy được ở gói hiện tại và của kiểu dẫn xuất từ lớp
III. WINDOWS FORMS:
Windows forms là sự thay thế của .NET cho MFC trong Visual C++, nó hoàn toàn là các lớp hướng đối tượng, mang tính kế thừa dành cho các nhà phát triển ứng dụng trong môi trường .NET. Mỗi thành phần giao diện còn gọi là component đặt trên Forms của windows forms là một thể hiện (instance) cụ thể của một lớp nào đó. Component được định vị trên Forms và thay đổi giao diện thông qua các phương thức (method), thuộc tính (property) của lớp đối tượng. Các công cụ phát triển trực quan sẽ cho phép kéo thả (drag-drop) những thành phần component lên Forms và quản lý chặt chẽ việc khởi tạo mã nguồn cũng như tương tác giữa các thành phần component này với nhau.
Tương tác của người dùng với các thành phần component trong Windows Forms thực hiện thông qua sự kiện (event). Mỗi thành phần component cung cấp một tập các sự kiện nguồn (event resource) như sự kiện di chuyển chuột, nút nhấn được kích hoạt, con trỏ thay đổi vị trí… Nhiệm vụ của lập trình viên là viết các bộ xử lý (handler) cho những sự kiện này. Các hàm xử lý sự kiện được gọi thông qua mô hình chuyển giao (deligate) mà không cần dựa vào bất kỳ thông điệp nào trong hệ thống.
Sử dụng các điều khiển:
- Checkbox và nút Radio: Checkbox có thể được đặt trực tiếp trên form hoặc trong một khung chứa hay một nhóm bao gồm nhiều nút. Nút nhấn Radio thường được kết hợp với những nút khác và thường được đặt chung trong một nhóm các nút có quan hệ với nhau, chọn nút này sẽ dẫn tới hủy chọn các nút khác nhau trong cùng nhóm. Tất cả các nút radio đều sử dụng cùng phương thức xử lý sự kiện kích chuột là OnRadio, trong phương thức này chúng ta duyệt qua tất cả các nút trong nhóm và kiểm tra trạng thái nào đang được chọn, tương ứng với nút được chọn chúng ta sẽ thiết lập các giá trị thích hợp cho những biến thành viên.
void OnRadio (Object sender, EventArgs e)
{
int n = 0;
foreach (Object o in radiogroup.Controls )
{
if (o is RadioButton)
{
RadioButton r = (RadioButton) o;
if (r.Checked)
Radio = n;
n++;}
}
}
đối với CheckBox, dữ liệu thể hiện lại là các thuộc tính truy xuất trực tiếp đến giá trị của CheckBox.
- Ô soạn thảo Edit: Windows Forms cung cấp thành phần điêu khiển là ô soạn thảo edit có khả năng dùng nhập liệu một dòng hoặc nhiều dòng dữ liệu, bạn có thể dùng thành phần edit cho nhiều mục đích khác nhau.Ví dụ đối tượng edit có thể dùng như một cửa sổ soạn thảo tài liệu giống như notepad của Windows. Hoặc đơn giản chỉ là một khung nhỏ cho phép nhập vào mật khẩu (password) với các ký tự ẩn. Trong các ứng dụng, ô soạn thảo edit hay textbox được sử dụng rộng rãi.
- ListBox: Đối tượng ListBox (hộp danh sách) cho phép hiển thị các mục chọn ở dạng danh sách dọc hoặc ngang. Bạn có thể chọn cùng lúc một hoặc nhiều mục chọn trong danh sách.
- Dialog (hộp thoại): Có hai kiểu hộp thoại: kiểu modal (bắt buộc nhập liệu) và kiểu modaless (không bắt nhập liệu).
+ Hộp thoại kiểu modal yêu cấu người dùng phải hoàn tất thao tác nhập liệu hoặc những yêu cầu chọn lựa trước khi quay về dòng hoạt động chính của chương trình (ví dụ hộp Options trong Microsoft Word).
+ Hộp thoại modaless có thể được dùng để thực hiện thao tác nào đó nhưng vẫn cho phép người dùng tương tác với phần còn lại của chương trình chính (ví dụ như hộp tìm kiếm).
Hộp thoại được hiển thị bằng cách gọi hàm ShowDialog. Tất cả các hộp thoại thông dụng đều ra đời và kế thừa từ lớp:
System.Windows.Forms.CommoDialog.
Bạn có thể dùng lớp cơ sở này để tạo ra các hộp thoại tuỳ biến theo ý mình.
IV. TRUY CẬP DỮ LIỆU VỚI ADO.NET:
ADO.NET là một lớp trong Visual Studio.NET, chúng chia làm hai loại: lớp kết nối (hay còn gọi Connected Layer) và lớp không kết nối (hay còn gọi Disconnected Layer). Với hai lớp này chúng ta có thể kết nối trên các loại dữ liệu như SQL Server, MySQL, MS Access… Trong trường hợp bạn cần thiết phải truy cập và xử lý đến dữ liệu nguồn như truy cập bằng phát biểu select, insert (them mẫu tin), Delete (xoá)… bạn phải sử dụng lớp kết nối. Ngược lại, khi thao tác trên dữ liệu tạm thời, bạn dùng lớp không kết nối.
- Mô hình ADO.NET:
ADO.NET Object Model
System Data
UI
Data
View
Data Provider
System.Data
Data Relation
Data Table
Data Table
Data
Column
Data Row
Data
Reader
DataAdapter
Command
Connection
Data
Column
Data
Column
Data Row
Hình: Mô hình đối tượng ADO.Net cài đặt trên MicroSoft.Net Framework
Trong đó:
- Data Provider: là một phần của mô hình ADO.NET bao gồm bốn lớp:
Connection
DataAdapter
Command
DataReader
+ Lớp Connection (hay còn gọi lớp kết nối cơ sở dữ liệu): sử dụng kết nối dữ liệu nguồn. Để kết nối chúng ta cần khai báo Connection. Có ba loại kết nối: OdbcConnection, OleDbConnection, và SQLConnection.
Ví dụ: kết nối SQLConection:
SqlConnection con = new SqlConnection ("server=localhost; database=TRACNGHIEM; user id=sa; password=;");
// Mở kết nối cơ sở dữ liệu
con.Open();
//Đóng kết nối
con.Close();
// Hủy kết nối
con.Dispose();
+ DataAdapter: dùng để nhận dữ liệu từ dữ liệu nguồn, sau đó chuyển vào DataSet và các lớp quan hệ như DataTable. DataAdapter sử dụng các đối tượng Command để lấy dữ liệu nguồn và cập nhật trở lại dữ liệu nguồn khi có sự thay đổi.
+ Command: chức năng của chúng dùng để truy cập dữ liệu từ DataAdapter hay truyền dữ liệu vào DataSet thông qua Adapter. Có bốn thuộc tính của đối tượng Command như sau:
* SelectCommand: Truy vấn dữ liệu từ nguồn dữ liệu.
* InsetCommand: Thêm dữ liệu vào nguồn dữ liệu.
* DeleteComand: xoá dữ liệu nguồn.
* UpdateCommand: cập nhật dữ liệu.
+ DataReader: là lớp chỉ đọc, dữ liệu được đọc theo một chiều từ dữ liệu nguồn.
- DataSet: Thuộc lớp không kết nối, là một phần của không gian tên System.Data. Chúng bao gồm bảng (Table), cột (Column), dòng (Rows), quan hệ (Relation) và ràng buộc (Constrains). Một trong những điểm mạnh của DataSet là không phụ thuộc vào dữ liệu nguồn, nó có thể chứa dữ liệu từ một hay nhiều cơ sở dữ liệu khác nhau. Để điền dữ liệu từ DataAdapter vào DataSet chúng ta sử dụng phương thức Fill của DataAdapter.
- DataTable: Dùng để chế tác nội dung của bảng trong tập Tables của lớp DataSet. Lớp DataTable nằm trong bộ nhớ truy cập nhanh của dữ liệu từ một bảng, cũng như DataSet, lớp DataTable không có lớp con.
- DataView: Sử dụng để xem dữ liệu, cũng chính là trạng thái DefaultView trong đối tượng DataTable. DefaultView chỉ làm việc với các đối tượng DataSet, không kết hợp với DataAdapter. Bạn có thể sử dụng lớp này để lọc (filtering), sắp xếp (sorting), tìm kiếm (search) và điều hướng (navigation) ngay cả khi kích hoạt những hàng đó trong DataTable.
- DataRow: Sử dụng để trình bày một hàng trong DataTable. Trong thực tế DataRow và DataColumn là khối chính tạo nên lớp DataTable.
- DataColumn: Hiển thị lược đồ của một cột trong lớp DataTable.
- DataRelation: Dùng để trình bày mối quan hệ cha/con (parent/child) giữa hai DataTable với nhau. Điều này được thực hiện bằng mối liên kết thông qua hai đối tượng DataColumn tương thích với nhau của hai đối tượng DataTable tương ứng.
V. CRYSTAL REPORT:
Crystal Report for C#.Net là công cụ chuẩn, cho phép bạn thiết kế báo cáo trên ứng dụng của Visual Basic.NET và Visual C#.Net. Ngoài ra, bạn có thể tạo báo cáo trên ứng dụng Web, sau đó thiết lập như một dịch vụ trên trình chủ. Tập tin Crystal report có tên mở rộng .rpt.
Trong Crystal Report có nhiều dạng khác nhau như sau:
Standart: Mẫu chuẩn có dạng bảng
Form Letter: Có dạng thư hoặc văn bản
Form: Dạng Form
Cross-Tab: Báo cáo dạng chéo
Subrport: Dạng báo cáo con
Mail: Thư điện tử.
Các thuộc tính của CRYSTALREPORTVIEWER
Khi bạn sử dụng CrystalReportViewer để hiển thị trên form của C#.NET, chúng ta cần phải tìm hiểu các thuộc tính của control này:
- Name: tên của CrystalReportViewer, tên này dùng để tham chiếu khi cần thiết.
- AutoScroll: Hai giá trị True/False, True cho phép tự động hiển thị thanh trượt trong trường hợp trang báo cáo lớn hơn kích thước của Control CrystalReportViewer.
- BackColor: màu nền của CrystalReportViewer.
- BackGroundImage: Sử dụng tập tin hình ảnh cho nền Report.
- DisplayGroundTree: True/False, cho phép hiển thị cây dữ liệu bao gồm các trường của bảng.
- Enabled: True/False, cho phép người dùng có thể thực hiện các thao tác trên Report.
- ReportSource: vị trí của tập tin .rpt CrystalReportViewer trên đĩa ứng với CrystalReportViewer.
- ShowCloseButton: True/False cho phép hiển thị hay không nút Close của CrystalReportViewer trên Toolbar.
- ShowGotoPageButton: True/False, cho phép hay không hiển thị nút Next để di chuyển đến trang kế tiếp của CrystalReportViewer trên Toolbar.
- ShowPrintButton: True/False, cho phép hiển thị hay không nút Print của CrystalReportViewer trên Toolbar.
- ShowRefreshButton: True/False, cho phép hiển thị hay không nút Refresh của CrystalReportViewer trên Toolbar.
- ShowTextSearchButton: True/False, cho phép hiển thị hay không nút Search của CrystalReportViewer trên Toolbar.
- ShowZoomButton: True/False, cho phép hiển thị hay không nút Zoom của CrystalReportViewer trên Toolbar.
- Size: kích thước của Report.
Ngoài ra, còn có một số thuộc tính khác của control này, chúng ta có thể sử dụng help để tìm hiểu thêm.
B. TÌM HIỂU HỆ QUẢN TRỊ SQL SERVER 2000:
I. LỊCH SỬ VÀ PHÁT TRIỂN - SQL SERVER 2000:
SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ RDBMS hay còn được gọi là Ralational Database Management System, là một trong những mô hình cơ sở dữ liệu quan hệ thông dụng hiện nay.
Khi nói đến RDBMS System, chúng ta nhìn lại quá trình phát triển cơ sở dữ liệu qua nhiều thập niên, và ta tìm hiểu xem tại sao các công nghệ cơ sở dữ liệu hiện nay được sử dụng rộng rãi trong lĩnh vực lưu