Đề tài Chương trình thi trắc nghiệm môn toán tại trường THPT

“Chương trình thi trắc nghiệm môn toán tại trường THPT” được xây dựng nhằm phục vụ cho học sinh nắm kiến thức một cách rõ ràng, chính xác, hỗ trợ cho giáo viên đánh giá đúng khả năng và kiến thức của học sinh, góp phần giảm tải về kinh phí và huy động ít giáo viên coi thi lẫn chấm thi hơn thi trắc nghiệm trên giấy. Thi trắc nghiệm đáp ứng được phần nào đó nhu cầu của công việc: - Đối với giáo viên: Thay thế việc lưu trữ dữ liệu, cập nhật dữ liệu trên giấy bằng cách lưu trên máy tính. Sẽ thuận lợi hơn sau này trong việc phát triển thành hệ cơ sở dữ liệu, truy xuất thông tin, tìm kiếm dữ liệu một cách dễ dàng và nhanh chóng, in danh sách lớp, in bảng điểm. - Đối với học sinh: “Chương trình thi trắc nghiệm môn toán tại trường THPT” giúp cho các học sinh kiểm tra kiến thức của học sinh một cách tổng quát, khách quan và chính xác, đảm bảo tính công bằng của cuộc thi. Bằng cách trả lời các câu hỏi trắc nghiệm, chương trình sẽ tự động tính điểm dựa trên câu trả lời của các em học sinh. Qua đó học sinh sẽ tự đánh giá kiến thức của chính mình.

