Luận văn Xây dựng chương trình thi trắc nghiệm bằng vb.net

Lời Nói Đầu Chất lượng học tập của Học Sinh / Sinh Viên luôn là một vấn đề mà Bộ Giáo Dục rất quan tâm . Để nâng cao chất lượng học tập Bộ Giáo Dục đã đưa ra rất nhiều biện pháp , từ nâng cao chất lượng dạy của giáo viên , học của Học Sinh / Sinh Viên đến việc cải cách chương trình dạy và rất nhiều biện pháp khác nhưng có lẽ thi trắc nghiệm là một trong những biện pháp có hiệu quả nhất vì nó là một lối thi đòi hỏi phải có một lượng kiến thức đầy đủ cùng với sự thông minh và nhanh nhẹn của từng học sinh / sinh viên . Vì những yêu cầu trên và cùng với một công nghệ hết sức mới hiện nay trong lĩnh vực công nghệ thông tin là bộ .NET của Microsoft và SQL Server 2000 mà chúng em đã xây dựng nên chương trình Thi Trắc Nghiệm này với các chức năng : + Quản trị dữ liệu đề thi . + Thực hiện chức năng thi trắc nghiệm trên máy cho người dùng Mục đích của chương trình là: + Hổ trợ cho Giáo Viên thuận lợi trong việc soạn câu hỏi trắc nghiệm , soạn đề thi trắc nghiệm . + Cho phép Giáo Vụ soạn đề thi trắc nghiệm , soạn bộ đề ra thi . + Tạo điều kiện dễ dàng và nhanh chóng cho Sinh Viên thi trắc nghiệm được chính xác và công bằng . Sau khi hoàn thành đề tài này chúng em mong được góp một phần công sức của mình vào sự nghiệp đổi mới ngày một tiến bộ của Bộ Giáo Dục nói riêng và xã hội nói chung , mặc dù chương trình của chúng em vẩn còn không ít thiếu sót kính mong quý Thầy, Cô tận tình chỉ bảo để chúng em có thể rút ra được nhiều kinh nghiệm quý báu cho bản thân . Mục Lục PHẦN I. TÌM HIỂU NGÔN NGỮ 1 CHƯƠNG 1 : TÌM HIỂU NGÔN NGỮ VISUAL BASIC.NET 1 I. Tổng quan về VisualBasic.NET . 1 1. Giới thiệu Visual Basic.NET . 1 2. Những nét mới trong Visual Basic.NET . 2 3. Làm việc với các bộ xử lý lỗi . 7 4. Làm việc với Crystal Report . 13 5. Trình duyệt Internet . 15 6. Tạo ứng dụng Web . 16 7. Web Service . 18 8. Xây dựng Help Online . 19 II. Tìm hiểu cơ cấu .NET . 20 1. Tham khảo sơ lược về .NET Framework . 20 2. Tìm hiểu CLR 20 3. Siêu dữ kiện Metadata . 21 4. Quá trình thực thi của CLR 22 5. Lập trình trong môi trường .NET 23 6. Làm việc với các công cụ .NET . 25 III. Kiểu dữ liệu . 25 1. Đối tượng và tập hợp 25 2. Array . 27 3. Các kiểu dữ liệu thường dùng . 27 4. Sử dụng các chuổi 27 5. Kiểu dữ liệu Double 28 6. Làm việc với Date . 28 7. Sử dụng các giá trị Boolean . 28 8. Tạo Structure 29 9. Làm việc với Enumeration . 29 IV. Thủ tục , hàm và biểu thức logic . 30 1. Tìm hiểu về biến . 30 2. Chuyển thông tin . 30 3. Cách xây dựng logic cho chương trình 32 V. Ứng Dụng cơ sở dữ liệu . 34 1. Thế nào là cơ sở dữ liệu . 34 2. Thiết cơ sở dữ liệu 34 3. Trình bày cấu trúc cơ sở dữ liệu . 35 VI. Truy cập CSDL 35 1. ADO so với ADO.NET 35 2. Đối tượng ADO 36 3. Giới thiệu ADO.NET . 37 CHƯƠNG 2 : TÌM HIỂU NGÔN NGỮ SQL SERVER 2000 41 I. SQL Server là gì ? . 41 II. Tạo một Database 41 1. Tạo Database 41 2. Đổi tên Database 42 3. Hủy Database 43 III. Table 43 1. Các loại dữ liệu . 43 2. Tạo một bảng . 44 3. Sửa cấu trúc bảng . 45 4. Xóa một bảng 45 5. Thuộc tính Identity 45 6. Sử dụng kiểu dữ liệu Uniqueidentifier và hàm Newid 46 7. Nhập một mẩu tin mới vào table . 46 8. Xóa dữ liệu . 46 IV. Ràng buộc toàn vẹn . 46 1. Các loại ràng buột toàn vẹn . 46 2. Xóa một ràng buột . 47 3. Giá trị mặc nhiên 47 4. Check constrait . 47 5. Primary Key . 48 6. Unique 48 7. Foreign Key 48 V. Truy vấn dữ liệu bằng phát biểu SELECT 49 1. Câu lệnh Select . 49 2. Biến đổi dữ liệu 50 3. Chuyển đổi dữ liệu 52 4. Tương quan dữ liệu 52 5. Làm việc với các truy vấn con . 53 6. Phát biểu Select Into . 54 7. Toán tử Union 54 VI. Hiệu chỉnh dữ liệu . 54 1. Chèn dữ liệu . 54 2. Xóa dữ liệu 54 3. Cập nhật dữ liệu 54 VII. Sử dụng các phần mở rộng của Transact-SQL 55 1. Sript . 55 2. Các thành phần của ngôn ngữ Control-of-flow 55 VIII. Tạo chỉ mục 56 IX. Tạo View, trigger, store procedurevà function . 56 1. Tạo và thao tác trên View 56 2. Làm việc với các thủ tục lưu trữ hệ thống 56 3. Làm việc với Trigger . 57 4. Làm việc với các hàm do người dùng định nghĩa 57 PHẦN II. PHÂN TÍCH THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH I. Phân tích chương trình 59 1. Đặt tả sơ lược hệ thống xây dựng chương trình Thi Trắc Nghiệm . 59 2. Phân tích hệ thống Thi Trắc Nghiệm bằng Rational Rose . 60 3. Chọn mô hình cài đặt về cơ sở dữ liệu 77 II. Thiết kế chương trình . 77 1. Mô tả các table . 77 2. Ràng buột toàn vẹn 78 3. Sơ đồ quan hệ ERD 83 III. Cài đặt chương trình 93 PHẦN III. TỔNG KẾT I. Nhận xét chung 99 1. Đánh giá kết quả của chương trình . 99 2. Hạn chế của chương trình 99 II. Hướng phát triển chương trình 99 III. Kết luận . 100 Tài liệu tham khảo . 101

