Để giải quyết được vấn đề đó, nhiều công cụ hỗ trợ đã ra đời, cách phổ biến nhất là tạo ra những bộ câu hỏi ngắn như một hình thức đánh giá nhanh giúp người dạy có thể tương tác, đo lườn
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO ĐỒ ÁN 2 WEBSITE QUẢN LÍ CUỘC THI ONLINE
Giảng viên hướng dẫn:
ThS Trần Anh Dũng Lớp: SE122.M11.PMCL
Sinh viên thực hiện:
1 Phạm Hoàng Phượng Trinh 18521537
2 Nguyễn Phạm Minh Nhật 18521196
Tp Hồ Chí Minh, ngày 29 tháng 12 năm 2021
Trang 2LỜI CẢM ƠN
Đầu tiên, nhóm tác giả gửi lời cảm ơn chân thành đến tập thể quý thầy cô trườngĐại học Công nghệ thông tin – Đại học Quốc gia Tp Hồ Chí Minh đã giúp cho nhóm tácgiả có những kiến thức cơ bản làm nền tảng để thực hiện đề tài này
Đặc biệt, nhóm tác giả xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới thầyTrần Anh Dũng đã trực tiếp hướng dẫn tận tình, sửa chữa và đóng góp nhiều ý kiến quýbáu giúp nhóm tác giả hoàn thành tốt báo cáo môn học của mình
Trong thời gian một kỳ thực hiện đề tài, nhóm tác giả đã vận dụng những kiếnthức nền tảng đã tích lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những kiếnthức mới Từ đó, nhóm tác giả vận dụng tối đa những gì đã thu thập được để hoàn thànhmột báo cáo đồ án tốt nhất Tuy nhiên, trong quá trình thực hiện, nhóm tác giả khôngtránh khỏi những thiếu sót Chính vì vậy, nhóm tác giả rất mong nhận được những sự góp
ý từ phía các thầy cô nhằm hoàn thiện những kiến thức mà nhóm tác giả đã học tập và làhành trang để nhóm tác giả thực hiện tiếp các đề tài khác trong tương lai
Trang 3NHẬN XÉT CỦA GIẢNG VIÊN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 4………
Mục lục
Trang 5Chương 1 GIỚI THIỆU CHUNG
1.1 Lý do chọn đề tài
Ngày nay, khi công nghệ ngày một phát triển và thể hiện được tầm quan trọng trong đời sống thường nhật của con người Mọi lĩnh vực trong cuộc sống đều trở nên thuận lợi hơn khi được ứng dụng công nghệ thông tin, giáo dục là một trong những mảng thừa hưởng được sự tiến bộ này Với các phương pháp học tập truyền thống, học sinh sinh viên và ngay cả những người đi làm phải tới trường lớp tức là chúng ta cần có thời gian biểu cố định, cụ thể cho việc học tập Điều này đôi khi gây ra những phiền toái, bất tiện nhất định Thông qua mạng internet, việc học tập trở nên đơn giản hơn rất nhiều Chúng ta có thể học mọi lúc, mọi nơi theo nhu cầu của bản thân mình Trước đây việc học online khá nhàm chán vì người dạy không thể tương tác một cách trực tiếp với học viên, còn những người học thì dễ rơi vào tình cảnh chán nản, thiếu động lực do không thể thi đua hay giaotiếp nhiều được với bạn bè Để giải quyết được vấn đề đó, nhiều công cụ hỗ trợ đã ra đời, cách phổ biến nhất là tạo ra những bộ câu hỏi ngắn như một hình thức đánh giá nhanh giúp người dạy có thể tương tác, đo lường về kiến thức hiện tại của học viên cũng như tạo ra các cuộc cạnh tranh cho học viên
Kết luận: Chính vì những lý do trên, nhóm em quyết định xây dựng một website giúp
quản lý các cuộc thi online hỗ trợ việc tạo, chia sẻ các câu hỏi cũng như giúp tổ chức và tham gia cuộc thi một cách dễ dàng, nhanh chóng
1.2 Đối tượng nghiên cứu
Trang 6+ Học sinh, sinh viên
+ Giáo viên, các tổ chức giáo dục
1.4 Phương pháp nghiên cứu
Nhóm đã sử dụng các phương pháp nghiên cứu:
– Phương pháp đọc tài liệu
– Phương pháp phân tích các ứng dụng tương tự hiện có
1.5 Bố cục
Báo cáo gồm có 5 chương:
Chương 1 giới thiệu về đề tài, đề cập đến đối tượng phạm vi và phương phápnghiên cứu Cuối chương 1 là phần bố cục của báo cáo
Chương 2 trình bày các nền tảng, các công nghệ được sử dụng trong quá trình xâydựng và phát triển ứng dụng
Chương 3 trình bày chi tiết quy trình xây dựng hệ thống, từ xác định và phân tíchyêu cầu bài toán cho đến xây dựng CSDL, cuối cùng là xây dựng giao diện cho úng dụng
Chương 4 kết luận, rút ra các ưu nhược điểm của ứng dụng và đề ra hướng pháttriển trong tương lai
Trang 7mẹ, do đó, hoạt động nhẹ và nhanh hơn các máy ảo dạng hypervisors.
2.1.2 Ưu điểm
– Tiện lợi: giúp giảm tải sự phức tạp khi cài đặt các loại công nghệ cũng như đồng bộ
các phiên bản của những công nghệ đó
– Dễ dàng sử dụng: dễ dàng cho các lập trình viên, quản trị hệ thống, sử dụng vì
Docker sử lợi thế của container để xây dựng hoặc kiểm tra các ứng dụng một cách nhanhchóng
– Khả năng di động: môi trường phát triển được dựng lên bằng docker có thể chuyển từ
người này sang người khác mà không làm thay đổi cấu hình ở trong
2.2 Giới thiệu về Node.js
2.2.1 Khái niệm
NodeJS là một nền tảng được xây dựng trên V8 JavaScript Engine – trìnhthông dịch thực thi mã JavaScript, giúp xây dựng các ứng dụng web một cách đơngiản và dễ dàng mở rộng
2.2.2 Ưu điểm
– Đặc điểm nổi bật của Node.js là nó nhận và xử lý nhiều kết nối chỉ với một thread Điều này giúp hệ thống tốn ít RAM nhất và chạy nhanh nhất khi không phải tạothread mới cho mỗi truy vấn
Trang 8single-– JSON API Với cơ chế event-driven, non-blocking I/O(Input/Output) và mô hình kếthợp với JavaScript là sự lựa chọn tuyệt vời cho các dịch vụ webs làm bằng JSON.
– Ứng dụng trên 1 trang( Single page Application) Nếu chúng ta định viết 1 ứng dụng thểhiện trên 1 trang thì Node.js rất phù hợp để làm Với khả năng xử lý nhiều request đồngthời thời gian phản hồi nhanh Các ứng dụng định viết không muốn nó tải lại trang, gồmrất nhiều request từ người dùng cần sự hoạt động nhanh để thể hiện sự chuyên nghiệp thìNodeJS sẽ là sự lựa chọn
– Shelling tools unix Node.js sẽ tận dụng tối đa Unix để hoạt động Tức là Node.js có thể
xử lý hàng nghìn Process và trả ra 1 luồng khiến cho hiệu xuất hoạt động đạt mức tối đanhất và tuyệt vời nhất
– Streamming Data (Luồng dữ liệu) Các web thông thường gửi HTTP request và nhậnphản hồi lại (Luồng dữ liệu) Giả xử sẽ cần xử lý 1 luồng giữ liệu cực lớn, Node.js sẽ xâydựng các Proxy phân vùng các luồng dữ liệu để đảm bảo tối đa hoạt động cho các luồng
dữ liệu khác
– Ứng dụng web thời gian thực với sự ra đời của các ứng dụng di động & HTML 5 nênNode.js rất hiệu quả khi xây dựng những ứng dụng thời gian thực (real-time applications)như ứng dụng chat, các dịch vụ mạng xã hội như Facebook, Twitter,…
Kết luận: Với những tính năng ưu việt của mình, Node.js vẫn, sẽ và đang là một trong
những platform phổ biến nhất ngày nay, được các lập trình viên rất ưa chuộng, và sửdụng rộng rãi trên toàn thế giới
2.3 Giới thiệu về Express.js
– Express.js có thể giảm một nửa thời gian viết mã mà vẫn giúp chúng ta xây dựng cácứng dụng web hiệu quả Nó không chỉ giảm thời gian mà còn giảm nỗ lực cần thiết đểxây dựng các ứng dụng web với sự trợ giúp của các tính năng khác nhau của nó
Trang 9– Express.js là một ứng dụng web miễn phí và mã nguồn mở cung cấp nhiều tính năngtuyệt vời.
2.4 Giới thiệu về React.js
2.4.1 Khái niệm
React là một thư viện JavaScript nhằm đơn giản hóa việc phát triển giao diệnngười dùng
Được phát triển bởi Facebook và bản release đầu tiên trên thế giới vào nằm 2013
và được sử dụng để viết ra Facebook, Instagram và được sự ủng hộ sử dụng của rất nhiềucông ty khác trên thế giới
Mục tiêu của React chính là đơn giản để phát triển Tất cả trạng thái đều được tậptrung tại một thời điểm, bằng cách chia giao diện người dùng thành tập hợp các thànhphần (components)
React được sử dụng để xây dựng single-page web applications
2.4.2 Ưu điểm
– React.js tạo ra cho chính nó DOM ảo – nơi mà các component thực sự tồn tại trên đó Điều này sẽ giúp cải thiện hiệu suất rất nhiều React.js cũng tính toán những thay đổi nào cần cập nhật len DOM và chỉ thực hiện chúng Điều này giúp React.js tránh những thao tác cần trên DOM mà nhiều chi phí
– React.js giúp việc viết các đoạn code JavaScrip dễ dàng hơn vì nó dung cú pháp đặc biệt là JSX (JavaScript mở rộng) cho phép chúng ta trộn giữa code HTML và JavaScript Chúng ta có thể thêm vào các đoạn HTML vào trong hàm render mà không cần phải nối chuỗi Đây là đặc tính thú vị của React.js Nó sẽ chuyển đổi các đoạn HTML thành các hàm khởi tạo đối tượng HTML bằng bộ biến đổi JSX
– React.js cực kì dễ để viết các test case giao diện vì virtual DOM được cài đặt hoàn toànbằng JavaScript
2.5 Giới thiệu về MongoDB
2.5.1 Khái niệm
MongoDB là một dạng phần mềm cơ sở dữ liệu sử dụng mã nguồn mở NoSQL
Nó có thể hỗ trợ trên nhiều nền tảng khác nhau và được thiết kế với mục đích hướng đến
Trang 10đối tượng MongoDB hoạt động dựa vào các khái niệm Collection và Document Đồngthời, nó có hiệu suất cao cùng với tính khả dụng tốt và dễ dàng mở rộng.
Các Collection trong MongoDB có cấu trúc cực kỳ linh hoạt Điều này cho phép
dữ liệu không cần thiết phải tuân theo bất kỳ một dạng cấu trúc nào Vì thế, MongoDB cóthể lưu trữ những dữ liệu có cấu trúc đa dạng và phức tạp Dữ liệu trong MongoDB đượclưu bằng định dạng kiểu JSON
JSON là định dạng trao đổi dữ liệu văn bản dung lượng nhẹ Cú pháp của JSON
rất đơn giản là mỗi thông tin dữ liệu sẽ có 2 phần đó là key và value, điều này tương ứng
trong CSDL là tên field và giá trị của nó ở một record nào đó
2.6.2 Cấu trúc
Chuỗi JSON được bao lại bởi dấu ngoặc nhọn {}
Các key, value của JSON bắt buộc phải đặt trong dấu nháy kép (")
Nếu có nhiều dữ liệu (nhiều cặp key => value) thì ta dùng dấu phẩy (,) để ngăn cách.Các key của JSON nên đặt chữ cái không dấu hoặc số, dấu _ và không có khoảng trắng,
ký tự đầu tiên không nên đặt là số
Trang 112.7 Giới thiệu về Socket.io
2.7.1 Khái niệm
Socket.io là một module trong Node.js được nhà sáng chế tạo ra và phát triển từnăm 2010 Mục đích lớn nhất của Socket io là để tạo môi trường giao tiếp thuận lợi trênInternet giúp trả về các giá trị thực ngay tại thời điểm giao tiếp giữa các bên với nhau(thường là giữa server và client)
Việc giao tiếp 2 chiều giữa máy khách và máy chủ được thực hiện bởi socket iokhi và chỉ khi máy khách có module này trong trình duyệt và máy chủ cũng đã tích hợpsẵn gói socket io Các ứng dụng sử dụng socket io thường đòi hỏi tốc độ phản hồi ngaylập tức Một số ví dụ điển hình như xổ số, trực tiếp bóng đá, chat…
2.7.2 Ưu điểm
– Bảo mật cao: Socket io được xây dựng dựa trên Engine.IO Nó sẽ khởi chạy phươngthức long-polling trước nhất để kết nối Sau đó nó mới sử dụng các phương thức giao tiếptốt hơn như là Websocket Vì được thiết lập chặt chẽ như vậy nên khi socket io xuất hiện
nó sẽ tự động tạo những kết nối bảo mật như là: proxy và cân bằng tải hoặc là tường lửa
cá nhân và phần mềm chống virus
– Kết nối tự động tới server: trong quá trình khởi chạy bị mất kết nối giữa client vàserver thì socket io sẽ tự động gắn kết nối mãi mãi cho đến khi nào server phản hồi lại.Đây là tính năng có thể tùy chỉnh được nên bạn có quyền chọn không kết nối tự động đếnbất kỳ server nào mà mình muốn
– Mã hóa nhị phân: Socket io có thể hỗ trợ mã hóa nhị phân như ArrayBuffer và Blob
trên trình duyệt hoặc là ArrayBuffer và Buffer trong Node.js
– Cho phép tạo kênh và phòng: cho phép tạo ra mối quan hệ giữa các phần hoặc các
module riêng lẻ bằng cách tạo ra những kênh riêng biệt khác nhau Ngoài việc tạo kênh,Socket.io còn hỗ trợ tạo phòng cho các clients tham gia với mục đích gửi thông báo đếnmột nhóm người dùng được kết nối với 1 số thiết bị nào đó
2.8 Giới thiệu về GraphQL
2.8.1 Khái niệm
GraphQL là một ngôn ngữ truy vấn API và runtime để thực hiện các truy vấn với
dữ liệu hiện có của bạn Một trong những điều khiến GraphQL “nổi đình nổi đám” trong
thời gian gần đây chính là việc GraphQL chỉ cung cấp đúng những gì client cần –
Trang 12không hơn – không kém, giúp cho việc phát triển các API của bạn dễ dàng hơn và cung
cấp các công cụ mạnh mẽ cho các lập trình viên
Hiểu một cách ngắn gọn hơn: GraphQL là một bộ cú pháp mô tả cách lấy dữ liệucủa bạn Thông thường, GraphQL sẽ được sử dụng để load data từ một server và cungcấp cho client
2.8.2 Ưu điểm
– GraphQL schema tự động tạo ra một nguồn đáng tin cậy trong ứng dụng GraphQL.– Chỉ với một request, client có thể có được nhiều thông tin họ cần làm giảm thiểu sốlượng requests
– Hỗ trợ tối đa trong việc kiểm soát và xử lý data type từ đó hạn chế sự sai lệch tronggiao tiếp giữa server và client
– GraphQL giúp ứng dụng của bạn có thể phát triển thêm API mà không làm ảnh hưởnglên các truy vấn đã có
– GraphQL không yêu cầu một kiến trúc ứng dụng cụ thể mà có thể hoạt động như mộtRest API và có thể làm việc với các công cụ API hiện có
– Tài liệu để học về GraphQL có sẵn và rất chi tiết, dễ dàng học, tiếp thu
Trang 13+ Tạo/quản lý bộ câu hỏi.
+ Tìm kiếm bộ câu hỏi
+ Thêm bộ câu hỏi vào danh sách yêu thích+ Tham gia cuộc thi
+ Quản lý thông tin cá nhân
+ Tạo cuộc thi
+ Xem thống kê kết quả cuộc thi
– Phần dành cho người chưa có tài khoản:
+ Đăng ký
+ Tìm kiếm bộ câu hỏi
+ Tham gia cuộc thi
3.1.2 Phân tích yêu cầu hệ thống
3.1.2.1 Phần người dùng chưa có tài khoản
– Đăng ký:
Website TooNizz cho phép người dùng đăng ký tài khoản để dễ dàng tạo, lưu trữ
và xem lại kết quả các cuộc thi
– Tìm kiếm các bộ câu hỏi:
Trang 14Người dùng có thể tìm kiếm các bộ câu hỏi có chủ đề hoặc nội dung liên quan đến
từ khóa tìm kiếm bằng cách nhập từ khóa vào “ô tìm kiếm”, website sẽ trả về những bộcâu hỏi phù hợp nhất với nhu cầu của người dùng
– Sắp xếp các bộ câu hỏi:
Bên cạnh tìm kiếm, người dùng cũng có thể sắp xếp các bộ câu hỏi theo mốc thờigian, độ phổ biến để cho website cho ra kết quả chính xác hơn
– Lọc các bộ câu hỏi theo chủ đề (tag):
Tương tự như sắp xếp, người dùng cũng có thể tìm kiếm các bộ câu hỏi của mộtchủ đề nhất định bằng cách lọc bộ câu hỏi theo tag để có thể khám phá nhiều hơn những
bộ câu hỏi sẵn có liên quan đến chủ đề mình yêu thích
– Xem chi tiết bộ câu hỏi:
Khi người dùng click vào một bộ câu hỏi bất kỳ, hệ thống sẽ hiển thị thông tin chitiết của bộ câu hỏi đó bao gồm tên bộ câu hỏi, người tạo, ngày cập nhật gần nhất, chủ đềliên quan, tổng số lượt chơi, tổng số lượt thích và nội dung chi tiết kèm đáp án của từngcâu hỏi trong bộ
– Tham gia cuộc thi:
Người dùng có thể tham gia cuộc thi do một người dùng khác tạo sẵn bằng cáchnhập mã code phòng thi mà người đó cung cấp
3.1.2.2 Phần người dùng đã có tài khoản
Người dùng đã có tài khoản có thể sử dụng đầy đủ các tính năng như người dùng chưa cótài khoản, cùng với các tính năng riêng biệt sau đây:
– Đăng nhập:
Người dùng sử dụng tài khoản đã đăng ký để đăng nhập vào website Có 2 hìnhthức đăng nhập: sử dụng email và mật khẩu đã đăng ký hoặc sử dụng tài khoản Google.Sau khi đăng nhập, người dùng có thể sử dụng đầy đủ các chức năng của website
– Cập nhật thông tin tài khoản:
Người dùng sau khi đăng ký tài khoản thành công có thể cập nhật lại thông tin tàikhoản của mình theo mong muốn
– Thay đổi mật khẩu
Trang 15Người dùng sau khi đăng ký thành công có thể thay đổi mật khẩu bất cứ lúc nào đểđảm bảo an toàn cho tài khoản.
– Cập nhật địa chỉ email mới
Người dùng nếu có nhu cầu thay đổi email có thể tiến hành cập nhật email mới.Khi đó hệ thống sẽ gửi một mã xác thực OTP đến email mới của khách hàng Khách hàngchỉ cần nhập vào đúng mã OTP đó thì email mới sẽ được hệ thống cập nhật
– Tạo cuộc thi
Người dùng đã có tài khoản trên website có thể tạo cuộc thi từ một bộ câu hỏi, sau
đó chia sẻ mã code phòng thi cho những người chơi khác vào tham gia
– Tạo/quản lý bộ câu hỏi
Người dùng có đã có tài khoản có thể tự tạo những bộ câu hỏi của riêng mình thay
vì chỉ sử dụng những bộ câu hỏi có sẵn trên hệ thống Với những bộ câu hỏi tự tạo, ngườidùng có toàn quyền cập nhật nội dung cũng như chỉnh sửa các cài đặt hoặc xóa bộ câu hỏi nếu muốn Khi tạo, người dùng có thể thêm thủ công nội dung của từng câu hỏi hoặc
sử dụng tính năng import từ file excel theo template được cung cấp sẵn trên hệ thống
– Thêm bộ câu hỏi vào danh sách yêu thích
Người dùng có thể thêm bất kỳ bộ câu hỏi nào vào danh sách yêu thích để thuận tiện sử dụng hơn cho những lần sau hoặc đơn giản cho mục đích lưu trữ
– Xem thống kê kết quả cuộc thi
Người dùng có thể xem lại báo cáo thống kê kết quả sau cuộc thi đối với các cuộc thi mà người đó đã tổ chức và export ra file excel nếu cần thiết
Trang 163.2 Phân tích thiết kế hệ thống
3.2.1 Sơ đồ use case
3.2.1.1 Sơ đồ các use case
Trang 17có tài khoản Người sử dụng phần mềm chưa có tài khoản
3.2.1.3 Mô tả chi tiết các use case
3.2.1.3.1 Use case Đăng nhập
Tên Use case Đăng nhập
Mô tả Người dùng đăng nhập vào website để sử dụng đầy đủ các tính
năng của websiteTác nhân User có tài khoản
Tiền điều kiện • Người dùng có tài khoản
• Có kết nối mạng internet khi thực hiện đăng nhậpHậu điều kiện • Thông báo người dùng đăng nhập thành công
• Hệ thống ghi nhận hoạt động đăng nhậpDòng sự kiện chính 1 Người dùng truy cập vào website
2 Người dùng chọn vào nút đăng nhập
3 Người dùng nhập tài khoản, mật khẩu và nhấn nút đăng nhập
4 Hệ thống xác thực thông tin đăng nhập thành công và cho phép người dùng sử dụng đầy đủ tính năng của tài khoản Dòng sự kiện phụ 1 Người dùng chọn phương thức đăng nhập bằng tài khoản
2 Trang web chuyển sang màn hình đăng nhập của Google
3 Người dùng nhập tài khoản Goolge và chọn đăng nhập
4 Google xác thực thông tin đăng nhập thành công và cho phépngười dùng tiếp tục sử dung trang web
Dòng sự kiện ngoại
lệ 1 Hệ thống xác thực thông tin đăng nhập không thành công và hiển thị thông báo
3.2.1.3.2 Use case Đăng kí
Tên Use case Đăng kí
Mô tả Người dùng đăng kí tài khoản
Tác nhân User chưa có tài khoản
Tiền điều kiện • Không được trùng với email đã tồn tại trong hệ thống
Trang 18• Email phải thực sự tồn tại
• Có kết nối mạng internet khi thực hiện đăng kíHậu điều kiện • Thông báo người dùng đăng kí thành công
• Hệ thống gửi email xác thực về email vừa được dùng để đăngký
Dòng sự kiện chính 1 Người dùng truy cập vào website
2 Người dùng nhấn vào nút đăng kí
3 Người dùng nhập tên, email, mật khẩu và nhấn nút đăng kí
4 Hệ thống ghi nhận thông tin đăng kí thành công và hiển thị màn hình đăng nhập
Dòng sự kiện phụ Không có
Dòng sự kiện ngoại
lệ 1 Hệ thống báo email đã tồn tại trong hệ thống
3.2.1.3.3 Use case Tạo/quản lý bộ câu hỏi
Tên Use case Tạo và quản lý bộ câu hỏi
Mô tả Người dùng có thể thực hiện quản lý các bộ câu hỏi trên
website bằng cách tìm kiếm, xem, thêm, xóa, cập nhật bộ câu hỏi
Tác nhân User có tài khoản
Tiền điều kiện • Người dùng đã đăng nhập vào hệ thống
• Có kết nối mạng internet khi thực hiện Hậu điều kiện Không có
Dòng sự kiện chính 1 Người dùng đăng nhập vào hệ thống
2 Người dùng xem được tất cả sản phẩm ở mục Bộ Câu Hỏi và
có thể thêm, xóa, sửa bộ câu hỏi
3 Đăng xuất người dùng khỏi hệ thốngDòng sự kiện phụ Không có
Dòng sự kiện ngoại
lệ
Không có
3.2.1.3.4 Use case Tìm kiếm bộ câu hỏi
Tên Use case Tìm kiếm bộ câu hỏi
Mô tả Người dùng có thể tìm kiếm các bộ câu hỏi trên hệ thống bằng
cách nhập từ khóa tìm kiếm hoặc sử dụng bộ lọc
Tác nhân User có tài khoản, User chưa có tài khoản
Trang 19Tiền điều kiện • Người dung truy cập vào Website
• Có kết nối mạng internet khi thực hiện Hậu điều kiện • Hệ thống trả về những bộ câu hỏi phù hợp với yêu cầu tìm kiếm
của người dùngDòng sự kiện
chính
1 Người dùng truy cập vào website
2 Người dùng chọn vào thanh tìm kiếm
3.2.1.3.5 Use case Tham gia cuộc thi
Tên Use case Tham gia cuộc thi
Mô tả Người dùng tham gia cuộc thi để trả lời các câu hỏi
Tác nhân User có tài khoản, User chưa có tài khoản
Tiền điều kiện • Người dung truy cập vào Website
• Có kết nối mạng internet khi thực hiệnHậu điều kiện Không có
3.2.1.3.6 Use case Quản lý thông tin cá nhân
Tên Use case Quản lý thông tin cá nhân
Mô tả Người dùng có thể xem, chỉnh sửa thông tin cá nhân của tài khoảnTác nhân User có tài khoản
Tiền điều kiện • Người dung phải đăng nhập vào website
• Có kết nối mạng internet khi thực hiệnHậu điều kiện • Hệ thống ghi nhận và cập nhật thông tin của người dùng ngay
lập tứcDòng sự kiện 1 Người dùng chọn vào tài khoản
Trang 20chính 2 Người dùng chỉnh sửa thông tin cá nhân
3.2.1.3.7 Use case Tạo cuộc thi
Tên Use case Tạo cuộc thi
Mô tả Người dùng tạo ra các cuộc thi
Tác nhân User có tài khoản
Tiền điều kiện • Truy cập vào Website
• Có kết nối mạng internet khi thực hiệnHậu điều kiện • Hệ thống tạo ra các phòng thi với các mã phòng khác nhau
Dòng sự kiện
chính
1 Người dùng truy cập vào website
2 Người dùng chọn vào bộ câu hỏi muốn tạo cuộc thi
3 Người dùng chọn chế độ thiDòng sự kiện phụ Không có
Dòng sự kiện
3.2.1.3.8 Use case Xem thống kê kết quả cuộc thi
Tên Use case Xem thống kê kết quả cuộc thi
Mô tả Người dùng có thể xem lại thống kê của cuộc thi sau khi cuộc thi
kết thúcTác nhân User có tài khoản
Tiền điều kiện • Người dùng đã đăng nhập
• Có thực hiện tổ chức các cuộc thi trước đó
• Có kết nối mạng internet khi thực hiệnHậu điều kiện Không có
Dòng sự kiện
chính 1 Người dùng truy cập vào website2 Người dùng chọn vào phần Báo cáo
Trang 213 Người dùng nhấn vào phần báo cáo mà mình muốn xemDòng sự kiện phụ Không có
Dòng sự kiện
3.2.2 Sơ đồ lớp
3.2.2.1 Tổng quan sơ đồ lớp
Trang 223.2.2.2 Mô tả chi tiết
3.2.2.2.1 Lớp User
6 collection Array<string> Private Bộ sưu tập những bộ câu hỏi
yêu thích
STT Tên phương thức Kiểu trả về Ràng buộc Ý nghĩa/ghi chú
Trang 233 editInfo() bool Public Chỉnh sửa thông tin cá nhân
3.2.2.2.2 Lớp QuestionSet
2 userId string Private Mã của người tạo ra bộ câu hỏi
4 tag Array<string> Private Chủ đề bộ câu hỏi
7 likes Array<string> Private Số lượt thích của bộ câu hỏi
Trang 248 played int Private Số lượt chơi của bộ câu hỏiSTT Tên phương thức Kiểu trả về Ràng buộc Ý nghĩa/ghi chú
Trang 253.2.2.2.3 Lớp Question
buộc
Ý nghĩa/ghi chú
2 questionSetId string Private Mã bộ câu hỏi
Trang 265 video string Private Video của câu hỏi
8 answers Array<Answer> Private Câu trả lời
11 typeAnswers Array<string> Private Đáp án câu hỏi loại điền
12 explanation string Private Lời giải thích
13 doubleScore bool Private Câu hỏi với điểm nhân đôi
STT Tên phương thức Kiểu trả về Ràng buộc Ý nghĩa/ghi chú
Trang 273.2.2.2.4 Lớp Answer
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/ghi chú
2 content string Private Nội dung câu trả lời
4 isCorrect bool Private Tính đúng sai của câu trả lời
STT Tên phương thức Kiểu trả về Ràng buộc Ý nghĩa/ghi chú
Trang 283.2.2.2.5 Lớp Report
2 questionSetId string Private Mã bộ câu hỏi
3 questions Array<Question> Private Danh sách câu hỏi
4 players Array<Player> Private Danh sách người chơi
STT Tên phương thức Kiểu trả về Ràng buộc Ý nghĩa/ghi chú
Trang 293.2.2.2.6 Lớp Player
4 answers Array<AnswerDetail> Private Danh sách các câu trả lời