doc68 trang | Chia sẻ: baoanh98 | Lượt xem: 822 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài 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
Tập thực thể bảng điểm MAKYTHI Mã kỳ thi, Khóa MAHS Mã học sinh, Khóa DIEMTHI Điểm thi học sinh IV. MỐI LIÊN KẾT GIỮA CÁC THỰC THỂ: HOCSINH BAILAM Có 1 (1,n) (1,1) 1. Một học sinh có một hoặc nhiều bài làm. Một bài làm có một học sinh làm duy nhất. HOCSINH DSLOP Thuộc 1 (1,1) (1,n) 2. Một học sinh thuộc một danh sách lớp duy nhất. Một danh sách lớp có một hoặc nhiều học sinh. BAILAM CAUHOI Có 2 (1,n) (1,n) 3. Một bài làm có một hoặc nhiều câu hỏi. Một câu hỏi có một hoặc nhiều bài làm. CAUHOI DETHI CTDT (1,n) (1,n) 4. Một câu hỏi được soạn một hoặc nhiều đề thi. Một đề thi gồm một hoặc nhiều câu hỏi khác nhau. BAILAM KYTHI Thuộc 2 (1,1) (1,n) 5. Một bài làm thuộc một kỳ thi duy nhất. Một kỳ thi thuộc một hoặc nhiều bài làm. V. MÔ HÌNH QUAN HỆ: 1. PHANQUYEN(USER, PASSWORD) Ứng với phân quyền có một user duy nhất (USER) để phân biệt với user khác. Þ Quan hệ đạt dạng chuẩn BCNF (Boyce cold normal form). 2. DSLOP(MALOP, TENLOP) Ứng với mỗi danh sách lớp có một mã lớp (MALOP) duy nhất để phân biệt với các lớp khác. Mỗi lớp có tên lớp (TENLOP). Þ Quan hệ đạt dạng chuẩn BCNF (Boyce cold normal form). 3. HOCSINH(MAHS, TENHS, MALOP, NGAYSINH, PHAI, DIACHI, GHICHU, HINHANH) Ứng với mỗi học sinh có mã học sinh (MAHS) để phân biệt với các học sinh khác. Mỗi học sinh có tên học sinh (TENHS), ngày sinh (NGAYSINH), phái (PHAI), địa chỉ (DIACHI), ghi chú (GHICHU), hình ảnh (HINHANH). Þ Quan hệ đạt dạng chuẩn BCNF (Boyce cold normal form). 4. DETHI(MADETHI, TENDETHI) Ứng với mỗi đề thi có mã đề thi (MADETHI) để phân biệt với các đề thi khác. Mỗi đề thi có tên đề thi (TENDETHI). Þ Quan hệ đạt dạng chuẩn BCNF (Boyce cold normal form). 5. CAUHOI(MACAUHOI, NOIDUNG, CAUA, CAUB, CAUC, CAUD, CAUE, DAPAN, HINHVEMH) Ứng với mỗi câu hỏi có mã câu hỏi (MACAUHOI) để phân biệt với câu hỏi khác. Mỗi câu hỏi có nội dung câu hỏi (NOIDUNG), trả lời câu a (CAUA), trả lời câu b (CAUB), trả lời câu c (CAUC), trả lời câu d (CAUD), trả lời câu e (CAUE), đáp án (DAPAN), hình vẽ minh họa cho câu hỏi (HINHVEMH). Þ Quan hệ đạt dạng chuẩn BCNF (Boyce cold normal form). 6. CHITIETDETHI(MADETHI, MACAUHOI) Đối với chi tiết đề thi có một bộ mã đề thi (MADETHI), mã câu hỏi (MACAUHOI). Þ Quan hệ đạt dạng chuẩn BCNF (Boyce cold normal form). 7. KYTHI(MAKYTHI, TENKYTHI, NGAYTHI, SOCAUHOI, THOIGIAN, DIEM) Đối với mỗi kỳ thi có một bộ mã kỳ thi (MAKYTHI), tên kỳ thi (TENKYTHI) để phân biệt với các kỳ thi khác. Mỗi kỳ thi có ngày thi (NGAYTHI), số câu hỏi (SOCAUHOI), thời gian (THOIGIAN), điểm (DIEM). Þ Quan hệ đạt dạng chuẩn BCNF (Boyce cold normal form). 8. BAILAM(MAHS, MAKYTHI, MACAUHOI, TRALOI) Ứng với mỗi bài làm có một bộ mã học sinh (MAHS), mã kỳ thi (MAKYTHI), mã câu hỏi (MACAUHOI) để phân biệt với các bài làm khác. Mỗi bài làm có trả lời (TRALOI). Þ Quan hệ đạt dạng chuẩn BCNF (Boyce cold normal form). 9. BANGDIEM(MAKYTHI, MAHS, DIEMTHI) Đối với mỗi bảng điểm có một bộ mã kỳ thi (MAKYTHI), mã học sinh (MAHS) để phân biệt điểm của học sinh. Mỗi bảng điểm đều có điểm (DIEM) của học sinh thi. Þ Quan hệ đạt dạng chuẩn BCNF (Boyce cold normal form). Kết luận: Cơ sở dữ liệu đạt dạng chuẩn BCNF (Boyce cold normal form). Ghi chú: Định nghĩa dạng chuẩn - Một thuộc tính được gọi là thuộc tính nếu giá trị của nó không phải là sự kết hợp bởi nhiều thông tin có ý nghĩa khác nhau và hệ thống luôn truy xuất trên toàn bộ giá trị của nó, ít khi truy xuất đến từng thành phần dữ liệu. - Dạng chuẩn 1 (First normal form): Một quan hệ ở dạng chuẩn 1 khi mà tất cả các thuộc tính đều mang giá trị cơ bản tức giá trị đơn. - Dạng chuẩn 2 (Second normal form): Một quan hệ R ở dạng chuẩn 2 khi: + Nó ở dạng chuẩn 1. + Mọi thuộc tính không khóa đều phụ thuộc đầy đủ vào các khóa của R. - Dạng chuẩn 3 (Third normal form): Một quan hệ R ở dạng chuẩn 3 khi: + Nó ở dạng chuẩn 2. + Mọi thuộc tính không khóa R đều không phụ thuộc bắc cầu vào một khóa nào của R. - Dạng chuẩn BCK (Boyce Cold Kent – Còn gọi BC): Một quan hệ R ở dạng chuẩn BCK thì mọi vế trái của phụ thuộc hàm không hiển nhiên đều có vế trái chứa khóa. - Dạng chuẩn 4 (Fourth Cold normal form): Một quan hệ R ở dạng chuẩn 4 khi và chỉ khi R ở dạng chuẩn BCK và mọi phụ thuộc đa trị không hiển nhiên X -->>Y được định nghĩa trên R thì vế trái X phải chứa một khóa của R, nghĩa là "A Ỵ Q+ \ Y thì X ® A Ỵ F+. Dạng chuẩn của cơ sở dữ liệu là dạ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 trữ dữ liệu. E.F Cold của IBM giới thiệu qui tắc cấu trúc dữ liệu quan hệ và ngôn ngữ SQL - Structured English Query Language hay còn gọi là SEQUEL, nếu nói đúng ra trước 1960 thì chúng có tên là SQL - Structured Query Language. Không có bất kỳ một khái niệm nào về thế giới mô hình quan hệ thực cho đến tận thập niên 70, những công ty nổi tiếng nhu Oracle và Sybase trở thành những công ty đầu tiên phát triển hệ thống cơ sở dữ liệu quan hệ thực. Từ khi ra đời đã được sử dụng trong hệ thống máy Mainframe. Hệ thống này đã đưa ra hướng mới cho cấu trúc, công nghệ cơ sở dữ liệu chạy trên nhiều môi trường khác nhau, và mở ra tiềm năng chia sẽ cơ sở dữ liệu cho nhiều hệ thống khác nhau. Cho đến thập niên 60, viện tiêu chuẩn hợp chuẩn quốc Hoa Kỳ ra đời, nhằm đánh giá một thời kỳ mới cho hệ thống cơ sở dữ liệu theo những chuẩn hoá chung cho SQL vàANSI-SQL, nhằm tạo điều kiện cho các chuyên gia và các công ty có khả năng phát triển cơ sở dữ liệu quan hệ theo tiêu chuẩn chung. Cho phép khả năng liên kết hay giao tiếp giữa các hệ thống cơ sở dữ liệu khác lại với nhau. Hầu hết sản phẩm cơ sở dữ liệu quan hệ hiện nay đều dựa trên chuẩn của SQL và ANSI-SQL như SQL Server, Oracle,..., nghĩa là tất cả nhữngcơ sở dữ liệu quan hệ đều phải có những tiêu chuẩn theo cú pháp SQL, những phần phát triển của chính sản phẩm đó còn gọi là T-SQL. Từ đây SQL Server 2000 ra đời cùng với sự phát triển của hệ điều hành Window NT / 2000 cho đến ngày nay. II. CÁC THÀNH PHẦN CẤU THÀNH CỦA SQL SERVER 2000: Database: cơ sở dữ liệu của SQL Server. Tập tin log: tập tin lưu trữ những chuyển tác của SQL. Tables: bảng dữ liệu. Filegroups: tập tin nhóm. Diagrams: sơ đồ quan he.ä Views: khung nhìn số liệu dựa trên bảng. Stored Procedure: thủ tục và hàm nội. User defined Function: hàm do người dùng định nghĩa. Users: người sử dụng cơ sở dữ liệu. Roles: các qui định vai trò và chức năng trong hệ thống SQL Server. Rules: những qui tắc. Defaults: các giá trị mặc nhiên. User-defined data types: kiểu dữ liệu do người dùng tự định nghĩa. Full-text catalogs: tập phân loại dữ liệu text III. CÁC PHÁT BIỂU CƠ BẢN CỦA T-SQL : 1. PHÁT BIỂU SELECT : Cú pháp của phát biểu SELECT : SELECT [FROM ] [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] 2. PHÁT BIỂU INSERT: a. Insert vào bảng lấy giá trị cụ thể: Cú pháp: INSERT INTO [] Values (data_value) b. Insert vào bảng lấy giá trị từ bảng khác: Cú pháp: INSERT INTO [] Select [columname list] From Where c. Insert vào bảng lấy giá trị của bảng khác: Cú pháp: INSERT INTO [] Select [columname list] , valueslist From Where ORDER BY ASC/DESC 3. PHÁT BIỂU UPDATE: a. Nếu cập nhất giá trị cụ thể: Cú pháp: Update Set = , [=] [Where ] b. Nếu cập nhất giá trị là kết quả trả về từ phát biểu select trên một hay nhiều bảng khác: Cú pháp: Update Set = [Where ] 4. PHÁT BIỂU DELETE: Cú pháp: Delete from Where Chú ý: Không có khái niệm xóa giá trị trong một cột, vì xóa giá trị một cột đồng nghĩa với cập nhật cột đó bằng giá trị rỗng. IV. MỘT SỐ HÀM THÔNG DỤNG TRONG SQL SERVER 2000: 1. Hàm AVG: Hàm trả về giá trị bình quân của cột hay trường trong câu truy vấn Ví dụ: Select AVG (ReceiptAmount) fromtb1Receipt 2. Hàm MIN: Hàm trả về giá trị nhỏ nhất của cột hay trường trong câu truy vấn Ví dụ: Select MIN (ReceiptAmount) fromtb1Receipt 3. Hàm MAX: Hàm trả về giá trị lớn nhất của cột hay trường trong câu truy vấn Ví dụ: Select MAX (ReceiptAmount) fromtb1Receipt 4. Hàm COUNT: Hàm trả về số lượng mẫu tin trong câu truy vấn trên bảng Ví dụ: Select count (*) fromtb1Receipt Select count (CustomerNo) fromtb1Receipt 5. Hàm SUM: Hàm trả ve tổng các giá trị của cột hay trường trong câu truy vấn Ví dụ: Select sum (ReceiptAmount) fromtb1Receipt 6. Hàm day: Hàm day trả về ngày thứ mấy trong tháng Ví dụ: select ‘hom nay ngay : ’=day (getdate()) 7. Hàm month: Hàm month trả về tháng thứ mấy trong năm Ví dụ: select ‘hom nay thang’ : ’=month (getdate()) 8. Hàm year: Hàm year trả về năm Ví dụ: select ‘năm nay là : ’=year (getdate()) 9. Hàm square: Hàm trả về là bình phương của một biểu thức Ví dụ: print square (9) Kết quả trả vềlà 81 10. Hàm sqrt: Hàm trả về là căn bậc hai của một biểu thức Ví dụ: print sqrt (9) Kết quả trả về là 3 V. LƯỢC ĐỒ QUAN HỆ TRONG SQL SERVER 2000 -DIAGRAM: ERD (Entity Relationship Data) là công cụ rất quan trọng trong quá trình phân tích thiết kế hệ thống thông tin qản lý hay bất kỳ giải pháp ứng dụng khác, cho dù quy mô cơ sở dữ liệu lớn hay nhỏ. ERD cho phép bạn kiểm soát mối quan hệ giữa các thực thể với nhau. Bên cạnh đó bạn kiểm soát được thông tin ra vào hay thay đổi trong cơ sở dữ liệu. Xuất phát từ mô hình dưới đây bạn có thể xây dựng cơ sở dữ liệu thực trên SQL bằng công cụ hỗ trợ như Power Design, hay các công cụ khác. Khi có cấu trúc các bảng trong cơ sỏ dữ liệu SQL Server, bạn sử dụng biểu đồ này để thiết kế kết nối từ cột của bảng này sang bảng khác theo như loại quan hệ có trong sơ đồ màn hình quan hệ ERD. VI. QUAN HỆ – RELATIONSHIP: 1. Quan hệ một - một (One - to - One): Quan hệ 1-1 là quan hệ giữa hai bảng với nhau, một mẫu tin ở bảng thứ nhất có quan hệ duy nhất một mẫu tin ở bảng thứ hai. 2. Quan hệ một - nhiều (One - to - Many): Quan hệ một - nhiều giữa hai bảng với nhau, một mẫu tin trong bảng thứ nhất quan hệ với một hay nhiều mẫu tin ở bảng thứ hai. Loại quan hệ này rất phổ biến trong thực tế. 3. Quan hệ nhiều - nhiều (Many - to Many): Quan hệ nhiều - nhiều là ứng với một mẫu tin trong bảng thứ nhất có quan hệ với nhiều mẫu tin trong bảng thứ hai, và ứng với mẫu tin trong bảng thứ hai có quan hệ với nhiều mẫu tin trong bảng thứ nhất. VII. THỦ TỤC THƯỜNG TRÚ (STORED PROCEDURES) Thông thường khi cần thực hiện chuyển tác trong cơ sở dữ liệu, đôi khi bạn có thể không dùng đến phát biểu SQL trực tiếp. Tất cả những phát biểu SQL được viết dưới dạng như một đối tượng của SQL Server là Stored Procedure, cấu trúc của nó như là một văn bản text mỗi khi muốn thực thi chỉ cần gọi chúng tương tự như gọi thực thi thủ tục hoặc hàm. 1. Tạo Stored Procedure: Để tạo Stored Procedure có hai cách: sử dụng công cụ Query Analyzer hoặc Enterprise Manager. Cú pháp chung được phát biểu như sau: CREATE PROCEDURE | PROC [ [VARYING] [=] [OUT PUT] [, [ [VARYING] [=] [OUT PUT] [, .... .... ]] [WITH RECOMPILE | ENCRIPTION | RECOMPILE | ENCRIPTION ] [FOR REPLICATION] AS GO Đoạn là các phát biểu SQL Server và T – SQL bao gồm cả biến, phép toán và các toán tử nếu có, chúng đặt sau phát biểu AS. Trước phát biểu AS và sau khai báo tên Stored Procedure (hay còn gọi SP) là danh sách các tham số cần thiết từ bên ngoài truyền vào. 2. Thay đổi Stored Procedure: Để thay đổi Stored Procedure trong SQL Server, chúng ta sử dụng phát biểu ALTER PROCEDURE, khi thay đổi Stored Procedure cần chú ý một số điểm sau: - Stored Procedure đó phải tồn tại. - Tuỳ thuộc vào quyền hạn người sử dụng có thể thay đổi Stored Procedure hay không. - Kiểm tra tất cả các thông tin có liên quan đến các đối tượng khác trong khi bị thay đổi. 3. Xóa Stored Procedure: Để xóa Stored Procedure cũng như xóa các đối tượng khác, ta phải sr dụng phát biểu DROP: DROP PROC | PROCEDURE 4. PHÁT BIỂU ĐIỀU KHIỂN a. Phát biểu IF ELSE Phát biểu IF ELSE sử dụng rất nhiều trong các ngôn ngữ lập trình. T-SQL cũng vậy, nó đóng vai trò quan trọng trong các lệnh bó (batch) SQL và ngay cả Stored Procedure hoặc Trigger. Cú pháp có dạng như sau: IF | BEGIN END ELSE | BEGIN END Trong phát biểu IF ELSE, nếu có từ hai phát biểu hay câu lệnh con trở lên thì phải sử dụng BEGIN và END, Boolean Expression là các phép toán có thể sử dụng như là một điều kiện. b. Phát biểu CASE Phát biểu CASE cho phép nhận một giá trị từ nhiều lựa chọn. Trong trường hợp có nhiều phát biểu IFELSE lồng nhau gây cho đoạn chương trình phức tạp, bạn nên sử dụng phát biểu CASE. Kết thúc phát biểu CASE là mệnh đề END. Cú pháp như sau: CASE WHEN THEN [n] [ ELSE ] END Nếu có hai lựa chọn, giá trị biểu thức là TRUE / FALSE thì phát biểu CASE có thể xem như Search CASE như sau: CASE WHEN THEN [n] [ ELSE ] END c. Phát biểu WHILE Phát biểu While là phát biểu điều khiển lặp, vòng lặp sẽ được thực hiện cho đến khi biểu thức While sai. Thông thường While sử dụng để duyệt từ mẫu tin đầu tiên đến mẫu cuối cùng (EOF) hoặc từ mẫu tin cuối cùng về mẫu tin đầu (BOF). Cú pháp phát biểu While như sau: WHILE [BEGIN [BREAK] [CONTINUE] END] Statement bao gồm các phát biểu trong SQL Server và phát biểu SQL cùng cácphép toán gán hay biến Phát biểu BREAK dùng để thoátkhỏi vòng lặp While khi bạn cần thoát ra với điều kiện nào đó. Còn CONTINUE đối ngược với BREAK, nếu gặp phát biểu này thì quá trình xử lý sẽ quay lại đầu vòng lặp While. d. Phát biểu RETURN Khi cần xác định kết quả đúng hay sai, hoặc trả về một giá trị nào đó chúng ta sử dụng phát biểu Return. Nếu gặp Return quá trình xử lý sẽ kết thúc. Cú pháp của Return như sau: RETURN [] C. THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH I. MÔ HÌNH QUAN HỆ DỮ LIỆU TOÀN HỆ THỐNG Mô hình quan hệ dữ liệu (Relationship) của chương trình thi trắc nghiệm II. XÂY DỰNG MỘT SỐ GIẢI THUẬT XỬ LÝ CHÍNH Bắt đầu Nhập dữ liệu Tiếp tục Thông báo lỗi Lưu Kiểm tra Kết thúc Sai Đúng Đúng Sai LƯU ĐỒ GIẢI THUẬT NHẬP DỮ LIỆU Bắt đầu Hiệu chỉnh dữ liệu Tiếp tục Thông báo lỗi Lưu Kiểm tra Kết thúc Đúng Sai Đúng Sai Đúng LƯU ĐỒ GIẢI THUẬT HIỆU CHỈNH DỮ LIỆU Bắt đầu Xác định mẫu tin cần xóa Tiếp tục Thông báo Xóa mẫu tin Yes/No Kết thúc Đúng Đúng Sai LƯU ĐỒ GIẢI THUẬT XÓA DỮ LIỆU Chú thích dữ liệu: Bắt đầu/Kết thúc giải thuật Xử lý Điều kiện Nhập/Xuất thông tin Hướng thông tin III. CÁC GIAO DIỆN CỦA CHƯƠNG TRÌNH 1. Giao diện đăng nhập vào chương trình: Ngay khi vào chương trình đã xuất hiện một màn hình yêu cầu đăng nhập vào hệ thống, chúng ta nhập User name và Password sau đó nhấn vào nút Login. Nếu nhập đúng User name và Password mới cho phép sử dụng chương trình. Nếu nhập sai User name và Password chương trình sẽ xuất hiện một hộp thông báo yêu cầu nhập lại User name và Password. Nếu nhấn vào nút Cancel sẽ thoát khỏi chương trình. 2. Giao diện chính của chương trình: Ngay sau khi đăng nhập vào chương trình sẽ có giao diện như trên. Tuỳ theo User name sẽ có những phân quyền khác nhau. Nếu là giáo viên vào chương trình thì được toàn quyền đối với cơ sở dữ liệu, ngược lại, nếu là học sinh vào chương trình, học sinh chỉ được Thi trắc nghiệm, không vào các form khác. 3. Giao diện nhập danh sách lớp: Để nhập danh sách lớp, chúng ta chọn Cập nhật ® Nhập danh sách lớp sẽ được giao diện như hình trên. Để thêm vào một lớp chọn nút Thêm sau khi nhập vào lớp mới, sau đó bấm nút Lưu để lưu dữ liệu. Để xóa một lớp, dùng các phím |>, >| để di chuyển đến lớp cần xóa, sau đó nhấn nút Xóa để xóa lớp cần xóa. 4. Giao diện nhập danh sách học sinh: Phím |> để di chuyển đến học sinh kế tiếp, phím >| để di chuyển đến học sinh cuối. Để thêm một học sinh mới vào danh sách lớp, chúng ta bấm vào nút Thêm sau đó nhập các thông tin cần thiết và nhấp vào nút Lưu để lưu vào cơ sở dữ liệu. Muốn xóa một học sinh ra khỏi danh sách ta dùng các phím |>, >| để di chuyển đến học sinh cần xóa, sau đó nhấp vào nút Xóa (hoặc Alt + X) để xóa. Tương tự, đối với việc sửa thông tin của một học sinh chúng ta di chuyển đến học sinh cần sửa, sửa các thông tin cần thiết và nhấn vào nút Sửa để lưu các thông tin vừa sửa. 5. Giao diện nhập đề thi: Các phím |>, >| dùng để di chuyển đến các đề thi khác nhau. Để thêm vào một đề thi mới, nhấn nút Thêm, sau khi nhập vào các thông tin cần thiết và nhấn vào nút Lưu để lưu. Nhấn vào nút Xóa để xóa đề thi. 6. Giao diện nhập câu hỏi: Các phím |>, >| dùng để di chuyển đến các câu hỏi khác nhau trong ngân hàng đề thi. Để thêm một câu hỏi mới vào trong ngân hàng đề thi bấm vào nút Thêm, sau đó nhập các thông tin cần thiết và nhấp vào nút Lưu để lưu vào cơ sở dữ liệu. Muốn xóa một câu hỏi ra khỏi ngân hàng đề thi dùng các phím |>, >| để di chuyển đến câu hỏi cần xóa, sau đó nhấp vào nút Xóa (hoặc Alt + X) để xóa. Tương tự, đối với việc sửa thông tin của một câu hỏi, ta dùng các phím |>, >| để di chuyển đến câu hỏi cần sửa và sửa các thông tin cần thiết, nhấn vào nút Sửa để lưu các thông tin vừa sửa. 7. Giao diện phân công lịch thi: Các phím |>, >| dùng để di chuyển đến các kỳ thi khác nhau trong cơ sở dữ liệu. Để thêm kỳ thi mới, bấm vào nút Thêm, sau đó nhập các thông tin cần thiết và nhấp vào nút Lưu để lưu vào cơ sở dữ liệu. Tuy nhiên mỗi câu hỏi chỉ được làm không quá 3 phút nên thời gian làm của mỗi kỳ thi luôn ³ (số câu hỏi * 3). Muốn xóa một kỳ thi chúng ta dùng các phím |>, >| để di chuyển đến kỳ thi cần xóa, sau đó nhấp vào nút Xóa (hoặc Alt + X) để xóa. 8. Giao diện đăng ký thi: Học sinh sau khi đăng nhập vào chương trình, chọn Thi trắc nghiệm sẽ xuất hiện một giao diện như trên. Học sinh khi vào thi chọn mã kỳ thi, mã lớp, mã học sinh và bấm vào nút đăng ký. Nếu học sinh đã tham gia kỳ thi sẽ hiện một thông báo đề nghị kiểm tra lại các thông tin trên, ngược lại nếu đăng ký thành công sẽ xuất hiện form thi để học sinh thi 9. Giao diện thi trắc nghiệm Học sinh sau khi vào form thi, đọc các câu hỏi và dùng chuột chọn câu trả lời đúng. Các nút trước và sau dùng để di chuyển đến câu hỏi trước, sau của đề thi để làm bài. Sau khi làm xong các câu hỏi, học sinh bấm vào nút nộp bài để kết thúc quá trình thi, nếu học sinh làm bài chưa xong mà hết thời gian làm bài chương trình sẽ thông báo hết giờ, yêu cầu học sinh nộp bài. 10. Giao diện in danh sách lớp: Để in danh sách lớp, từ menu In báo cáo -> In danh sách lớp. Sau khi chọn mã lớp, chúng ta có thể xem danh sách học sinh của từng lớp. Chọn In danh sách để xem danh sách lớp dạng Report như sau: 11. Giao diện danh sách lớp (Report): Nhấn vào nút để in report ra giấy. 12. Giao diện in bảng điểm Khi chọn menu In báo cáo -> In bảng điểm sẽ có report hiển thị điểm của các học sinh. 13. Giao diện trợ giúp: Đây là phần trợ giúp của chương trình, nhấn phím F1 trên bàn phím (hoặc chọn trên menu trợ giúp) sẽ được gioa diện hướng dẫn như trên. Trong đó: - Home: trang chính của phần trợ giúp, giới thiệu chung về chương trình thi trắc nghiệm cũng như thông tin về tác giả của chương trình. - Danh sách lớp: bao gồm các hướng dẫn sử dụng form Nhập danh sách lớp. - Danh sách học sinh: Hướng dẫn Thêm, Xoá, Sửa một học sinh trong danh sách lớp. - Câu hỏi: là các hướng dẫn Thêm, Xoá, Sửa một câu hỏi vào ngân hàng đề thi. - Phân công lịch thi: Hướng dẫn cách cập nhật dữ liệu về các kỳ thi của trường. - Tiến hành thi: Đây là phần hướng dẫn cho học sinh cách vào đăng ký thi trắc nghiệm và các bướv thi trên máy. - In báo cáo: Giới thiệu chức năng in báo cáo của chương trình. KẾT LUẬN 1. Đánh giá hệ thống: “Chương trình thi trắc nghiệm môn toán tại trường THPT” được xây dựng nhằm phục vụ cho học sinh nắm kiến thức một cách rõ ràng, chính xác, hỗ trợ cho giáo viên đánh giá đúng khả năng và kiến thức của học sinh, góp phần giảm tải về kinh phí và huy động ít giáo viên coi thi lẫn chấm thi hơn thi trắc nghiệm trên giấy. Thi trắc nghiệm đáp ứng được phần nào đó nhu cầu của công việc: - Đối với giáo viên: Thay thế việc lưu trữ dữ liệu, cập nhật dữ liệu trên giấy bằng cách lưu trên máy tính. Sẽ thuận lợi hơn sau này trong việc phát triển thành hệ cơ sở dữ liệu, truy xuất thông tin, tìm kiếm dữ liệu một cách dễ dàng và nhanh chóng, in danh sách lớp, in bảng điểm... - Đối với học sinh: “Chương trình thi trắc nghiệm môn toán tại trường THPT” giúp cho các học sinh kiểm tra kiến thức của học sinh một cách tổng quát, khách quan và chính xác, đảm bảo tính công bằng của cuộc thi. Bằng cách trả lời các câu hỏi trắc nghiệm, chương trình sẽ tự động tính điểm dựa trên câu trả lời của các em học sinh. Qua đó học sinh sẽ tự đánh giá kiến thức của chính mình. 2. Hướng phát triển: - Với sự phát triển ngày càng mạnh mẽ của khoa học kỹ thuật thì việc thi trắc nghiệm rất cần thiết cho học sinh, không chỉ ở môn toán mà còn các môn khác như: Anh văn, Tin học, văn học... cho việc thi trắc nghiệm nhằm giảm bớt thời gian do được tiến hành chính xác, gọn nhẹ trên máy vi tính nhưng vẫn đảm bảo tính chính xác cao. - Thêm vào các mức độ (dễ, trung bình, khó) của đề thi. Chúng em mong rằng đề tài này giúp cho những người ham học hỏi có thêm một hình thức học tập mới. 3. Hạn chế của đề tài Trong giới hạn thời gian cho phép làm một đề tài tốt nghiệp có thể chúng em chưa hoàn tất đầy đủ các chức năng cũng như mục tiêu đã đề ra ban đầu cho nên có sự giới hạn về phạm vi đề tài. Để đạt kết quả tốt hơn với những mục tiêu đề ra, chúng em biết rằng cần phải cố gắng hơn nữa, chúng em tin những điều ấy sẽ giúp chúng em hoàn thành tốt yêu cầu đặt ra và hạn chế những nhược điểm của chương trình. TÀI LIỆU THAM KHẢO - GIÁO TRÌNH NHẬP MÔN UML - Chủ biên: Huỳnh Văn Đức - Nhà xuất bản Lao động Xã hội - tháng 10/2003. - TỰ HỌC C# - Tác giả: Phạm Hồng Tài, Nguyễn Phước Lành, Đỗ Kim Oanh - Nhà xuất bản Thống kê. - KỸ THUẬT LẬP TRÌNH C#.NET TOÀN TẬP - Chủ biên: Phạm Hữu Khang - Nhà xuất bản Lao động Xã hội - tháng 12/2002. - LẬP TRÌNH ỨNG DỤNG CHUYÊN NGHIỆP SQL SERVER 2000 TOÀN TẬP - Chủ biên: Phạm Hữu Khang - Nhà xuất bản Lao động Xã hội - tháng 10/2003. - LẬP TRÌNH WINDOWS VỚI C#.NET - Chủ biên: Phương Lan - Nhà xuất bản Lao động Xã hội - tháng 07/2002. - THINKING IN C# - Tácgiả: Larry O’Brien và Bruce Eckel. - C# BOOK - Tác giả: Eric Butow và Tommy Ryan. - INSIDE C# - Tác giả: Tom Archet

Các file đính kèm theo tài liệu này:

  • docLUAN VAN1.doc
  • docBIA.DOC
  • docMODAU.DOC
  • docMUC LUC.doc
  • docnhan xet.doc
  • docnhiem vu.doc
  • docphan ABC.doc