doc102 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2526 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Luận văn Xây dựng chương trình thi trắc nghiệm bằng vb.net, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
u soá nguyeân (int , smallint , tinyint) hoaëc kieåu number , decimal (phaûi khai baùo scale=0 ). + Coù theå khai theâm tham soá IDENT_SEED (giaù trò baét ñaàu) vaø IDENT_INCR (giaù trò taêng theâm) . + Haøm @@IDENTUTY cho bieát giaù trò identity cuoái cuøng ñaõ söû duïng ñeå ñöa giaù trò vaøo 1 haøng trong phieân laøm vieäc (session) . + Coù theå söû duïng töø khoaù IDENTITYCOL thay theá teân coät khi truy vaán döõ lieäu Cuù phaùp CREATE TABLE( IDENTITY [(seed, increment)] {NOT NULL], [ ,...}) Söû duïng kieåu döõ lieäu UNIQUEIDENTIFIER vaø HAØM NEWID Kieåu uniqueidentifier vaø haøm NEWID ñöôïc duøng chung vôùi nhau . Ñaëc ñieåm : + Kieåu uniquedentifier löu moät soá 16 bytes (128 bit) duy nhaát (unique). Kieåu naøy duøng ñeå löu giaù trò naøy duy nhaát toaøn cuïc (GUID – Globaly Unique Identifier) . + Haøm NEWID taïo moät GUID coù theå duøng ñeå löu giaù trò vaøo kieåu uniqueidentifier . Giaù trò GUID seõ khoâng gioáng nhau trong taát caû caùc table cuûa moät database, keå caû trong database khaùc . Thöôøng duøng trong vieäc nhaân baûn , khi caàn ñeán moät maø nhaän dieän treân caû caùc heä thoáng. Nhaäp moät maåu tin môùi vaøo table : Cuù phaùp : INSERT [INTO] table_name VALUES (val1 , val2 , … , valn) Hoaëc : INSERT [INTO] table_name (column_list) VALUES (val1 , val2 , … , valn) Xoùa döõ lieäu : Cuù phaùp : TRUNCATE TABLE table_name Hoaëc : DELETE table_name WHERE condition Xoùa döõ lieäu beân trong table RAØNG BUOÄT TOAØN VEÏN : Caùc loaïi raøng buoäc toaøn veïn döõ lieäu (DATA INTERGRITY) Coù theå chia laøm 4 loaïi toaøn veïn döõ lieäu : + Toaøn veïn veà mieàn giaù trò (domain integrity) + Toaøn veïn ñoái vôùi thöïc theå (entity integrity) + Toaøn veïn tham chieáu ( referential integrity) + Toaøn veïn do ngöôøi söû duïng ñònh nghóa . Loaïi toaøn veïn Raøng buoät Domain DEFAULT CHECK FOREIGN KEY Check PRIMARY KEY UNIQUE Referential FOREIGN KEY User-defined CHECK Ta coù theå khai baùo raøng buoäc khi taïo baûng ( CREATE TABLE), hoaëc boå sung ñieàu chænh sau khi ñaõ taïo xong (ALTER TABLE) Ñeå lieät keâ caùc raøng buoäc ñaõ caøi ñaët cho moät table, ta duøng EXEC sp_helpconstraint Xoaù moät raøng buoäc : ALTER TABLE DROP CONSTRAINT Giaù trò maëc nhieân (DEFAULT) : Caùch 1 : CREATE TABLE ( DEFAULT , [ , ... ]) Caùch 2 : CREATE TABLE ( COSNTRAINT DEFAULT , [, ... ]) Caùch 3 : ALTER TABLE ADD CONSTRAINT DEFAULT FOR CHECK constraint CHECK cho pheùp kieåm tra giaù trò trong moät hoaëc nhieàu coät trong table. Döõ lieäu phaûi thoûa maõn bieåu thöùc logic trong raøng buoäc CHECK thì môùi ñöôïc chaáp nhaän Caùch 1 : CREATE TABLE( CHECK [ , ... ], CONSTRAINT CHECK ) Caùch 2 : CREATE TABLE ( CONSTRAINT CHECK [ , … ]) Caùch 3 : ALTER TABLE ADD CONSTRAINT CHECK PRIMARY KEY: Caùch 1 : CREATE TABLE ( PRIMARY KEY [ , … ], ) Caùch 2 : CREATE TABLE ( [ , … ], CONSTRAINTPRIMARY KEY(,, … ) Caùch 3 : ALTER TABLE ADD CONSTRAINTPRIMARYKEY(,,…) UNIQUE: Caùch 1 : CREATE TABLE (UNIQUE[,....], ) Caùch 2 : CREATE TABLE ( CONSTRAINT UNIQUE, [,......] ) Caùch 3 : CREATE TABLE ( [,.........], CONSTRAINT UNIQUE (,,.....)) Caùch 4 : ALTER TABLE ADD CONSTRAINTUNIQUE,,...) FOREIGN KEY: Caùch 1 : CREATE TABLE ( REFERENCES ) [,...], ) Caùch 2: CREATE TABLE ( , CONSTRAINTREFERENCES()[,...]) Caùch 3 : CREATE TABLE([,...] , CONSTRAINT REFERENCES ([,.. ] )) Caùch 4 : ALTER TABLE ADD CONSTRAINTREFERENCES(, [,..]) TRUY VAÁN DÖÕ LIEÄU BAÈNG PHAÙT BIEÅU SELECT : Caâu leänh SELECT : Caâu leänh SELECT treân moät Table: Cuù phaùp : SELECT [ DISTINCT] [TOP n] FROM WHERE GROUP BY HAVING ORDER BY Chuù yù : ( % ) : Ñaïi dieän cho nhieàu kyù töï ( _ ) : Ñaïi dieän cho moät kyù töï Caâu leänh SELECT treân nhieàu table: Hai table: Caùch 1: SELECT FROM T1,T2 WHERE Caùch 2 : SELECT FROM T1 [INNER] JOIN T2 ON Chuù yù: Coù theå boû chöõ INNER treân FROM Keát nhieàu hôn hai table: Caùch 1: SELECT FROM T1 , T2 , .......... , Tn WHERE Caùch 2: SELECT FROM T1 [INNER] JOIN T2 ON[INNER] JOIN T3 ON. . . Chuù yù: n table coù ít nhaát (n-1) ñieàu kieän lieân keát . Thay ñoåi tieâu ñeà coät : Cuù phaùp : SELECT column_heading = column_name FROM table_name Bieán ñoåi döõ lieäu : Caùc toaùn töû soá hoïc : Kieåu döõ lieäu Pheùp toaùn + Pheùp toaùn - Pheùp toaùn chia (/) Pheùp toaùn nhaân (*) Pheùp toaù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 Caùc haøm toaùn hoïc thöôøng duøng : Caùc haøm toaùn hoïc cho pheùp baïn thöïc hieän caùc pheùp toaùn caàn thieát thoâng thöôøng treân döõ lieäu toaùn hoïc . Baïn coù theå traû veà döõ lieäu toaùn hoïc baèng caùch söû duïng cuù phaùp sau : Cuù phaùp : SELECT function_name(parameters) Haøm Keát quaû ABS (numeric_expr) Giaù trò tuyeät ñoái. COS | SIN | COT | TAN(float_expr) Laø soá cos , sin hoaëc tan cuûa goùc (theo radian). EXP(float_expr) Giaù trò muõ cuûa giaù trò xaùc ñònh . LOG(float_expr) Soá log töï nhieân . LOG10(float_expr) Log cô soá 10 . PI( ) Haèng soá 3.141592653589793. POWER(numeric_expr , y ) Giaù trò cuûa numeric_expr luõy thöøa y . ROUND(numeric_expr , len ) Soá numeric_expr laøm troøn ñeán chieàu daøi xaùc ñònh trong moät soá nguyeân SQUARE(float_expr) Bình phöông giaù trò xaùc ñònh . SQRT(float_expr) Caên cuûa giaù trò xaùc ñònh . Caùc haøm chuoãi thöôøng duøng: Baïn coù theå traû veà döõ lieäu kyù töï baèng caùch söû duïng cuù phaùp sau : Cuù phaùp : SELECT function_name(parameters) Haøm Keát quaû ‘expr’+’ expr’ Keát noái hai hay nhieàu chuoãi kyù töï . ASSCII(char_ expr) Traû veà giaù trò maõ ASSCII cuûa kyù töï saùt beân traùi . CHAR(integer_ expr) Traû veà kyù töï töông öùng vôùi giaù trò maõ ASSCII LEFT(char_ expr1,integer_ expr) Traû veà moät chuoãi kyù töï baét ñaàu töø beân traùi vaø ñöùng tröôùc integer_ expr kyù töï . LOWER(char_ expr) Chuyeån thaønh chöõ thöôøng . LTRIM(char_ expr) Traû veà döõ lieäu khoâng coù khoaûng traéng ñaèng tröôùc . REPLACE(‘string1’,’string2’,’string3’) Thay theá taát caû laàn xuaát hieän string2 trong string1 baèng string3 RIGHT(char_ expr,integer_ expr) Traû veà moät chuoåi kyù töï baét ñaàu töø integer_expr kyù töï tính töø beân phaûi . RTRIM(char_ expr) Traû veà döõ lieäu khoâng coù khoaûng traéng ôû ñaèng sau . SPACE(integer_ expr) Traû veà moät chuoãi laäp laïi integer_expr khoaûng traéng . SUBSTRING(expr , stary,length ) Traû veà moät phaàn chuoåi kyù töï hoaëc chuoãi nhò phaân . UNICODE(‘nchar_string’) Traû veà giaù trò soá theo maõ Unicode cuûa kyù töï ñaàu tieân trong ‘nchar_expr’ UPPER(char_ expr) Chuyeån thaønh chöõ hoa . Caùc haøm ngaøy thaùng : Baïn coù theå bieán ñoåi caùc giaù trò thuoäc kieåu datetime baèng caùch söû duïng caùc haøm ngaøy thaùng . Baïn coù theå söû duïng caùc haøm ngaøy thaùng trong column_list , meänh ñeà WHERE hoaëc baát kyø bieåu thöùc naøo coù theå ñöôïc söû duïng . Ñeå laøm ñöôïc nhö vaäy , söû duïng cuù phaùp sau : Cuù phaùp : SELECT date_name(parameters) Haøm Keát quaû DATEADD(datepart,number, date) Theâm soá datepart vaøo date. DATEDIFF(datepart, date1, date2) Traû veà soá datepart giöõ hai ngaøy . DATENAME(datepart, date) Traû veà giaù trò ASCII cho giaù trò datepart cuûa ngaøy date. DATEPART(datepart, date) Traû veà giaù trò integer cho giaù trò cuûa datepart cuûa ngaøy date . DATE(date) Traû veà moät giaù trò soá nguyeân theå hieän ngaøy . GETDATE() Traû veà ngaøy giôø hieän haønh . MONTH(date) Traû veà moät giaù trò soá nguyeân theå hieän thaùng . YEAR(date) Traû veà moät giaù trò soá nguyeân theå hieän naêm Chuyeån ñoåi döõ lieäu : Bôûi vì nhieàu haøm yeâu caàu döõ lieäu theo moät daïng hoaëc kieåu döõ lieäu naøo ñoù , baïn coù theå caàn chuyeån ñoåi töø moät kieåu döõ lieäu naøy sang kieåu döõ lieäu khaùc . Baïn söû duïng haøm CONVER( ) hoaëc CAST( ) ñeå hieäu chænh caùc kieåu döõ lieäu cuûa baïn. Baïn coù theå söû duïng haøm CONVERT( ) ôû baát kyø nôi naøo bieåu thöùc cho pheùp ; noù coù cuù phaùp nhö sau : Cuù phaùp : CONVERT (datatype [(length)], expr [,style]) Töông quan döõ lieäu : Keát noái trong (Inner join): Caùc Inner Join taïo ra caùc thoâng tin khi thoâng tin so saùnh tìm thaáy trong caû hai baûng . Loaïi thoâng thöôøng nhaát cuûa keát noái Inner Join laø + Equijoin caùc giaù trò coät ñöôïc so saùnh baèng nhau vaø caùc coät thöøa ñöôïc theå hieän laø caùc coät trong taäp keát . + Natural join caùc coät thöøa khoâng ñöôïc theå hieän hai laàn . Trong moät Natural join , caùc giaù trò coät ñöôïc so saùnh baèng nhau nhöng caùc coät dö thöøa bò giôùi haïn töø caùc coät trong taäp keát quaû . OUTER JOIN : Baïn coù theå trích xuaát caùc doøng töø moät baûng trong khi cho cheùp taát caû caùc doøng töø caùc baûng khaùc thaønh taäp keát quaû cuûa baïn baèng caùch söû duïng outer join . Caùc toaùn töû cuûa outer join vaø caùc töø khoùa cuûa cuù phaùp ANSI nhö sau : + LEFT OUTER JOINT : Bao goàm taát caû caùc doøng töø baûng thöù nhaát vaø chæ caùc doøng so khôùp trong baûng thöù hai . + RIGHT OUTER JOIN : Bao goàm taát caû caùc doøng töø baûng thöù hai vaø chæ caùc doøng so khôùp trong baûng thöù nhaát. + FULL OUTER JOIN : Bao goàm taát caû caùc doøng töø hai baûng cuõng nhö caùc doøng so khôùp . CROS hay UNRESTRICTED SELF JOIN : Caùc keát noái cheùo hoaëc khoâng giôùi haïn traû veà moät söï keát hôïp cuûa taát caû caùc doøng cuûa taát caû caùc baûng trong keát noái thaønh taäp keát quaû . Töï keát noái : Moät Self join lieân keát caùc doøng cuûa moät baûng vôùi caùc doøng khaùc trong cuøng moät baûng Caùc truy vaán so saùnh ñoái vôùi cuøng thoâng tin ñöôïc söû duïng haàu heát caùc keát noái töï keát (Self join). Laøm vieäc vôùi caùc truy vaán con (Subquery) : Moät pheùp keát noái coù theå ñöôïc söû duïng thay cho truy vaán con ; Tuy nhieân , moät soá tröôøng hôïp ñaëc bieät chæ coù theå thöïc hieän caâu truy vaán con . Moät truy vaán con coù theå chöùa caùc truy vaán con khaùc vaø truy vaán con ñoù coù theå chöùa moät truy vaán con khaùc … Trong thöïc teá khoâng coù gì giôùi haïn soá löôïng caùc truy vaán con coù theå ñöôïc thöïc hieän tröø caùc taøi nguyeân cuûa heä thoáng . Cuù phaùp : (SELECT [ ALL | DISTINCT ] subquery_column_list [FROM table_list] [WHERE clause] [GROUP BY clause] [HAVING clause]) Baïn coù theå taïo vaø söû duïng moät truy vaán con theo caùc quy taéc sau : + Noù phaûi ñöôïc ñaët trong caùc daáu ngoaëc ñôn . + Neáu söû duïng khi moät bieåu thöùc giaù trò ñôn ñöôïc söû duïng , noù phaûi traû veà moät giaù trò ñôn . + Noù khoâng theå ñöôïc söû duïng trong meänh ñeà ORDER BY . + Noù khoâng theå chöùa moät meänh ñeà ORDER BY , COMPUTE hoaëc SELECT INTO. + Noù khoâng theå coù nhieàu hôn moät coät trong column_list neáu söû duïng trong meänh ñeà IN . + Noù phaûi coù SELECT * neáu söû duïng vôùi meänh ñeà EXISTS. + Caùc kieåu döõ lieäu Text vaø Image khoâng cho pheùp coù trong danh saùch choïn (field) (ngoaïi tröø ñoái vôùi vieäc söû duïng *) + Noù khoâng theå bao goàm caùc meänh ñeà GROUP BY vaø HAVING neáu söû duïng vôùi moät pheùp toaùn so saùnh khoâng bieán ñoåi (moät truy vaán khoâng coù baát kyø töø khoùa ANY hoaëc ALL). Phaùt bieåu Select Into : Phaùt bieåu Select Into cho pheùp baïn taïo moät baûng môùi döïa treân caùc keát quaû truy vaán . Cuù phaùp : SELECT column_list INTO new_table_name FROM table_name WHERE search_criteria Toaùn töû Union : Baïn coù theå keát noái caùc keát quaû cuûa hai hay nhieàu truy vaán thaønh moät taäp keát quaû ñôn baèng caùch söû duïng toaùn töû UNION HIEÄU CHÆNH DÖÕ LIEÄU : Cheøn döõ lieäu : Phaùt bieåu INSERT cô baûn ôû moät thôøi ñieåm theâm moät doøng vaøo trong moät baûng. Cuù phaù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] Xoùa döõ lieäu : Khi baïn söû duïng caâu leänh DELETE , baïn coù theå gôõ boû moät hoaëc nhieàu doøng töø moät baûng . Cuù phaùp : DELETE [FROM]{table_name | view_name} [WHERE clause] Caäp nhaät döõ lieäu : Phaùt bieåu UPDATE cho pheùp baïn thay ñoåi caùc giaù trò cuûa coät trong phaïm vi caùc doøng coù saún . Cuù phaùp : UPDATE {table_name | view_name} SET Column_name1 ={expr | NULL | select_statement )}[, col_name2 = … ] [ WHERE search_conditions ] SÖÛ DUÏNG CAÙC PHAÀN MÔÛ ROÄNG CUÛA TRANSACT-SQL : Sript : Sau khi taïo caùc ñoái töôïng nhö table, view,... trong 1 database. Ta coù theå söû duïng SQL Server Enterprise Manager ñeå laäp söu lieäu cho database baèng caùch taïo ra moät hoaëc nhieàu Transact-SQL script. nhöõng script naøy seõ chöùa caùc caâu leänh ñeå ta coù theå deã daøng taïo laïi database vaø caùc ñoái töôïng beân trong noù. caùc böôùc ñeå sinh script + Môû SQL Server Enterprise Manager + Choïn database muoán sinh script. baám nuùt phaûi chuoät treân database naøy, choïn All Task -> Generate SQL Scripts... + Treân tab Generate, maëc nhieân taát caû caùc ñoái töôïng ñeàu ñöôïc ñöa vaøo script, ta choïn löïa laïi caùc ñoái töôïng caàn ñöa vaøo scripts. + Coù theå nuùt Preview... ñeå xem tröôùc keát quaû sinh ra. Choïn OK -> ñaët laïi teân cho file löu laïi (maëc nhieân phaàn môû roäng .sql) Caùc thaønh phaàn cuûa ngoân ngöõ Control-of-flow : Khoái IF … ELSE : Khoái If … else cho pheùp moät phaùt bieåu ñöôïc thöïc thi tuøy theo ñieàu kieän . Cuù phaùp : IF Boolean_expr {sql_statement | statement_block} ELSE[Boolean_expr] { sql_statement | statement_block} Bieåu thöùc CASE : Bieåu thöùc CASE cho pheùp caùc bieåu thöùc T-SQL , ñöôïc ñôn giaûn so vôùi giaù trò ñieàu kieän Cuù phaùp : CASE expr WHEN expr1 THEN expr1 [[WHEN expr2 THEN expr2 ] […]] ELSE exprN END TAÏO CHÆ MUÏC : taïi sao phaûi duøng chæ muïc : Coù hai lyù do chính ñeå söû duïng chæ muïc laø : + Toác ñoä . + Chæ muïc taïo tính duy nhaát . Taïo chæ muïc : CREATE[UNIQUE][CLUSTERED | NONCLUSTERED]INDEX Index_Name ON Table ( column] [, …]) Xoùa chæ muïc : DROP INDEX table.Index_Name [, …] TAÏO VIEW , TRIGGER , STORE PROCEDURE VAØ FUNCTION Taïo vaø thao taùc treân View : View laø phöông tieän cho pheùp ta löu moät caâu truy vaán thaønh moät ñoái töôïng trong CSDL . Sau khi taïo xong ta coù theå laøm vieäc vôùi view töông töï nhö vôùi Table. Tuy nhieân view chæ laø moät khung nhìn, döõ lieäu thöïc söï chæ chöùa trong table maø thoâi. Caùc View (baûng nhìn ) cho pheùp baïn chia ngang hoaëc chia doïc thoâng tin töø moät hoaëc nhieàu baûng trong moät CSDL . Taïo View : Cuù phaùp : CREATE VIEW View_name [(colunm1] [,…])] AS Select statement Xoùa View : DROP VIEW View_Name [, …] Ñieàu chænhView : ALTER VIEW View_name [(column] [, …])] AS Select_statement Laøm vieäc vôùi caùc thuû tuïc löu tröõ heä thoáng : Caùc thuû tuïc löu tröõ heä thoáng laø caùc taäp leänh T-SQL chaïy nhanh ñöôïc löu tröõ trong moät CSDL cuûa SQL Server . Caùc thuû tuïc löu tröõ heä thoáng coù raát nhieàu lôïi ích nhö : + Sau khi noù thöïc hieän , löôïc ñoà cuûa thuû tuïc ñöôïc löu tröõ trong vuøng ñeäm coù thuû tuïc . + Baïn coù theå söû duïng thuû tuïc löu tröõ heä thoáng ñeå ñoùng goùi caùc quy taéc nghieäp vuï + Hieäu quaû thöïc hieän ñöôïc naâng leân cho taát caû caùc thuû tuïc löu tröõ heä thoáng vaø thaäm chí nhieàu hôn so vôùi caùc thuû tuïc löu tröõ heä thoáng ñöôïc chaïy nhieàu hôn moät laàn laø do keá hoaïch truy vaán ñöôïc löu trong vuøng ñeäm thuû tuïc . + Vôùi caùc thuû tuïc löu tröõ heä thoáng , baïn coù theå truyeàn ñoái soá vaøo vaø nhaän döõ lieäu traû veà . + Caùc thuû tuïc löu tröõ heä thoáng coù theå ñöôïc thieát laäp ñeå chaïy töï ñoäng . + Caùc thuû tuïc löu tröõ heä thoáng coù theå ñöôïc söû duïng ñeå trích xuaát hoaëc hieäu chænh döõ lieäu . + Caùc thuû tuïc löu tröõ heä thoáng ñöôïc goïi moät caùch roõ raøng . Khoâng gioáng nhö trigger , caùc thuû tuïc löu tröõ heä thoáng phaûi ñöôïc goïi bôûi öùng duïng , script , batch , taùc vuï cuûa baïn . Cuù phaù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] Laøm vieäc vôùi Trigger : Trigger laø moät loaïi thuû tuïc löu tröõ ñaëc bieät töï ñoäng thöïc hieän khi baïn coá hieäu chænh döõ lieäu maø ñöôïc thieát keá laø ñöôïc baûo veä . Caùc Trigger baûo ñaûm toaøn veïn döõ lieäu baèng caùch baûo veä caùc söï thay ñoåi khoâng nhaát quaùn vaø khoâng ñöôïc pheùp . Baïn coù theå söû duïng caùc trigger ñeå thöïc hieän caùc quy taéc nghieäp vuï phöùc taïp hôn laø baïn coù theå laøm vôùi caùc raøng buoäc .Caùc trigger khoâng coù thoâng soá vaø khoâng theå ñöôïc thöïc thi roõ raøng . Baïn coù theå loàng caùc trigger tôùi 32 caáp . Veà maëc hieäu quaû , caùc trigger coù toång phí töông ñoái thaáp vì haàu heát thôøi gian thöïc hieän cuûa trigger laø ñöôïc söû duïng cho vieäc tham chieáu caùc baûng khaùc . Cuù phaùp : CREATE TRIGGER [ower.] trigger_name ON [ower.] table_name | view_name [ FOR . . ALTER | INSTEAD OF | INSERT | UPDATE | DELETE [ WITH ENCRYPTION] AS sql_statement Laøm vieäc vôùi caùc haøm do ngöôøi duøng ñònh nghóa : Moät tính naêng maïnh cuûa SQL Server 2000 laø haøm do ngöôøi duøng ñònh nghóa (UDF) . Baïn coù theå taïo moät UDF ñeå traû veà moät giaù trò voâ höôùng (moät giaù trò ñôn) hoaëc moät baûng . Caùc haøm voâ höôùng : Haàu heát caùc haøm khoâng phöùc taïp ñeå taïo vaø laøm vieäc vôùi caùc haøm voâ höôùng . Cuù phaù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 [ ) ] Caùc haøm Inline Table – Value : So vôùi hai haøm cuûa baûng , haøm inline table – value ñôn giaûn hôn : Cuù phaùp : CREATE FUNCTION [owner_name.]function_name ([{@parameter_name scalar_parameter_data_type [= default]} [ … , n]]) RETURN TABLE [WITH ENCRYPTION | SCHEMABINDING] [ AS ] RETUNR [ ( ] select_statement [ ) ] Caùc haøm Multistatement Table – Value : Baïn söû duïng caùc haøm multistatement table – Value ñeå traû veà moät baûng Cuù phaù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 [ ) ] PHAÀN II. PHAÂN TÍCH THIEÁT KEÁ VAØ CAØI ÑAËT CHÖÔNG TRÌNH PHAÂN TÍCH ÑEÀ TAØI : Ñaët taû sô löôïc heä thoáng xaây döïng chöông trình thi traéc nghieäm : Hieän nay , hình thöùc thi traéc nghieäm ñaõ ñöôïc Boä Giaùo Duïc vaø ñaøo taïo khuyeán khích ñöa vaøo söû duïng trong caùc tröôøng , lôùp . Toå chöùc caùc cuoäc thi traéc nghieäm nhö theá raát caàn thieát ñeå ñaùnh giaù ñuùng khaû naêng vaø kieán thöùc cuûa hoïc vieân . Heä thoáng naøy seõ taïo ra coâng cuï cho Giaùo Vieân soaïn caâu hoûi traéc nghieäm vaø coâng cuï hoå trôï Giaùo Vieân soaïn ñeà thi . Sinh Vieân seõ thi tröïc tieáp treân maùy Client vaø heä thoáng seõ töï chaám ñieåm . Ñieåm thi seõ ñöôïc heä thoáng coâng boá lieàn hoaëc ñöôïc coâng boá sau . Giaùo Vuï seõ leân danh saùch sinh vieân döï thi cuûa caùc moân thi vaø qui ñònh boä ñeà thi cuûa sinh vieân laáy töø ngaân haøng ñeà thi . Neáu Giaùo Vuï khoâng qui ñònh boä ñeà thi thì sinh vieân seõ thi tröïc tieáp töø ngaân haøng ñeà . Sinh Vieân ñeán döï thi ñuùng lòch thi , vaø thi tröïc tieáp treân maùy tính Client . Sau khi thi xong heä thoáng seõ tính toaùn ñieåm thi , caäp nhaät ñieåm thi vaø baøi laøm cuûa sinh vieân vaøo cô sôû döõ lieäu treân maùy . Ñeå ñaûm baûo tính coâng baèng cuûa cuoäc thi , caùc ñeà thi cuûa sinh vieân ñeàu ñöôïc heä thoáng hoaùn ñoåi ngaãu nhieân vò trí caùc caâu hoûi vaø caâu traû lôøi cuûa ñeà thi ñoù . Sau khi thi xong döõ lieäu ñöôïc caäp nhaät veà Sever SEVER Chöùa CSDL cuûa chöông trình Thí sinh tieán haønh thi traéc nghieäm treân caùc CLIENT Phaân tích heä thoáng Thi Traéc Nghieäm baèng Rational Rose : Xaây döïng Use_Case Diagram : Nhaän dieän caùc actor vaø caùc tröôøng hôïp söû duïng : Qua ñaët taû heä thoáng ôû treân ta xaùc ñònh caùc actor sau taùc ñoäng ñeán heä thoáng : Giaùo Vieân , Sinh Vieân , Giaùo Vuï , Ngöôøi quaûn lyù thoâng soá heä thoáng Sô ñoà Use_Case diagram cho töøng actor : Xaây döïng Class Diagram : Nhaän dieän caùc ñoái töôïng /lôùp vaø caùc Package: Heä thoáng naøy deã daøng nhaän thaáy nhöõng ñoái töôïng : Sinh vieân , Giaùo vieân , GiaùoVieânDaïy , Lôùp , Moân ,KyøThi , CaâuHoûi , CaâuTraûLôøi ,ÑeàThi ,Caâu Hoûi Ñeà Thi , BoäÑeàRaThi ,Caâu Traû Lôøi Ñeà Thi , DSSVDöïThi , CaâuHoûiBaøiLaøm , CaâuTraûLôøiBaøiLaøm , GiaùoVieânCoiThi , Users , Groups . Ngoaøi ra coøn coù caùc ñoái töôïng taïo ra cöûa soå giao tieáp vôùi caùc Actor coù stereotype laø > : + Lôùp LoginForm taïo cöûa soå ñeå Actor truy caäp theo quyeàn cuûa mình . + Lôùp MainFormtaïo cöûa soå Menu chính . + Lôùp DanhMuïcMoânHoïc Form taïo cöûa soå ñeå Actor xem danh muïc moân hoïc + Lôùp QuaûnLyùDanhMuïcMoânHoïc Form taïo cöûa soå ñeå Actor chænh söûa moân hoïc + Lôùp DanhMuïcLôùpHoïcFormtaïo cöûa soå ñeå Actor xem danh muïc lôùp . + Lôùp QuaûnLyùDanhMuïcLôùpHoïcForm taïo cöûa soå ñeå Actor chænh söûa lôùp hoïc . + Lôùp DanhSaùchSinhVieânForm taïo cöûa soå ñeå Actor xem danh saùch SinhVieân + Lôùp QuaûnLyùDanhSaùchSinhVieânForm taïo cöûa soå ñeå Actor chænh söûa DSSV + Lôùp DanhSaùchGiaùoVieânForm taïo cöûa soå ñeå Actor xem DSGV + Lôùp QuaûnLyùDanhSaùchGiaùoVieânForm taïo cöûa soå ñeå Actor chænh söûa GiaùoVieân + Lôùp QuaûnLyùMoânDaïyGiaùoVieânForm taïo cöûa soå ñeå Actor chænh söûa Moân cuûa GV + Lôùp DanhMuïcCaâuHoûiForm taïo cöûa soå ñeå Actor xem danh muïc caâu hoûi + Lôùp QuaûnLyùDanhMuïcCaâuHoûiForm taïo cöûa soå ñeå Actor chænh söûa caâu hoûi + Lôùp DanhMuïcÑeàThiForm taïo cöûa soå ñeå Actor xem danh muïc ñeà thi + Lôùp QuaûnLyùDanhMuïcÑeàThiForm taïo cöûa soå ñeå Actor chænh söûa ñeà thi + Lôùp TaïoÑeàThiForm taïo cöûa soå ñeå Actor taïo ñeà thi . + Lôùp DanhMuïcKyøThiForm taïo cöûa soå ñeå Actor xem danh muïc kyø thi + Lôùp QuaûnLyùDanhMuïcKyøThiForm taïo cöûa soå ñeå Actor chænh söûa kyø thi + Lôùp DanhSaùchSinhVieânDöïThiForm taïo cöûa soå ñeå Actor xem DSSV döï thi + Lôùp QuaûnLyùDanhSaùchSinhVieânDöïThiForm taïo cöûa soå ñeå Actor chænh söûa DSSV döï thi + Lôùp DanhMuïcBoäÑeàThiForm taïo cöûa soå ñeå Actor xem danh muïc boä ñeà thi + Lôùp QuaûnLyùDanhMuïcBoäÑeàThiForm taïo cöûa soå ñeå Actor chænh söûa boä ñeà thi + Lôùp DanhSaùchGiaùoVieânCoiThiForm taïo cöûa soå ñeå Actor xem DSGV coi thi + Lôùp QuaûnLyùDanhSaùchGiaùoVieânCoiThiForm taïo cöûa soå ñeå Actor chænh söûa DSGV coi thi + Lôùp KeátQuaûThiForm taïo cöûa soå ñeå Actor xem keát quaû thi + Lôùp BaøiLaømSinhVieânForm taïo cöûa soå ñeå Actor xem baøi laøm sinh vieân + Lôùp ÑoåiMaätKhaåuForm taïo cöûa soå ñeå Actor ñoåi maät khaåu + Lôùp QuaûnLyùThoângSoáForm taïo cöûa soå ñeå Actor chænh söûa thoâng soá heä thoáng + Lôùp LòchThiForm taïo cöûa soå ñeå Actor xem lòch thi + Lôùp ThiForm taïo cöûa soå ñeå Actor laøm baøi thi . + Lôùp ÑaêngKyùThiForm taïo cöûa soå ñeå Actor ñaêng kyù döï thi Ngoaøi ra coøn xuaát hieän lôùp Database coù stereotype laø > coù chöùc naêng giao tieáp vôùi cô sôû döõ lieäu ñeå thöïc hieän caùc taùc vuï caäp nhaät döõ lieäu Class Diagram: Nhaän dieän caùc moái quan heä giöõa caùc lôùp: Quan heä giöõa caùc lôùp giao dieän vôùi lôùp Database laø dependency . Söû duïng caùc stereotype > giöõa LoginForm vôùi caùc lôùp giao dieän khaùc . Trong khi quan heä dependency giöõa chuùng coù tereo laø > . Ta taïo ra 2 packge laø : * Packge Interface ñeå quaûn lyù taát caû caùc giao dieän giao tieáp vôùi ngöôøi duøng goàm hai class diagram chính laø : + Class diagram QuaûnLyùDöõLieäu goàm taát caû caùc giao dieän coù lieân quan ñeán cô sôû döõ lieäu vaø chöùa caùc lôùp : Login Form , Main From , Danh Muïc Moân Hoïc Form , Quaûn Lyù Danh Muïc Moân Hoïc Form , Danh Muïc Lôùp Hoïc Form , Quaûn Ly ùDanh Muïc Lôùp Hoïc Form , Danh Saùch Sinh Vieân Form , Quaûn Lyù Danh Saùch Sinh Vieân Form , Danh Saùch Giaùo Vieân Form , Quaûn Lyù Danh Saùch Giaùo Vieân Form , Quaûn Lyù Moân Daïy Giaùo Vieân Form , Danh Muïc Caâu Hoûi Form , Quaûn Lyù Danh Muïc Caâu Hoûi Form , Danh Muïc Ñeà Thi Form , Quaûn Lyù Danh Muïc Ñeà Thi Form , Taïo Ñeà Thi Form , Danh Muïc Kyø Thi Form , Quaûn Lyù Danh Muïc Kyø Thi Form , Danh Saùch Sinh Vieân Döï Thi Form , Quaûn Lyù Danh Saùch Sinh Vieân Döï Thi Form , Danh Muïc Boä Ñeà Thi Form , Quaûn Lyù Danh Muïc Boä Ñeà Thi Form , Danh Saùch Giaùo Vieân Coi Thi Form , Quaûn Lyù Danh Saùch Giaùo Vieân Coi Thi Form , Baøi Laøm Sinh Vieân Form , Quaûn Lyù Thoâng Soá Form + Class diagram Thi goàm caùc giao dieän cho Sinh Vieân thi vaø chöùa caùc lôùp : ÑoåiMaätKhaåuForm , KeátQuaûThiForm , LòchThiForm , ThiForm , ÑaêngKyùThiForm * Packge Data goàm : SinhVieân,GiaùoVieân,GiaùoVieânDaïy,Lôùp,Moân,KyøThi,Caâu Hoûi,CaâuTraûLôøi,ÑeàThi,CaâuHoûiÑeàThi,BoäÑeàRaThi,CaâuTraûLôøiÑeàThi,DSSVDöï Thi,CaâuHoûiBaøiLaøm,CaâuTraûLôøiBaøiLaøm,GiaùoVieânCoiThi,Users,Groups . Sô ñoà class diagram : + Sô ñoà Class diagram cuûa package Data : + Sô ñoà Class diagram cuûa Quaûn Lyù Döõ Lieäu trong package Interface : + Sô ñoà Class diagram Sinh Vieân thi trong package Interface : Xaây döïng Sequence Diagram : Caùc Sequence Diagram cuûa GiaùoVuï : Xeùt UseCase QuaûnLyùBoäÑeàThi: Giaùo vuï ñaêng nhaäp vaøo heä thoáng baèng username vaø password cuûa mình . Heä thoáng seõ kieåm tra trong cô sôû döõ lieäu vieäc ñaêng nhaäp coù hôïp leä khoâng vaø neáu hôïp leä form Mainenu seõ ñöôïc kích hoaït , töø form naøy Giaùo vuï seõ choïn form QuaûnLyùBoäÑeàThi. Trong Form QuaûnLyùBoäÑeàThi Giaùo Vuï seõ choïn Kyø Thi , Moân Thi , Giaùo Vieân ra ñeà thi. Heä thoáng load caùc ñeà thi leân form.Giaùo Vuï seõ choïn caùc ñeà thi ra thi . Giaùo Vuï hoaøn thaønh vieäc choïn thì heä thoáng seõ löu laïi caùc ñeà thi vöøa môùi choïn vaøo Boä ñeà thi trong cô sôû döõ lieäu . + Sequence Diagram QuaûnLyùBoäÑeàThi: Xeùt UseCase QuaûnLyùDSSVDöïThi: Giaùo vuï ñaêng nhaäp vaøo heä thoáng baèng username vaø password cuûa mình . Heä thoáng seõ kieåm tra trong cô sôû döõ lieäu vieäc ñaêng nhaäp coù hôïp leä khoâng vaø neáu hôïp leä form Mainenu seõ ñöôïc kích hoaït , töø form naøy Giaùo vuï seõ choïn form QuaûnLyùDSSVDöï Thi . Giaùo vuï seõ choïn Moân , choïn kyø thi , nhaäp ngaøy giôø vaø choïn caùc sinh vieân döï thi . Heä thoáng seõ theâm danh saùch Sinh Vieân döï thi vaøo cô sôû döõ lieäu. + Sequence Diagram QuaûnLyùDSSVDöïThi : Xeùt UseCase TheâmSV: Giaùo vuï ñaêng nhaäp vaøo heä thoáng baèng username vaø password cuûa mình . Heä thoáng seõ kieåm tra trong cô sôû döõ lieäu vieäc ñaêng nhaäp coù hôïp leä khoâng vaø neáu hôïp leä form Mainenu seõ ñöôïc kích hoaït , töø form naøy Giaùo vuï seõ choïn form QuaûnLyùDanhSaùch SinhVieân . Giaùo vuï seõ nhaäp maõ soá sinh vieân , hoï , teân , phaùi , ñòa chæ, Ngaøy sinh , username , password vaø choïn lôùp cuûa sinh vieân . Heä thoáng seõ theâm SV vaøo CSDL. + Sequence Diagram TheâmSV : Xeùt UseCase SöûaThoângTinSV: Giaùo vuï ñaêng nhaäp vaøo heä thoáng baèng username vaø password cuûa mình . Heä thoáng seõ kieåm tra trong cô sôû döõ lieäu vieäc ñaêng nhaäp coù hôïp leä khoâng vaø neáu hôïp leä form Mainenu seõ ñöôïc kích hoaït , töø form naøy Giaùo vuï seõ choïn form Quaûn Lyù Sinh Vieân . Giaùo vuï choïn Sinh Vieân caàn söûa vaø nhaäp laïi thoâng tin SV goàm : Maõ Soá Sinh Vieân , Hoï , Teân , Phaùi , Ñòa Chæ, Ngaøy inh , username , password vaø choïn lôùp cuûa sinh vieân Heä thoáng seõ caäp nhaät laïi Sinh Vieân naøy vaøo cô sôû döõ lieäu. + Sequence Diagram SöûaThoângTinSV Xeùt UseCase QuaûnLyùDSGVCoiThi : Giaùo vuï ñaêng nhaäp vaøo heä thoáng baèng username vaø password cuûa mình . Heä thoáng seõ kieåm tra trong cô sôû döõ lieäu vieäc ñaêng nhaäp coù hôïp leä khoâng vaø neáu hôïp leä form Mainenu seõ ñöôïc kích hoaït , töø form naøy Giaùo vuï seõ choïn form QuaûnLyùDSGVCoiThi . Giaùo vuï seõ choïn kyø thi vaø choïn caùc Giaùo Vieân coi thi . Heä thoáng seõ theâm danh saùch Giaùo Vieân coi thi vaøo cô sôû döõ lieäu. + Sequence Diagram QuaûnLyùDSGVCoiThi Caùc Sequence Diagram cuûa GiaùoVieân : Xeùt UseCase ÑoåiMaätKhaåu: Giaùo Vieân ñaêng nhaäp vaøo heä thoáng baèng username vaø password cuûa mình . Heä thoáng seõ kieåm tra trong cô sôû döõ lieäu vieäc ñaêng nhaäp coù hôïp leä khoâng vaø neáu hôïp leä form Mainenu seõ ñöôïc kích hoaït , töø form naøy Giaùo Vieân seõ choïn form ÑoåiMaätKhaåu Giaùo vieân nhaäp maät khaåu môùi . Heä thoáng seõ caäp nhaät laïi Giaùo Vieân naøy vaøo cô sôû döõ lieäu. + Sequence Diagram ÑoåiMaätKhaåu : Xeùt UseCase TheâmCaâuHoûi: Giaùo Vieân ñaêng nhaäp vaøo heä thoáng baèng username vaø password cuûa mình . Heä thoáng seõ kieåm tra trong cô sôû döõ lieäu vieäc ñaêng nhaäp coù hôïp leä khoâng vaø neáu hôïp leä form Mainenu seõ ñöôïc kích hoaït , töø form naøy Giaùo Vieân seõ choïn form Quaûn Lyù Danh Muïc Caâu Hoûi.Giaùo Vieân choïn Moân , heä thoáng seõ kieåm tra moân naøy Giaùo Vieân coù daïy khoâng . Neáu coù Giaùo Vieân seõ nhaäp thoâng tin Caâu hoûi . Heä thoáng seõ theâm Caâu Hoûi vaøo cô sôû döõ lieäu . + Sequence Diagram TheâmCaâuHoûi : Xeùt UseCase Xoùa Caâu Hoûi : Giaùo Vieân ñaêng nhaäp vaøo heä thoáng baèng username vaø password cuûa mình . Heä thoáng seõ kieåm tra trong cô sôû döõ lieäu vieäc ñaêng nhaäp coù hôïp leä khoâng vaø neáu hôïp leä form Mainenu seõ ñöôïc kích hoaït , töø form naøy Giaùo Vieân seõ choïn form Quaûn Lyù Caâu Hoûi . Giaùo vieân seõ choïn caâu hoûi caàn xoùa . Heä thoáng seõ kieåm tra cho xoùa khoâng , vaø thoâng baùo cho Giaùo vieân . Neáu heä thoáâng cho pheùp vaø Giaùo vieân ñoàng yù thì heä thoáng seõ xoùa Caâu Hoûi naøy trong CSDL . + Sequence Diagram Xoùa Caâu Hoûi : Xeùt UseCase TheâmÑeàThi Giaùo Vieân ñaêng nhaäp vaøo heä thoáng baèng username vaø password cuûa mình . Heä thoáng seõ kieåm tra trong cô sôû döõ lieäu vieäc ñaêng nhaäp coù hôïp leä khoâng vaø neáu hôïp leä form Mainenu seõ ñöôïc kích hoaït , töø form naøy Giaùo Vieân seõ choïn form TheâmÑeàThi Giaùo vieân seõ choïn Moân vaø nhaäp thoâng tin ñeà thi . Heä thoáng seõ phaùt sinh ñeà theo yeâu caàu cuûa Giaùo Vieân vaø sau ñoù theâm Ñeà Thi naøy vaøo cô sôû döõ lieäu . + Sequence Diagram TheâmÑeàThi Caùc Sequence Diagram cuûa SinhVieân : Xeùt UseCase Thi : Sinh Vieân ñaêng nhaäp vaøo heä thoáng baèng username vaø password cuûa mình . Heä thoáng seõ kieåm tra trong cô sôû döõ lieäu vieäc ñaêng nhaäp coù hôïp leä khoâng vaø neáu hôïp leä form MainMenu seõ ñöôïc kích hoaït , töø form naøy Sinh Vieân seõ choïn form Ñaêng Kyù Thi. Sinh vieân choïn moân , choïn kyø thi . Heä thoáng seõ kieåm tra xem Sinh Vieân naøy coù ñöôïc thi hay khoâng . Neáu ñöôïc thì heä thoáng seõ kích hoaït From thi .Sau khi hoaøn taát baøi thi , heä thoáng seõ tính ñieåm vaø löu baøi thi vaøo cô sôû döõ lieäu. + Sequence Diagram Thi : Choïn moâ hình caøi ñaët veà cô sôû döõ lieäu : Coù hai phöông phaùp löïa choïn : Döõ lieäu taäp trung vaø döõ lieäu phaân taùn . Ta choïn phöông phaùp cô sôû döõ lieäu taäp trung vì : + Khoái löôïng döõ lieäu khoâng lôùn + Soá löôïng thí sinh vaø giaùo vieân chuû yeáu taäp trung trong phaïm vi nhaø tröôøng . + Quaûn lyù ñaøo taïo taïi nöôùc ta vaãn laø hình thöùc taäp trung taïi moät cô sôû chính . Neáu coù nhieàu cô sôû thöôøng thì chæ trong baùn kính nhoû . THIEÁT KEÁ CHÖÔNG TRÌNH SQL Server 2000 thích hôïp ñeå laøm DBMS cho chöông trình naøy vì : + Cô sôû döõ lieäu ôû ñaây trung bình . + SQL Server 2000 coù theå chaïy trong caùc heä ñieàu haønh Windows NT 4.0 (töø Srevice Pack 5 trôû ñi) , Windows 2000 , Windows 98 hoaëc Windows Me vaø coù theå söû duïng vôùi heä ñieàu haønh Windows CE . + SQL Server cuûa Microsoft laø moät phöông tieän cô sôû döõ lieäu Client/Server . Töø ñieån döõ lieäu : SINHVIENID Maõ Sinh Vieân MASINHVIEN Maõ soá Sinh Vieân LOPID Maõ Lôùp HO Hoï TEN Teân PHAI Phaùi NGAYSINH Ngaøy Sinh DIACHI Ñòa Chæ MALOP Maõ Soá Lôùp TENLOP Teân Lôùp MONID Maõ Moân MAMON Maõ soá moân TENMON Teân moân SODVHT Soá ñôn vò hoïc taäp KYTHIID Maõ kyø thi MAKYTHI Maõ soá kyø thi TENKYTHI Teân kyø thi GIAOVIEÂNID Maõ Giaùo Vieân MAGIAOVIEN Maõ soá GV DIENTHOAI Ñieän Thoïai CHUCDANH Chöùc Danh ACTIVE Nghó/coøn daïy CAUHOIID Maõ caâu hoûi NOIDUNG Noäi dung MUCDO Möùc ñoä DETHIID Maõ ñeà thi THOIGIANLAMBAI Thôøi gian laøm baøi SOCH Soá Caâu Hoûi CAUTRALOIID Maõ Caâu Traû Lôøi NOIDUNG Noäi Dung STT Soá thöù töï caâu hoûi CAUTRALOIIDCHON Maõ caâu traû lôøi BAILAMID Maõ baøi laøm DIEM Ñieåm Thi NGAYTHI Ngaøy Thi GROUPID Maõ nhoùm TENGROUP Teân Nhoùm USERID Maõ User USERNAME Teân Ñaêng Nhaäp PASSWORDS Maät Khaåu CAUTRALOIDUNG Caâu Traû Lôøi Ñuùng Moâ taû caùc Table : SINHVIEN ( SINHVIENID , MASINHVIEN , LOPID , HO , TEN , PHAI , NGAYSINH , DIACHI , USERID) FieldName Keys Data Type Size Allow Nulls SINHVIENID Khoù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 Khoù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 Khoù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 Khoù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 GIAOVIEÂNID Khoù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 Khoùa Numeric 9 Not null MONID Khoùa Numeric 9 Not null CAUHOI ( CAUHOIID , MONID , GIAOVIENID, NOIDUNG , MUCDO , CAUTRALOIDUNGID ) Field Name Keys Data Type Size Allow Nulls CAUHOIID Khoù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 Khoù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 Khoù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 Khoù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 Khoùa Numeric 9 Not null KYTHIID Khoùa Numeric 9 Not null CAUTRALOIDETHI (CAUTRALOIID , CAUHOIID , NOIDUNG ) Field Name Keys Data Type Size Allow Nulls CAUTRALOIID Khoù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 Khoùa Numeric 9 Not null CAUTRALOIIDCHON Numeric 9 Null BAILAMID Khoùa Numeric 9 Not null CAUTRALOIBAILAM (STT, CAUTRALOIID, BAILAMID) Field Name Keys Data Type Size Allow Nulls STT Numeric 9 Not null CAUTRALOIID Khoùa Numeric 9 Not null BAILAMID Khoùa Numeric 9 Not null DSSVDUTHI ( MONID , SINHVIENID , KYTHIID , BAILAMID , DETHIID , DIEM , NGAYTHI ) Field Name Keys Data Type Size Allow Nulls MONID Khoùa Numeric 9 Not null SINHVIENID Khoùa Numeric 9 Not null KYTHIID Khoù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 Khoùa Numeric 9 TENGROUP Varchar 50 Not null USERS ( USERID , USERNAME , PASSWORDS , GROUPID ) Field Name Keys Data Type Size Allow Nulls USERID Khoù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 Khoùa Numeric 9 Not null KYTHIID Khoùa Numeric 9 Not null MONID Khoùa Numeric 9 Not null Raøng buoät toaøn veïn : RBTV coù boái caûnh treân moät löôïc ñoà quan heä RBTV veà mieàn giaù trò : R1 : " m Î MON m.DVHT > 0 Taàm aûnh höôûng : R1 Theâm Xoùa Söûa MON + - + R2 : " sv Î SINHVIEN sv.NGAYSINH < GETDATE ( ) Taàm aûnh höôûng : R2 Theâm Xoùa Söûa SINHVIEN + - + R3 : " dt Î DETHI dt.THOIGIANLAMBAI >0 R4 : " dt Î DETHI dt.SOCAUHOI >0 Taàm aûnh höôûng : R3,4 Theâm Xoùa Söûa DETHI + - + R 5 : " d Î DSSVDUTHI d.DIEM BETWEEN 0 AND 10 R 6 : " d Î DSSVDUTHI d.NGAYTHI > = GETDATE ( ) Taàm aûnh höôûng : R5,6 Theâm Xoùa Söûa DSSVDUTHI + - + R 7 : " ch Î CAUHOI ch.MUCDO BETWEEN 1 AND 3 ( MUCDO = 1 : Khoù , 2: Trung Bình , 3: Deã ) Taàm aûnh höôûng : R7 Theâm Xoùa Söûa CAUHOI + - + R 8 : " chdt Î CAUHOIDETHI chdt.MUCDO BETWEEN 1 AND 3 ( MUCDO = 1 : Khoù , 2: Trung Bình , 3: Deã ) Taàm aûnh höôûng : R8 Theâm Xoùa Söûa CAUHOIDETHI + - + RBTV lieân boä (khoùa noä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 coù boái caûnh treân nhieàu löôïc ñoà quan heä RBTV phuï thuoäc toàn taïi (khoùa ngoaïi ) : R37 : " sv Î SINHVIEN $ lop Î LOP : sv.LOPID = lop.LOPID Taàm aûnh höôûng : R37 Theâm Xoùa Söûa SINHVIEN + - + LOP - + + R38 : " sv Î SINHVIEN $ u Î USERS : sv.USERID = u.USERID Taàm aûnh höôûng : R38 Theâm Xoùa Söûa SINHVIEN + - + USERS - + + R39 : " gv Î GIAOVIEN $ u Î USERS : gv.USERID = u.USERID Taàm aûnh höôûng : R39 Theâm Xoùa Söûa GIAOVIEN + - + USERS - + + R40 : " gvd Î GIAOVIENDAY $ gv Î GIAOVIEN : gvd.GIAOVIENID = gv.GIAOVIENID Taàm aûnh höôûng : R40 Theâm Xoùa Söûa GIAOVIENDAY + - + GIAOVIEN - + + R41 : " gvd Î GIAOVIENDAY $ m Î MON : gvd.MONID = m.MONID Taàm aûnh höôûng : R41 Theâm Xoùa Söûa GIAOVIENDAY + - + MON - + + R42 : " ch Î CAUHOI $ gv Î GIAOVIEN : ch.GIAOVIENID = gv.GIAOVIENID Taàm aûnh höôûng : R42 Theâm Xoùa Söûa CAUHOI + - + GIAOVIEN - + + R43 : " ch Î CAUHOI $ m Î MON : ch.MONID = m.MONID Taàm aûnh höôûng : R43 Theâm Xoùa Söûa CAUHOI + - + MON - + + R44 : " ctl Î CAUTRALOI $ ch Î CAUHOI : ctl.CAUHOIID = ch.CAUHOIID Taàm aûnh höôûng : R44 Theâm Xoùa Söûa CAUTRALOI + - + CAUHOI - + + R45 : " dt Î DETHI $ gv Î GIAOVIEN : dt.GIAOVIENID = gv.GIAOVIENID Taàm aûnh höôûng : R45 Theâm Xoùa Söûa DETHI + - + GIAOVIEN - + + R46 : " dt Î DETHI $ m Î MON : dt.MONID = m.MONID Taàm aûnh höôûng : R46 Theâm Xoùa Söûa DETHI + - + MON - + + R47 : " chdt Î CAUHOIDETHI $ dt Î DETHI : chdt.DETHIID = dt.DETHIID Taàm aûnh höôûng : R47 Theâm Xoùa Söûa CAUHOIDETHI + - + DETHI - + + R48 : " bd Î BODERATHI $ dt Î DETHI : bd.DETHIID = dt.DETHIID Taàm aûnh höôûng : R48 Theâm Xoùa Söûa BODERATHI + - + DETHI - + + R49 : " bd Î BODERATHI $ kt Î KYTHI : bd.KYTHIID = kt.KYTHIID Taàm aûnh höôûng : R49 Theâm Xoùa Söûa BODERATHI + - + KYTHI - + + R50 : " ctldt Î CAUTRALOIDETHI $ chdt Î CAUHOIDETHI : ctldt.CAUHOIID = chdt.CAUHOIID Taàm aûnh höôûng : R50 Theâm Xoùa Söûa CAUTRALOIDETHI + - + CAUHOIDETHI - + + R51 : " dssv Î DSSVDUTHI $ m Î MON : dssv.MONID = m.MONID Taàm aûnh höôûng : R51 Theâm Xoùa Söûa DSSVDUTHI + - + MON - + + R52 : " dssv Î DSSVDUTHI $ sv Î SINHVIEN : dssv.SINHVIENID = sv.SINHVIENID Taàm aûnh höôûng : R52 Theâm Xoùa Söûa DSSVDUTHI + - + SINHVIEN - + + R53 : " dssv Î DSSVDUTHI $ kt Î KYTHI : dssv.KYTHIID = kt.KYTHIID Taàm aûnh höôûng : R53 Theâm Xoùa Söûa DSSVDUTHI + - + KYTHI - + + R54 : " dssv Î DSSVDUTHI IF dssv.DETHIID ¹ NULL THEN $ dt Î DETHI : dssv.DETHIID = dt.DETHIID END IF Taàm aûnh höôûng : R54 Theâm Xoùa Söûa DSSVDUTHI + - + DETHIID - + + R55 : " gvct Î GIAOVIENCOITHI $ kt Î KYTHI : gvct.KYTHIID = kt.KYTHIID Taàm aûnh höôûng : R55 Theâm Xoùa Söûa GIAOVIENCOITHI + - + KYTHI - + + R56 : " gvct Î GIAOVIENCOITHI $ gv Î GIAOVIEN : gvct.GIAOVIENID = gv.GIAOVIENID Taàm aûnh höôûng : R56 Theâm Xoùa Söûa GIAOVIENCOITHI + - + GIAOVIEN - + + R65 : " gvct Î GIAOVIENCOITHI $ m Î MON : gvct.MONID = m.MONID Taàm aûnh höôûng : R65 Theâm Xoùa Söûa GIAOVIENCOITHI + - + MON - + + R57 : " chbl Î CAUHOIBAILAM $ chdt Î CAUHOIDETHI : chbl.CAUHOIID = chdt.CAUHOIID Taàm aûnh höôûng : R57 Theâm Xoùa Söûa CAUHOIBAILAM + - + CAUHOIDETHI - + + R58 : " chbl Î CAUHOIBAILAM $ dssv Î DSSVDUTHI : chbl.BAILAMID = dssv.BAILAMID Taàm aûnh höôûng : R58 Theâm Xoùa Söûa CAUHOIBAILAM + - + DSSVDUTHI - + + R59 : " ctlbl Î CAUTRALOIBAILAM $ ctldtÎCAUTRALOIDETHI :ctlbl.CAUTRALOIID = ctldt.CAUTRALOIID Taàm aûnh höôûng : R59 Theâm Xoùa Söûa CAUHOIBAILAM + - + CAUTRALOIDETHI - + + R60 : " ctlbl Î CAUTRALOIBAILAM $ dssv Î DSSVDUTHI : ctlbl.BAILAMID = dssv.BAILAMID Taàm aûnh höôûng : R60 Theâm Xoùa Söûa CAUTRALOIBAILAM + - + DSSVDUTHI - + + R61 : " u Î USERS $ g Î GROUPS : u.GROUPID = g.GROUPID Taàm aûnh höôûng : R61 Theâm Xoùa Söûa USERS + - + GROUPS - + + RBTV lieân thuoäc tính lieân quan heä : 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ô ñoà quan heä ERD: CAØI ÑAËT CHÖÔNG TRÌNH Caùc giao dieän chính : Giao dieän MainMenu quaûn lyù döõ lieäu : Giao dieän Quaûn Lyù Moân : Giao dieän Quaûn Lyù Sinh Vieân : Giao dieän Quaûn Lyù DSSV Döï Thi Giao dieän Quaûn Lyù Caâu Hoûi : Giao dieän Taïo Ñeà Thi : Report In Baûng Ñieåm : Giao dieän MainMenu Sinh Vieân : Giao dieän Thi PHAÀN III. TOÅNG KEÁT NHAÄN XEÙT CHUNG : Ñaùnh giaù keát quaû cuûa chöông trình Qua quaù trình nghieân cöùu , hoïc hoûi vaø xaây döïng chöông trình Thi Traéc Nghieäm , chöông trình ñaõ ñaït ñöôïc moät soá keát quaû laø : + Hoå trôï Giaùo Vieân soaïn Caâu Hoûi vaø taïo Ñeà Thi theo yeâu caàu . + Hoå trôï Sinh Vieân thi treân maùy Client ñöôïc deã daøng hôn vaø ñöôïc xem lòch thi , xem keát quaû thi . + Trong quaù trình Sinh Vieân thi treân maùy , Giaùm Thò Coi Thi coù theå can thieäp tröïc tieáp vaøo baøi laøm cuûa Sinh Vieân ( caám thi , huûy baøi thi , taïm ngöng thôøi gian thi cuûa Sinh vieân , cho Sinh Vieân tieáp tuïc thôøi gian thi cuûa mình ) neáu Sinh Vieân hoaëc baøi laøm cuûa Sinh Vieân ñoù coù vaán ñeà . + Giaùo Vuï ñöôïc hoå trôï nhieàu taùc vuï veà nghieäp vuï nhö quaûn lyù Giaùo Vieân , Sinh Vieân , Moân Hoïc , Lôùp vaø toå chöùc moät Kyø Thi bao goàm caùc coâng vieäc : leân danh saùch Sinh Vieân Döï Thi , quy ñònh caùc Ñeà Ra Thi , leân danh saùch Giaùo Vieân Coi Thi . + Vaø vôùi chöông trình Thi Traéc Nghieäm naøy Giaùo Vieân khoâng coøn phaûi chaám töøng baøi thi cuûa SV baèng tay nöõa , maø heä thoáng seõ töï chaám ñieåm vaø in baûng ñieåm ra theo yeâu caàu . + Ñeå phaân bieät ñöôïc ngöôøi söû duïng heä thoáng , ngöôøi söû duïng ñaêng nhaäp vaøo heä thoáng baèng teân ñaêng nhaäp vaø maät khaåu rieâng cuûa mình , vaø ñeå baûo maät caùc maät khaåu cuûa ngöôøi söû duïng ñöïôc an toaøn , heä thoáng seõ maõ hoùa maät khaåu tröôùc khi löu vaøo cô sôû döõ lieäu. Haïn cheá cuûa chöông trình : Trong thôøi gian ngaén , vôùi taát caû söï noå löïc cuûa chuùng em ñeå hoaøn thaønh ñeà taøi naøy .Tuy ñaït ñöôïc nhöõng keát quaû cuï theå nhöng vaãn khoâng traùnh khoûi nhöõng thieáu soùt , haïn cheá , vaø coøn toàn taïi vaán ñeà chöa giaûi quyeát toát caàn ñöôïc goùp yù boå sung theâm . Ngoaøi ra do kieán thöùc vaø kinh nghieäm haïn heïp neân ñeà taøi muoán phaùt trieån theâm thì caàn coù thôøi gian ñeå tieáp tuïc nghieân cöùu , tieáp thu yù kieán ñoùng goùp vaø hoaøn thieän veà maët kyõ thuaät ñeå chöông trình coù theå trôû thaønh moät öùng duïng toát vaø ñaït hieäu quaû cao. HÖÔÙNG PHAÙT TRIEÅN CHÖÔNG TRÌNH : Vôùi ñeà taøi naøy chuùng ta coù theå phaùt trieån theâm : + Môû roäng phaïm vi soaïn thaûo ñeà thi cuûa Giaùo Vieân baèng moät trình soaïn thaûo naøo ñoù vaø löu vaøo file , chöông trình seõ töï ñoäng keát noái file ñoù vaøo cô sôû döõ lieäu + Caâu Hoûi boå sung theâm hình aûnh minh hoïa . + In ñeà thi vaø cho Sinh Vieân thi treân giaáy . + Thay ñoåi quyeàn söû duïng heä thoáng moät caùch linh ñoäng KEÁT LUAÄN Söï phaùt trieån maïnh meû cuûa Coâng Ngheä Thoâng Tin cuøng vôùi söï ñoøi hoûi ngaøy caøng cao söï töï ñoäng hoùa , tin hoïc hoùa cuûa con ngöôøi vaøo taát caû caùc lænh vöïc khieán cho xaõ hoäi luoân ñoåi môùi . Qua quaù trình tìm hieåu , nghieân cöùu vaø aùp duïng nhöõng coâng ngheä môùi cuûa lónh vöïc Tin Hoïc trong coâng cuoäc caûi caùch cuûa Boä Giaùo Duïc , chuùng em xaây döïng ñeà taøi naøy vôùi mong muoán ñöôïc goùp moät phaàn coâng söùc vaøo coâng cuoäc ñoåi môùi naøy . Döïa treân nhöõng maët ñaït ñöôïc vaø chöa ñaït ñöôïc cuûa ñeà taøi , chuùng em hy voïng seõ nhaän ñöôïc nhieàu yù kieán ñoùng goùp , nhaän xeùt ñeå coù ñieàu kieän phaùt trieån öùng duïng naøy leân cao hôn nöõa . TAØI LIEÄU THAM KHAÛO [1] TEACH YOURSELF OBJECT- ORIENTED PROGRAMMING WITH VISUAL BASIC.NET IN 21 DAYS Taùc giaû : Richard J.Simon NXB : Sam [2] KYÕ NAÊNG LAÄP TRÌNH VISUAL BASIC.NET Taùc giaû : Nguyeãn Tieán Duõng NXB : Nhaø Xuaát Baûn Thoáng Keâ [3] LAÄP TRÌNH CHUYEÂN SAÂU VISUAL BASIC.NET Taùc giaû : Phöông Lan NXB : Nhaø Xuaát Baûn Lao Ñoäng - Xaõ Hoäi [4] ADO.NET LAÄP TRÌNH VAØ ÖÙNG DUÏNG Taùc giaû : Nguyeãn Tieán _Nguyeãn Vuõ Thònh NXB : Nhaø Xuaát Baûn Thoáng Keâ Lao Ñoäng – Xaõ Hoäi [5] SQL SERVER 2000 DATABASE DESIGN Taùc giaû : Louis Davidson NXB : Wrox [6] MICROSOFT SQL SERVER 2000 Taùc giaû : Nguyeãn Ngoïc Minh_Hoaøng Ñöùc Haûi NXB : Nhaø Xuaát Baûn Lao Ñoäng – Xaõ Hoäi [7] VISUAL MODELING WITH RATIONAL ROSE 2000 AND UML Taùc giaû : Terry Quatrani NXB : Grady Booch [8] PHAÂN TÍCH VAØ THIEÁT KEÁ HÖÔÙNG ÑOÁI TÖÔÏNG BAÈNG UML Taùc giaû : Döông Anh Ñöùc NXB : Nhaø Xuaát Baûn Thoáng Keâ

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
  • docTestChuongTrinh.doc