Phát triển ứng dụng: Tiến hành code các chức năng frontend và backend, kết nối với cơ sở dữ liệu.. 1.4 Lợi ích của ứng dụng Dễ dàng sử dụng: Giao diện thân thiện với người dùng, dễ dàng
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
BÀI TẬP LỚN HỌC PHẦN: LẬP TRÌNH MẠNG
TÊN BÀI TẬP LỚN: XÂY DỰNG HỆ THỐNG THI TRẮC
NGHIỆM
Sinh viên thực hiện Khóa Lớp Mã sinh viên Phạm Thanh Sơn K13 DCCNTT
13.10.9 Nguyễn Khắc Nhẫn K13 DCCNTT
13.10.9
Vũ Ngọc Thức K13 DCCNTT
13.10.9
13.10.9
13.10.9
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
BÀI TẬP LỚN HỌC PHẦN: LẬP TRÌNH MẠNG
Nhóm:…….
TÊN BÀI TẬP LỚN: XÂY DỰNG HỆ THỐNG THI TRẮC
NGHIỆM
STT Sinh viên thực
hiện Khóa Lớp
Mã sinh viên
Điểm bằng số
Điểm bằng chữ
Ký tên SV
1 Phạm Thanh
Sơn
13 It9 k13
2 Nguyễn Khắc
Nhẫn
13 It9 k13
3 Vũ Ngọc
Thức
13 It9 k13
4 Trần Đức
Hải
13 It9 k13
5 Lê Ngọc Giáp 13 k13 It9
CÁN BỘ CHẤM 1
(Ký và ghi rõ họ tên)
CÁN BỘ CHẤM 2
(Ký và ghi rõ họ tên)
Trang 3MỤC LỤC
Trang 4LỜI CẢM ƠN
Ở nước ta hiện nay cùng với công cuộc đổi mới, nền giáo dục cũng đang có nhiều chuyển biến
rõ rệt cả về lượng và chất, thể hiện ở những tiến bộ trong cách dạy và học cũng như trong cách kiểm tra đánh giá kết quả học tập của người học
Việc đánh giá kết quả học tập đóng một vai trò hết sức quan trọng trong việc nâng cao chất lượng đào tạo Đánh giá đúng kết quả học tập sẽ khuyến khích khả năng học tập của học sinh, sinh viên Chính vì lý do này mà từ trước tới nay bộ phận quản lý giáo dục tìm nhiều phơng pháp kiểm tra, đánh giá chất lượng giáo dục đào tạo để đưa vào áp dụng Có hai hình thức kiểm tra chủ yếu của chúng ta hiện nay là thi viết và thi vấn đáp Mặc dù hai hình thức thi này được
sử dụng rộng rãi nhưng nó có nhiều nhược điểm khó khắc phục như ; nhìn bài của nhau, quay cóp, học tủ
Gần đây hình thức thi trắc nghiệm được một số trường học áp dụng đã khắc phục được những nhược điểm của hai thức thi truyền thống Mặt khác hình thức thì trắc nghiệm còn tiện lợi cho việc chấm điểm bằng máy tính đỡ mất thời gian và những rắc rối cho cả thí sinh và giám khảo
Chính vì những lý do trên mà tôi muốn chọn đề tài “xây dựng hệ thống thi trắc nghiệm " để làm
đồ án tốt nghiệp với hy vọng có thêm kiến thức từ thầy giáo và bạn bè trong trường để ứng dụng sau này
Trang 5DANH MỤC CÁC TỪ VIẾT TẮT
Trang 6DANH MỤC BẢNG BIỂU VÀ SƠ ĐỒ
1
2
Trang 7Chương 1 Giới thiệu về đề tài
1 Giới thiệu đề tài
Đề tài "Xây dựng ứng dụng thi trắc nghiệm" là một chủ đề rất thú vị và có nhiều ứng dụng thực tế trong lĩnh vực giáo dục, tuyển dụng, và đào tạo Dưới đây là một số nội dung cơ bản
và quan trọng khi giới thiệu về đề tài này:
1.1 Mục tiêu của đề tài
Cung cấp một công cụ thi cử hiệu quả: Giúp giáo viên và nhà tuyển dụng dễ dàng
tổ chức các kỳ thi trắc nghiệm
Tiết kiệm thời gian và nguồn lực: Giảm bớt thời gian chấm điểm và phân tích kết
quả
Đảm bảo tính công bằng: Đánh giá chính xác năng lực của người thi.
1.2 Các chức năng chính của ứng dụng
Tạo đề thi: Cho phép giáo viên/tổ chức tạo ra các đề thi với nhiều dạng câu hỏi khác
nhau (đúng/sai, nhiều lựa chọn, điền từ, v.v.)
Ngân hàng câu hỏi: Lưu trữ câu hỏi để sử dụng lại hoặc tạo đề thi ngẫu nhiên Quản lý người dùng: Đăng ký, đăng nhập, và quản lý thông tin người thi Thi trực tuyến: Cho phép người dùng thi trực tiếp trên ứng dụng, với các tính năng
như hẹn giờ, lưu trữ tiến trình thi, và nộp bài
Chấm điểm tự động: Hệ thống tự động chấm điểm và trả kết quả ngay lập tức Phân tích kết quả: Cung cấp các báo cáo và phân tích chi tiết về kết quả thi, giúp
giáo viên/tổ chức đánh giá hiệu quả học tập hay năng lực của người thi
Trang 81.3 Quy trình phát triển
Phân tích yêu cầu: Tìm hiểu yêu cầu của người dùng và xác định các chức năng cần
thiết
Thiết kế hệ thống: Lập kế hoạch thiết kế giao diện, kiến trúc hệ thống, và cơ sở dữ
liệu
Phát triển ứng dụng: Tiến hành code các chức năng frontend và backend, kết nối
với cơ sở dữ liệu
Kiểm thử: Thực hiện các bài kiểm thử để đảm bảo ứng dụng hoạt động đúng và ổn
định
Triển khai: Đưa ứng dụng lên server và cấu hình để người dùng có thể truy cập và
sử dụng
Bảo trì và nâng cấp: Liên tục theo dõi, sửa lỗi, và cập nhật các tính năng mới 1.4 Lợi ích của ứng dụng
Dễ dàng sử dụng: Giao diện thân thiện với người dùng, dễ dàng thao tác và quản lý Nâng cao hiệu quả giảng dạy: Cung cấp các công cụ phân tích giúp giáo viên/tổ chức cải
thiện phương pháp giảng dạy và đánh giá
1.5 Kết luận
Việc xây dựng ứng dụng thi trắc nghiệm không chỉ góp phần hiện đại hóa quá trình kiểm tra, đánh giá mà còn tạo ra một môi trường học tập và làm việc hiệu quả, công bằng hơn Đây là một dự án có tiềm năng lớn và đáng đầu tư phát triển
2 Lý thuyết về các lớp socket
Socket là một khái niệm quan trọng trong lập trình mạng, giúp các thiết bị có thể giao tiếp với nhau qua mạng Dưới đây là lý thuyết cơ bản về các lớp socket đơn giản mà bạn có thể đã học:
Trang 92.1 Khái niệm về Socket
Socket: Là một điểm cuối trong một kết nối liên lạc qua mạng Nó có thể được sử dụng để gửi
và nhận dữ liệu giữa hai thiết bị (client và server)
Địa chỉ Socket: Bao gồm địa chỉ IP và số cổng (port), giúp định danh duy nhất một socket
trong mạng
2.2 Các loại Socket
Socket Stream (TCP): Cung cấp một kết nối liên tục giữa hai thiết bị, đảm bảo dữ liệu được
gửi và nhận đúng thứ tự và không bị mất Dùng cho các ứng dụng yêu cầu độ tin cậy cao như HTTP, FTP
Socket Datagram (UDP): Không thiết lập kết nối trước, dữ liệu được gửi dưới dạng các gói
nhỏ (datagram) và không đảm bảo thứ tự hay độ tin cậy Dùng cho các ứng dụng yêu cầu tốc
độ cao nhưng không cần độ tin cậy tuyệt đối như video streaming, VoIP
2.3 Quy trình hoạt động của Socket TCP
-Tạo socket: Cả client và server đều tạo một socket
-Gắn địa chỉ (server): Server gắn địa chỉ và cổng vào socket
-Lắng nghe (server): Server đặt socket vào trạng thái lắng nghe
-Kết nối (client): Client kết nối đến server thông qua địa chỉ IP và cổng
-Chấp nhận kết nối (server): Server chấp nhận kết nối từ client
-Gửi/nhận dữ liệu: Cả client và server đều có thể gửi và nhận dữ liệu
-Đóng kết nối: Khi hoàn thành, cả hai bên đều đóng kết nối
2.4 Quy trình hoạt động của Socket UDP
-Tạo socket: Cả client và server đều tạo một socket
-Gắn địa chỉ (server): Server gắn địa chỉ và cổng vào socket
-Gửi dữ liệu (client): Client gửi dữ liệu tới địa chỉ IP và cổng của server
-Nhận dữ liệu (server): Server nhận dữ liệu từ client
-Phản hồi (nếu có): Server có thể gửi phản hồi lại cho client
Trang 102.5 Ưu điểm và nhược điểm của TCP và UDP
-TCP:
Ưu điểm: Đảm bảo độ tin cậy, dữ liệu được gửi đúng thứ tự, không bị mất
Nhược điểm: Chậm hơn do cần thiết lập kết nối và kiểm soát luồng
-UDP:
Ưu điểm: Nhanh, không cần thiết lập kết nối trước
Nhược điểm: Không đảm bảo dữ liệu được nhận đúng thứ tự hoặc không bị mất
2.6 Ứng dụng của Socket
Web Server và Web Client: HTTP sử dụng TCP để truyền tải trang web từ server đến client Email: Giao thức SMTP, IMAP, POP3 sử dụng TCP để gửi và nhận email
Truyền thông thời gian thực: VoIP và video streaming sử dụng UDP để truyền tải dữ liệu thời gian thực
3 Sơ đồ luồng thực hiện của Server/client, thuật toán để giải bài toán.
3.1 Sơ đồ luồng thực hiện của Server/client
Qua nghiên cứu về các hình thức thi nói chung và hình thức thi trắc nghiệm
khách quan nói riêng cùng với qua khảo sát thực tế tôi đã xác định được yêu cầu
của hệ thống cần xây dựng như sau:
-Để chương trình có thể quản lý điểm thi của thí sinh, chương trình cần phải có chức năng cập nhật và lưu trữ thông tin thí sinh
-Ngân hàng đề thi được đưa vào chương trình trước đó và các câu hỏi được lấy ngẫu nhiên trong lúc thi Sau đó các kỳ thi được tạo ra đẻ các thí sinh có thẻ đăng ký, thí sinh naòp thì xong sẽ được chương trình cập nhật và không được phép thi lại ngoại trừ có sự cho phép của cán bộ coi thi
Trang 11-Sau khi thi thí sinh có thể biết điểm ngay hoặc sẽ công bố ngay tuỳ
vào người soạn lịch thi có cho phép không
-Các chức năng cập nhật các bộ dữ liệu cho chương trình phải thông qua các ủe có quyền hạn tương ứng mới cho cập nhật
*Dựa vào yêu cầu chương trình ta có sơ đồ phân cấp chức năng sau :
Hình 1 : Sơ đồ phân cấp chức năng
Trang 123.2 Sơ đồ luồng mức dữ liệu khung cảnh
Hình 2 : sơ đồ luồng mức dữ liệu khung cảnh
GIẢI THÍCH
Sơ đồ luồng dữ liệu mức khung cảnh gồm một chức năng xử lý chính , ba tác nhân ngoài và 6 luồng dữ liệu
+ Chức năng xử lý hệ thống trắc nghiệm là chức năng xử lý bao trùm toàn bộ hệ thống nó đáp ứng yêu cầu của toàn hệ thống
+ Tác nhân giáo viên , ban giám hiệu , bộ phận chuyên trách cung cấp bộ câu hỏi và các phương án trả lời của từng câu hỏi cùng với phương hướng đề
Trang 13+ Tác nhân thí sinh cung cấp thông tin về các phương án lựa chọn khi làm bài thi và nhận kết quả trực tiếp từ giáo vụ
+ Tác nhân giáo vụ có chức năng nhập thông tin thí sinh , tổ chức thi, nhận và gửi kết quả thi cho thí sinh
3.3 Sơ đồ luồng mức dữ liệu (DFD) tiến trình cập nhật
Hình 3 : Sơ đồ luồng mức dữ liệu (DFD) tiến trình cập nhật
GIẢI THÍCH:
(1) Ban giám hiệu yêu cầu cập nhật danh dách các lớp
(2) Phòng giáo vụ tiến hành cập nhập danh sách các lớp và thí sinh
(3) Lưu vào kho dữ liệu chứa danh sách lớp và danh sách thí sinh
(4) Ban giám hiệu yêu cầu cập nhật một số đề mới và thí sinh
Trang 14(5) Bộ phận chuyên môn yêu cầu chỉnh sửa bộ đề thi nếu phát hiện sai sót
(6) Giáo viên được phân công tiến hành cập nghật hoạc chỉnh sửa dữ liệu bộ đề thi (7) Lưu vào kho dữ liệu của bộ đề thi và câu hỏi
(8) Lấy dữ liệu từ kho ra và chỉnh sửa, lưu lại
3.4 Sơ đồ luồng dữ liệu (DFD) theo tiến trình đăng kí thi
Hình 4: Sơ đồ luồng dữ liệu (DFD) theo tiến trình đăng kí thi
GIẢI THÍCH:
(1): Thí sinh đăng ký thi thử một đề thi trắc nghiệm
(2): Lấy dữ liệu từ kho Bộ đề thi và câu hỏi ra cho thí sinh thi thử
(3): Thí sinh tiến hành thì thử và kiểm tra đấp án đúng của bộ đề thi
(4): Phòng giáo vụ lên lịch thi cho các lớp
(5): Dữ liệu về lịch thì được dữ lại trong kho dữ liệu danh sách lịch thì
(6): Sau khi soạn thảo lịch thi song đề thíẵn sàng cho thí sinh đăng ký dự thi chính thức
Trang 15(7): Thí sinh tiến hành đăng ký thì chính thức
(8): Lấy dữ liệu từ kho lịch thi và danh sách lớp ra kiểm tra xam thí sinh có được phép dự thi trong kỳ thi này không
(9): Sau khi hoàn thanh thủ tục đăng ký, dữ liệu về các câu hỏi được lấy ngẫu
nhiên cho thí sinh thì
(10): Khi thí sinh thì xong, bài làm và điểm được lưu vào kho dữ liệu tương ứng\
(11): Nếu phòng giáo vụ có yêu cầu chỉnh sửa thì dữ liệu được lấy từ kho ra chỉnh sửa
4 Công nghệ sử dụng
Frontend: Sử dụng HTML, CSS, JavaScript (có thể kết hợp với các framework như React,
Angular, hoặc Vue.js) để xây dựng giao diện người dùng
Backend: Sử dụng các ngôn ngữ như Python (với Django hoặc Flask), Java (với Spring Boot),
hoặc Node.js để xử lý logic phía server và quản lý cơ sở dữ liệu
Cơ sở dữ liệu: MySQL, PostgreSQL, hoặc MongoDB để lưu trữ dữ liệu người dùng, câu hỏi,
và kết quả thi
Bảo mật: Các phương pháp bảo mật như mã hóa dữ liệu, xác thực người dùng, và bảo vệ
chống tấn công XSS/CSRF
5 Xác định công việc
Để xây dựng hệ thống thi trắc nghiệm sử dụng socket trong C#, bạn cần khai báo các thư viện cần thiết, khởi tạo các lớp Socket Server/Client và xác định các công việc cụ thể mà Server/Client thực hiện trong hệ thống
5.1 Khai báo thư viện cần thiết trong C#
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
Trang 16using System.Threading;
5.2 Nhóm lệnh khởi tạo các lớp Socket Server/Client 5.2.1 Server
Trang 175.2.2 Client
5.2.3 Server/client thực hiện công việc
Server/Client thực hiện những công việc gì đối với đề tài xây dựng hệ thống thi trắc nghiệm
Server
1 Xác thực đăng nhập:
Nhận yêu cầu đăng nhập từ client
Trang 18Kiểm tra thông tin tài khoản trong cơ sở dữ liệu.
o Gửi phản hồi xác thực về client
2 Cung cấp danh sách bài thi:
o Nhận yêu cầu từ client
o Truy xuất danh sách bài thi từ cơ sở dữ liệu
o Gửi danh sách bài thi về client
3 Gửi đề thi:
o Nhận yêu cầu đề thi từ client
o Truy xuất đề thi từ ngân hàng câu hỏi
o Gửi đề thi và thời gian thi về client
4 Chấm điểm bài thi:
o Nhận câu trả lời từ client
o So sánh câu trả lời của người dùng với đáp án đúng
o Tính điểm và lưu kết quả vào cơ sở dữ liệu
5 Gửi kết quả:
o Gửi kết quả bài thi về client
o Lưu trữ lịch sử thi cử và kết quả cho người dùng
Client
1 Đăng nhập:
o Gửi yêu cầu đăng nhập với thông tin tài khoản đến server
o Nhận phản hồi xác thực từ server
2 Chọn bài thi:
o Yêu cầu danh sách bài thi từ server
o Hiển thị danh sách bài thi cho người dùng
o Gửi yêu cầu chọn bài thi đến server
3 Nhận và hiển thị đề thi:
o Nhận đề thi và thời gian thi từ server
o Hiển thị đề thi cho người dùng
4 Thực hiện bài thi:
Trang 19Người dùng trả lời các câu hỏi.
o Lưu trữ câu trả lời tạm thời để xử lý sự cố
5 Nộp bài thi:
o Gửi câu trả lời đến server khi người dùng nộp bài
o Nhận và hiển thị kết quả thi từ server
3