Sau một thời gian nghiên cứu, phân tích và xây dựng “Phần mềm thi, đánh giá
câu hỏi, đề thi trắc nghiệm khách quan”, đề tài đã hoàn thành được mục tiêu đề ra là
xây dựng được phần mềm cho phép tổ chức thi các môn học dưới hình thức trắc nghiệm
trên máy tính với nhiều dạng câu hỏi, đề thi được tạo từ ngân hàng câu hỏi theo ma trận,
tự động trộn câu hỏi, câu trả lời để tạo sự khác biệt lớn giữa các đề thi. Hỗ trợ đánh giá
câu hỏi, đề thi, phân tích kết quả thi từ đó đưa ra kết luận về chất lượng câu hỏi và chất
lượng ngân hàng đề, tìm hiểu về một số phần mềm hỗ trợ thi trắc nghiệm nhằm đưa ra
bảng so sánh, đánh giá, qua đó có thể lựa chọn một số ưu điểm và ý tưởng tốt giúp cho
việc xây dựng chương trình hiệu quả hơn. Một số thuật toán chính trong chương trình
cũng được trình bày, để nhấn mạnh các yếu tố trọng tâm và quan trọng của đề tài
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng phần mềm thi, đánh giá câu hỏi, đề thi trắc nghiệm khách quan, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
cơ sở
dữ liệu khác nhau, nhưng mô hình lập trình đối với tất cả các các data provider này đều
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 42
làm việc giống nhau. Do đó, trên .NET một khi người lập trình đã biết làm việc với một
data provider nào đó, thì cũng có thể dễ dàng làm việc với các data provider khác, chỉ
là vấn đề thay đổi tên lớp và chuỗi kết nối.
* Managed Code
Các lớp của ADO.NET đều thuộc managed class (lớp bị quản lý bởi CLR). Các
lớp này hưởng những ưu điểm của .NET CLR (Common Language Runtime), chẳng
hạn thuộc tính độc lập của ngôn ngữ cũng như quản lý tự động các tài nguyên. Tất cả
các ngôn ngữ .NET đều truy cập cùng một API. Do đó, nếu người lập trình đã biết sử
dụng các lớp này trên C# thì cũng không gặp vấn đề gì khi sử dụng lớp đó trên VB.NET.
Một ưu điểm khác rất lớn là tất cả mọi việc quản lý bộ nhớ sẽ do CLR lo liệu thông qua
dịch vụ GC (garbage collector), chính vì vậy người lập trình khỏi phải bận tâm về việc
cấp phát cũng như giải phóng bộ nhớ bị chiếm dụng.
* Triển khai ứng dụng
Trong thực tế, việc viết những ứng dụng cơ sở dữ liệu sử dụng ODBC, DAO và
các công nghệ khác đi trước, rồi cho triển khai lên các máy client là một vấn đề cực kỳ
khó khăn vì OBDC, DAO có quá nhiều phiên bản. Tuy nhiên, vấn đề này đã được ADO
giải quyết ngoại trừ việc có những phiên bản khác nhau về MDAC (Microsoft Data
Access Components). Bây giờ, với ADO.NET việc cài đặt trong môi trường phân tán,
các thành phần .NET sẽ lo mọi việc.
* Hỗ trợ của XML
Ngày nay, XML là một chuẩn mực công nghệ và là một phương pháp được sử
dụng nhiều nhất trong việc chia sẻ sử dụng dữ liệu giữa các ứng dụng chạy trên Internet.
Trên ADO.NET dữ liệu sẽ được lưu trữ trên bộ nhớ cache và được chuyển giao theo
dạng XML. Tất cả các ứng dụng có thể chia sẻ sử dụng kiểu dữ liệu này, và chuyển giao
dữ liệu thông qua những giao thức khác nhau chẳng hạn là HTTP.
* Hiệu năng và khả năng tăng quy mô ứng dụng (scalability)
Performance và scalability là hai yếu tố quan trọng khi triển khai những ứng dụng
và dịch vụ dựa trên web. Chuyển đổi dữ liệu trên Internet từ một dữ liệu nguồn này đến
một nguồn dữ liệu khác là một việc tốn kém vì băng thông kết nối (connection
bandwidth) giới hạn và như thế tăng nhanh việc lưu thông trên mạng. Bằng cách sử dụng
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 43
dữ liệu tách rời được lưu trữ trên bộ nhớ (disconnected cached data) trên XML, ta giải
quyết cả hai vấn đề trên.
Hình 2.1 Kiến trúc ADO.NET
(Nguồn: www.msdn.microsoft.com)
2.4 Tổng quan về hệ quản trị CSDL MS SQLServer và ngôn ngữ T-SQL
- Hệ quản trị cơ sở dữ liệu (Database Management System - DBMS): là một hệ
thống phần mềm cho phép tạo lập cơ sở dữ liệu và điều khiển mọi truy nhập đối với cơ
sở dữ liệu đó.
- Hệ quản trị cơ sở dữ liệu quan hệ (Relation Database Management
System - RDBMS) là một hệ quản trị cơ sở dữ liệu theo mô hình quan hệ.
2.4.1 Giới thiệu hệ quản trị CSDL Microsoft SQL Server
Microsoft SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ, cung cấp cách
tổ chức dữ liệu bằng cách lưu chúng vào các bảng. Dữ liệu quan hệ được lưu trữ trong
các bảng và các quan hệ đó được định nghĩa giữa các bảng với nhau. Người dùng truy
cập dữ liệu trên Server thông qua ứng dụng. Người quản trị CSDL truy cập Server
trực tiếp để thực hiện các chức năng cấu hình, quản trị và thực hiện các thao tác bảo trì
CSDL.
Ngoài ra, SQL Server là một CSDL có khả năng mở rộng, nghĩa là chúng
có thể lưu một lượng lớn dữ liệu và hỗ trợ tính năng cho phép nhiều người dùng truy
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 44
cập dữ liệu đồng thời. Các phiên bản của SQL Server phổ biến hiện này trên thị trường
là SQL Server 2005, SQL Server 2008, SQL Server 2012.
* Các đặc tính của SQL Server:
- Cho phép quản trị một hệ CSDL lớn (lên đến vài tegabyte), có tốc độ xử lý dữ
liệu nhanh đáp ứng yêu cầu về thời gian.
- Cho phép nhiều người cùng khai thác trong một thời điểm đối với một CSDL
và toàn bộ quản trị CSDL (lên đến vài chục ngàn user).
- Có hệ thống phân quyền bảo mật tương thích với hệ thống bảo mật của công
nghệ NT (Network Technology), tích hợp với hệ thống bảo mật của Windows NT hoặc
sử dụng hệ thống bảo vệ độc lập của SQL Server.
- Hỗ trợ trong việc triển khai CSDL phân tán và phát triển ứng dụng trên Internet.
- Cho phép lập trình kết nối với nhiều ngôn ngữ lập trình khác dùng xây dựng các
ứng dụng đặc thù (Visual Basic, C, C++, ASP...).
- Sử dụng câu lệnh truy vấn dữ liệu Transaction – SQL.
* Các Database hệ thống
Khi cài đặt SQL Server có 4 database hệ thống được cài đặt, đó là:
- master: Ghi nhận thông tin cấp hệ thống, thông tin khởi tạo SQL Server và thiết
lập cấu hình SQL Server. Database này cũng ghi nhận tất cả các tài khoản đăng nhập,
sự tồn tại của các Database khác, vị trí tập tin chính cho tất cả Database người dùng.
- tempdb: Giữ các bảng tạm, các stored procedure tạm,.v.v... Được dùng cho các
nhu cầu lưu trữ tạm của SQL Server.
- model: là khuôn mẫu cho tất cả các CSDL khác được tạo trên hệ thống kể cả
tempdb. Database model phải được tồn tại trên hệ thống, bởi vì nó được dùng để
tạo lại tempdb mỗi khi SQL server được khởi động.
- msdb: Giữ các bảng mà SQL Server Agent dùng để lập thời gian biểu thực thi
các công việc, các cảnh báo và các operator.
Trong khóa luận này, tác giả lựa chọn hệ quản trị cơ sở dữ liệu MS SQLServer
phiên bản 2008 R2 để phục vụ cho việc lưu trữ và xử lý dữ liệu của mình.
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 45
Hình 2.2 Hệ quản trị CSDL MSSSQL Server 2008 R2
(Nguồn: www. geekswithblogs.net)
2.4.2 Giới thiệu ngôn ngữ T-SQL (Transact-SQL)
T-SQL là ngôn ngữ SQL mở rộng dựa trên SQL chuẩn của ISO (International
Organization for Standardization) và ANSI (American National Standards Institute)
được sử dụng trong SQL Server khác với P-SQL (Procedural-SQL) dùng trong Oracle.
SQL, viết tắt của Structured Query Language (ngôn ngữ hỏi có cấu trúc),
là công cụ sử dụng để tổ chức, quản lý và truy xuất dữ liệu đuợc lưu trữ trong các cơ sở
dữ liệu. SQL là một hệ thống ngôn ngữ bao gồm tập các câu lệnh sử dụng để tương tác
với cơ sở dữ liệu quan hệ.
Tên gọi ngôn ngữ hỏi có cấu trúc phần nào làm chúng ta liên tưởng đến một
công cụ (ngôn ngữ) dùng để truy xuất dữ liệu trong các cơ sở dữ liệu. Thực sự mà nói,
khả năng của SQL vượt xa so với một công cụ truy xuất dữ liệu, mặc dù đây là mục đích
ban đầu khi SQL được xây dựng nên và truy xuất dữ liệu vẫn còn là một trong những
chức năng quan trọng của nó. SQL được sử dụng để điều khiển tất cả các chức năng mà
một hệ quản trị cơ sở dữ liệu cung cấp cho người dùng bao gồm:
- Định nghĩa dữ liệu: SQL cung cấp khả năng định nghĩa các cơ sở dữ liệu, các
cấu trúc lưu trữ và tổ chức dữ liệu cũng như mối quan hệ giữa các thành phần dữ liệu.
- Truy xuất và thao tác dữ liệu: Với SQL, người dùng có thể dễ dàng thực hiện
các thao tác truy xuất, bổ sung, cập nhật và loại bỏ dữ liệu trong các cơ sở dữ liệu.
- Điều khiển truy cập: SQL có thể được sử dụng để cấp phát và kiểm soát các
thao tác của người sử dụng trên dữ liệu, đảm bảo sự an toàn cho cơ sở dữ liệu.
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 46
- Đảm bảo toàn vẹn dữ liệu: SQL định nghĩa các ràng buộc toàn vẹn trong cơ sở
dữ liệu nhờ đó đảm bảo tính hợp lệ và chính xác của dữ liệu trước các thao tác cập nhật
cũng như các lỗi của hệ thống.
Như vậy, có thể nói rằng SQL là một ngôn ngữ hoàn thiện được sử dụng trong
các hệ thống cơ sở dữ liệu và là một thành phần không thể thiếu trong các hệ quản trị cơ
sở dữ liệu. Mặc dù SQL không phải là một ngôn ngữ lập trình như C, C++, Java,... song
các câu lệnh mà SQL cung cấp có thể được nhúng vào trong các ngôn ngữ lập trình
nhằm xây dựng các ứng dụng tương tác với cơ sở dữ liệu. Khác với các ngôn ngữ lập
trình quen thuộc như C, C++, Java,... SQL là ngôn ngữ có tính khai báo. Với SQL, người
dùng chỉ cần mô tả các yêu cầu cần phải thực hiện trên cơ sở dữ liệu mà không cần phải
chỉ ra cách thức thực hiện các yêu cầu như thế nào. Chính vì vậy, SQL là ngôn ngữ dễ
tiếp cận và dễ sử dụng.
* Vai trò của SQL
Bản thân SQL không phải là một hệ quản trị cơ sở dữ liệu, nó không thể tồn tại
độc lập. SQL thực sự là một phần của hệ quản trị cơ sở dữ liệu, nó xuất hiện trong các
hệ quản trị cơ sở dữ liệu với vai trò ngôn ngữ và là công cụ giao tiếp giữa người sử dụng
và hệ quản trị cơ sở dữ liệu.
Trong hầu hết các hệ quản trị cơ sở dữ liệu quan hệ, SQL có những vai trò như sau:
- SQL là ngôn ngữ hỏi có tính tương tác: Người sử dụng có thể dễ dàng thông
qua các trình tiện ích để gởi các yêu cầu dưới dạng các câu lệnh SQL đến cơ sở dữ liệu
và nhận kết quả trả về từ cơ sở dữ liệu
- SQL là ngôn ngữ lập trình cơ sở dữ liệu: Các lập trình viên có thể nhúng các
câu lệnh SQL vào trong các ngôn ngữ lập trình để xây dựng nên các chương trình ứng
dụng giao tiếp với cơ sở dữ liệu
- SQL là ngôn ngữ quản trị cơ sở dữ liệu: Thông qua SQL, người quản trị cơ sở
dữ liệu có thể quản lý được cơ sở dữ liệu, định nghĩa các cấu trúc lưu trữ dữ liệu, điều
khiển truy cập cơ sở dữ liệu,...
- SQL là ngôn ngữ cho các hệ thống khách/chủ (client/server): Trong các hệ
thống cơ sở dữ liệu khách/chủ, SQL được sử dụng như là công cụ để giao tiếp giữa các
trình ứng dụng phía máy khách với máy chủ cơ sở dữ liệu.
Trư
ờn
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 47
- SQL là ngôn ngữ truy cập dữ liệu trên Internet: Cho đến nay, hầu hết các máy
chủ Web cũng như các máy chủ trên Internet sử dụng SQL với vai trò là ngôn ngữ để
tương tác với dữ liệu trong các cơ sở dữ liệu.
- SQL là ngôn ngữ cơ sở dữ liệu phân tán: Đối với các hệ quản trị cơ sở dữ liệu
phân tán, mỗi một hệ thống sử dụng SQL để giao tiếp với các hệ thống khác trên mạng,
gởi và nhận các yêu cầu truy xuất dữ liệu với nhau.
- SQL là ngôn ngữ sử dụng cho các cổng giao tiếp cơ sở dữ liệu: Trong một hệ
thống mạng máy tính với nhiều hệ quản trị cơ sở dữ liệu khác nhau, SQL thường được
sử dụng như là một chuẩn ngôn ngữ để giao tiếp giữa các hệ quản trị cơ sở dữ liệu.
Hình 2.3 Mối liên hệ giữa SQLServer và C#
(Nguồn: www.data-miners.com)
2.5. Các sơ đồ phân tích hệ thống
Phân tích hệ thống nhằm xác định một cách chính xác và cụ thể các chức năng
chính của hệ thống thông tin. Trong giai đoạn này cần phải xác định rõ ràng những gì
mà hệ thống cần phải thực hiện mà chưa quan tâm đến phương pháp thực hiện chức
năng đó. Như vậy việc phân tích phải đề cập đến những mô tả cơ sở. Để tiến hành phân
tích hệ thống ta sẽ xây dựng các sơ đồ sau:
- Sơ đồ Use-case: Use-case được dùng trong kỹ thuật phần mềm và hệ thống để
nắm bắt yêu cầu chức năng của hệ thống. Use case mô tả sự tương tác đặc trưng giữa
người dùng bên ngoài (actor) và hệ thống. Nó thể hiện ứng xử của hệ thống đối với bên
ngoài, trong một hoàn cảnh nhất định, xét từ quan điểm của người sử dụng. Nó mô tả
các yêu cầu đối với hệ thống, có nghĩa là những gì hệ thống phải làm chứ không phải
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 48
mô tả hệ thống làm như thế nào?. Tập hợp tất cả Use case của hệ thống sẽ mô tả tất cả
các trường hợp mà hệ thống có thể được sử dụng.
- Sơ đồ phân rã chức năng (BFD – Business Function Diagram): xác địch
chức năng của nghiệp vụ là bước đầu tiên của việc phân tích hệ thống. Để phân tích yêu
cầu thông tin của tổ chức ta phải biết được tổ chức đó thực hiện những nhiệm vụ, chức
năng gì. Từ đó, tìm ra các dữ liệu, các thông tin được sử dụng và tạo ra trong các chức
năng. Đồng thời, cũng phải tìm ra những hạn chế mối ràng buộc đặt lên các chức năng
đó. Mô hình BFD là công cụ biểu diễn việc phân rã có thứ bậc đơn giản các công việc
cần thực hiện. Mỗi công việc được chia ra làm các công việc con, số mức chia ra phụ
thuộc kích cỡ và độ phức tạp của hệ thống.
- Sơ đồ ngữ cảnh (Context Diagram): là một dạng sơ đồ được dùng để hỗ trợ
cho quá trình xây dựng sơ đồ dòng dữ liệu. Thể hiện khái quát nội dung chính của hệ
thống thông tin. Sơ đồ chỉ bao gồm một xử lý chung nhất nêu bật chức năng của hệ
thống thông tin. Xung quanh là các thực thể ngoài, chỉ nguồn phát và đích nhận thông
tin cùng với các dòng thông tin đi vào và đi ra hệ thống thông tin.
Việc sử dụng sơ đồ ngữ cảnh nhằm làm rõ biên giới của hệ thống và hỗ trợ việc
nghiên cứu các mối quan hệ của hệ thống với thế giới bên ngoài, từ đó cũng có thể làm
rõ các hoạt động của hệ thống, các thông tin vào ra của hệ thống.
Sơ đồ ngữ cảnh bao gồm 3 nhóm thành phần:
Thứ nhất, Thành phần chính nằm ở trung tâm của sơ đồ, biểu thị cho toàn bộ hệ
thống đang được nghiên cứu. Ký hiệu là hình tròn.
Thứ hai, Xung quanh vòng tròn trung tâm này là tất cả các phần tử bên ngoài (tác
nhân ngoài) – đại diện cho một người hoặc một tổ chức bên ngoài lĩnh vực nghiên cứu
của hệ thống nhưng có một số hình thức tiếp xúc với hệ thống, có quan hệ với hệ thống.
Là nguồn gốc cung cấp thông tin cũng như là nơi nhận sản phẩm của hệ thống. Ký hiệu
là hình chữ nhật.
Thứ ba, tất cả các đường truyền thông tin vào và ra khỏi hệ thống, nối hệ thống
với các tác nhân ngoài của nó).
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 49
- Sơ đồ mô hình luồng dữ liệu (DFD – Data Flow Diagram): là một sơ đồ hình
học nhằm diễn tả các luồng tài liệu thông qua các chức năng của hệ thống, nhằm mục
đích bổ sung khiếm khuyết của mô hình phân rã chức năng bằng việc bổ sung các luồng
thông tin nghiệp vụ cần để thực hiện chức năng, cho ta cái nhìn đầy đủ hơn về các mặt
hoạt động của hệ thống và là một trong số các đầu vào cho quá trình thiết kế hệ thống.
Mô hình DFD là một công cụ mô tả mối quan hệ thông tin giữa các công việc.
Những hỗ trợ của DFD:
- Xác định yêu cầu của người dùng.
- Lập kế hoạch và minh hoạ những phương án cho phân tích viên và người
dùng xem xét.
- Trao đổi giữa những phân tích viên và người dùng trong hệ thống.
- Làm tài liệu đặc tả yêu cầu hình thức và đặc tả thiết kế hệ thống.
Sau khi có được sơ đồ chức năng BFD, tiếp theo ta cần xem xét chi tiết hơn về
thông tin cần cho việc thực hiện các chức năng đã nêu trong sơ đồ BFD trên. Công cụ
được sử dụng cho mục đích này là sơ luồng dữ liệu DFD. Ở sơ đồ này nêu ra một mô
hình về hệ thống có quan điểm cân xứng cho cả dữ liệu và chức năng. Nó chỉ ra cách
mà thông tin chuyển vận từ chức năng này của hệ thống qua chức năng khác của hệ
thống. Điều quan trọng nhất là nó chỉ ra phải có sẵn những thông tin nào cần phải có,
trước khi cho thực hiện một hàm hay một quá trình.
Các kí pháp trong sơ đồ DFD:
- Tiến trình (Proccess) hoặc chức năng: Có nhiệm vụ biến đổi thông tin. Kí
pháp là hình tròn hoặc hình chữ nhật có góc tròn có thể được đánh số. Số đó chỉ mức
phân rã của sơ đồ. Tên gọi là duy nhất và có dạng Động từ - Bổ ngữ.
- Ví dụ kí pháp xử lý và chức năng.
1.0
Chức năng
Tác nhân
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 50
- Dòng dữ liệu (Data flow): Có nhiệm vụ biểu diễn việc chuyển dữ liệu trong hệ
thống, dữ liệu vào hoặc ra khỏi một xử lý hoặc chức năng. Kí pháp là mũi tên một đầu
hoặc hai đầu chỉ hướng thông tin. Tên gọi không cần phải duy nhất nhưng cần đặt khác
để tránh nhầm lẫn.
Ví dụ kí pháp dòng dữ liệu:
- Kho dữ liệu (Data store): là nơi chứa dữ liệu, là các bảng đã được xác định trong
quá trình phân tích thiết kế dữ liệu. Kí pháp là cặp đường song song chứa tên của thông
tin được cất giữ. Hoặc hình chữ nhật hở bên phải, bên trái có tên kho dữ liệu kí hiệu là
A1 ... Z1, A2 ... Z2, ... Dòng dữ liệu hướng về kho dữ liệu dùng để diễn tả hoạt động:
thêm, sửa hay xóa dữ liệu. Dòng dữ liệu rời kho dữ liệu diễn tả hoạt động đọc dữ liệu
trong kho.
Ví dụ kí pháp kho dữ liệu :
2.6. Thư viện công cụ thiết kế của DevExpress
Quá trình thiết kế giao diện ứng dụng có sự hỗ trợ của bộ công cụ DevExpress 13.1.8
Hình 2.4 DevExpress Framework
2.7. Kết luận
Ở chương này, khóa luận đã điểm qua môi trường, các công cụ, nền tảng, công
nghệ và phương pháp để xây dựng hệ thống. Những nội dung đó sẽ là hữu ích cho quá
trình phát triển ứng dụng sẽ được phân tích cụ thể ở chương 3.
T ư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 51
CHƯƠNG 3. PHÂN TÍCH, THIẾT KẾ, XÂY DỰNG PHẦN MỀM THI, ĐÁNH
GIÁ CÂU HỎI, ĐỀ THI TRẮC NGHIỆM KHÁCH QUAN
Từ những kiến thức tìm hiểu lý thuyết tổng qua về trắc nghiệm và môi trường,
công cụ, nền tảng để phân tích, xây dựng phần mềm. Nội dung chương 3 này sẽ đi sâu
vào phân tích thiết kế và tiến hành lập trình để xây dựng ra sản phẩm hoàn chỉnh.
3.1. Hệ thống hỗ trợ thi trắc nghiệm
Một hệ thống hỗ trợ thi trắc nghiệm bao gồm các yếu tố được thể hiện trong sơ
đồ use-case dưới đây:
Giáo viên
Bộ soạn thảo
Quản trị viên
Quản trị hệ thống
Ngân hàng
Trắc
nghiệm
Chương trình
thi trắc nghiệm
Công cụ đánh giá,
thống kê
Sinh viên
Bảng đánh
giá, thống
kê
Hình 3.1 Sơ đồ Use-case hệ thống hỗ trợ thi trắc nghiệm
Hệ thống này bao gồm các thành phần:
- Ngân hàng trắc nghiệm: bao gồm ngân hàng trắc nghiệm, ngân hàng bố cục
đề, ngân hàng đề trắc nghiệm của tất cả các môn học được phân theo từng bộ môn, từng
khoa.
- Chương trình Bộ soạn thảo đề thi trắc nghiệm: là chương trình giúp cho giáo
viên soạn thảo câu hỏi trắc nghiệm, soạn thảo bố cục đề và soạn thảo đề trắc nghiệm.
Trư
ờng
Đạ
i họ
c K
i h
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 52
- Chương trình Thống kê và Đánh giá trắc nghiệm: là chương trình dùng để
thống kê và đánh giá câu hỏi và đề thi trắc nghiệm. Dữ liệu tính toán được sẽ lưu theo
từng câu trắc nghiệm và từng đề trắc nghiệm giúp cho giáo viên sửa chữa hoặc giúp cho
“bộ” bóc đề chọn câu trắc nghiệm phù hợp.
- Chương trình Thi trắc nghiệm: đây là chương trình dành cho các thí sinh.
Chương trình này sẽ lấy đề thi từ ngân hàng đề theo ca thi, thí sinh sẽ làm bài ngay trong
chương trình. Sau khi xác nhận nộp bài, chương trình sẽ trả về kết quả của thí sinh.
- Quản trị hệ thống: đây là chương trình nhằm để quản lý toàn bộ hệ thống.
Người quản trị có thể phân quyền, bãi bỏ quyền, quản lý truy xuất ngân hàng trắc
nghiệm, cập nhật, duy tu ngân hàng trắc nghiệm,
Trong phạm vi của hệ thống này, khóa luận nghiên cứu 2 phần là Chương trình
thi trắc nghiệm và Công cụ đánh giá, thống kê. Sau đây, khóa luận sẽ trình bày quá trình
phân tích thiết kế và xây dựng các chức năng của chương trình.
3.2. Phân tích hệ thống
3.2.1. Sơ đồ phân rã chức năng (BFD – Business Function Diagram):
Dựa vào sơ đồ use-case hệ thống hỗ trợ thi trắc nghiệm cùng với việc nghiên cứu
các nghiệp vụ thì phần mềm thi, đánh giá câu hỏi, đề thi trắc nghiệm khách quan có các
chức năng chính là: Hệ thống, Tạo đề - trộn đề - phân mã đề, Thi trắc nghiệm, Đánh giá,
Thống kê. Dưới đây là sơ đồ chức năng thể hiện phần mềm được xây dựng với 5 chức
năng sau:
+ Quản lý hệ thống
+ Tạo đề, trộn đề, phân mã đề
+ Thi trắc nghiệm
+ Đánh giá
+ Thống kê Trư
ờng
Đạ
i ọ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 53
Phần mềm thi, đánh giá đề thi, câu hỏi trắc nghiệm khách quan
Quản lý hệ thống Thi trắc nghiệm
Tạo đề, trộn đề,
phân mã đề
Đánh giá
Nhập danh sách
thí sinh
Thống kê
Làm bài thi
Chấm bài
Trả kết quả
Lưu bài làm
Chọn thông tin
môn thi
Tạo đề, trộn đề
Lưu đề cho ca
thi, ngày thi
Xem đề
Đánh giá
độ khó câu hỏi
Đánh giá
độ phân cách câu
hỏi
Đánh giá
độ tin cậy đề thi
Thống kê kết quả
thi
Thống kê độ đo
của câu hỏi
Đăng nhập
Đăng xuất
Tạo tài khoản
Hình 3.2 Sơ đồ chức năng BFD
3.2.2. Mô tả chức năng
a. Chức năng “Quản lý hệ thống”
- Chức năng quản lý hệ thống bao gồm các chức năng:
+ Đăng nhập
+ Đăng xuất
+ Nhập danh sách thí sinh
+ Tạo tài khoản
Quản lý hệ thống
Nhập danh sách
thí sinh
Đăng nhập Đăng xuất Tạo tài khoản
Hình 3.3 Chức năng quản lý hệ thống
Để sử dụng được hệ thống thì người dùng gồm người quản lý (giáo viên) và người
dự thi (sinh viên) phải đăng nhập vào hệ thống thông qua một tài khoản được phân quyền
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 54
trước đối với người quản lý, và đăng nhập bằng mã sinh viên đối với sinh viên dự thi
được nhập từ danh sách cho trước. Người quản trị có quyền được tạo thêm tài khoản sử
dụng hệ thống khi cần thiết.
b. Chức năng “Tạo đề, trộn đề, phân mã đề thi”
- Chức năng bóc đề, trộn đề, phân mã đề bao gồm các chức năng:
+ Chọn thông tin môn học
+ Tạo đề, trộn đề
+ Lưu đề cho ca thi, ngày thi
+ Xem đề
Tạo đề, trộn đề,
phân mã đề
Chọn thông tin
môn thi
Tạo đề, trộn đề
Lưu đề cho ca
thi, ngày thi
Xem đề
Hình 3.4 Chức năng tạo đề, trộn đề, phân mã đề thi
Trước khi tổ chức thi cho một môn học, giáo viên được phân quyền sẽ tiến hành
tạo đề, dựa theo tiêu chí đề tạo ra có giống nhau giữa các ca thi hay không để tiến hành
trộn đề tạo thành các mã đề. Giáo viên sẽ xem qua đề ở chức năng “Xem đề” và sau đó
là ấn định các mã đề vào các ca thi theo yêu cầu cho phù hợp.
c. Chức năng “Thi trắc nghiệm”
- Chức năng thi trắc nghiệm gồm các chức năng:
+ Làm bài thi + Chấm bài
+ Lưu bài làm + Trả kết quả
Thi trắc nghiệm
Làm bài thi Chấm bài Trả kết quảLưu bài làm
Hình 3.5 Chức năng thi trắc nghiệm
Trư
ờng
Đạ
i họ
Kin
h tế
Hu
ế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 55
Người dự thi đăng nhập vào hệ thống sẽ được điều hướng đến chức năng “Thi
trắc nghiệm”, hệ thống sẽ kiểm tra tính hợp lệ và cho phép làm bài thi. Trong quá trình
làm bài, mỗi lần trải qua một câu hỏi, thì bài làm sẽ được lưu trữ và chấm điểm. Sau khi
người dự thi xác nhận nộp bài thì kết quả sẽ tự động được trả về cho mỗi bài làm. Nếu
hủy thi thì toàn bộ kết quả sẽ bị hủy bỏ.
d. Chức năng “Đánh giá”
- Chức năng đánh giá gồm:
+ Đánh giá độ khó câu hỏi + Đánh giá độ phân cách câu hỏi
+ Đánh giá độ tin cậy của đề thi
Đánh giá
Đánh giá
độ khó câu hỏi
Đánh giá
độ phân cách câu
hỏi
Đánh giá
độ tin cậy đề thi
Hình 3.6 Chức năng đánh giá
Đánh giá chất lượng của các câu hỏi nói chung và đề thi nói riêng là công việc
quan trọng mà bất cứ một hệ thống thi trắc nghiệm nào cũng phải hướng đến. Bởi vì,
quá trình đánh giá sẽ giúp loại bỏ những câu hỏi, đề thi không đủ chất lượng trong việc
đo lường kết quả học tập. Công việc đánh giá này thường diễn ra sau một giai đoạn đối
với đánh giá câu hỏi và sau một kỳ thi đối với đề thi.
e. Chức năng “Thống kê”
- Chức năng thống kê gồm:
+ Thống kê kết quả thi + Thống kê độ đo câu hỏi
Thống kê
Thống kê kết quả
thi
Thống kê độ đo
của câu hỏi
Hình 3.7 Chức năng thống kê
Trư
ờng
Đạ
i ọ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 56
Thống kê kết quả thi là chức năng hỗ trợ giúp cho giáo viên nắm bắt được chất
lượng học tập dựa vào việc có bao nhiêu bài làm đạt điểm tốt và không tốt. Chức năng
thống kê độ đo của câu hỏi nhằm cho biết, với một môn học nào đó, số lượng câu hỏi
khó hoặc có độ phân cách không tốt chiếm bao nhiêu trong ngân hàng câu hỏi, từ đó
giáo viên có thể đưa ra phương án thay thế hoặc sửa đổi phù hợp.
3.2.3. Sơ đồ ngữ cảnh (Context Diagram)
Trong giới hạn nội dung của khóa luận này là “Xây dựng phần mềm thi, đánh
giá câu hỏi, đề thi trắc nghiệm khách quan” dựa trên “Phần mềm hỗ trợ quy trình
soạn thảo đề thi trắc nghiệm khách quan” đã có, kết hợp với sơ đồ chức năng có thể
phân tích để thu được sơ đồ ngữ cảnh của bài toán như sau:
PHẦN MỀM THI,
ĐÁNH GIÁ CÂU HỎI,
ĐỀ THI TRẮC
NGHIỆM KHÁCH
QUAN
Người dự thi
(Sinh viên)
Người quản lý
(Giáo viên)
T
h
ô
n
g
t
in
b
ài
t
h
i
K
ết
q
uả
b
ài
t
hi
Thông tin đăng nhập
Kết quả đăng nhập
Thông tin bóc, xáo đề, phân đề
Kết quả bóc, xáo đề, phân đề
Thông tin đánh giá, thống kê
Kết quả đánh giá, thống kê
Thông tin danh sách thí sinh
Kết quả hiển thị
K
ết
q
uả
đ
ăn
g
n
hậ
p
T
h
ô
n
g
t
in
đ
ăn
g
n
h
ậ
p
Hình 3. 8 Sơ đồ ngữ cảnh
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 57
3.2.4. Sơ đồ mô hình luồng dữ liệu (DFD – Data Flow Diagram):
a. DFD mức 0:
1.0
Quản lý hệ
thống
3.0
Thi trắc
nghiệm
2.0
Tạo đề,
trộn đề,
phân mã đề
4.0
Đánh giá
5.0
Thống kê
Người quản lý
(Giáo viên)
T
h
ô
n
g
t
in
g
iá
o
v
iê
n
Tài khoản
người dùng
Ngân hàng
câu hỏi
Thông tin
yêu cầu xử lý
Ngân hàng đề
Đề thi
Thông tin
người dùng
Câu hỏi Môn học
Thông tin môn học
Ca thi, kỳ thiThông tin ca thi, kỳ thi
T
h
ô
n
g
t
in
m
ô
n
h
ọ
c
T
h
ô
n
g
t
in
c
a
th
i,
k
ỳ
t
h
i
Đề thi
Tài khoản
người dùng
Người dự thi
(Sinh viên)
T
h
ô
n
g
t
in
d
ự
t
h
i
Thông tin
thi
Người dự thi
(Sinh viên)
T
h
ô
n
g
t
in
t
rả
l
ờ
iT
h
ô
n
g
t
in
s
in
h
v
iê
n
T
h
ô
n
g
t
in
si
n
h
v
iê
n
Bài thi Thông tin bài thi
T
h
ô
n
g
t
in
b
à
i
th
i
Thông tin
yêu cầu đánh giá
Ngân hàng
câu hỏi
Thông tin
câu hỏi
Thông tin
yêu cầu thống kê
Kết quả
Thông tin
câu hỏi
Bài thi
Thông tin
bài thi
Hình 3.9 Sơ đồ phân rã mức 0
Trư
ờng
Đạ
i ọ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 58
b. DFD phân rã mức 1 cho chức năng 1.0:
Tài khoản
người dùng
1.2
Nhập danh
sách thí sinh
1.1
Đăng nhập
1.3
Đăng xuất
Thông tin
người dùng
Thông tin
thí sinh
Người quản lý
(Giáo viên)
Thông tin
giáo viên
Thông tin
trả lời
Thông tin đăng xuất
Thông tin
phản hồi
Thông tin
thí sinh
Thông tin
trả lời
Người dự thi
(Sinh viên)
Thông tin
sinh viên
Thông tin
trả lời
Thông tin đăng xuất
Thông tin
phản hồi
Hình 3.10 Sơ đồ phân rã mức 1 cho chức năng 1.0
Trư
ờng
Đạ
i ọ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 59
c. DFD phân rã mức 1 cho chức năng 2.0:
2.1
Chọn thông
tin môn thi
2.2
Tạo đề, trộn
đề
2.3
Lưu đề cho ca
thi, ngày thi
2.4
Xem đề
Ngân hàng
câu hỏi
Ngân hàng đề
Môn học Ca thi, kỳ thi
Người quản lý
(Giáo viên)
Người quản lý
(Giáo viên)
Thông tin
môn thi
Thông tin
phản hồi
Thông tin yêu cầu
xử lý
Thông tin
phản hồi
Thông tin yêu cầu
xem đề
Đề thi
Thông tin yêu cầu
lưu đề
Thông tin
phản hồi
Thông tin
môn học
Câu hỏi
Thông tin ca thi,
kỳ thi
Đề thi
Thông tin môn học
Đề thi
Hình 3.11 Sơ đồ phân rã mức 1 cho chức năng 2.0
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 60
d. DFD phân rã mức 1 cho chức năng 3.0:
3.1
Làm bài thi
3.3
Chấm bài
3.4
Trả kết quả
3.2
Lưu bài làm
Ngân hàng đề
Môn học
Ca thi, kỳ thi
Tài khoản
người dùng
Bài thiNgười dự thi
(Sinh viên)
Thông tin yêu cầu
làm bài
Thông tin
phản hồi
Thông tin
phản hồi
Thông tin xác nhận
nộp bài
Thông tin
người dùng
Thông tin
môn học
Thông tin ca thi,
ngày thi
Đề thi Thông tin
bài làm
Bài làm
Kết quả
Hình 3.12 Sơ đồ phân rã mức 1 cho chức năng 3.0
e. DFD phân rã mức 1 cho chức năng 4.0:
4.1
Đánh giá
độ khó
câu hỏi
4.2
Đánh giá
độ phân cách
câu hỏi
4.3
Đánh giá
độ tin cậy
đề thi
Ngân hàng đề
Ngân hàng
câu hỏi
Bài thi
Người quản lý
(Giáo viên)
Thông tin yêu cầu đánh giá
Thông tin yêu cầu đánh giá
Thông tin đề thi
Thông tin bài thi
Thông tin câu hòi
Kết quả
Thông tin yêu cầu
đánh giá
Kết quả
Kết quả
Hình 3.13 Sơ đồ phân rã mức 1 cho chức năng 4.0
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 61
f. DFD phân ra mức 1 cho chức năng 5.0:
5.1
Thống kê
kết quả thi
5.2
Thống kê
độ đo của
câu hỏi
Ngân hàng
câu hỏi
Bài thi
Người quản lý
(Giáo viên)
Thông tin yêu cầu
thống kê
Thông tin yêu cầu
thống kê
Kết quả thống kê
Kết quả bài làm
Kết quả độ đo
câu hỏi
Hình 3.14 Sơ đồ phân rã mức 1 cho chức năng 5.0
3.3. Thiết kế cơ sở dữ liệu
3.3.1. Liệt kê các tập thực thể và thuộc tính tương ứng
Với bài toán đặt ra, ta tiến hành phân tích và đi đến xây dựng cơ sở dữ liệu với
các thực thể và các thuộc tính tương ứng như sau:
Thực thể: MONHOC (IdMonHoc, TenMonHoc, MoTa)
Diễn giải: MÔN HỌC (Mã môn học, Tên môn học, Mô tả)
Thực thể: CAUHOICHINHTHUC (IdCauHoiChinhThuc, NoiDung, NgayTao,
NgayCapNhat,TyLeDuyet, DoPhanCach, CongKhai, TongSoTraLoi,TinhTrang, Khoa,
NgayDanhGiaGanNhat, SoLuongTraLoiDung).
Diễn giải: CÂU HỎI CHÍNH THỨC (Mã câu hỏi, Nội dung, Ngày tạo, Ngày
cập nhật, Tỷ lệ duyệt, Độ phân cách, Công khai, Tổng số trả lời, Tình trạng, Khóa, Ngày
đánh giá gần nhất, Số người trả lời đúng).
Gọi “câu hỏi chính thức” là để phân biệt với “câu hỏi” được dùng trong “Phần
mềm hỗ trợ quy trình soạn thảo đề thi trắc nghiệm khách quan” nhằm lưu trữ các câu
hỏi đã được kiểm duyệt để tạo thành ngân hàng câu hỏi chính thức. Tuy nhiên, trong
phạm vi của khóa luận này, để đơn giản trong việc gọi tên, ta sẽ quy ước
CAUHOICHINHTHUC là CAUHOI.
Trư
ờng
Đạ
i họ
c K
i h
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 62
Thực thể: CAUTRALOICHINHTHUC (IdCauTraLoiChinhThuc, NoiDung1,
NoiDung2, DapAn, CoDinh).
Diễn giải: CÂU TRẢ LỜI CHÍNH THỨC (Mã câu trả lời, Nội dung 1, Nội dung
2, Đáp án, Cố định).
Tương tự cho CAUHOICHINHTHUC, ta sẽ gọi CAUTRALOICHINHTHUC là
CAUTRALOI.
Thực thể: LOAICAUHOI (IdLoaiCauHoi, TenLoaiCauHoi, MoTa).
Diễn giải: LOẠI CÂU HỎI (Mã loại câu hỏi, Tên loại câu hỏi, Mô tả).
Thực thể: GIATHIETCHUNG (IdGiaThietChung, NoiDung)
Diễn giải: GIẢ THIẾT CHUNG (Mã giả thiết chung, Nội dung)
Thực thể:
MATRANKIENTHUC (IdMaTranKienThuc, SoCauNhap, SoCauQuyDinh)
Diễn giải: MA TRẬN KIẾN THỨC (Mã ma trận kiến thức, Số câu nhập, Số câu
quy định).
Thực thể: DOKHO (IdDoKho, TenDoKho).
Diễn giải: ĐỘ KHÓ (Mã độ khó, Tên độ khó).
Thực thể: DETHI (IdDe, NgayThi, DeCungDe, TTKT)
Diễn giải: ĐỀ THI (Mã đề, Ngày thi, Đề cùng đề, Thứ tự khởi tạo)
Thực thể: KYTHI (IdKyThi, TenKyThi)
Diễn giải: KỲ THI (Mã kỳ thi, Tên kỳ thi)
Thực thể: SINHVIEN (Id, HoTen, MatKhau, Quyen)
Diễn giải: SINH VIÊN (Mã sinh viên, Họ tên, Mật khẩu, Quyền)
Thực thể: CATHI (IdCaThi, TuGio, DenGio)
Diễn giải: CA THI (Ca thi, Từ giờ, Đến giờ)
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 63
3.3.2. Mối quan hệ giữa các tập thực thể
LOAICAUHOI có CAUHOI
(1, 1)
CAUHOI thuộc CAUTRALOI
(1, 1) (1, n)
GIATHIETCHUNG thuộc CAUHOI
(1, 1) (0, n)
DOKHO có CAUHOI
(0, n)
MATRANKIENTHUC thuộc CAUHOI
(1, 1) (0, n)
MONHOC có CAUHOI
(1, 1) (0, n)
(1, 1)
(0, n)
KYTHI có DETHI
(1, 1) (0, n)
CATHI thuộc DETHI
(1, n) (0, n)
DETHI có CAUHOI
(1, n) (1, n)
SINHVIEN thi DETHI
(0, n) (0, n)
MONHOC
(0, n) (1, 1)
SINHVIEN trả lời CAUHOI
(0, n) (0, n)
DETHI
(0, n)
(1, n)
NgayThi
DaThi
Dung/Sai
TraLoi
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 64
3.3.3. Sơ đồ thực thể - mối quan hệ
Hình 3.15 Sơ đồ thực thể mối quan hệ
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 65
3.3.4. Chuyển các mối quan hệ thành lược đồ quan hệ
- Mỗi mối quan hệ giữa các tập thực thể sẽ được chuyển thành một lược đồ quan
hệ có tên là tên của mối quan hệ và nhận các thuộc tính là khóa của các tập thực thể
tham gia vào mối quan hệ và có thể thêm vào thuộc tính riêng (nếu có).
+ Giữa hai tập thực thể có mối quan hệ n-1 thì khóa chính của tập thực thể bên 1
sẽ làm khóa phụ của tập thực thể bên n.
+ Giữa hai tập thực thể có mối quan hệ n-n thì tập thực thể mới được xây dựng
nên sẽ lấy khóa chính của hai tập thực thể tham gia vào mối quan hệ n-n làm khóa chính.
CATHI thuộc DETHI
(1, n) (0, n)
Lược đồ: CHITIETCATHI (IdCaThi, IdDe).
Diễn giải: CHI TIẾT CA THI (Mã kỳ thi, Tên kỳ thi).
DETHI có CAUHOI
(1, n) (1, n)
Lược đồ: CHITIETDETHI (Id, IdDe, IdCauHoi)
Diễn giải: CHI TIẾT ĐỀ THI (Vị trí xáo, Mã kỳ thi, Tên kỳ thi)
SINHVIEN thi DETHI
(0, n) (0, n)
MONHOC
(0, n) (1, 1)
NgayThi
DaThi
Lược đồ: CHITIETTHI (IdSinhVien, IdMonHoc, NgayThi, IdDe, DaThi).
Diễn giải: CHI TIẾT THI (Mã sinh viên, Mã môn học, Ngày thi, Mã đề, Đã thi).
SINHVIEN trả lời CAUHOI
(0, n) (0, n)
DETHI
(0, n)
(1, n)
Dung/Sai
TraLoi
Lược đồ: TRALOICAUHOI (IdTraLoi, IdDe, IdCauHoi, IdSinhVien, Dung/Sai,
TraLoi).
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 66
Diễn giải: TRẢ LỜI CÂU HỎI (Mã trả lời, Mã đề, Mã câu hỏi, Mã sinh viên,
Đúng/Sai, Trả lời).
3.3.5. Mô hình dữ liệu quan hệ
Sau khi chuẩn hóa các lược đồ quan hệ, ta thu được các bảng dữ liệu sau:
Bảng CAUHOI (Câu hỏi)
Thuộc tính Kiểu dữ liệu Thuộc tính Kiểu dữ liệu
IdCauHoiChinhThuc int IdDoKho int
NoiDung nvarchar(max) IdMonHoc int
DoPhanCach real TyLeDuyet float
NgayTao datetime NgayDanhGiaGanNhat date
NgayCapNhat datetime SoLuongTraLoiDung int
IdGiaThietChung int TongSoTraLoi int
IdLoaiCauHoi int TinhTrang nvarchar(50)
IdMaTranKienThuc int CongKhai bit
IdGiaoVien int Khoa bit
Bảng CAUTRALOI (Câu trả lời)
Thuộc tính Kiểu dữ liệu Thuộc tính Kiểu dữ liệu
IdCauTraLoiChinhThuc int NoiDung2 nvarchar(max)
IdCauHoiChinhThuc int DapAn bit
NoiDung1 nvarchar(max) CoDinh bit
Bảng LOAICAUHOI Bảng GIATHIETCHUNG
(Loại câu hỏi) (Giả thiết chung)
Thuộc tính Kiểu dữ liệu
IdLoaiCauHoi int
TenLoaiCauHoi nvarchar(50)
MoTa nvarchar(100)
Thuộc tính Kiểu dữ liệu
IdGiaThietChung int
NoiDung nvarchar(max)
Trư
ờng
Đạ
i họ
c
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 67
Bảng DOKHO Bảng MATRANKIENTHUC
(Độ khó) (Ma trận kiến thức)
Thuộc tính Kiểu dữ liệu
IdDoKho int
TenDoKho nvarchar(50)
Bảng MONHOC (Môn học) Bảng SINHVIEN (Sinh viên)
Thuộc tính Kiểu dữ liệu
IdMonHoc int
TenMonHoc nvarchar(500)
MoTa nvarchar(500)
Bảng DETHI (Đề thi)
Thuộc tính Kiểu dữ liệu
IdDe int
IdMonHoc int
NgayThi date
IdDeCungDe bigint
TTKT int
IdKyThi int
Thuộc tính Kiểu dữ liệu
IdMaTranKienThuc int
SoCauNhap int
SoCauQuyDinh int
Thuộc tính Kiểu dữ liệu
Id varchar(50)
HoTen nvarchar(50)
MatKhau varchar(50)
Quyen int
Bảng CATHI (Ca thi)
Thuộc tính Kiểu dữ liệu
IdCaThi int
TuGio datetime
DenGio datetime
Bảng KYTHI (Kỳ thi)
Thuộc tính Kiểu dữ liệu
IdKyThi int
TenKyThi nvarchar(50)
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 68
Bảng CHITIETCATHI (Chi tiết ca thi)
Thuộc tính Kiểu dữ liệu
IdCaThi int
IdDe int
Bảng CHITIETTHI (Chi tiết thi)
Thuộc tính Kiểu dữ liệu
Id varchar(50)
IdMonHoc int
NgayThi date
IdDe int
DaThi bit
Bảng CHITIETDETHI (Chi tiết đề thi)
Thuộc tính Kiểu dữ liệu
Id bigint
IdDe int
IdCauHoi int
Bảng TRALOICAUHOI (Trả lời câu hỏi)
Thuộc tính Kiểu dữ liệu
IdTraLoi bigint
IdDe int
IdCauHoi int
IdSinhVien varchar(50)
Dung/Sai Bit
TraLoi nvarchar(max)
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 69
Từ các lược đồ quan hệ ở trên, ta có mô hình dữ liệu quan hệ như sau:
Hình 3.16 Mô hình dữ liệu quan hệ
tb
l_
C
a
T
h
i
Id
C
a
T
h
i
T
u
G
io
D
e
n
G
io
tb
l_
c
a
u
h
o
ic
h
in
h
th
u
c
Id
C
a
u
H
o
iC
h
in
h
T
h
u
c
N
o
iD
u
n
g
D
o
P
h
a
n
C
a
ch
N
g
a
y
T
a
o
N
g
a
y
C
a
p
N
h
a
t
Id
G
ia
T
h
ie
tC
h
u
n
g
Id
Lo
a
iC
a
u
H
o
i
Id
M
a
T
ra
n
K
ie
n
T
h
u
c
Id
G
ia
o
V
ie
n
Id
D
o
K
h
o
Id
M
o
n
H
o
c
T
y
Le
D
u
y
e
t
N
g
a
y
D
a
n
h
G
ia
G
a
n
N
h
a
t
S
o
Lu
o
n
g
T
ra
Lo
iD
u
n
g
T
o
n
g
S
o
T
ra
Lo
i
T
in
h
T
ra
n
g
C
o
n
g
K
h
a
i
K
h
o
a
tb
l_
c
a
u
tr
a
lo
ic
h
in
h
th
u
c
Id
C
a
u
T
ra
Lo
iC
h
in
h
T
h
u
c
Id
C
a
u
H
o
iC
h
in
h
T
h
u
c
N
o
iD
u
n
g
1
N
o
iD
u
n
g
2
D
a
p
A
n
C
o
D
in
h
tb
l_
C
h
iT
ie
tC
a
T
h
i
Id
C
a
T
h
i
Id
D
e
tb
l_
C
h
iT
ie
tT
h
i
Id Id
M
o
n
H
o
c
N
g
a
y
T
h
i
Id
D
e
D
a
T
h
i
tb
l_
D
e
_
C
a
u
H
o
i
Id Id
D
e
Id
C
a
u
H
o
i
tb
l_
D
e
_
C
a
u
T
ra
L
o
i
Id Id
D
e
C
a
u
H
o
i
Id
C
a
u
T
ra
Lo
i
N
o
iD
u
n
g
1
N
o
iD
u
n
g
2
D
a
p
A
n
tb
l_
D
e
T
h
i
Id
D
e
Id
M
o
n
H
o
c
N
g
a
y
T
h
i
Id
D
e
C
u
n
g
D
e
S
T
T
D
o
T
in
C
a
y
Id
K
y
T
h
i
tb
l_
d
o
k
h
o
Id
D
o
K
h
o
T
e
n
D
o
K
h
o
tb
l_
g
ia
th
ie
tc
h
u
n
g
Id
G
ia
T
h
ie
tC
h
u
n
g
N
o
iD
u
n
g
tb
l_
lo
a
ic
a
u
h
o
i
Id
Lo
a
iC
a
u
H
o
i
T
e
n
Lo
a
iC
a
u
H
o
i
M
o
T
a
tb
l_
m
a
tr
a
n
k
ie
n
th
u
c
Id
M
a
T
ra
n
K
ie
n
T
h
u
c
Id
M
u
cK
ie
n
T
h
u
c
Id
M
u
cT
ri
N
a
n
g
S
o
C
a
u
N
h
a
p
S
o
C
a
u
Q
u
y
D
in
h
tb
l_
ta
ik
h
o
a
n
Id H
o
T
e
n
M
a
tK
h
a
u
M
a
Q
u
y
e
n
tb
l_
tr
a
lo
i
Id Id
T
ra
Lo
i
T
ra
Lo
i
D
a
p
A
n
tb
l_
tr
a
lo
ic
a
u
h
o
i
Id
T
ra
Lo
i
Id
D
e
C
a
u
H
o
i
Id
S
in
h
V
ie
n
[D
u
n
g
/S
a
i]
tb
l_
m
o
n
h
o
c
Id
M
o
n
H
o
c
T
e
n
M
o
n
H
o
c
M
o
T
a
Id
T
o
B
o
M
o
n
tb
l_
K
y
T
h
i
Id
K
y
T
h
i
T
e
n
K
y
T
h
i
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 70
3.4. Thiết kế thuật toán
3.4.1. Đăng nhập hệ thống
Nhập username,
password
Kiểm tra
Nhập sai, yêu cầu
nhập lại
Đăng nhập hệ
thống
Sai
Đúng
Bắt đầu
Kết thúc
Hình 3.17 Giải thuật đăng nhập hệ thống
3.4.2. Tạo đề, trộn đề
Lấy câu hỏi từ
ngân hàng câu
hỏi
Chọn môn học,
Nhập số lượng đề
Kiểm tra
hợp lệ
Yêu cầu nhập lạiSai
Đúng
Bắt đầu
Tạo đề, trộn đề
Kết thúc
Lưu vào ngân
hàng đề
Hình 3.18 Giải thuật tạo đề, trộn đề
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 71
3.4.3. Đánh giá độ đo câu hỏi, bài trắc nghiệm
Chọn môn học cần
đánh giá
Kiểm tra
thông tin
Không có kết quả
SaiĐúng
Bắt đầu
Kết thúc
Kết quả đánh giá
Hình 3.19 Giải thuật đánh giá độ đo câu hỏi, bài trắc nghiệm
3.4.4. Thống kê kết quả bài làm của thí sinh
Chọn môn học, kỳ
thi cần thống kê
Kiểm tra
thông tin
Không có kết quả
Yêu cầu chọn lại
SaiĐúng
Bắt đầu
Kết thúc
Kết quả thống kê
Hình 3.20 Giải thuật thống kê kết quả bài làm
3.4.5. Xây dựng lớp DataProvider dùng chung
Xây dựng lớp dùng chung có mức truy cập trong toàn chương trình. Lớp dùng
chung này dùng để kết nối cơ sở dữ liệu và thực hiện các thao tác với cơ sở dữ liệu.
Trư
ờng
Đại
ọc
K n
h tế
Hu
ế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 72
3.5. Thiết kế giao diện
Dưới đây là một số hình ảnh giao diện của chương trình.
Giao diện ban đầu
Hình 3.21 Giao diện chính chương trình
Giao diện tạo đề, trộn đề, xem đề
Hình 3.22 Giao diện tạo đề, ấn định đề, xem đề
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 73
Giao diện nhập danh sách thi sinh
Hình 3.23 Giao diện nhập danh sách thí sinh
Giao diện làm bài thi trắc nghiệm
Hình 3.24 Giao diện làm bài thi trắc nghiệm
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 74
Giao diện đánh giá
Hình 3.25 Giao diện đánh giá
3.6. Kết luận
Chương 3 đã tập trung giải quyết bài toán đặt ra của đề tài: đi từ xác định yêu
cầu, mục tiêu đến phân tích, thiết kế hệ thống, đồng thời giới thiệu các tính năng trong
chương trình và cuối cùng là các hình ảnh và số liệu mà đề tài đã đạt được.
Trư
ờng
Đạ
i ọ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 75
PHẦN 3. KẾT LUẬN
Sau một thời gian nghiên cứu, phân tích và xây dựng “Phần mềm thi, đánh giá
câu hỏi, đề thi trắc nghiệm khách quan”, đề tài đã hoàn thành được mục tiêu đề ra là
xây dựng được phần mềm cho phép tổ chức thi các môn học dưới hình thức trắc nghiệm
trên máy tính với nhiều dạng câu hỏi, đề thi được tạo từ ngân hàng câu hỏi theo ma trận,
tự động trộn câu hỏi, câu trả lời để tạo sự khác biệt lớn giữa các đề thi. Hỗ trợ đánh giá
câu hỏi, đề thi, phân tích kết quả thi từ đó đưa ra kết luận về chất lượng câu hỏi và chất
lượng ngân hàng đề, tìm hiểu về một số phần mềm hỗ trợ thi trắc nghiệm nhằm đưa ra
bảng so sánh, đánh giá, qua đó có thể lựa chọn một số ưu điểm và ý tưởng tốt giúp cho
việc xây dựng chương trình hiệu quả hơn. Một số thuật toán chính trong chương trình
cũng được trình bày, để nhấn mạnh các yếu tố trọng tâm và quan trọng của đề tài.
Khóa luận đã xây dựng thành công phần mềm ở dạng WinForm có giao diện thân
thiện, dễ sử dụng, đáp ứng được nhu cầu tổ chức thi, đo lường kết quả học tập, đo lường
câu hỏi góp phần xây dựng ngân hàng câu hỏi chất lượng, hướng tới tạo ra một phần
mềm chuẩn mực với đầy đủ tính năng cần thiết. Tuy nhiên, do trình độ còn hạn chế cũng
như sự gấp rút về mặt thời gian nên một số ý tưởng vẫn chưa thực hiện được, các dạng
câu hỏi trắc nghiệm chương trình hỗ trợ chỉ dừng lại ở mức cơ bản, thường gặp. Hình
thức thi hỗ trợ hiện tại là làm bài thi trên máy tính. Hy vọng trong tương lai với sự trau
dồi thêm kiến thức tác giả sẽ hoàn thiện đề tài với thêm những mục tiêu sau :
- Về mặt lý thuyết :
+ Nghiên cứu thêm các dạng câu hỏi trắc nghiệm khách quan khác để xây
dựng được phần mềm thi phong phú về chủng loại trắc nghiệm.
+ Nghiên cứu công nghệ lưu trữ dữ liệu để có thể lưu trữ tối ưu và tiến
hành thi ở những nơi không có cơ sở dữ liệu.
- Về mặt thực tiễn :
Sau khi khắc phục được hạn chế và phát triển được các mục tiêu đặt ra, sẽ
hướng đến có thể xây dựng thêm hình thức thi trên nhiều nền tảng, web, di động, trên
giấy. Từ đó có thể sở hữu được một sản phẩm hoàn thiện để có thể tổ chức thi, luyện thi
thành công như các trang web hiện có ở Việt Nam.
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
Sinh viên thực hiện: Đỗ Văn Quý 76
TÀI LIỆU THAM KHẢO
[1] Vũ Hoàng Mạnh Hải – Nguyễn Đình Ngọc Duy, Xây dựng phần mềm quản
lý ngân hàng câu hỏi trắc nghiệm tuyển sinh đại học. Khoa công nghệ thông tin, Đại
học khoa học tự nhiên, 2005.
[2] Hà Trọng Nhân – Hà Nhật Tâm, Xây dựng hệ thống hỗ trợ thi trắc nghiệm.
Khoa công nghệ thông tin, Đại học khoa học tự nhiên, 2005.
[3] Trần Nguyên Phong. Giáo trình SQL. Trường đại học Khoa học Huế. Khoa
công nghệ thông tin. Huế, 2004.
[4] Hàn Viết Thuận. Giáo trình hệ thống thông tin quản lý, Trường đại học Kinh
tế quốc dân, Khoa tin học kinh tế. Nhà xuất bản đại học Kinh tế quốc dân Hà Nội, 2008.
[5] Dương Quang Thiện, Lập trình căn cứ dữ liệu dùng ADO.NET và C#. Nhà
xuất bản tổng hợp TP.HCM, xuất bản 2005.
[6] MSDN Libary,
[7] DevExpress Document, https://documentation.devexpress.com
Trư
ờng
Đạ
i họ
c K
i h
tế
uế
Khóa luận tốt nghiệp
SVTH: Đỗ Văn Quý
PHỤ LỤC
1. Code lớp dùng chung DataProvider
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;
using DevExpress.XtraEditors;
namespace QMTest_ThiTN.DAL
{
public class DataProvider : IDisposable
{
protected SqlConnection conn;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
if (conn != null)
{
conn.Dispose();
conn = null;
}
}
~DataProvider()
{
Dispose(false);
}
private bool Connect()
{
try
{
conn = new SqlConnection(@"Data Source=(local)\QUYSQL;Initial
Catalog=qm_test;Persist Security Info=True;User ID=sa;Password=admin1234");
conn.Open();
return true;
}
catch
{
XtraMessageBox.Show("Không thể kết nối đến cơ sở dữ liệu!", "Thông
báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
return false;
}
}
private void Disconnet()
{
conn.Close();
conn.Dispose();
}
public DataTable GetAllEntity(string spname)
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
SVTH: Đỗ Văn Quý
{
if (Connect())
{
SqlCommand cmd = new SqlCommand(spname, conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
Disconnet();
return dt;
}
else return null;
}
public DataTable GetEntity(string spname, SqlParameter[] param)
{
if (Connect())
{
SqlCommand cmd = new SqlCommand(spname, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(param);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
Disconnet();
return dt;
}
else return null;
}
public object GetFirstValue(string spname, SqlParameter[] param)
{
if (Connect())
{
SqlCommand cmd = new SqlCommand(spname, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(param);
object obj = cmd.ExecuteScalar();
Disconnet();
return obj;
}
else return null;
}
public object GetFirstValue(string spname)
{
if (Connect())
{
SqlCommand cmd = new SqlCommand(spname, conn);
cmd.CommandType = CommandType.StoredProcedure;
object obj = cmd.ExecuteScalar();
Disconnet();
return obj;
}
else return null;
}
public int ExecuteCommand(string spname, SqlParameter[] param)
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
SVTH: Đỗ Văn Quý
{
if (Connect())
{
try
{
SqlCommand cmd = new SqlCommand(spname, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(param);
cmd.ExecuteNonQuery();
Disconnet();
return 1;
}
catch
{
return -1;
}
}
else return -1;
}
}
}
2. Code thực hiện tạo đề, trộn đề
- Tạo đề
CREATE proc qm_TaoMaDe
(
@SoLuongMaDe int,
@Idmonhoc int,
@NgayThi date=null
)
as
BEGIN
declare @list varchar(max)
set @list=''
declare @dem int, @made int
set @dem=1
declare @max bigint
set @max = (select max(IdDeCungDe) from tbl_DeThi)
if @max is not null
set @max=@max+1
else
set @max=1
while @dem<=@SoLuongMaDe
begin
select @made=round(rand()*1000,0)
if not exists (select IdDe from tbl_DeThi where
IdDe=@made)
begin
Begin Transaction T_TaoMaDe
Insert into tbl_DeThi(IdDe, IdMonHoc, NgayThi,
IdDeCungDe)
Values(@made, @Idmonhoc, @NgayThi, @max)
if len(@list)=0
set @list = convert(varchar(10),@made)
else
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
SVTH: Đỗ Văn Quý
set @list =
@list+','+convert(varchar(10),@made)
set @dem=@dem+1
IF @@ERROR0 Goto Abort
commit Transaction T_TaoMaDe
Goto Finish
Abort:
Rollback Transaction T_TaoMaDe
Finish:
end
end
if @@Error=0 EXEC qm_TaoDe_CauHoi @Idmonhoc,@list
END
- Trộn câu hỏi
CREATE proc qm_TaoDe_CauHoi
(
@idmh int,
@listmade varchar(max)
)
as
Begin
--bóc đề ngẫu nhiên theo ma trận
declare @table table(idcauhoi int, idloaicauhoi int,
idmatrankienthuc int, idmonhoc int)
declare @IdMaTranKienThuc int
declare @SoCauQuyDinh int
declare c cursor for select IdMaTranKienThuc, SoCauQuyDinh
from (select distinct
tbl_matrankienthuc.*
from tbl_matrankienthuc
inner join
tbl_cauhoichinhthuc on
tbl_matrankienthuc.idmatrankienthuc=tbl_cauhoichinhthuc.idmatrankien
thuc
where
tbl_cauhoichinhthuc.idmonhoc=@idmh) as Tab
open c
fetch next from c into @IdMaTranKienThuc, @SoCauQuyDinh
while @@fetch_status=0
begin
insert into @table
select top(@SoCauQuyDinh)
ch.idcauhoichinhthuc,ch.idloaicauhoi,ch.idmatrankienthuc,ch.idmonhoc
from tbl_cauhoichinhthuc as ch
where IdMaTranKienThuc=@IdMaTranKienThuc and
IdMonHoc=@idmh and ch.Khoa1
order by newid()
fetch next from c into @IdMaTranKienThuc,
@SoCauQuyDinh
end
CLOSE c
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Khóa luận tốt nghiệp
SVTH: Đỗ Văn Quý
DEALLOCATE c
declare @ma int
declare @made varchar(500)
declare @idcauhoi int
while len(@listmade)>0
begin
set @made =
LEFT(@listmade,isnull(nullif(charindex(',',@listmade)-1,-
1),len(@listmade)))
set @listmade =
substring(@listmade,isnull(nullif(charindex(',',@listmade),0),len(@l
istmade))+1,len(@listmade))
set @ma=convert(int, @made)
declare c1 cursor for select idcauhoi from @table order
by newid()
open c1
fetch next from c1 into @idcauhoi
while @@fetch_status=0
begin
Begin Transaction T_TaoDe
Insert into tbl_De_CauHoi(IdDe, IdCauHoi)
values(@ma, @idcauhoi)
---trộn câu trả lời
exec qm_TaoDe_CauTraLoi @ma, @idcauhoi
IF @@ERROR0 Goto Abort
commit Transaction T_TaoDe
Goto Finish
Abort:
Rollback Transaction T_TaoDe
Finish:
fetch next from c1 into @idcauhoi
end
CLOSE c1
DEALLOCATE c1
end
End
Trư
ờng
Đạ
i họ
c K
inh
tế H
uế
Các file đính kèm theo tài liệu này:
- khoaluantotnghiep_dovanquy_8438.pdf