Xây dựng chương trình thi trắc nghiệm bằng Visual basic.net

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 .

doc102 trang | Chia sẻ: baoanh98 | Lượt xem: 915 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Xây dựng chương trình thi trắc nghiệm bằng Visual basic.net, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hải sử dụng với kiểu số nguyên (int , smallint , tinyint) hoặc kiểu number , decimal (phải khai báo scale=0 ). + Có thể khai thêm tham số IDENT_SEED (giá trị bắt đầu) và IDENT_INCR (giá trị tăng thêm) . + Hàm @@IDENTUTY cho biết giá trị identity cuối cùng đã sử dụng để đưa giá trị vào 1 hàng trong phiên làm việc (session) . + Có thể sử dụng từ khoá IDENTITYCOL thay thế tên cột khi truy vấn dữ liệu Cú pháp CREATE TABLE( IDENTITY [(seed, increment)] {NOT NULL], [ ,...}) Sử dụng kiểu dữ liệu UNIQUEIDENTIFIER và HÀM NEWID Kiểu uniqueidentifier và hàm NEWID được dùng chung với nhau . Đặc điểm : + Kiểu uniquedentifier lưu một số 16 bytes (128 bit) duy nhất (unique). Kiểu này dùng để lưu giá trị này duy nhất toàn cục (GUID – Globaly Unique Identifier) . + Hàm NEWID tạo một GUID có thể dùng để lưu giá trị vào kiểu uniqueidentifier . Giá trị GUID sẽ không giống nhau trong tất cả các table của một database, kể cả trong database khác . Thường dùng trong việc nhân bản , khi cần đến một mà nhận diện trên cả các hệ thống. Nhập một mẩu tin mới vào table : Cú pháp : INSERT [INTO] table_name VALUES (val1 , val2 , , valn) Hoặc : INSERT [INTO] table_name (column_list) VALUES (val1 , val2 , , valn) Xóa dữ liệu : Cú pháp : TRUNCATE TABLE table_name Hoặc : DELETE table_name WHERE condition Xóa dữ liệu bên trong table RÀNG BUỘT TOÀN VẸN : Các loại ràng buộc toàn vẹn dữ liệu (DATA INTERGRITY) Có thể chia làm 4 loại toàn vẹn dữ liệu : + Toàn vẹn về miền giá trị (domain integrity) + Toàn vẹn đối với thực thể (entity integrity) + Toàn vẹn tham chiếu ( referential integrity) + Toàn vẹn do người sử dụng định nghĩa . Loại toàn vẹn Ràng buột Domain DEFAULT CHECK FOREIGN KEY Check PRIMARY KEY UNIQUE Referential FOREIGN KEY User-defined CHECK Ta có thể khai báo ràng buộc khi tạo bảng ( CREATE TABLE), hoặc bổ sung điều chỉnh sau khi đã tạo xong (ALTER TABLE) Để liệt kê các ràng buộc đã cài đặt cho một table, ta dùng EXEC sp_helpconstraint Xoá một ràng buộc : ALTER TABLE DROP CONSTRAINT Giá trị mặc nhiên (DEFAULT) : Cách 1 : CREATE TABLE ( DEFAULT , [ , ... ]) Cách 2 : CREATE TABLE ( COSNTRAINT DEFAULT , [, ... ]) Cách 3 : ALTER TABLE ADD CONSTRAINT DEFAULT FOR CHECK constraint CHECK cho phép kiểm tra giá trị trong một hoặc nhiều cột trong table. Dữ liệu phải thỏa mãn biểu thức logic trong ràng buộc CHECK thì mới được chấp nhận Cách 1 : CREATE TABLE( CHECK [ , ... ], CONSTRAINT CHECK ) Cách 2 : CREATE TABLE ( CONSTRAINT CHECK [ , ]) Cách 3 : ALTER TABLE ADD CONSTRAINT CHECK PRIMARY KEY: Cách 1 : CREATE TABLE ( PRIMARY KEY [ , ], ) Cách 2 : CREATE TABLE ( [ , ], CONSTRAINTPRIMARY KEY(,, ) Cách 3 : ALTER TABLE ADD CONSTRAINTPRIMARYKEY(,,) UNIQUE: Cách 1 : CREATE TABLE (UNIQUE[,....], ) Cách 2 : CREATE TABLE ( CONSTRAINT UNIQUE, [,......] ) Cách 3 : CREATE TABLE ( [,.........], CONSTRAINT UNIQUE (,,.....)) Cách 4 : ALTER TABLE ADD CONSTRAINTUNIQUE,,...) FOREIGN KEY: Cách 1 : CREATE TABLE ( REFERENCES ) [,...], ) Cách 2: CREATE TABLE ( , CONSTRAINTREFERENCES()[,...]) Cách 3 : CREATE TABLE([,...] , CONSTRAINT REFERENCES ([,.. ] )) Cách 4 : ALTER TABLE ADD CONSTRAINTREFERENCES(, [,..]) TRUY VẤN DỮ LIỆU BẰNG PHÁT BIỂU SELECT : Câu lệnh SELECT : Câu lệnh SELECT trên một Table: Cú pháp : SELECT [ DISTINCT] [TOP n] FROM WHERE GROUP BY HAVING ORDER BY Chú ý : ( % ) : Đại diện cho nhiều ký tự ( _ ) : Đại diện cho một ký tự Câu lệnh SELECT trên nhiều table: Hai table: Cách 1: SELECT FROM T1,T2 WHERE Cách 2 : SELECT FROM T1 [INNER] JOIN T2 ON Chú ý: Có thể bỏ chữ INNER trên FROM Kết nhiều hơn hai table: Cách 1: SELECT FROM T1 , T2 , .......... , Tn WHERE Cách 2: SELECT FROM T1 [INNER] JOIN T2 ON[INNER] JOIN T3 ON. . . Chú ý: n table có ít nhất (n-1) điều kiện liên kết . Thay đổi tiêu đề cột : Cú pháp : SELECT column_heading = column_name FROM table_name Biến đổi dữ liệu : Các toán tử số học : Kiểu dữ liệu Phép toán + Phép toán - Phép toán chia (/) Phép toán nhân (*) Phép toán Module (%) Bigint Yes Yes Yes Yes Yes Decimal Yes Yes Yes Yes No Float Yes Yes Yes Yes No Int Yes Yes Yes Yes Yes Money Yes Yes Yes Yes No Numeric Yes Yes Yes Yes No Real Yes Yes Yes Yes No Smallint Yes Yes Yes Yes Yes Smallmoney Yes Yes Yes Yes No Tinyint Yes Yes Yes Yes Yes Các hàm toán học thường dùng : Các hàm toán học cho phép bạn thực hiện các phép toán cần thiết thông thường trên dữ liệu toán học . Bạn có thể trả về dữ liệu toán học bằng cách sử dụng cú pháp sau : Cú pháp : SELECT function_name(parameters) Hàm Kết quả ABS (numeric_expr) Giá trị tuyệt đối. COS | SIN | COT | TAN(float_expr) Là số cos , sin hoặc tan của góc (theo radian). EXP(float_expr) Giá trị mũ của giá trị xác định . LOG(float_expr) Số log tự nhiên . LOG10(float_expr) Log cơ số 10 . PI( ) Hằng số 3.141592653589793. POWER(numeric_expr , y ) Giá trị của numeric_expr lũy thừa y . ROUND(numeric_expr , len ) Số numeric_expr làm tròn đến chiều dài xác định trong một số nguyên SQUARE(float_expr) Bình phương giá trị xác định . SQRT(float_expr) Căn của giá trị xác định . Các hàm chuỗi thường dùng: Bạn có thể trả về dữ liệu ký tự bằng cách sử dụng cú pháp sau : Cú pháp : SELECT function_name(parameters) Hàm Kết quả ‘expr’+’ expr’ Kết nối hai hay nhiều chuỗi ký tự . ASSCII(char_ expr) Trả về giá trị mã ASSCII của ký tự sát bên trái . CHAR(integer_ expr) Trả về ký tự tương ứng với giá trị mã ASSCII LEFT(char_ expr1,integer_ expr) Trả về một chuỗi ký tự bắt đầu từ bên trái và đứng trước integer_ expr ký tự . LOWER(char_ expr) Chuyển thành chữ thường . LTRIM(char_ expr) Trả về dữ liệu không có khoảng trắng đằng trước . REPLACE(‘string1’,’string2’,’string3’) Thay thế tất cả lần xuất hiện string2 trong string1 bằng string3 RIGHT(char_ expr,integer_ expr) Trả về một chuổi ký tự bắt đầu từ integer_expr ký tự tính từ bên phải . RTRIM(char_ expr) Trả về dữ liệu không có khoảng trắng ở đằng sau . SPACE(integer_ expr) Trả về một chuỗi lập lại integer_expr khoảng trắng . SUBSTRING(expr , stary,length ) Trả về một phần chuổi ký tự hoặc chuỗi nhị phân . UNICODE(‘nchar_string’) Trả về giá trị số theo mã Unicode của ký tự đầu tiên trong ‘nchar_expr’ UPPER(char_ expr) Chuyển thành chữ hoa . Các hàm ngày tháng : Bạn có thể biến đổi các giá trị thuộc kiểu datetime bằng cách sử dụng các hàm ngày tháng . Bạn có thể sử dụng các hàm ngày tháng trong column_list , mệnh đề WHERE hoặc bất kỳ biểu thức nào có thể được sử dụng . Để làm được như vậy , sử dụng cú pháp sau : Cú pháp : SELECT date_name(parameters) Hàm Kết quả DATEADD(datepart,number, date) Thêm số datepart vào date. DATEDIFF(datepart, date1, date2) Trả về số datepart giữ hai ngày . DATENAME(datepart, date) Trả về giá trị ASCII cho giá trị datepart của ngày date. DATEPART(datepart, date) Trả về giá trị integer cho giá trị của datepart của ngày date . DATE(date) Trả về một giá trị số nguyên thể hiện ngày . GETDATE() Trả về ngày giờ hiện hành . MONTH(date) Trả về một giá trị số nguyên thể hiện tháng . YEAR(date) Trả về một giá trị số nguyên thể hiện năm Chuyển đổi dữ liệu : Bởi vì nhiều hàm yêu cầu dữ liệu theo một dạng hoặc kiểu dữ liệu nào đó , bạn có thể cần chuyển đổi từ một kiểu dữ liệu này sang kiểu dữ liệu khác . Bạn sử dụng hàm CONVER( ) hoặc CAST( ) để hiệu chỉnh các kiểu dữ liệu của bạn. Bạn có thể sử dụng hàm CONVERT( ) ở bất kỳ nơi nào biểu thức cho phép ; nó có cú pháp như sau : Cú pháp : CONVERT (datatype [(length)], expr [,style]) Tương quan dữ liệu : Kết nối trong (Inner join): Các Inner Join tạo ra các thông tin khi thông tin so sánh tìm thấy trong cả hai bảng . Loại thông thường nhất của kết nối Inner Join là + Equijoin các giá trị cột được so sánh bằng nhau và các cột thừa được thể hiện là các cột trong tập kết . + Natural join các cột thừa không được thể hiện hai lần . Trong một Natural join , các giá trị cột được so sánh bằng nhau nhưng các cột dư thừa bị giới hạn từ các cột trong tập kết quả . OUTER JOIN : Bạn có thể trích xuất các dòng từ một bảng trong khi cho chép tất cả các dòng từ các bảng khác thành tập kết quả của bạn bằng cách sử dụng outer join . Các toán tử của outer join và các từ khóa của cú pháp ANSI như sau : + LEFT OUTER JOINT : Bao gồm tất cả các dòng từ bảng thứ nhất và chỉ các dòng so khớp trong bảng thứ hai . + RIGHT OUTER JOIN : Bao gồm tất cả các dòng từ bảng thứ hai và chỉ các dòng so khớp trong bảng thứ nhất. + FULL OUTER JOIN : Bao gồm tất cả các dòng từ hai bảng cũng như các dòng so khớp . CROS hay UNRESTRICTED SELF JOIN : Các kết nối chéo hoặc không giới hạn trả về một sự kết hợp của tất cả các dòng của tất cả các bảng trong kết nối thành tập kết quả . Tự kết nối : Một Self join liên kết các dòng của một bảng với các dòng khác trong cùng một bảng Các truy vấn so sánh đối với cùng thông tin được sử dụng hầu hết các kết nối tự kết (Self join). Làm việc với các truy vấn con (Subquery) : Một phép kết nối có thể được sử dụng thay cho truy vấn con ; Tuy nhiên , một số trường hợp đặc biệt chỉ có thể thực hiện câu truy vấn con . Một truy vấn con có thể chứa các truy vấn con khác và truy vấn con đó có thể chứa một truy vấn con khác Trong thực tế không có gì giới hạn số lượng các truy vấn con có thể được thực hiện trừ các tài nguyên của hệ thống . Cú pháp : (SELECT [ ALL | DISTINCT ] subquery_column_list [FROM table_list] [WHERE clause] [GROUP BY clause] [HAVING clause]) Bạn có thể tạo và sử dụng một truy vấn con theo các quy tắc sau : + Nó phải được đặt trong các dấu ngoặc đơn . + Nếu sử dụng khi một biểu thức giá trị đơn được sử dụng , nó phải trả về một giá trị đơn . + Nó không thể được sử dụng trong mệnh đề ORDER BY . + Nó không thể chứa một mệnh đề ORDER BY , COMPUTE hoặc SELECT INTO. + Nó không thể có nhiều hơn một cột trong column_list nếu sử dụng trong mệnh đề IN . + Nó phải có SELECT * nếu sử dụng với mệnh đề EXISTS. + Các kiểu dữ liệu Text và Image không cho phép có trong danh sách chọn (field) (ngoại trừ đối với việc sử dụng *) + Nó không thể bao gồm các mệnh đề GROUP BY và HAVING nếu sử dụng với một phép toán so sánh không biến đổi (một truy vấn không có bất kỳ từ khóa ANY hoặc ALL). Phát biểu Select Into : Phát biểu Select Into cho phép bạn tạo một bảng mới dựa trên các kết quả truy vấn . Cú pháp : SELECT column_list INTO new_table_name FROM table_name WHERE search_criteria Toán tử Union : Bạn có thể kết nối các kết quả của hai hay nhiều truy vấn thành một tập kết quả đơn bằng cách sử dụng toán tử UNION HIỆU CHỈNH DỮ LIỆU : Chèn dữ liệu : Phát biểu INSERT cơ bản ở một thời điểm thêm một dòng vào trong một bảng. Cú pháp : INSERT [ INTO ] { table_or_view }{{ [(column_list)] VALUES ({DEFAULT | constant_expr}[,n]) | select_statement} | DEFAULT VALUES} Table_or_view ::= { table_name | view_name | rowset_function} [, n] Xóa dữ liệu : Khi bạn sử dụng câu lệnh DELETE , bạn có thể gỡ bỏ một hoặc nhiều dòng từ một bảng . Cú pháp : DELETE [FROM]{table_name | view_name} [WHERE clause] Cập nhật dữ liệu : Phát biểu UPDATE cho phép bạn thay đổi các giá trị của cột trong phạm vi các dòng có sẳn . Cú pháp : UPDATE {table_name | view_name} SET Column_name1 ={expr | NULL | select_statement )}[, col_name2 = ] [ WHERE search_conditions ] SỬ DỤNG CÁC PHẦN MỞ RỘNG CỦA TRANSACT-SQL : Sript : Sau khi tạo các đối tượng như table, view,... trong 1 database. Ta có thể sử dụng SQL Server Enterprise Manager để lập sưu liệu cho database bằng cách tạo ra một hoặc nhiều Transact-SQL script. những script này sẽ chứa các câu lệnh để ta có thể dễ dàng tạo lại database và các đối tượng bên trong nó. các bước để sinh script + Mở SQL Server Enterprise Manager + Chọn database muốn sinh script. bấm nút phải chuột trên database này, chọn All Task -> Generate SQL Scripts... + Trên tab Generate, mặc nhiên tất cả các đối tượng đều được đưa vào script, ta chọn lựa lại các đối tượng cần đưa vào scripts. + Có thể nút Preview... để xem trước kết quả sinh ra. Chọn OK -> đặt lại tên cho file lưu lại (mặc nhiên phần mở rộng .sql) Các thành phần của ngôn ngữ Control-of-flow : Khối IF ELSE : Khối If else cho phép một phát biểu được thực thi tùy theo điều kiện . Cú pháp : IF Boolean_expr {sql_statement | statement_block} ELSE[Boolean_expr] { sql_statement | statement_block} Biểu thức CASE : Biểu thức CASE cho phép các biểu thức T-SQL , được đơn giản so với giá trị điều kiện Cú pháp : CASE expr WHEN expr1 THEN expr1 [[WHEN expr2 THEN expr2 ] []] ELSE exprN END TẠO CHỈ MỤC : tại sao phải dùng chỉ mục : Có hai lý do chính để sử dụng chỉ mục là : + Tốc độ . + Chỉ mục tạo tính duy nhất . Tạo chỉ mục : CREATE[UNIQUE][CLUSTERED | NONCLUSTERED]INDEX Index_Name ON Table ( column] [, ]) Xóa chỉ mục : DROP INDEX table.Index_Name [, ] TẠO VIEW , TRIGGER , STORE PROCEDURE VÀ FUNCTION Tạo và thao tác trên View : View là phương tiện cho phép ta lưu một câu truy vấn thành một đối tượng trong CSDL . Sau khi tạo xong ta có thể làm việc với view tương tự như với Table. Tuy nhiên view chỉ là một khung nhìn, dữ liệu thực sự chỉ chứa trong table mà thôi. Các View (bảng nhìn ) cho phép bạn chia ngang hoặc chia dọc thông tin từ một hoặc nhiều bảng trong một CSDL . Tạo View : Cú pháp : CREATE VIEW View_name [(colunm1] [,])] AS Select statement Xóa View : DROP VIEW View_Name [, ] Điều chỉnhView : ALTER VIEW View_name [(column] [, ])] AS Select_statement Làm việc với các thủ tục lưu trữ hệ thống : Các thủ tục lưu trữ hệ thống là các tập lệnh T-SQL chạy nhanh được lưu trữ trong một CSDL của SQL Server . Các thủ tục lưu trữ hệ thống có rất nhiều lợi ích như : + Sau khi nó thực hiện , lược đồ của thủ tục được lưu trữ trong vùng đệm có thủ tục . + Bạn có thể sử dụng thủ tục lưu trữ hệ thống để đóng gói các quy tắc nghiệp vụ + Hiệu quả thực hiện được nâng lên cho tất cả các thủ tục lưu trữ hệ thống và thậm chí nhiều hơn so với các thủ tục lưu trữ hệ thống được chạy nhiều hơn một lần là do kế hoạch truy vấn được lưu trong vùng đệm thủ tục . + Với các thủ tục lưu trữ hệ thống , bạn có thể truyền đối số vào và nhận dữ liệu trả về . + Các thủ tục lưu trữ hệ thống có thể được thiết lập để chạy tự động . + Các thủ tục lưu trữ hệ thống có thể được sử dụng để trích xuất hoặc hiệu chỉnh dữ liệu . + Các thủ tục lưu trữ hệ thống được gọi một cách rõ ràng . Không giống như trigger , các thủ tục lưu trữ hệ thống phải được gọi bởi ứng dụng , script , batch , tác vụ của bạn . Cú pháp : CREATE PROC[ EDURE ] procedore_name {;number} [{@parameter data_type} [ VARYING] [ = default] [ OUTPUT ]] [, n ] [WITH { RECOMPILE | ENCRYTION | RECOMPILE ,ENCRYPTION} ] [ FOR REPLICATION] AS sql_statement [ n] Làm việc với Trigger : Trigger là một loại thủ tục lưu trữ đặc biệt tự động thực hiện khi bạn cố hiệu chỉnh dữ liệu mà được thiết kế là được bảo vệ . Các Trigger bảo đảm toàn vẹn dữ liệu bằng cách bảo vệ các sự thay đổi không nhất quán và không được phép . Bạn có thể sử dụng các trigger để thực hiện các quy tắc nghiệp vụ phức tạp hơn là bạn có thể làm với các ràng buộc .Các trigger không có thông số và không thể được thực thi rõ ràng . Bạn có thể lồng các trigger tới 32 cấp . Về mặc hiệu quả , các trigger có tổng phí tương đối thấp vì hầu hết thời gian thực hiện của trigger là được sử dụng cho việc tham chiếu các bảng khác . Cú pháp : CREATE TRIGGER [ower.] trigger_name ON [ower.] table_name | view_name [ FOR . . ALTER | INSTEAD OF | INSERT | UPDATE | DELETE [ WITH ENCRYPTION] AS sql_statement Làm việc với các hàm do người dùng định nghĩa : Một tính năng mạnh của SQL Server 2000 là hàm do người dùng định nghĩa (UDF) . Bạn có thể tạo một UDF để trả về một giá trị vô hướng (một giá trị đơn) hoặc một bảng . Các hàm vô hướng : Hầu hết các hàm không phức tạp để tạo và làm việc với các hàm vô hướng . Cú pháp : CREATE FUNCTION [owner_name.]function_name ([{@parameter_name scalar_parameter_data_type [= default]} [ , n]]) RETURN scalar_returnt_data_type [WITH ENCRYPTION | SCHEMABINDING] [ AS ] RETUNR [ ( ] select_statement [ ) ] Các hàm Inline Table – Value : So với hai hàm của bảng , hàm inline table – value đơn giản hơn : Cú pháp : CREATE FUNCTION [owner_name.]function_name ([{@parameter_name scalar_parameter_data_type [= default]} [ , n]]) RETURN TABLE [WITH ENCRYPTION | SCHEMABINDING] [ AS ] RETUNR [ ( ] select_statement [ ) ] Các hàm Multistatement Table – Value : Bạn sử dụng các hàm multistatement table – Value để trả về một bảng Cú pháp : CREATE FUNCTION [owner_name.]function_name ([{@parameter_name scalar_parameter_data_type [= default]} [ , n]]) RETURN @return_variable TABLE Table_type_definition [WITH ENCRYPTION | SCHEMABINDING] [ AS ] BEGIN Function_body Return [ ( ]select_statement[ ) ] END RETUNR [ ( ] select_statement [ ) ] PHẦN II. PHÂN TÍCH THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH PHÂN TÍCH ĐỀ TÀI : Đặt tả sơ lược hệ thống xây dựng chương trình thi trắc nghiệm : Hiện nay , hình thức thi trắc nghiệm đã được Bộ Giáo Dục và đào tạo khuyến khích đưa vào sử dụng trong các trường , lớp . Tổ chức các cuộc thi trắc nghiệm như thế rất cần thiết để đánh giá đúng khả năng và kiến thức của học viên . Hệ thống này sẽ tạo ra công cụ cho Giáo Viên soạn câu hỏi trắc nghiệm và công cụ hổ trợ Giáo Viên soạn đề thi . Sinh Viên sẽ thi trực tiếp trên máy Client và hệ thống sẽ tự chấm điểm . Điểm thi sẽ được hệ thống công bố liền hoặc được công bố sau . Giáo Vụ sẽ lên danh sách sinh viên dự thi của các môn thi và qui định bộ đề thi của sinh viên lấy từ ngân hàng đề thi . Nếu Giáo Vụ không qui định bộ đề thi thì sinh viên sẽ thi trực tiếp từ ngân hàng đề . Sinh Viên đến dự thi đúng lịch thi , và thi trực tiếp trên máy tính Client . Sau khi thi xong hệ thống sẽ tính toán điểm thi , cập nhật điểm thi và bài làm của sinh viên vào cơ sở dữ liệu trên máy . Để đảm bảo tính công bằng của cuộc thi , các đề thi của sinh viên đều được hệ thống hoán đổi ngẫu nhiên vị trí các câu hỏi và câu trả lời của đề thi đó . Sau khi thi xong dữ liệu được cập nhật về Sever SEVER Chứa CSDL của chương trình Thí sinh tiến hành thi trắc nghiệm trên các CLIENT Phân tích hệ thống Thi Trắc Nghiệm bằng Rational Rose : Xây dựng Use_Case Diagram : Nhận diện các actor và các trường hợp sử dụng : Qua đặt tả hệ thống ở trên ta xác định các actor sau tác động đến hệ thống : Giáo Viên , Sinh Viên , Giáo Vụ , Người quản lý thông số hệ thống Sơ đồ Use_Case diagram cho từng actor : Xây dựng Class Diagram : Nhận diện các đối tượng /lớp và các Package: Hệ thống này dễ dàng nhận thấy những đối tượng : Sinh viên , Giáo viên , GiáoViênDạy , Lớp , Môn ,KỳThi , CâuHỏi , CâuTrảLời ,ĐềThi ,Câu Hỏi Đề Thi , BộĐềRaThi ,Câu Trả Lời Đề Thi , DSSVDựThi , CâuHỏiBàiLàm , CâuTrảLờiBàiLàm , GiáoViênCoiThi , Users , Groups . Ngoài ra còn có các đối tượng tạo ra cửa sổ giao tiếp với các Actor có stereotype là > : + Lớp LoginForm tạo cửa sổ để Actor truy cập theo quyền của mình . + Lớp MainFormtạo cửa sổ Menu chính . + Lớp DanhMụcMônHọc Form tạo cửa sổ để Actor xem danh mục môn học + Lớp QuảnLýDanhMụcMônHọc Form tạo cửa sổ để Actor chỉnh sửa môn học + Lớp DanhMụcLớpHọcFormtạo cửa sổ để Actor xem danh mục lớp . + Lớp QuảnLýDanhMụcLớpHọcForm tạo cửa sổ để Actor chỉnh sửa lớp học . + Lớp DanhSáchSinhViênForm tạo cửa sổ để Actor xem danh sách SinhViên + Lớp QuảnLýDanhSáchSinhViênForm tạo cửa sổ để Actor chỉnh sửa DSSV + Lớp DanhSáchGiáoViênForm tạo cửa sổ để Actor xem DSGV + Lớp QuảnLýDanhSáchGiáoViênForm tạo cửa sổ để Actor chỉnh sửa GiáoViên + Lớp QuảnLýMônDạyGiáoViênForm tạo cửa sổ để Actor chỉnh sửa Môn của GV + Lớp DanhMụcCâuHỏiForm tạo cửa sổ để Actor xem danh mục câu hỏi + Lớp QuảnLýDanhMụcCâuHỏiForm tạo cửa sổ để Actor chỉnh sửa câu hỏi + Lớp DanhMụcĐềThiForm tạo cửa sổ để Actor xem danh mục đề thi + Lớp QuảnLýDanhMụcĐềThiForm tạo cửa sổ để Actor chỉnh sửa đề thi + Lớp TạoĐềThiForm tạo cửa sổ để Actor tạo đề thi . + Lớp DanhMụcKỳThiForm tạo cửa sổ để Actor xem danh mục kỳ thi + Lớp QuảnLýDanhMụcKỳThiForm tạo cửa sổ để Actor chỉnh sửa kỳ thi + Lớp DanhSáchSinhViênDựThiForm tạo cửa sổ để Actor xem DSSV dự thi + Lớp QuảnLýDanhSáchSinhViênDựThiForm tạo cửa sổ để Actor chỉnh sửa DSSV dự thi + Lớp DanhMụcBộĐềThiForm tạo cửa sổ để Actor xem danh mục bộ đề thi + Lớp QuảnLýDanhMụcBộĐềThiForm tạo cửa sổ để Actor chỉnh sửa bộ đề thi + Lớp DanhSáchGiáoViênCoiThiForm tạo cửa sổ để Actor xem DSGV coi thi + Lớp QuảnLýDanhSáchGiáoViênCoiThiForm tạo cửa sổ để Actor chỉnh sửa DSGV coi thi + Lớp KếtQuảThiForm tạo cửa sổ để Actor xem kết quả thi + Lớp BàiLàmSinhViênForm tạo cửa sổ để Actor xem bài làm sinh viên + Lớp ĐổiMậtKhẩuForm tạo cửa sổ để Actor đổi mật khẩu + Lớp QuảnLýThôngSốForm tạo cửa sổ để Actor chỉnh sửa thông số hệ thống + Lớp LịchThiForm tạo cửa sổ để Actor xem lịch thi + Lớp ThiForm tạo cửa sổ để Actor làm bài thi . + Lớp ĐăngKýThiForm tạo cửa sổ để Actor đăng ký dự thi Ngoài ra còn xuất hiện lớp Database có stereotype là > có chức năng giao tiếp với cơ sở dữ liệu để thực hiện các tác vụ cập nhật dữ liệu Class Diagram: Nhận diện các mối quan hệ giữa các lớp: Quan hệ giữa các lớp giao diện với lớp Database là dependency . Sử dụng các stereotype > giữa LoginForm với các lớp giao diện khác . Trong khi quan hệ dependency giữa chúng có tereo là > . Ta tạo ra 2 packge là : * Packge Interface để quản lý tất cả các giao diện giao tiếp với người dùng gồm hai class diagram chính là : + Class diagram QuảnLýDữLiệu gồm tất cả các giao diện có liên quan đến cơ sở dữ liệu và chứa các lớp : Login Form , Main From , Danh Mục Môn Học Form , Quản Lý Danh Mục Môn Học Form , Danh Mục Lớp Học Form , Quản Ly ùDanh Mục Lớp Học Form , Danh Sách Sinh Viên Form , Quản Lý Danh Sách Sinh Viên Form , Danh Sách Giáo Viên Form , Quản Lý Danh Sách Giáo Viên Form , Quản Lý Môn Dạy Giáo Viên Form , Danh Mục Câu Hỏi Form , Quản Lý Danh Mục Câu Hỏi Form , Danh Mục Đề Thi Form , Quản Lý Danh Mục Đề Thi Form , Tạo Đề Thi Form , Danh Mục Kỳ Thi Form , Quản Lý Danh Mục Kỳ Thi Form , Danh Sách Sinh Viên Dự Thi Form , Quản Lý Danh Sách Sinh Viên Dự Thi Form , Danh Mục Bộ Đề Thi Form , Quản Lý Danh Mục Bộ Đề Thi Form , Danh Sách Giáo Viên Coi Thi Form , Quản Lý Danh Sách Giáo Viên Coi Thi Form , Bài Làm Sinh Viên Form , Quản Lý Thông Số Form + Class diagram Thi gồm các giao diện cho Sinh Viên thi và chứa các lớp : ĐổiMậtKhẩuForm , KếtQuảThiForm , LịchThiForm , ThiForm , ĐăngKýThiForm * Packge Data gồm : SinhViên,GiáoViên,GiáoViênDạy,Lớp,Môn,KỳThi,Câu Hỏi,CâuTrảLời,ĐềThi,CâuHỏiĐềThi,BộĐềRaThi,CâuTrảLờiĐềThi,DSSVDự Thi,CâuHỏiBàiLàm,CâuTrảLờiBàiLàm,GiáoViênCoiThi,Users,Groups . Sơ đồ class diagram : + Sơ đồ Class diagram của package Data : + Sơ đồ Class diagram của Quản Lý Dữ Liệu trong package Interface : + Sơ đồ Class diagram Sinh Viên thi trong package Interface : Xây dựng Sequence Diagram : Các Sequence Diagram của GiáoVụ : Xét UseCase QuảnLýBộĐềThi: Giáo vụ đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo vụ sẽ chọn form QuảnLýBộĐềThi. Trong Form QuảnLýBộĐềThi Giáo Vụ sẽ chọn Kỳ Thi , Môn Thi , Giáo Viên ra đề thi. Hệ thống load các đề thi lên form.Giáo Vụ sẽ chọn các đề thi ra thi . Giáo Vụ hoàn thành việc chọn thì hệ thống sẽ lưu lại các đề thi vừa mới chọn vào Bộ đề thi trong cơ sở dữ liệu . + Sequence Diagram QuảnLýBộĐềThi: Xét UseCase QuảnLýDSSVDựThi: Giáo vụ đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo vụ sẽ chọn form QuảnLýDSSVDự Thi . Giáo vụ sẽ chọn Môn , chọn kỳ thi , nhập ngày giờ và chọn các sinh viên dự thi . Hệ thống sẽ thêm danh sách Sinh Viên dự thi vào cơ sở dữ liệu. + Sequence Diagram QuảnLýDSSVDựThi : Xét UseCase ThêmSV: Giáo vụ đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo vụ sẽ chọn form QuảnLýDanhSách SinhViên . Giáo vụ sẽ nhập mã số sinh viên , họ , tên , phái , địa chỉ, Ngày sinh , username , password và chọn lớp của sinh viên . Hệ thống sẽ thêm SV vào CSDL. + Sequence Diagram ThêmSV : Xét UseCase SửaThôngTinSV: Giáo vụ đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo vụ sẽ chọn form Quản Lý Sinh Viên . Giáo vụ chọn Sinh Viên cần sửa và nhập lại thông tin SV gồm : Mã Số Sinh Viên , Họ , Tên , Phái , Địa Chỉ, Ngày inh , username , password và chọn lớp của sinh viên Hệ thống sẽ cập nhật lại Sinh Viên này vào cơ sở dữ liệu. + Sequence Diagram SửaThôngTinSV Xét UseCase QuảnLýDSGVCoiThi : Giáo vụ đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo vụ sẽ chọn form QuảnLýDSGVCoiThi . Giáo vụ sẽ chọn kỳ thi và chọn các Giáo Viên coi thi . Hệ thống sẽ thêm danh sách Giáo Viên coi thi vào cơ sở dữ liệu. + Sequence Diagram QuảnLýDSGVCoiThi Các Sequence Diagram của GiáoViên : Xét UseCase ĐổiMậtKhẩu: Giáo Viên đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo Viên sẽ chọn form ĐổiMậtKhẩu Giáo viên nhập mật khẩu mới . Hệ thống sẽ cập nhật lại Giáo Viên này vào cơ sở dữ liệu. + Sequence Diagram ĐổiMậtKhẩu : Xét UseCase ThêmCâuHỏi: Giáo Viên đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo Viên sẽ chọn form Quản Lý Danh Mục Câu Hỏi.Giáo Viên chọn Môn , hệ thống sẽ kiểm tra môn này Giáo Viên có dạy không . Nếu có Giáo Viên sẽ nhập thông tin Câu hỏi . Hệ thống sẽ thêm Câu Hỏi vào cơ sở dữ liệu . + Sequence Diagram ThêmCâuHỏi : Xét UseCase Xóa Câu Hỏi : Giáo Viên đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo Viên sẽ chọn form Quản Lý Câu Hỏi . Giáo viên sẽ chọn câu hỏi cần xóa . Hệ thống sẽ kiểm tra cho xóa không , và thông báo cho Giáo viên . Nếu hệ thốâng cho phép và Giáo viên đồng ý thì hệ thống sẽ xóa Câu Hỏi này trong CSDL . + Sequence Diagram Xóa Câu Hỏi : Xét UseCase ThêmĐềThi Giáo Viên đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo Viên sẽ chọn form ThêmĐềThi Giáo viên sẽ chọn Môn và nhập thông tin đề thi . Hệ thống sẽ phát sinh đề theo yêu cầu của Giáo Viên và sau đó thêm Đề Thi này vào cơ sở dữ liệu . + Sequence Diagram ThêmĐềThi Các Sequence Diagram của SinhViên : Xét UseCase Thi : Sinh Viên đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form MainMenu sẽ được kích hoạt , từ form này Sinh Viên sẽ chọn form Đăng Ký Thi. Sinh viên chọn môn , chọn kỳ thi . Hệ thống sẽ kiểm tra xem Sinh Viên này có được thi hay không . Nếu được thì hệ thống sẽ kích hoạt From thi .Sau khi hoàn tất bài thi , hệ thống sẽ tính điểm và lưu bài thi vào cơ sở dữ liệu. + Sequence Diagram Thi : Chọn mô hình cài đặt về cơ sở dữ liệu : Có hai phương pháp lựa chọn : Dữ liệu tập trung và dữ liệu phân tán . Ta chọn phương pháp cơ sở dữ liệu tập trung vì : + Khối lượng dữ liệu không lớn + Số lượng thí sinh và giáo viên chủ yếu tập trung trong phạm vi nhà trường . + Quản lý đào tạo tại nước ta vẫn là hình thức tập trung tại một cơ sở chính . Nếu có nhiều cơ sở thường thì chỉ trong bán kính nhỏ . THIẾT KẾ CHƯƠNG TRÌNH 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 . 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 ACTIVE Nghĩ/còn dạy 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 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 GIAOVIENDAY (GIAOVIENID , MONID ) 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) Field Name Keys Data Type Size Allow Nulls STT Numeric 9 Not null 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 Ràng buột toàn vẹn : RBTV có bối cảnh trên một lược đồ quan hệ 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 : R5,6 Thêm Xóa Sửa 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 + - + 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 dssvdt1.BAILAMID ¹ dssvdt2. BAILAMID 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 RBTV có bối cảnh trên nhiều lược đồ quan hệ 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 $ gv Ỵ GIAOVIEN : gvd.GIAOVIENID = gv.GIAOVIENID 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 : R44 Thêm Xóa Sửa 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 $ kt Ỵ KYTHI : bd.KYTHIID = kt.KYTHIID 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 + - + MON - + + 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 $ ctldtỴCAUTRALOIDETHI :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 Tầm ảnh hưởng : R61 Thêm Xóa Sửa USERS + - + GROUPS - + + 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 4. Sơ đồ quan hệ ERD: CÀI ĐẶT CHƯƠNG TRÌNH Các giao diện chính : Giao diện MainMenu quản lý dữ liệu : Giao diện Quản Lý Môn : Giao diện Quản Lý Sinh Viên : Giao diện Quản Lý DSSV Dự Thi Giao diện Quản Lý Câu Hỏi : Giao diện Tạo Đề Thi : Report In Bảng Điểm : Giao diện MainMenu Sinh Viên : Giao diện Thi PHẦN III. TỔNG KẾT NHẬN XÉT CHUNG : Đá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 toàn , hệ thống sẽ mã hóa mật khẩu trước khi lưu vào cơ sở dữ liệu. 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 để hoà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 . Ngoà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à hoà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. 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ữ liệu + 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 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 . TÀ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 VÀ Ứ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_Hoà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 VÀ THIẾT KẾ HƯỚNG ĐỐI TƯỢNG BẰNG UML Tác giả : Dương Anh Đức NXB : Nhà Xuất Bản Thống Kê

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

  • docBAOCAO.doc
  • zipBCAO.zip
  • docBIALV.DOC
  • docBIALV2.DOC
  • docLoiCamOn.doc
  • docLoiNoiDau.doc
  • docMucLuc.doc
  • docNXGVHD.DOC
  • docNXGVPB.DOC
  • docPhanTichUML.doc
  • docSoDoSQL.doc
  • zipSoDoSQL.zip
  • rarSource.rar
  • docTestChuongTrinh.doc