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
102 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2526 | Lượt tải: 0
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â