Đề 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

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

pdf81 trang | Chia sẻ: phamthachthat | Lượt xem: 4151 | Lượt tải: 1download
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:

  • pdfkhoaluantotnghiep_dovanquy_8438.pdf