You are on page 1of 90

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NHA TRANG


KHOA CÔNG NGHỆ THÔNG TIN

HUỲNH NGỌC SÁNG

PHÂN TÍCH, CÀI ĐẶT MODULE QUẢN LÝ TẠO ĐỀ, RA ĐỀ THI


TRONG ỨNG DỤNG WEB HỖ TRỢ HỌC
VÀ THI TRỰC TUYẾN.

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC


Ngành: Công nghệ Thông tin

Nha Trang - 2017


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN

HUỲNH NGỌC SÁNG

PHÂN TÍCH, CÀI ĐẶT MODULE QUẢN LÝ TẠO ĐỀ, RA ĐỀ THI


TRONG ỨNG DỤNG WEB HỖ TRỢ HỌC
VÀ THI TRỰC TUYẾN.

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC


Ngành: Công nghệ Thông tin

CÁN BỘ HƯỚNG DẪN:


TS. ĐINH ĐỒNG LƯỠNG
MỤC LỤC
DANH MỤC KÍ HIỆU, CHỮ VIẾT TẮT......................................................................1
DANH MỤC CÁC HÌNH..............................................................................................3
LỜI MỞ ĐẦU................................................................................................................6
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI......................................................................8
1.1. Đặt vấn đề.........................................................................................................8
1.2. Lý do chọn đề tài...............................................................................................8
1.3. Xác định các yêu cầu của đề tài.........................................................................9
1.4. Phương pháp nghiên cứu.................................................................................11
1.5. Ý nghĩa khoa học và thực tiễn.........................................................................11
1.6. Cấu trúc bài báo cáo........................................................................................11
CHƯƠNG 2: HỆ THỐNG GIẢNG DẠY TRỰC TUYẾN (E-LEARNING) VÀ
CÔNG NGHỆ HỖ TRỢ...............................................................................................12
2.1 Tổng quan về E-learning.................................................................................12
2.2 Phân tích một số hệ thống E-Learning............................................................14
2.3 Công nghệ hỗ trợ.............................................................................................16
2.3.1 Giới thiệu về Node.Js...............................................................................16
2.3.1.1 Giới thiệu...........................................................................................16
2.3.1.2 Ứng dụng của node.js........................................................................16
2.3.1.3 Ưu nhược điểm của node.js...............................................................16
2.3.2 Công nghệ Meteor....................................................................................17
2.3.2.1 Giới thiệu..............................................................................................17
2.3.2.2 Ưu và nhược điểm của meteor..............................................................19
2.3.2.3 Cấu trúc của một project meteor...........................................................20
2.3.2.4 Một số package meteor được sử dụng...................................................22
2.3.3 Tìm hiểu về MongoDB.............................................................................22
2.3.3.1 Cơ sở dữ liệu NoSQL là gì?..................................................................22
2.3.3.2 Giới thiệu về MongoDB :.....................................................................23
2.3.3.3 Cơ chế phân quyền và bảo mật của MongoDB:....................................24
2.3.3.4 So sánh với SQL...................................................................................25
2.3.4 Tìm hiểu về React và mô hình Redux.......................................................28
2.3.5 Tìm hiểu về Webpack...............................................................................30
CHƯƠNG 3: KHẢO SÁT VÀ PHÂN TÍCH HỆ THỐNG..........................................31
3.1. Khảo sát các đối tượng......................................................................................31
3.1.1. Đối tượng giáo viên...............................................................................31
3.1.2. Đối tượng sinh viên...............................................................................32
3.1.3. Đối tượng phụ huynh............................................................................32
3.2. Thiết kế cơ sở dữ liệu........................................................................................33
3.2.1. Đặc tả hệ thống.....................................................................................33
3.2.2. Sơ đồ phân rã chức năng.......................................................................34
3.2.3. Sơ đồ lớp...............................................................................................34
CHƯƠNG 4: CÀI ĐẶT HỆ THỐNG VÀ KẾT QUẢ ĐẠT ĐƯỢC...........................39
4.1. Giao diện tạo kì thi..........................................................................................39
4.2. Giao diện thi:...................................................................................................46
4.3. Giao diện thống kê câu hỏi..............................................................................50
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN TOÀN HỆ THỐNG.............53
5.1. Kết luận...........................................................................................................53
5.1.1. Kết quả đạt được...................................................................................53
5.1.2. Kết quả chưa đạt được...........................................................................53
5.2. Hướng phát triển.............................................................................................54
DANH MỤC TÀI LIỆU THAM KHẢO......................................................................55
PHỤ LỤC 1 TÀI LIỆU HƯỚNG DẪN SỬ DỤNG....................................................56
1

DANH MỤC KÍ HIỆU, CHỮ VIẾT TẮT


RDBMS Relational Database Management System
NoSQL None-Relational Structured Query Language
E-learning Electronic Learning
ĐH Đại học
HTTP HyperText Transfer Protocol
PHP Hypertext Preprocessor
JSON JavaScript Object Notation
HTML HyperText Markup Language
DPP Distributed Data Protocol
CSS Cascading Style Sheets
OOP Object Oriented Programming
API Application programming interface
SEO Search Engine Optimization
UI User Interface
3rd-party Third party
2

DANH MỤC CÁC BẢNG VÀ HÌNH


Bảng 3-1. Bảng so sánh đối tượng trong SQL và MongoDB..................................25
Bảng 3-2. Bảng so sánh các câu lệnh cơ bản trong SQL và MongoDB..................25
Hình 2-1. Cách MongoDB lưu trữ một bản ghi......................................................23
Hình 3-1. Sơ đồ phân rã chức năng.........................................................................33
Hình 3-2.Sơ đồ lớp tổng quát..................................................................................34
Hình 3-3. Sơ đồ phân rã từ sơ đồ lớp chức năng đăng bài......................................34
Hình 3-4. Sơ đồ phân rã từ sơ đồ lớp chức năng tạo mới khoa học, lớp học, môn
học........................................................................................................................... 35
Hình 3-5. Sơ đồ lớp chức năng chat........................................................................36
Hình 3-6. Sơ đồ lớp chức năng tổ chức kì thi.........................................................37
Hình 3-7. Sơ đồ lớp chức năng phân quyền............................................................38
Hình 4-1. Giao diện tạo kì thi với thông tin cơ bản.................................................39
Hình 4-2. Giao diện tạo câu bộ hỏi với thông tin cơ bản........................................40
Hình 4-3. Giao diện thêm câu hỏi...........................................................................41
Hình 4-4. Giao diện xem lại câu hỏi.......................................................................41
Hình 4-5. Giao diện thêm câu hỏi từ câu hỏi cá nhân (thêm lần lượt).....................42
Hình 4-6. Giao diện thêm câu hỏi từ câu hỏi cá nhân (thêm ngẫu nhiên)...............43
Hình 4-9. Giao diện cấu hình kì thi.........................................................................45
Hình 4-10.Giao diện đăng kí thi của thí sinh..........................................................46
Hình 4-11. Giao diện thi trên lớp của giáo viên......................................................46
Hình 4-12. Giao diện thi trên lớp của thí sinh.........................................................47
Hình 4-13. Giao diện thi tại nhà của giáo viên........................................................47
Hình 4-14. Ảnh chụp màn hình của thí sinh............................................................48
Hình 4-15. Giao diện thi tại nhà của thí sinh...........................................................48
Hình 4-16. Giao diện kết quả..................................................................................49
Hình 4-17. Giao diện in kết quả của thí sinh...........................................................49
Hình 4-18. Giao diện thống kê theo điểm số...........................................................50
Hình 4-19. Giao diện thống kê theo tỉ lệ trả lời đúng..............................................50
3

Hình 4-20. Giao diện thống kê theo tỉ lệ trả lời đúng hiện chi tiết..........................51
Hình 4-21. Giao diện thống kê theo tỉ lệ trả lời đúng trên tất cả kì thi....................51
Hình 4-22. Nội dung câu hỏi...................................................................................52
Danh mục hình Phụ lục 1

Hình 1. Giao diện trang chủ và nút đăng kí tài khoản.............................................56


Hình 2. Thông tin đăng kí tài khoản - 1..................................................................57
Hình 3. Thông tin đăng kí tài khoản - 2..................................................................57
Hình 4. Giao diện đăng nhập vào hệ thống.............................................................57
Hình 5. Hướng dẫn vào trang quản lý lớp học........................................................58
Hình 6. Giao diện quản lý lớp học..........................................................................58
Hình 7. Tìm kiếm bạn bè........................................................................................59
Hình 8. Thêm thành viên gia đình để theo dõi học tập............................................60
Hình 9. Tạo mới khóa học......................................................................................60
Hình 10. Các thông tin cần thiết khi tạo lớp học.....................................................61
Hình 11. Thông tin khi tạo mới lớp học..................................................................61
Hình 12. Tạo môn học mới.....................................................................................62
Hình 13. Tham gia vào lớp học...............................................................................62
Hình 14. Đăng bài lên Forum..................................................................................63
Hình 15. Kết quả đăng bài......................................................................................64
Hình 16. Đăng bài giảng.........................................................................................65
Hình 17. Thêm chủ đề vào bài giảng......................................................................66
Hình 18. Tạo mới bài tập........................................................................................66
Hình 19. Nộp bài tập...............................................................................................67
Hình 20. Xem danh sách thành viên lớp học...........................................................68
Hình 21. Quản lý hoạt động của sinh viên..............................................................68
Hình 22. Danh sách user và quyền..........................................................................69
Hình 23. Chỉnh sửa phân quyền..............................................................................69
Hình 24. Tạo kì thi..................................................................................................70
Hình 25. Nhập thông tin kì thi................................................................................70
4

Hình 26. Chọn câu hỏi từ cá nhân...........................................................................71


Hình 27. Trộn câu hỏi khác nhau từ bộ đề cá nhân.................................................72
Hình 28. Chọn câu hỏi ngẫu nhiên..........................................................................72
Hình 29. Xem lại câu trả lời đúng...........................................................................73
Hình 30. Giao diện tạo kì thi...................................................................................74
Hình 31. Nhập thông tin tạo bộ câu hỏi mới...........................................................74
Hình 32. Giao diện thêm nội dung câu hỏi.............................................................75
Hình 33. Giao diện cấu hình kì thi..........................................................................76
Hình 34. Giao diện thi trực tuyến............................................................................76
Hình 35. Giao diện tham gia thi..............................................................................77
Hình 36. Giao diện màn hình chờ...........................................................................77
Hình 0-37. Giao diện kì thi tại nhà..........................................................................78
Hình 38. Giao diện kì thi tại lớp.............................................................................78
Hình 39. Bắt đầu kì thi............................................................................................79
Hình 40. Giao diện chờ thi của giáo viên................................................................80
Hình 41. Giao diện trang thi của giáo viên khi tỏ chức thi tại nhà..........................80
Hình 42. Giao diện trang thi của giáo viên khi tổ chức thi tại lớp...........................81
Hình 43. Giao diện kết quả thi................................................................................81
Hình 44. Giao diện hiển thị nội dung câu hỏi sau thống kê.....................................82
Hình 45. Giao diện thông kê dựa trên điểm số........................................................82
Hình 46. Giao diện thống kê dựa trên tỉ lệ trả lời đúng...........................................83
Hình 47. Xem chi tiết thống kê bộ câu hỏi..............................................................83
Hình 48. Giao diện thống kê toàn bộ kì thi.............................................................84
5

LỜI MỞ ĐẦU
Ngày nay, có thể nhận thấy rằng, Internet ngày càng thể hiện được vai trò to
lớn trong mọi mặt đời sống, đặc biệt là trong lĩnh vực giáo dục và đào tạo.
Công nghệ thông tin thúc đẩy một nền giáo dục mở, giúp mọi người tiếp cận
rất nhiều thông tin, thông tin nhiều chiều, rất nhanh, rút ngắn mọi khoảng cách, thu
hẹp mọi không gian, tiết kiệm thời gian. Kết quả, con người có thể tiếp nhận kiến
thức, nhận thức, trí tuệ và tư duy nhanh và thuận tiện hơn. Nội dung và cách truyền
đạt thông tin đa dạng nên hạn chế các phương pháp truyền đạt mang tính áp đặt một
chiều, nhờ vậy, năng lực của người học phát triển và có khả năng tư duy độc lập.
Trong mấy thập niên gần đây, đổi mới giáo dục đào tạo đã trở thành xu thế
toàn cầu. Khoa học và công nghệ trên thế giới phát triển như vũ bão, tạo ra những
bước tiến nhảy vọt, đặc biệt trong các lĩnh vực điện tử - viễn thông, tin học và công
nghệ thông tin. Tại Việt Nam, ứng dụng những thành tựu mới của công nghệ thông
tin trong phát triển giáo dục thời đại trong bối cảnh kinh tế tri thức phát triển mạnh
mẽ như hiện nay đang trở thành một trong những mục tiêu quan trọng hàng đầu.
Thông qua công nghệ, người dạy dễ dàng tiếp cận các bài giảng, tri thức bằng cách
truy cập hoặc liên hệ trực tiếp với các đồng nghiệp. Nhờ vào công nghệ thông tin,
học sinh và bản thân các người dạy còn có thể xem xét, đánh giá năng lực và học
tập của học sinh, sinh viên ở bất cứ đâu.
Dựa trên những phân tích trên việc ứng dụng công nghệ thông tin trong công
tác giảng dạy và quản lý đào tạo trong môi trường đại học giúp các bạn học sinh,
sinh viên học tập, ôn tập, ôn luyện các bài thi, kiểm tra; giúp giáo viên có thể tạo
các bài giảng, các bài tập ôn luyện cho từng đối tượng học sinh, sinh viên, các bài
kiểm tra, dạy và trao đổi trực tuyến như một mạng xã hội dành cho việc học tập;
giúp phụ huynh có thể theo dõi việc học tập và kết quả thi của con em mình. Đồng
thời các thầy cô giảng dạy có thể quản lý, tổ chức thi trực tuyến, thống kê, đánh giá
các đề thi một cách dễ dàng. Hơn thế nữa, hệ thống cho phép sử dụng để tổ chức
các cuộc thi khác như cuộc thi “ Thách thức tin học” được tổ chức hằng năm tại
6

khoa Công nghệ Thông tin, hay các cuộc thi tiếng anh cũng có thể áp dụng hệ thống
này.
Với sự hướng dẫn tận tình của phía công ty TNHH S2 nơi em thực tập và giáo viên
hướng dẫn TS.Đinh Đồng Lưỡng đã giúp nhóm hoàn thành bài báo cáo đồ án tốt
nghiệp này. Tuy đã cố gắng để tìm hiểu, phân tích thiết kế và cài đặt hệ thống
nhưng chắc rằng không tránh khỏi những thiếu sót. Chúng em rất mong nhận được
sự góp ý của quí Thầy cô. Chúng em xin chân thành cảm ơn!
7

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI


1.1. Đặt vấn đề
Trong lĩnh vực giáo dục, nhờ ứng dụng Công nghệ Thông tin nhiều phương
pháp dạy - học mới ra đời. Trong số các phương pháp mới, học tập trực tuyến (E-
learning) là một phương pháp nổi trội hơn cả. Học tập trực tuyến - người học có thể
học tập ở bất cứ đâu, bất cứ khi nào, học những vấn đề mà bản thân quan tâm, học
những gì mình thích chỉ cần có phương tiện là máy tính, điện thoại có kết nối mạng
Internet. Đối tượng sử dụng phương pháp E-learning không chỉ là những học sinh,
sinh viên đang còn ngồi trên ghế nhà trường mà đặc biệt thuận lợi cho các học viên
học từ xa, những công nhân, viên chức đang muốn tự học nâng cao trình độ mà
không thể sắp xếp thời gian tập trung tới lớp truyền thống. Với sự hỗ trợ của công
nghệ multimedia, bài giảng của giáo viên có thể tích hợp cả văn bản, hình ảnh, âm
thanh, video làm tăng tính hấp dẫn khi học tập. Người học hoàn toàn có thể dễ dàng
trao đổi thông tin với nhau hoặc với người dạy thông qua các phương tiện như
email, forum, chat,… khi đó dễ dàng bộc lộ được quan điểm của mình tăng tính
tương tác giữa người dạy và người học, đồng thời cũng làm tăng hiệu quả của bài
học. Ngoài những hiệu quả kể trên, phương pháp dạy học trực tuyến còn giúp người
dạy dễ dàng quản lí người học cũng như việc thống kê số lần tương tác hệ thống với
bạn bè và giáo viên nhằm đánh giá quá trình học của học viên hiệu quả hơn rất
nhiều so với các phương pháp dạy học truyền thống.
1.2. Lý do chọn đề tài
Trường Đại học Nha Trang - trường đại học đa ngành đa lĩnh vực, hiện tại
trường đang đào tạo 5 ngành trình độ tiến sĩ, 8 ngành trình độ thạc sĩ, 25 ngành trình
độ đại học và 10 ngành trình độ cao đẳng. Lưu lượng người học thường xuyên của
Trường: gần 100 nghiên cứu sinh, trên 1.100 học viên cao học, hơn 13.000 sinh
viên chính quy tại Nha Trang và trên 10.000 sinh viên hệ vừa làm vừa học tại 18 cơ
sở liên kết trên cả nước. Trường đã triển khai mô hình dạy học trực tuyến E-
learning dựa trên Moodle và cũng đã đạt được những thành quả đáng kể. Song số
giảng viên đăng ký tập huấn và triển khai E-learning chưa nhiều. Một số lý do có
8

thể kể đến là: Server chậm; khi giảng viên ra bài tập, bài kiểm tra, hệ thống chưa tự
động email cho sinh viên biết; trao đổi trên E-learning không nhanh bằng email, khả
năng quản lý và giám sát thi trực tuyến còn thiếu và chưa phù hợp.[1]
Xuất phát từ những vấn đề trên, nhóm chúng em thực hiện xây dựng bộ công
cụ hỗ trợ học tập và thi trực tuyến có các tính năng tương tự như Moodle. Ngoài ra
hệ thống còn được bổ sung thêm một số tính năng cho phù hợp với môi trường thực
tế giảng dạy tại Việt nam nói chung và trường ĐH Nha Trang nói riêng như các tính
năng tự động thông báo của hệ thống tới người học qua email cá nhân tự động email
nhắc nhở sinh viên, hỗ trợ việc giám sát việc thi trực tuyến thông qua hệ camera,
giám sát đọc mail của người học, thống kê và đánh giá hệ thống các câu hỏi, phân
loại các mức độ khó dễ của từng câu hỏi xếp hạng sinh viên và thông báo tự động
tới phụ huynh.
Chúng em sử dụng các công nghệ mới nhất hiện tại đang được áp dụng trên thế giới
áp dụng vào việc phân tích và xây dựng bộ công cụ này như: React, mô hình Redux,
Apollo, Mongodb, Node.js, Meteor và Webpack để dễ dàng chia phần mềm ra thành
rất nhiều file khác nhau. Codebase có thể được chia thành các “chunks” có khả năng
được nạp theo thứ tự hay yêu cầu khác nhau. Điều này giúp giảm đáng kể thời gian
khi khởi chạy vì hệ thống chỉ nạp một tập tin mã khi cần thiết. Một tính năng tuyệt
vời khác đó là khả năng tự thêm (webpack plugin) vào trong quá trình dịch/chạy,
điều này cho phép bạn thoải mái tùy chỉnh theo nhu cầu cũng như đóng góp xây
dựng các plugin như mã nguồn mở (open source). Được sử dụng phía máy khách
(client) để tăng tốc độ chạy, khắc phục hạn chế chạy chậm của Meteor.
1.3. Xác định các yêu cầu của đề tài
Xác định yêu cầu nội dung:
Trong tổng thể toàn bộ nội dung đề tài yêu cầu cần tìm hiểu các công nghệ
mới: React, Redux, Apollo, hệ quản trị MongoDB, Nodejs, Meteor, thực hiện việc
khảo sát hiện trạng, xác định yêu cầu đề tài, phân tích, thiết kế cơ sở dữ liệu.
Hệ thống được chia ra thành 3 mô-đun chính như sau:
9

- Mô-đun 1: thực hiện chức năng phân tích, cài đặt phần quản trị hệ thống và hệ
thống giao diện trong ứng dụng web hỗ trợ cho việc học và thi trực tuyến chi
tiết gồm: ( SV thực hiện: Nguyễn Thị Bích Thuận)
• Phân tích, vẽ sơ đồ giao diện tổng quan và chi tiết từng mô hình giao diện.
• Cài đặt phần phân quyền người dùng (cho phép thiết lập quyền đối với từng
người dùng cụ thể ) và quản trị hệ thống (nhận và phản hồi đánh giá người
dùng).
• Cài đặt chức năng chat online.
- Mô-đun 2: thực hiện việc phân tích, cài đặt phần quản lý tạo đề, ra đề thi trong
ứng dụng web hỗ trợ học và thi trực tuyến, chi tiết gồm. (SV thực hiện: Huỳnh
Ngọc Sáng)
• Cài đặt phần quản lý tạo đề gồm tạo đề thi trực tiếp, đề thi dạng luyện tập ôn
thi có gợi ý, đề thi dạng trắc nghiệm, quản lý việc ôn tập của sinh viên, quản lý
bộ đề.
• Đánh giá thống kê kết quả thi, gửi mail kết quả thi về cho giáo viên và phụ
huynh, tổ chức thi online.
- Mô-đun 3: thực hiện việc phân tích, cài đặt phần quản lý giáo viên, sinh viên và
phụ huynh trong ứng dụng Web hỗ trợ học và thi trực tuyến( thực hiện Nguyễn
Xuân Vinh)
• Cài đặt phần quản lý giáo viên gồm tạo môn học, khóa học, lớp học, lập lịch
bài giảng, tạo diễn đàn trao đổi học tâp, quản lý sinh viên, quản lý việc làm bài
tập của sinh viên, quản trị lớp học).
• Cài đặt phần quả lý sinh viên gồm xem danh sách và yêu cầu tham gia các
khóa học, lớp học, môn học; lập thời khóa biểu học tập cho bản thân, tạo
forum học tập)
• Cài đặt phần hỗ trợ phụ huynh gồm xem kết quả học tập, thời khóa biểu của
sinh viên.
10

Đối tượng hướng đến


- Người dạy có hoặc không hiểu biết nhiều về công nghệ thông tin, muốn thử
nghiệm các phương pháp giảng dạy mới.
- Sinh viên đào tạo từ xa, sinh viên tại chức, sinh viên đào tạo tại các cơ sở liên
kết kể cả các sinh viên đang học tại cơ sở chính.
- Hỗ trợ theo dõi và quản lý của Phụ huynh sinh viên.
1.4. Phương pháp nghiên cứu
- Nghiên cứu và ứng dụng lý thuyết công nghệ mới về React, Mongodb, Note.js,
Meteor phục vụ đề tài
- Thu thập nghiên cứu của tác giả trong và ngoài nước liên quan đến đề tài.
- Thực tập và thiết kế theo quy trình của công ty TNHH S2.
1.5. Ý nghĩa khoa học và thực tiễn
Việc sử dụng các công nghệ mới đang được sử dụng trên toàn thế giới cho
thấy hướng nghiên cứu và phát triển mới, chưa được sử dụng và ứng dụng rộng rãi
tại Việt Nam cũng như trong các nghiên cứu công nghệ tại trường Đại học Nha
Trang.
Kết quả nghiên cứu giúp giáo viên có thể quản lý lớp học từ xa, không cần
phải điểm danh từng giờ lên lớp mà qua đó giám sát việc làm bài tập cá nhân, bài
tập nhóm trực tiếp ngay trên hệ thống website, hệ thống hỗ trợ giáo viên việc
thống kê các kết quả học tập cũng như thống kê mức độ của bộ đề để sau đó giáo
viên có thể cân nhắc đến việc ra đề thi và kiểm tra đối với từng môn học khác
nhau, việc thống kê bộ đề theo tỷ lệ làm bài của sinh viên hiện nay và đa số chưa
có ở các hệ thống dạy học trực tuyến tại các trường khác. Đồng thời hệ thống còn
có những giải pháp hỗ trợ việc chống gian lận trong tổ chức thi trực tuyến. Đây là
hạn chế chính của các hệ thống elearning hiện có.
Kết quả nghiên cứu giúp sinh viên có thể chủ động học tập mọi nơi trong
khuôn viên trường, ở nhà hay bất cứ đâu có kết nối mạng, tiết kiệm được các chi
phí đi lại mà việc học vẫn không giảm chất lượng. Giáo viên và sinh viên có thể
trao đổi với nhau thông qua việc chat trao đổi bài học như mạng facebook. Ngoài
11

ra hệ thống có thể hỗ trợ việc tổ chức các chương trình game show liên quan đến
vấn đề học thuật, tìm hiểu kiến thức xã hội.
1.6. Cấu trúc bài báo cáo
Cấu trúc bài báo cáo gồm 5 chương:
Chương 1: Tổng quan về đề tài.
Trong chương trình bày tổng quan về đề tài, lý do chọn đề tài, tính cấp thiết,
mục tiêu, cách tiếp cận, phạm vi nghiên cứu, nội dung nghiên cứu ý nghĩa
khoa học và thực tiễn của đề tài nghiên cứu và chỉ ra những vấn đề mà đề tài
cần tập trung nghiên cứu, giải quyết.

Chương 2. Hệ thống giảng dạy trực tuyến (E-Learning) và Công nghệ hỗ trợ
Nêu những vấn đề còn tồn tại, chỉ ra những vấn đề cần nghiên cứu và hướng giải
quyết, các vấn đề còn gặp phải tại các hệ thống E-Learning trên cả nước. Giới
thiệu cơ sở lý thuyết sử dụng các mô hình công nghệ mới React, mô hình
Reduct, Applo, MongoDB, Node.js, Meteor.
Chương 3: Khảo sát và phân tích hệ thống.
Khảo sát nhu cầu người dùng (Giảng viên, sinh viên và phụ huynh) và phân
tích thiết kế cơ sở dữ liệu tổng quát.
Chương 4: Cài đặt hệ thống và kết quả đạt được.
Các kết quả của việc cài đặt các mô-đun.
Chương 5: Kết luận và hướng phát triển toàn hệ thống.
Tổng kết kết quả đã thực hiện được và hướng phát triển đề tài.
12

CHƯƠNG 2: HỆ THỐNG GIẢNG DẠY TRỰC TUYẾN


(E-LEARNING) VÀ CÔNG NGHỆ HỖ TRỢ
2.1 Tổng quan về E-learning
E-learning là việc ứng dụng công nghệ thông tin, internet vào việc dạy và học
nhằm làm cho công việc giáo dục trở nên dễ dàng, rộng rãi và hiệu quả hơn.
E-learning là tập hợp đa dạng các phương tiện, công nghệ kỹ thuật cho giáo dục như
văn bản, âm thanh, hình ảnh, mô phỏng, trò chơi, phim, thư điện tử, các diễn đàn
thảo luận, các diễn đàn,…
E-learning cung cấp nội dung đào tạo trên nền Web có thể được cập nhật, phát hành
tức thời và thống nhất trên toàn cầu. Cung cấp nhiều công nghệ khác nhau để thiết
lập một giải pháp đào tạo tổng thể. Phương pháp mô phỏng và những bài tập, bài
kiểm tra sau khi kết thúc bài giảng, chương, phần và khóa học cho phép sinh viên tự
kiểm tra, đánh giá kết quả học tập và kỹ năng của mình.
E-Learning giúp cho cán bộ, giảng viên, sinh viên toàn trường hoàn toàn có thể học
tập bất cứ thời gian nào, tại bất cứ đâu. Với sinh viên, nó mở ra một môi trường học
tập mới, dễ dàng, linh hoạt và chủ động hơn nhiều. Với giảng viên hệ thống cho
phép gửi bài giảng điện tử cho sinh viên qua email hoặc website của Trường trước
khi lên lớp; tại lớp, giảng viên chỉ tập trung hướng dẫn sinh viên lĩnh hội những
kiến thức quan trọng hoặc thảo luận thay vì thuyết trình toàn bộ nội dung bài giảng
và đọc chép.
E-Learning giúp việc học tập trở nên thú vị hơn, hấp dẫn hơn và thuyết phục hơn,
đặc biệt là đối với các môn học khó và dễ nhàm chán nhờ các slide, hình ảnh, video
và audio minh họa một cách sinh động.
Cán bộ, giảng viên và sinh viên cần giao tiếp, cộng tác và chia xẻ kiến thức thì E-
learning có thể giúp chúng ta thu được những kết quả chắc chắn và lâu dài, không
chỉ thông qua nội dung mà đồng thời bằng cả cộng đồng mạng trực tuyến, hỗ trợ
“học tập thông qua nhận xét và thảo luận”.
E-Learning cho phép sinh viên tự quản lí được tiến trình học tập của mình theo cách
phù hợp nhất. Chúng ta có nhiều cách học khác nhau như đọc, xem, khám phá,
13

nghiên cứu, tương tác, thực hành, giao tiếp, thảo luận, chia xẻ kiến thức. Với E-
Learning sinh viên có thể truy cập tới rất nhiều nguồn tài nguyên phục vụ cho học
tập. Như vậy, mỗi người đều có quyền chọn lựa hình thức học tập phù hợp nhất với
khả năng và điều kiện của mình.
E-learning giúp cho việc học tập vẫn có thể được tiến hành gần như đồng thời trong
quá trình làm việc. Thực tế, 70% dung lượng học tập diễn ra trong quá trình làm
việc như: tìm kiếm thông tin, đọc tài liệu, trao đổi với bạn bè, đồng nghiệp.
Với E-Learning chúng ta trở nên năng động hơn. Cán bộ của trường có thể dùng
quỹ thời gian của mình để làm việc ngoài văn phòng (tại nhà, tại cơ sở đào tạo ở xa,
quán cafe hay một địa điểm nào đó có kết nối internet). E-Learning đóng một vai trò
rất quan trọng trong giảm thiểu lượng thời gian dành cho đào tạo cán bộ, giảng viên,
sinh viên.
2.2 Phân tích một số hệ thống E-Learning
Hiện nay, E-learning đang là một xu hướng giáo dục mới của thế giới. Theo
Cyber Universities, gần 90% trường Đại học tại Singapore sử dụng phương pháp
đào tạo trực tuyến và ở Mĩ con số này là hơn 80%. Một số công cụ phục vụ cho việc
giảng dạy E-learning mã nguồn mở cũng như mã nguồn đóng đang có trên thị
trường như Moodle, Blackboard, Edmodo.
Moodle là một trong các phần mềm học tập trực tuyến (Learning
Management System) mã nguồn mở phổ biến nhất với một cộng đồng lớn trên khắp
thể giới. Moodle cung cấp một bộ công cụ linh hoạt để hỗ trợ cả việc học tập và các
khóa học trực tuyến. Tuy nhiên một trong những nhược điểm chính của hệ thống
này là nó rất khó để thiết lập và điều chỉnh. Có rất nhiều công ty có thể giúp thiết
lập hệ thống và tùy chỉnh nó, nhưng các dịch vụ của họ là khá tốn kém, cộng với
một máy chủ và phần cứng riêng biệt.
Blackboard là một hệ thống quản lý học tập (Learning Management System)
được sử dụng rộng rãi. Blackboard là một sản phẩm cung cấp cho các doanh nghiệp
và các nhà giáo dục khả năng tiếp cận và dạy cho nhân viên hoặc những người học
của họ thông qua một môi trường ảo. Phần mềm cung cấp một hệ thống quản lý
14

khóa học, kiến trúc mở tùy chỉnh, và thiết kế khả năng mở rộng giúp người dùng
hợp nhất các hệ thống với hệ thống thông tin học sinh và quá trình xác thực. Tuy
nhiên hạn chế của Blackboard chính là chi phí rất đắt để triển khai và hệ thống
Blackboard phát triển trên nền tảng tương đối lạc hậu.
Edmodo là một nền tảng kiến thức xã hội cho sinh viên, học sinh, giáo viên
trong các trường học. Edmodo, giáo viên có thể tiếp tục thảo luận lớp học trực
tuyến, cung cấp các cuộc thăm dò để đánh giá sự hiểu biết của sinh viên và giải
thưởng phù hiệu cho học sinh dựa trên các hoạt động của học sinh. Edmodo kết nối
tất cả các giáo viên, phụ huynh, học sinh, và các quản trị viên trong trường hay học
khu của bạn với nhau để cải thiện mạng lưới học tập chuyên nghiệp, được hỗ trợ bởi
một cộng đồng toàn cầu của các nhà giáo dục. Tuy nhiên Edmodo vẫn còn khá hạn
chế về chức năng nếu so với Moodle, không cho phép người dùng tùy biến và
chuyển đổi vai trò. Mỗi nhóm học chỉ cho phép giáo viên dạy một môn học, gây
khó khăn cho người dùng.
Qua đó cho thấy một số hạn chế còn tồn tại ở các hệ thống E-Learning hiện nay:
- Chi phí cho việc xây dựng hệ thống cao.
- Sử dụng hệ thống giao diện tùy chỉnh, thân thiện phải trả phí cao.
- Công nghệ được sử dụng khá cũ, lạc hậu.
- Việc đưa hệ thống vào sử dụng cần có sự hỗ trợ nhiều để tập huấn sử dụng cho
các đối tượng không am hiểu nhiều về E-Learning.
- Chưa nổi bật được vấn đề chống gian lận trong thi cử.
Hướng nghiên cứu và phát triển:
- Hạ thấp chi phí tối đa cho việc xây dựng hệ thống.
- Xây dựng hệ thống giao diện thân thiện, người dùng không cần phải tập huấn sử
dụng cũng có thể sử dụng một cách thành thạo.
- Sử dụng các công nghệ hiện đại đang là giải pháp của nhiều công ty phần mềm
trong và ngoài nước.
- Xây dựng hệ thống hướng đến người dùng là chủ yếu, tăng cường việc trao đổi
thông tin giữa các đối tượng với nhau.
15

- Chú trọng vấn đề gian lận trong thi cử và đưa ra giải pháp thích hợp.
- Xây dựng hệ thống tracking mail tự động cho biết người nhận được mail đã
kiểm tra và nhận được mail của hệ thống hay chưa.
- Phân tích mức độ của bộ đề thông qua việc làm bài của sinh viên giúp giáo viên
nắm rõ tình hình lớp học từ đó có thể đưa ra bộ đề hợp lý.
2.3 Công nghệ hỗ trợ
2.3.1 Giới thiệu về Node.Js
2.3.1.1 Giới thiệu
- Node.js là một mã nguồn mở, một môi trường cho các máy chủ và ứng dụng
mạng.
- Node.js sử dụng Google V8 JavaScript engine để thực thi mã, và một tỷ lệ lớn
các mô-đun cơ bản được viết bằng JavaScript. Các ứng dụng node.js thì được
viết bằng JavaScript.
- Node.js chứa một thư viện built-in cho phép các ứng dụng hoạt động như một
Webserver mà không cần phần mềm như Nginx, Apache HTTP Server hoặc
IIS.
- Node.js cung cấp kiến trúc hướng sự kiện (event-driven) và non-blocking I/O
API, tối ưu hóa thông lượng của ứng dụng và có khả năng mở rộng cao
- Mọi hàm trong Node.js là không đồng bộ (asynchronous). Do đó, các tác vụ đều
được xử lý và thực thi ở chế độ nền (background processing)
2.3.1.2 Ứng dụng của node.js
- Xây dựng Websocket server (Chat server)
- Hệ thống Notification (Giống như facebook hay Twitter)
- Ứng dụng upload file trên client
- Các máy chủ quảng cáo
- Các ứng dụng dữ liệu thời gian thực khác.
2.3.1.3 Ưu nhược điểm của node.js
- Ưu điểm:
16

• Đặ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
single-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ạo thread mới cho mỗi truy vấn giống PHP. Ngoài ra, tận
dụng ưu điểm non-blocking I/O của Javascript mà Node.js tận dụng tối đa tài
nguyên của server mà không tạo ra độ trễ như PHP
• JSON APIs với cơ chế event-driven, non-blocking I/O(Input/Output) và mô
hình kết hợ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.
• NodeJS rất phù hợp để làm ứng dụng trên trang đơn ( Single page
Application) như Gmail. Với khả năng xử lý nhiều Request/s đồng thời thì
thời gian phản hồi nhanh. Các ứng dụng bạn định viết không muốn nó tải lại
trang, gồm rấ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 của bạn.
• Shelling tools unix NodeJS sẽ tận dụng tối đa Unix để hoạt động. Tức là
NodeJS có thể xử lý hàng nghìn Process và trả ra một luồng khiến cho hiệu
xuất hoạt động đạt mức tối đa nhất và tuyệt vời nhất.
• Luồng dữ liệu (Streamming Data) các web thông thường gửi HTTP request
và nhận phản hồi lại. Giả xử sẽ cần xử lý một luồng dữ liệu cực lớn, NodeJS
sẽ xây dự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.
• Với sự ra đời của các ứng dụng di động & HTML 5 nên Node.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,…  
- Nhược điểm:
Ứng dụng nặng tốn tài nguyên nếu bạn cần xử lý các ứng dụng tốn tài
nguyên CPU như encoding video, convert file, decoding encryption… hoặc
các ứng dụng tương tự như vậy thì không nên dùng NodeJS (Lý do: NodeJS
được viết bằng C++ và Javascript, nên phải thông qua thêm một trình biên
17

dịch của NodeJS sẽ lâu hơn 1 chút ). Trường hợp này bạn hãy viết một Add
on C++ để tích hợp với NodeJS để tăng hiệu suất tối đa!
2.3.2 Công nghệ Meteor
2.3.2.1 Giới thiệu
Meteor là một khung cộng tác JavaScript mới với mục đích tự động và đơn giản hóa
việc phát triển một ứng dụng web hoạt động thời gian thực. Nó xử lý giao tiếp thời
gian thực bằng một giao thức gọi là Giao thức Dữ liệu Phân tán (Distributed Data
Protocol - DDP), nó được hỗ trợ trên các trình duyệt mới hơn sử dụng WebSockets
và trên các trình duyệt cũ hơn sử dụng AJAX Long-Polling. Trong cả hai trường
hợp, giao tiếp giữa trình duyệt và máy chủ là trong suốt.
Giao thức DDP được thiết kế để làm việc với tập hợp các tài liệu JSON (JavaScript
Serialized Object Notation - Ký pháp đối tượng JavaScript tuần tự), khiến nó dễ
dàng tạo, cập nhật, xóa, truy vấn, và dĩ nhiên - xem các tài liệu JSON. Bởi DDP là
một giao thức nguồn mở, bạn có thể hình dung ra việc kết nối nó tới bất kỳ máy
khách hoặc nguồn dữ liệu nào bạn muốn. Nó có thể hoạt động ngay lập tức cùng với
MongoDB.
Trong thực tế, Meteor cung cấp hai cơ sở dữ liệu MongoDB: một cơ sở dữ liệu đệm
ở phía máy khách và một cơ sở dữ liệu MongoDB trên máy chủ. Khi người dùng
tạo ra một thay đổi đến một vùng dữ liệu - Ví dụ như nhấn nút Lưu (Save) - mã
JavaScript chạy trên trình duyệt cập nhật các mục trong cơ sở dữ liệu MongoDB nội
tại tương ứng và tạo ra một yêu cầu DDP tới máy chủ. Đoạn mã ngay lập tức được
xử lý như thể là đã thành công bởi vì nó không cần chờ đợi để máy chủ trả lời.
Trong khi đó, máy chủ âm thầm cập nhật dữ liệu. Nếu thao tác ở phía máy chủ thất
bại hoặc trả về một kết quả không mong muốn, mã JavaScript ở phía máy khách
ngay lập tức được điều chỉnh lại dựa vào dữ liệu vừa được trả về từ máy chủ. Sự
điều chỉnh này được gọi là bồi hoàn trễ - latency compensation và tạo thêm cảm
nhận về tốc độ cho người dùng.
Mặc dù hệ thống khuôn mẫu của Meteor được thiết kế một cách rõ ràng để dễ
dàng tạo ra sự giao tiếp theo thời gian thực. Trong hầu hết các khung cộng tác web,
18

bạn có thể dễ dàng trộn lẫn HTML (Ngôn ngữ đánh dấu văn bản siêu liên kết -
Hypertext Markup Language)—hoặc tương đương với HTML, ví dụ như HTML
Abstraction Markup Language (Haml)—với mã nguồn. Điều này cho phép bạn dễ
dàng chèn các giá trị động từ cơ sở dữ liệu vào các trang mà bạn gửi cho người sử
dụng. Sau đó, bạn có trách nhiệm đặt một hệ thống tại chỗ để giám sát các sự thay
đổi trên dữ liệu và cập nhật các đánh đấu của bạn. Tuy vậy, hệ thống khuôn mẫu
trong Meteor được thiết kế để ghi lại dữ liệu nào được truy cập từ một khuôn mẫu
và tự động thiết lập các lời gọi lại để thay đổi HTML khi mà dữ liệu bên dưới thay
đổi, khiến cho các khuôn mẫu thời gian thực nhanh chóng và dễ dàng.
2.3.2.2 Ưu và nhược điểm của meteor
- Ưu điểm
• Không cần quá nhiều kiến thức lập trình, chỉ cần HTML, CSS, javascript,
chút kiến thức về OOP và database là được. Mọi thao tác tới database đều
thông qua các API của Meteor, viết bằng Javascript.
• Meteor hướng tới các đối tượng không giỏi lập trình. Do đó, Meteor rất dễ
học dễ làm, tài liệu về Meteor cũng rất phong phú và dễ tìm.
• Nhanh chóng tạo ra sản phẩm, được các công ty start-up, các doanh nghiệp
nhỏ ưu chuộng (Ngày xưa Ruby on Rail cũng nổi tiếng nhờ lý do này).
• Có vô số module đã viết sẵn, chỉ cần gắn vào và sử dụng. Ví dụ việc đăng
nhập, phân quyền khá phức tạp trong C#, Java, … trong Meteor chỉ cần gắn
module vào, chỉnh sửa một chút là được.
• Dân Developer cũng thích Meteor, vì nó tích hợp đủ thứ công nghệ: Node.js,
Express, MongoDB, WebSocket, Phonegap và realtime.
• Code ít, được nhiều, Deploy rất nhanh. Vừa code xong và muốn đưa lên web,
chỉ cần “meteor deploy hoangph.meteor.com”. Muốn có ứng dụng di động,
chỉ cần “meteor build android” là xong.
- Nhược điểm:
• Chỉ mới hỗ trợ MongoDB làm Database Engine.
19

• View Engine Blaze hơi khó sử dụng. Hiện tại ta có thể thay thế bằng
AngularJS.
• SEO cũng chưa tốt, do Meteor tập trung vào phát triển ứng dụng real time,
tương tác cao. Nếu cần làm web bán hàng, blog, trang tin tức, PHP & Joomla
hay WordPress vẫn là lựa chọn hàng đầu nhé.
• Module nhiều nhưng document không rõ ràng (Tình trạng tương tự như npm
của Nodejs, có rất nhiều module nhưng document rất mơ hồ, khó sử dụng).
2.3.2.3 Cấu trúc của một project meteor
a. Giới thiệu về import và export:
Meteor ở phiên bản 1.3 xuất hiện các trường export và import cho phép truy xuất
các file javascript, file css và file html một cách là khá dễ dàng.
- Import file thông thường:
import '../../api/lists/methods.js'; // import from relative
path
import '/imports/startup/client'; // import module with
index.js from absolute path
import './loading.html'; // import Blaze compiled
HTML from relative path
import '/imports/ui/style.css'; // import CSS from absolute path
- Import từ packages:
import moment from 'moment'; // default import from npm
import { HTTP } from 'meteor/http'; // named import from
Atmosphere

- Sử dụng require (tương tự như import):


if (Meteor.isClient) {
require('./client-only-file.js');
}
Export:
20

export const listRenderHold = LaunchScreen.hold(); // named


export
export { Todos }; // named
export
export default Lists; // default
export
export default new Collection('lists'); // default
export
b. Cấu trúc file:
imports/
startup/ #Thư mục chứa các file thiết lập khi ứng dụng khởi chạy
client/ #Thư mục chứa những thiết lập phía client
index.js #File chứa các thiết lập chính cho client
routes.js #File thiết lập tất cả các routes của hệ thống
useraccounts-configuration.js #File thiết lập user account
server/
fixtures.js #File thêm vào database một số dữ liệu nền khi ứng dụng
khởi chạy
index.js #File import server startup through a single index entry point
api/ #Thư mục chứa các collection của ứng dụng
lists/ # a unit of domain logic
server/
publications.js # all list-related publications
publications.tests.js # tests for the list publications
lists.js # definition of the Lists collection
lists.tests.js # tests for the behavior of that collection
methods.js # methods related to lists
methods.tests.js # tests for those methods
ui/
21

components/ # thư mục chứa các component tương ứng với các chức năng
của
# ứng dụng các chức năng này có thể lồng vào nhau thông qua
import
layouts/ # wrapper components for behaviour and visuals
pages/ # entry points for rendering used by the router
client/ # Phía client
main.js # tất cả chức năng phía client sẽ được import vào đây
server/ # Phía server
main.js # tất cả chức năng phía server sẽ được import vào đây
2.3.2.4 Một số package meteor được sử dụng
- Dotansimha:accounts-ui-angular
• Một package của angular cung cấp dịch vụ đăng ký đăng nhập và xác thực
người dùng trong hệ thống.
• Để cài đặt gõ lệnh: meteor add dotansimha:accounts-ui-angular.
- Accounts-facebook
• Cung cấp dịch vụ đăng nhập thông qua tài khoản facebook bằng cách liên kết
với một ứng dụng facebook.
• Để cài đặt gõ lệnh: meteor add accounts-facebook.
- Accounts-google:
• Tương tự accounts-facebook đối với tài khoản google.
• Để cài đặt gõ lệnh: meteor add accounts-google.
- Email:
• Cung cấp dịch vụ gửi mail thông qua một tài khoản email được liên kết với
ứng dụng.
• Để cài đặt gõ lệnh: meteor add email.
- Session:
• Cung cấp dịch vụ lưu trữ dữ liệu tạm thời, sử dụng để lưu trữ và chuyền giữ
liệu giữa các trang và các module.
22

• Để cài đặt gõ lệnh: meteor add session


2.3.3 Tìm hiểu về MongoDB
2.3.3.1 Cơ sở dữ liệu NoSQL là gì?
NoSQL thường được hiểu là Not Only SQL một dạng cơ sở dữ liệu cung cấp
cơ chế lưu trữ và truy xuất dữ liệu theo mô hình khác với các cơ sở dữ liệu quan hệ.
NoSQL được đánh giá là có phương thức tiếp cận thiết kế đơn giản, dễ dàng mở
rộng ngang và có độ sẵn sàng đáp ứng cao, dễ dàng kiểm soát. Cấu trúc dữ liệu của
NoSQL được lưu trữ dưới dạng: key-value, document hoặc graph khác với cách lưu
trữ mà các RDBMS đang sử dụng hiện nay. Tính chất lưu trữ đơn giản, không ràng
buộc vì vậy hiệu suất hoạt động của NoSQL nhanh hơn RDBMS rất nhiều.
Được gọi là Not Only SQL có ý nghĩa những cơ sở dữ liệu thuộc họ NoSQL
không những có thể hỗ trợ các truy vấn giống như SQL mà có thể làm được nhiều
hơn thế. Hiện nay NoSQL đang được phát triển với tốc độ nhanh, được ứng dụng
vào nhiều dự án Big Data (dữ liệu lớn) và các ứng dụng mạng xã hội yêu cầu đáp
ứng thời gian thực.
Ngày nay, với sự phát triển của các ứng dụng Big Data mạng xã hội, yêu cầu
đòi hỏi xử lý một lượng dữ liệu vô cùng lớn, tăng lên nhanh chóng hàng ngày. Vì
vậy mà NoSQL trở thành một cơ sở dữ liệu không thể thiếu để giải quyết những bài
toán như vậy. Ví dụ như Facebook sử dụng NoSQL kết hợp với RDBMS để lưu trữ
hàng tỷ bài viết và bình luận đáp ứng hơn 1 tỷ thành viên sử dụng dịch vụ mà vẫn
luôn hoạt động ổn định, tính sẵn sàng cao và khả năng phân tán dữ liệu vô tận.
2.3.3.2 Giới thiệu về MongoDB :
MongoDB là một cơ sở dữ liệu mã nguồn mở thuộc họ nhà NoSQL được
phát hành sử dụng miễn phí bởi công ty MongoDB. Với những ý tưởng lưu trữ mới.
MongoDB hoạt động trên mọi hệ điều hành phổ biến hiện nay như: Windows,
Linux, OS X và hỗ trợ đầy đủ các driver cho các ngôn ngữ lập trình để giao tiếp với
chúng một cách dễ dàng nhất.
23

Mỗi một table (bảng dữ liệu) trong SQL sử dụng thì trong MongoDB gọi là
collection (tập hợp). Mỗi một record (bản ghi) trong MongoDB được gọi là
document (tài liệu)
a. Một bản ghi của Mongodb được lưu trữ như thế nào?
Một bản ghi của MongoDB được lưu trữ dưới dạng document (tài liệu), nó được ghi
xuống với cấu trúc field (trường) và value (giá trị). Nó giống như là một đối
tượng JSON có dạng như sau:

Hình 2-1. Cách MongoDB lưu trữ một bản ghi.


Điều đó giúp bạn có thể dễ dàng ép kiểu sang array (mảng) để lập trình các ứng
dụng một cách dễ dàng hơn. Nói một cách dễ hiểu thì mỗi một bản ghi của
MongoDB là một mảng dữ liệu riêng biệt bao gồm các cặp key, value khác nhau do
đó cách lưu trữ của MongoDB là phi cấu trúc dữ liệu.
b. Mongodb hoạt động như thế nào?
MongoDB hoạt động dưới một tiến trình ngầm service luôn mở một cổng (Cổng
mặc định là 27017) để lắng nghe các yêu cầu truy vấn, thao tác từ các ứng dụng gửi
vào sau đó mới tiến hành xử lý.
Mỗi một bản ghi của MongoDB được tự động gắn thêm một field có tên “_id” thuộc
kiểu dữ liệu ObjectId mà nó quy định để xác định được tính duy nhất của bản ghi này
so với bản ghi khác, cũng như phục vụ các thao tác tìm kiếm và truy vấn thông tin về
sau.
Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn
thông tin đạt hiệu suất cao nhất.
Mỗi khi có một truy vấn dữ liệu, bản ghi được cache (ghi đệm) lên bộ nhớ RAM, để
phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng.
24

Khi có yêu cầu thêm/sửa/xóa bản ghi, để đảm bảo hiệu suất của ứng dụng mặc định
MongoDB sẽ chưa cập nhật xuống ổ cứng ngay, mà sau 60 giây MongoDB mới
thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng.
2.3.3.3 Cơ chế phân quyền và bảo mật của MongoDB:
Cũng như các hệ cơ sở dữ liệu thông thường khác, MongoDB cũng có cơ chế xác
thực phân quyền và bảo mật linh hoạt để quản trị viên có thể cấp phát quyền thao
tác với cơ sở dữ liệu một cách đơn giản nhất.
MongoDB có thể truy cập mà không cần xác thực khi bạn tắt chế độ xác thực quyền
sở hữu với cơ sở dữ liệu.
Mặc định MongoDB sẽ có một tài khoản có tên truy cập là “admin” có quyền hạn
cao nhất, có quyền thao tác với tất cả các cơ sở dữ liệu được tạo ra trên hệ thống.
- Ưu điểm
• Dữ liệu lưu trữ phi cấu trúc, không có tính ràng buộc, toàn vẹn nên tính sẵn
sàng cao, hiệu suất lớn và dễ dàng mở rộng lưu trữ.
• Dữ liệu được caching (ghi đệm) lên RAM, hạn chế truy cập vào ổ cứng nên
tốc độ đọc và ghi cao.
- Nhược điểm
• Không ràng buộc, toàn vẹn nên không ứng dụng được cho các mô hình giao
dịch yêu cầu độ chính xác cao.
• Không có cơ chế transaction (giao dịch) để phục vụ các ứng dụng ngân hàng
• Dữ liệu được caching, lấy RAM làm trọng tâm hoạt động vì vậy khi hoạt
động yêu cầu một bộ nhớ RAM lớn.
• Như đã giới thiệu ở trên, mọi thay đổi về dữ liệu mặc định đều chưa được ghi
xuống ổ cứng ngay lập tức vì vậy khả năng bị mất dữ liệu từ nguyên nhân
mất điện đột xuất là rất cao.
2.3.3.4 So sánh với SQL
Bảng 3-1. Bảng so sánh đối tượng trong SQL và MongoDB.
Đối tượng SQL Đối tượng Mongodb
Database Database
Table Collection
25

Row Document or BSON document


Column Field
Index Index
Khóa chính Khóa chính
Có thể sử dụng một hoặc nhiều trường Trong MongoDB, mã primary key tự
dữ liệu làm khóa chính sinh và gán vào trường _id

Bảng 3-2. Bảng so sánh các câu lệnh cơ bản trong SQL và MongoDB.
Các câu lệnh SQL cơ bản Các câu lệnh Mongobd cơ bản
CREATE TABLE users ( * Tạo mới một collection
id MEDIUMINT NOT NULL db.createCollection("users")
AUTO_INCREMENT, * Hoặc có thể chỉ cần dùng lệnh insert
user_id Varchar(30), db.users.insert( {
age Number, user_id: "abc123",
status char(1), age: 55,
PRIMARY KEY (id) status: "A"
) })
db.users.createIndex( { user_id: 1 } )
CREATE INDEX idx_user_id_asc
ON users(user_id)
CREATE INDEX db.users.createIndex( { user_id: 1, age:
idx_user_id_asc_age_desc -1 } )
ON users(user_id, age DESC)
DROP TABLE users db.users.drop()
INSERT INTO users(user_id, db.users.insert(
age, { user_id: "bcd001", age: 45, status:
status) "A" }
VALUES ("bcd001", )
45, "A")
SELECT * db.users.find()
FROM users
SELECT user_id, status db.users.find(
FROM users { },
26

{ user_id: 1, status: 1, _id: 0 }


)
SELECT * db.users.find(
FROM users { status: "A" }
WHERE status != "A" )
SELECT user_id, status db.users.find(
FROM users { status: "A" },
WHERE status = "A" { user_id: 1, status: 1, _id: 0 }
)
SELECT * db.users.find(
FROM users { status: "A" }
WHERE status = "A" )
SELECT id, db.users.find(
user_id, { },
status { user_id: 1, status: 1 }
FROM users )
SELECT * db.users.find(
FROM users { $or: [ { status: "A" } ,
WHERE status = "A" { age: 50 } ] }
AND age = 50 )
SELECT * db.users.find(
FROM users { $or: [ { status: "A" } ,
WHERE status = "A" { age: 50 } ] }
OR age = 50 )
SELECT * db.users.find(
FROM users { age: { $gt: 25 } }
WHERE age > 25 )
SELECT * db.users.find(
FROM users { age: { $lt: 25 } }
WHERE age < 25 )
SELECT * db.users.find(
FROM users { age: { $gt: 25, $lte: 50 } }
27

WHERE age > 25 )


AND age <= 50
SELECT * db.users.find( { user_id: /bc/ } )
FROM users
WHERE user_id like "%bc%"
SELECT * db.users.find().limit(5).skip(10)
FROM users
LIMIT 5
SKIP 10
SELECT * db.users.find( { status:
FROM users "A" } ).sort( { user_id: -1 } )
WHERE status = "A"
ORDER BY user_id DESC
SELECT COUNT(*) db.users.count()
FROM users or
db.users.find().count()
UPDATE users db.users.update(
SET status = "C" { age: { $gt: 25 } },
WHERE age > 25 { $set: { status: "C" } },
{ multi: true }
)
DELETE FROM users db.users.remove( { status: "D" } )
WHERE status = "D"

2.3.4 Tìm hiểu về React và mô hình Redux


- Giới thiệu về React
React là thư viện viết bằng javascript taọ ra bởi Facebook, dùng để xây dựng giao
diện người dùng (User interface - UI).
28

React được xây dựng xung quanh các component, chứ không dùng template như các
freamework khác. Tạo một component bằng phương thức createClass của đối tượng
React.
Đặc tính của React
• Props: Khi sử dụng components, chúng ta có thể thêm cái attributes gọi là
props. Những attributes này được gọi ra trong component bằng this.props.
• Trạng thái State: Mọi component đều có một object state và một object
props. State được thiết lặp sử dụng method setState.
• Dữ liệu một chiều: Trong react dòng dữ liệu của ứng dụng là một chiều
thông qua state và props, có nghĩa là trong cấu trúc nhiều tầng components,
một component cha có thể quản lý state và truyền xuống component bên
dưới thông qua props.
• State có thể được update sử dụng method setState để đảm bảo UI được cập
nhật liên tục, kết quả sẽ được truyền xuống component con sử dụng attributes
thông qua this.props.
- Giới thiệu về Redux
Redux là một thư viện Javascript giúp tạo ra một lớp quản lý trạng thái của ứng
dụng, được dựa trên nền tảng tư tưởng của kiến trúc Flux do Facebook giới thiệu,
redux thường kết hợp hoàn hảo với React.
• Nguyên lý:
˖ Nguồn dữ liệu tin cậy duy nhất: State của toàn bộ ứng được chứa trong
một object tree nằm trong Store duy nhất
˖ Trạng thái chỉ được phép đọc: Cách duy nhất để thay đổi Statecủa ứng
dụng là phát một Action
˖ Thay đổi chỉ bằng hàm thuần túy: Để chỉ ra cách mà State được biến đổi
bởi Action chúng ta dùng các pure function gọi là Reducer
• Cấu trúc
Cấu trúc của mô hình Redux gồm 4 phần:
˖ Action: là nói mang các thông tin dùng để gửi từ ứng dụng đến Store.
29

˖ Reducer: là nơi xác định State thay đổi như thế nào.
˖ Store: là nơi quản lý State, cho phép truy cập state qua getState(), update
State qua dispatch(action), đăng kí listener qua subscribe(listener).
˖ View: hiển thị dữ liệu được cung cấp bởi store.
2.3.5 Tìm hiểu về Webpack
- Giới thiệu
Webpack là một module bundler nó nhận các module cùng với các dependencies và
generate ra các static asets tương ứng.
- Mục tiêu
Chia các cây dependency thành các chunk được load khi cần thiết
• Thời gian init ngắn hơn.
• Mỗi static asset đểu có thể trở thành một module.
• Khả năng tích hợp 3rd-party library như module.
• Khả năng custom gần như mọi thành phần của module bundler.
• Phù hợp với các dự án lớn.
30

CHƯƠNG 3: KHẢO SÁT VÀ PHÂN TÍCH HỆ THỐNG


3.1. Khảo sát nhu cầu các đối tượng sử dụng
3.1.1. Đối tượng giáo viên
- Tạo môn học, khóa học, lớp học:
Giáo viên trước khi tham gia giảng dạy phải tạo các lớp học và hệ thống sẽ tự động
gửi mã code tham gia đến email của các sinh viên.
- Tạo kì thi:
• Mã code tự sinh sau mỗi lần tạo kì thi khác nhau.
• Mỗi kì thi cần phải có tên của kì thi và mô tả về kì thi để cho người tham gia
có thể hiểu rõ được kì thi.
• Cần cài đặt số lượng câu hỏi trước khi tạo ra bộ đề thi để người ra đề dễ dàng
kiểm soát được đề thi của mình so với mức điểm đã đưa ra.
• Mỗi đề thi cần được trộn ngẫu nhiên từ bộ đề gốc.
• Bộ đề thi được tạo có thể tích hợp các dữ liệu đa phương tiện ( văn bản, hình
ảnh, âm thanh và video)
• Bộ đề của mỗi kì thi của giáo viên có thể công khai cho cộng đồng giáo viên
cùng sử dụng hoặc chỉ riêng mình người ra đề biết là tùy chọn ở giáo viên tạo
đề thi.
- Quản lý tài khoản và thông tin cá nhân.
Giáo viên có thể tùy chỉnh thông tin cá nhân của bản thân và quản lý các tài khoản
tham gia vào lớp học đối với các lớp khác nhau hoặc quản lý các lớp học do cá
nhân tạo và dạy.
- Quản lý sinh viên:
Quản lý sinh viên đối với các lớp học có sinh viên theo học, giáo viên có thể
thêm sinh viên, xóa sinh viên, phân quyền cho sinh viên các chức năng cần thiết
trong một lớp học trên hệ thống.
- Quản lý tài liệu, thêm, xóa, sửa các file tài liệu liên quan đến bài giảng, bài tập
trong mỗi lớp học.
- Thông báo nhắc nhở sinh viên qua hộp mail tự động.
31

- Lập lịch cho bài giảng theo tuần cụ thể.


- Chat online hỗ trợ trực tuyến cho sinh viên.
- Quay video trực tuyến để hướng dẫn học tập cho sinh viên.
- Tạo diễn đàn trao đổi học tập.
- Thống kê kết quả học tập của sinh viên qua các bài tập ôn, các bài thi.
- Thống kê các mức độ rất dễ, dễ, trung bình, khó, rất khó của mỗi câu hỏi để
giáo viên nắm biết được tình hình học tập và ôn luyện của sinh viên từ đó rút
kinh nghiệm và đưa ra bộ đề phù hợp với sinh viên.
- Thấy được các đối tượng đang online và có thể mời tham gia đề thi của mình
qua hình thức gửi thông báo đến tài khoản người đang online được mời với mã
code đề thi đi kèm.
- Theo dõi sinh viên ở các hình thức có thể để giảm hình thức gian lận mức tối thiểu.
3.1.2. Đối tượng sinh viên
- Đối tượng sinh viên có thể chuyển đổi vai trò thành giáo viên để tạo nhóm học
tập hoặc dạy một môn học nào đó.
- Xem các danh sách khóa học, lớp học, môn học.
- Đăng kí môn học thông qua mã giáo viên cung cấp hoặc tìm kiếm theo tên môn
học dưới sự cho phép của giáo viên.
- Thi trực tuyến kết quả sẽ được trả về ngay trong thời gian thi;
- Chat trực tuyến;
- Có thể tự tạo nhóm học tập;
- Lên kế hoạch học tập cho bản thân;
- Nhận được thông báo nhắc nhở các kì thi qua mail của giáo viên;
- Sau khi kết thúc bài thi thì sinh viên có thể xem và chia sẻ kết quả thi lên trang
facebook cá nhân của mình.
- Quản lý tài khoản và thông tin cá nhân.
3.1.3. Đối tượng phụ huynh
- Xem kết quả ôn tập và thống kê kết quả học tập của sinh viên.
32

3.2. Thiết kế cơ sở dữ liệu


3.2.1. Đặc tả hệ thống
Các chức năng chính:
- Đối với giáo viên:
• Tạo lớp học, khóa học, môn học, tạo kì thi.
• Tổ chức thi.
• Thống kê tỷ lệ các mức độ của đề thi.
• Quản lý lớp học (sinh viên, tài liệu, bài giảng, bài tập trong lớp học).
• Chat trực tuyến với sinh viên.
• Thông báo kết quả học tập cho sinh viên.
• Lập lịch bài giảng.
- Đối với sinh viên:
• Tham gia kì thi, ôn luyện.
• Chat trực tuyến.
• Học tập và tải bài giảng của giáo viên.
• Lập lịch học tập.
- Đối với phụ huynh
• Xem kết quả học tập
• Thống kê kết quả học tập của sinh viên
33

3.2.2. Sơ đồ phân rã chức năng

Hình 3-2. Sơ đồ phân rã chức năng.

- Mô hình tổng quát (hình 4.1) bao gồm các chức năng chính cho 3 đối tượng
giáo viên, sinh viên và phụ huynh. Các chức năng này được phân tích và tổng
quát tại mục 4.2.1 đặc tả hệ thống.
3.2.3. Sơ đồ lớp
- Sơ đồ lớp tổng quát
Sơ đồ lớp tổng quát bao gồm 10 bảng cơ bản tập trung tại các chức năng đối với
giáo viên trong một lớp học.
34

Hình 3-3.Sơ đồ lớp tổng quát.


33

- Sơ đồ lớp tổng quát bao gồm các bảng:


• Lớp môn học (ClassSubject)
• Lớp (Classes)
• Khóa học (Course)
• Đối tượng quản lý (AccountingObject)
• Môn học (Subject)
• Hoạt động/ bài đăng (Activity)
• Chủ đê (Theme)
• Bài giảng (Topic)
• Tập tin (File)
• Bình luận (MemberReply)
34

• Sơ đồ phân rã từ sơ đồ lớp tổng quát cho chức năng đăng bài.

Hình 3-4. Sơ đồ phân rã từ sơ đồ lớp chức năng đăng bài


Sơ đồ bao gồm bảng Bài giảng (Topic) ứng với mỗi bảng Chủ đề (Topic) gồm nhiều
bảng Bình luận (MemberReply), nhiều tập tin (File), liên kết một một với bảng Hoạt
động/ bài đăng (Activity); mỗi bảng Bình luận (MemberReply) ứng với nhiều tập tin
(File); bảng Chủ đề (Theme) liên kết một nhiều với bảng Hoạt động/ bài đăng (Activity);
bảng Hoạt động/bài đăng (Activity) liên kết một nhiều với bảng Chủ đề lớp học
(ClassSubject) được phân tích rõ hơn ở sơ đồ phân rã hình 3-4.
35

• Sơ đồ phân rã từ sơ đồ lớp tổng quát chức năng tạo lớp học.

Hình 3-5. Sơ đồ phân rã từ sơ đồ lớp chức năng tạo mới khoa học, lớp học,
môn học.
Sơ đồ phân rã gồm bảng Chủ đề lớp học (ClassSubject) liên kết một nhiều với bảng
Hoạt động/ bài đăng (Activity), liên kết một nhiều với bảng Lớp học (Classes),
bảng Môn học (Subject), bảng Khóa học (Course) và liên kết một một với bảng Đối
tượng quản lý (AccountingObject).
36

- Sơ đồ lớp chức năng chat

Hình 3-6. Sơ đồ lớp chức năng chat.


Sơ đồ chức năng chat bao gồm bảng dữ liệu Người dùng (User) liên kết 0-nhiều với
bảng Thông báo (Notification), liên kết 1-nhiều với bảng Nội dung chat
(ChatContent), bảng Dữ liệu chat (ChatData). Bảng Dữ liệu chat (ChatData) liên kết
1-nhiều với bảng Nội dung chat (ChatContent).
37

- Sơ đồ lớp cho chức năng tổ chức kì thi

Hình 3-7. Sơ đồ lớp chức năng tổ chức kì thi.


Sơ đồ lớp tổ chức kì thi gồm các bảng dữ liệu: bảng Kì thi/ kiểm tra (Examination)
liên kết 0-1 với bảng Tạo câu hỏi (QuestionSet), liên kết 1-nhiều với bảng Người
dùng - kì thi (UserExame); bảng Tạo câu hỏi (QuestionSet) liên kết 1-nhiều với
bảng Lưu danh sách câu hỏi (QuestionHave); bảng Lưu danh sách câu hỏi
(QuestionHave) liên kết 1-nhiều với bảng Câu hỏi (Question); Bảng Câu hỏi
(Question) liên kết 1-1 với bảng Kết quả (Resuit); bảng Kết quả (Result) liên kết bắt
buộc 1-nhiều với bảng Người dùng - kì thi (UserExame); bảng Người chơi (Player)
liên kết 1- nhiều với bảng Người dùng - kì thi (UserExame) và liên kết bắt buộc 0-1
với bảng Người dùng (User) của hệ thống.
38

- Sơ đồ lớp chức năng phân quyền

Hình 3-8. Sơ đồ lớp chức năng phân quyền.


Sơ đồ chức năng phân quyền bao gồm bảng Hồ sơ (Profiles) liên kết 1-nhiều với
bảng Quyền (Permisions); bảng Quyền (Permisions) liên kết 1- nhiều với bảng Đối
tượng Quản lý (AccountingObject), bảng Người dùng (Users).
39

CHƯƠNG 4: CÀI ĐẶT HỆ THỐNG


VÀ KẾT QUẢ ĐẠT ĐƯỢC
4.1. Giao diện tạo kì thi
- Nhập thông tin cơ bản:

Hình 4-9. Giao diện tạo kì thi với thông tin cơ bản.
• Một kì thi gồm 3 thông tin cơ bản mã kì thi, tên kì thi và mô tả. Mã kì thi sẽ
được hệ thống sinh tự động, tên kì thi và mô tả do người dung nhập (Hình 5-1).
• Sau khi nhập thông tin cơ bản người dùng sẽ tạo câu hỏi cho kì thi gồm 2 tùy
chọn, tương ứng với 2 nút bấm “câu hỏi tự tạo” và “ngân hàng câu hỏi”.
- Tạo mới câu hỏi:
40

• Cho phép nhập những thông tin cơ bản của một bộ câu hỏi như tiêu đề,
• Mô tả điểm số của một câu hỏi và chọn mộn học cho câu hỏi đó (có thể có
hoặc không).
• Người dùng có thể thêm câu hỏi trực tiếp trên giao diện hoặc thêm câu hỏi từ
file .txt
- Thêm câu hỏi
41

Hình 4-11.Giao diện thêm câu hỏi.

Hình 4-12.Giao diện xem lại câu hỏi.


• Câu hỏi sau khi người dùng thêm từ file hoặc tạo mới sẽ được hiển thị ở ở
phần thêm nội dung (hình 4-3), người dùng có thể thêm file ảnh, thêm video,
thêm sửa hoặc xóa nội dung bằng các nút tương ứng.
• Sau khi hoàn thành việc thêm và chỉnh sử nội dung câu hỏi và bấm nút xem lại
giao diện xem lại sẽ xuất hiện (hình 4-4), tại đây họ có thể xem lại nội dung
tổng thể của bộ câu hỏi, và cơ cấu lại điểm số, cuối cùng ấn nút hoàn thành để
42

lưu bộ câu hỏi. Ngoài ra còn có chức năng chia sẽ với cộng đồng cho phép
chia sẽ đề thi của người tạo với mọi người.
- Thêm câu hỏi sẵn có
• Gồm 2 chế độ thêm lại câu hỏi do chính người dùng tạo hoặc thêm câu hỏi
được chia sẽ với cộng đồng mỗi hình thức lại có hai chế độ thêm, thêm lần
lượt và thêm ngẫu nhiên.

Hình 4-14.Giao diện thêm câu hỏi từ câu hỏi cá nhân (thêm ngẫu nhiên)

Hình 4-13. Giao diện thêm câu hỏi từ câu hỏi cá nhân (thêm lần lượt).

• Với thêm lần lượt người dùng sẽ chọn các bộ câu hỏi hoặc câu hỏi sẳn có (hình 4-5).
• Với thêm ngẫu nhiên người dùng sẽ chọn môn học và nhập số lượng câu hỏi
dễ khó và trung bình, mức độ này sẽ được quyết định bởi tỉ lệ trả lời đúng của
các thí sinh (trên 60% là dễ, từ 20% đến 60% là trung bình, trên 20% là khó).
43

• Thêm câu hỏi được chia sẽ với cộng đồng cũng có giao diện và tính năng tương
tự.
44

Hình 4-7. Giao diện thêm câu hỏi từ câu hỏi cộng đồng (thêm lần lượt) .

Hình 4-8.Giao diện thêm câu hỏi từ câu hỏi cộng đồng (thêm ngẫu nhiên).

Hình 4-15.Giao diện cấu hình kì thi.


45

- Cấu hình đề thi

• Cho phép cấu hình thời gian làm bài, số lượng sinh viê tối đa và hình thức của kì thi.
• Sau khi bấm hoàn tất kì thi sẽ được tạo.

4.2. Giao diện thi:


Có hai chế độ thi, thi trên lớp và thi tại nhà
46

- Giao diện đăng kí thi:

Hình 4-16.Giao diện đăng kí thi của thí sinh.


Thí sinh nhập mã và ấn tham gia, sẽ có webcam tự động chụp ảnh thí sinh lúc đăng
kí và lưu vào cơ sở dữ liệu.
- Giao diện thi trên lớp

Hình 4-17.Giao diện thi trên lớp của giáo viên.


47

Hình 4-18.Giao diện thi trên lớp của thí sinh.


• Đối với kì thi trên lớp giao diện của giáo viên bao gồm nội dung câu hỏi và
các nút chuyển tiếp, giao diện của sinh viên bao gồm các đáp án tương ứng với
các câu hỏi được giáo viên chọn thông qua các nút chuyển tiếp.
• Nội dung câu hỏi có thể được trình diễn trên các thiết bị trình chiếu, để thí sinh
xem và chọn trả lời thích hợp nhất.
• Giáo viên có thể bấm dừng đề kết thúc kì thi bất kì lúc nào.
- Giao diện thi tại nhà:

Hình 4-19.Giao diện thi tại nhà của giáo viên


48

Hình 4-20. Ảnh chụp màn hình của thí sinh

Hình 4-21.Giao diện thi tại nhà của thí sinh


• Đối với hình thức thi tại nhà giao diện của giáo viên sẽ hiển thị những thông
tin cơ bản của kì thi, thời gian còn lại và thông tin của thí sinh bao thanh tiến
trình cho biết tiến độ làm bài và điểm số mà thi sinh đạt được trong quá trình
làm bài, ngoài ra còn cho hiển thị ảnh chụp webcam của thí sinh trong suốt
quá trình làm bài (hình 4-15).
49

• Giao diện thi tại nhà của thí sinh bao gồm nội dung câu hỏi, đáp án, hình ảnh
hoặc video nếu có và thời gian còn lại, cho phép thí sinh tự do chọn câu hỏi để
trả lời.
• Khi hết thời gian quy định kì thi sẽ tự kết thúc.
Giao diện kết quả:

Hình 4-23. Giao diện kết quả.

Hình 4-22. Giao diện in kết quả của thí sinh


50

Giao diện kết quả hiển thị thông sinh thí sinh xếp giảm dần theo điểm số, khi ấn vào
nút kết quả một tab mới sẽ xuất hiện, hiển thị kết quả của thí sinh dưới dạng trang in
A4 (hình 4-17).

4.3. Giao diện thống kê câu hỏi


- Thống kê điểm số theo các kì thi:

Hình 4-24. Giao diện thống kê theo điểm số.


Giao diện thống kê theo điểm số, khi rê chuột vào các vùng của biểu đồ sẽ hiển thị
điểm số và tỉ lệ tương ứng.
- Thống kê tỉ lệ trả lời đúng theo các kì thi:

Hình 4-25. Giao diện thống kê theo tỉ lệ trả lời đúng.


51

Hình 4-26. Giao diện thống kê theo tỉ lệ trả lời đúng hiện chi tiết.
- Thống kê tỉ lệ trả lời đúng trên tất cả các kì thi

Hình 4-27. Giao diện thống kê theo tỉ lệ trả lời đúng trên tất cả kì thi.

Hình 4-28.Nội dung câu hỏi.


52

CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN


TOÀN HỆ THỐNG
5.1. Kết luận đồ án
5.1.1. Kết quả đạt được
- Tạo được các trang: trang chủ, tham gia thi, hướng dẫn thi, tạo kì thi, trang
thống kê, forum, đăng bài giảng
- Hoàn thiện chức năng chống gian lận bằng cách chụp cảnh màn hình ngẫu
nhiên trong khi thi.
- Đạt được chức năng tracking mail tự động tuy nhiên việc đưa lên server phải
thông qua các bên thứ ba mới có thể sử dụng được hoàn chỉnh.
- Đạt được các nội dung yêu cầu của từng đối tượng.
- Giao diện phù hợp, dễ sử dụng.
- Kết nối người dùng với facebook và chia sẻ kết quả thi trên facebook.
- Có thể áp dụng được cho các cuộc thi như “ Thách thức tin học” thi đấu theo
từng đội chơi, cuộc thi tiếng anh “NTU English Challenge”, vòng đấu loại trong
cuộc thi “Rung chuông vàng” hoặc có thể áp dụng vào các cuộc thi về kiến thức
của các khoa viện khác…
- Tạo đề thi một cách linh hoạt, có hình ảnh, âm thanh.
- Có thống kê kết quả tỷ lệ câu hỏi theo các mức rất dễ, dễ, trung bình, khó, rất
khó cho từng bộ đề từ đó sẽ tự động trộn câu hỏi ngẫu nhiên trong mỗi lần tạo
kì thi mới cho giáo viên. Thông qua việc thống kê giáo viên sẽ nắm bắt được
tình hình của sinh viên từ đó có thể ra đề thi phù hợp hơn. Đây là điểm mới trên
các trang web thi online hầu như chưa có.
- Học được công nghệ mới và áp dụng vào thực tiễn.
5.1.2. Hạn chế tồn tại.
- Do thời gian nghiên cứu còn hạn chế trong mức cho phép nên sản phẩm chưa
được hoàn hảo như bản thiết kế ban đầu (bao gồm bản thiết kế quy trình, bản
thiết kế cơ sở dữ liệu còn sai sót trong quá trình cài đặt dữ liệu, cài đặt giao diện
53

chưa được hoàn chỉnh như trong bản thiết kế ban đầu, quy trình phân tích chỉ
dừng ở mức độ vừa phải và chưa chuyên nghiệp so với một hệ thống tương đối
lớn như Elearning mà phải phát triển từ vạch xuất phát ban đầu)
- Chỉ mới dừng lại ở dạng đề thi trắc nghiệm.
- Chưa linh hoạt trong các dạng câu hỏi.
- Chưa sử dụng được dạng đề có điền từ.
- Chưa thể hiện được hết chức năng giám sát việc mở mail của người học tự động
trên server vì phải thông qua các bên thứ ba xác nhận cho phép mới có thể sử
dụng được hoàn chỉnh.
5.2. Hướng phát triển.
Nhóm sẽ tiếp tục định hướng và phát triển:
- Hướng phát triển lâu dài, phát triển lên thành nhóm Starup hướng đến đối tượng
người dùng nhiều hơn là giáo viên.
- Phát triển về mặt giao diện đẹp hơn, hấp dẫn người dùng hơn đòi hỏi phải có
kịch bản giống như chơi một game hoàn toàn chuyên nghiệp và sẽ có những
phần thưởng hấp dẫn như trong game.
- Thêm các hiệu ứng animation để tăng tính hấp dẫn cho mỗi kì thi.
- Thêm nhiều lựa chọn các dạng câu hỏi cho người dùng.
54

DANH MỤC TÀI LIỆU THAM KHẢO


[1]. Báo cáo tại Hội thảo ICT2016 “Công nghệ thông tin và truyền thông”
[2]. Tài liệu tham khảo Meteor
https://www.meteor.com
https://www.discovermeteor.com
https://www.meteor.com/tutorials/angular/creating-an-app
http://www.angular-meteor.com/
http://stackoverflow.com/search?q=meteor
[3] Tài liệu tham khảo Mongodb
https://docs.mongodb.com/manual/
http://www.w3schools.com/angular
[4] Tài liệu tham khảo Angularjs
https://angularjs.org/
http://vietjack.com/angularjs/
http://stackoverflow.com/questions/tagged/angularjs
[5] Tài liệu tham khảo các mã nguồn mở
https://atmospherejs.com/
55

PHỤ LỤC 1
TÀI LIỆU HƯỚNG DẪN SỬ DỤNG
Đăng kí, đăng nhập
Tại giao diện trang chủ bạn có thể đăng kí tài khoản, đăng nhập và có thể nhập mã
code để bắt đầu kì thi mà không cần phải đăng nhập.

Hình 29. Giao diện trang chủ và nút đăng kí tài khoản.
- Đăng ký tài khoản:
Khi bạn click vào nút đăng kí trên trang chủ thì màn hình sẽ hiển thị giao diện đăng kí
tài khoản (hình 2, hình 3) , nhập các thông tin cá nhân và nhấn nút đăng kí, sau đó
kiểm tra hộp thư đến trong email xác nhận để kích hoạt tài khoản cá nhân.
56

Hình 30. Thông tin đăng kí tài khoản - 1.

Hình 31. Thông tin đăng kí tài khoản - 2.


- Đăng nhập vào hệ thống:
Để đăng nhập vào hệ thống sau khi vào trang chủ bạn click vào nút đăng nhập trên
thanh menu gần kề với nút đăng kí như đã hướng dẫn trên hình 1.
Sau khi đăng kí tài khoản và xác nhận thành công, bạn có thể đăng nhập bằng tên hoặc
email hoặc bạn có thể đăng nhập nhanh bằng tài khoản Facebook hoặc Google.

Hình 32. Giao diện đăng nhập vào hệ thống.


57

Quản lý lớp học


Sau khi đăng nhập thành công bạn muốn chuyển đổi giao diện vô trang quản lý thì
click vào biểu tượng người dùng của bạn như hình 5.

Hình 33.Hướng dẫn vào trang quản lý lớp học.


Giao diện quản lý (hình 6) cho phép bạn tạo kì thi, tham gian thi, tạo các khóa học,
lớp học, môn học, quản lý môn học vừa tạo, có thể tìm kiếm bạn bè, học sinh, hay
con mình.

Hình 34. Giao diện quản lý lớp học.


- Chức năng thêm bạn bè mới, theo dõi học sinh:
58

Nhập vào ô tìm kiếm để tìm bạn bè muốn kết bạn hoặc muốn xác nhận là phụ huynh
ở phía dưới thanh chat bên phải của màn hình, sau đó nếu bạn muốn thêm bạn thì
click vào biểu tượng dấu cộng có hình user hoặc muốn theo theem thành viên gia
đình để theo dõi học tập thì click chọn vào biểu tượng 3 chấm phía bên phải thanh
chat như hình 7, hình 8.

Hình 35. Tìm kiếm bạn bè.


59

Hình 36. Thêm thành viên gia đình để theo dõi học tập.
- Chức năng quản lý học trực tuyến
• Tạo khóa học mới
Để tạo khóa học mới ta vào giao diện quản lý và chọn tạo mới khóa học bên thanh
menu dọc phía bên trái như hình 9.

Hình 37. Tạo mới khóa học.


Sau đó màn hình sẽ hiển thị các thông tin cần thiết để tạo khóa học mới như hình 9-10.
Tiếp đến bạn có thể click và nút “Tạo mới” để tạo mới khóa học và thoát ra ngoài
hoặc có thể click nút “Tạo mới và tiếp theo” để đi đến trang tạo lớp học (hình 11)
hoặc cũng có thể chọn tạo lớp học gần kề nút tạo khóa học như hình 9.
60

Hình 38. Các thông tin cần thiết khi tạo lớp học.
• Tạo lớp học mới
Để tạo mới lớp học như đã nói ở trên ta có thể click vào nút gần nút tạo khóa học
hoặc sau khi tạo khóa học click vào nút “Tạo mới và tiếp theo” để di chuyển đến
trang tạo khóa học như hình 11.

Hình 39. Thông tin khi tạo mới lớp học.


61

• Tạo mới môn học


Sau khi tạo xong lớp học bạn có thể click vào nút “ Tạo mới lớp học” để tạo mới
và thoát ra ngoài hoặc có thể chọn nút “Tiếp tục thêm môn học” để chuyển đến
trang tạo mới môn học hình 12.

Hình 40. Tạo môn học mới.


• Sinh viên tìm kiếm môn học và nhập mã môn học để tham gia vào môn học
Sinh viên tìm kiếm môn học tại thanh tìm kiếm phía trên màn hình quản lý sau đó
xem thông tin và nhập mã code để tham gia vào lớp học.

2
3

Hình 41. Tham gia vào lớp học.


62

- Các chức năng trong quản lý môn học


Forum: Trao đổi kiến thức giữa các thành viên trong lớp
Bài giảng: Bài giảng của môn học
Bài tập: Tất cả các bài tập của môn học
Thành viên: Danh sách thành viên của môn học
Hoạt động: Thống kê lượt tương tác của sinh viên
Phân quyền: Quản lý, phân quyền sinh viên trong môn học
• Hướng dẫn đăng câu hỏi trên forum
Bạn nhập nội dung cần đăng lên Forum có thể đính kèm thêm file ảnh, video hoặc
tệp sau đó click vào nút “Đăng” để hoàn thành.

Hình 42. Đăng bài lên Forum.


Và kết quả sau khi đăng, bạn có thể bình luận trong bài đăng hình 15.
63

Hình 43. Kết quả đăng bài.


• Hướng dẫn đăng bài giảng
Đối với chức năng đăng bài thì những user có quyền đăng bài mới có thể đăng bài
lên trên lớp học.
64

Hình 44. Đăng bài giảng.

Thêm mới chủ đề bài giảng: bạn click vào nút thêm chủ đề để hiện thị Form thêm
chủ đề cho môn học. Trong lúc tạo chủ đề sẽ có đính kèm các file bài giảng của
từng chủ đề. Sau đó click vào nút “Thêm chủ đề” để hoàn thành việc đăng bài giảng
tương ứng từng chủ đề (hình 17).
65

Hình 45. Thêm chủ đề vào bài giảng.


• Chức năng đăng bài tập
Tạo mới bài tập mới: đối với chức năng tạo mới bài tập thì chỉ những user có chức
năng đăng bài tập mới có quyền đăng.

Hình 46. Tạo mới bài tập.


66

Kết quả sau khi đăng bài tập thành công, sinh viên nộp bài thì click vào nút “Nộp
bài” và chọn file bài tập cần nộp hoặc muốn xem danh sách đã nộp bài thì click vào
“Danh sách đã nộp” để xem chi tiết (hình 19).

Hình 47. Nộp bài tập.


• Danh sách thành viên
Để xem danh sách thành viên đang có trong lớp học bạn click vào tab thành viên để
xem chi tiết (hình 20).
67

Hình 48. Xem danh sách thành viên lớp học.


• Quản lý hoạt động của sinh viên:
Để quản lý các hoạt động của sinh viên và số lần tương tác trao đổi thì bạn vào
tab hoạt động để xem chi tiết (hình 21).

Hình 49. Quản lý hoạt động của sinh viên.


68

• Phân quyền cho học sinh trong lớp học:


Danh sách tất cả các quyền của sinh viên, bạn có thể thêm quyền hoặc xóa quyền
của sinh viên ra khỏi môn học

Hình 50. Danh sách user và quyền


• Chỉnh sửa quyền cho học viên:
Chỉ những user có quyền quản lý môn học mới có quyền chỉnh sửa quyền của học
sinh khác. Sau khi thêm hoặc xóa quyền người dùng bạn click nút “Cập nhật” để lưu.

Hình 51. Chỉnh sửa phân quyền.


69

Hướng dẫn chức năng tạo kì thi và thi trực tuyến


- Tạo kì thi:
Bước 1: Click vào nút “Tạo kì thi” trên thanh menu ở trên như hình 6-24.

Hình 52. Tạo kì thi.


Bước 2: Nhập thông tin cơ bản của kì thi
Bước 3: Trường hợp 1: Click nút “ Ngân hàng câu hỏi” để tạo câu hỏi theo ngân hàng câu hỏi

Hình 53. Nhập thông tin kì thi.


70

Bước 4: Trường hợp 1: Chọn câu hỏi từ ngân hàng câu hỏi cá nhân
Bước 5: Click chọn lần lượt và chọn bộ câu hỏi mong muốn để tạo kì thi hoặc có
thể xóa bộ câu hỏi của bản thân.

Hình 54. Chọn câu hỏi từ cá nhân


Bước 5.1: Bạn cũng có thể trộn câu hỏi bằng cách click vào nội dung bộ câu hỏi và
chọn từng câu câu hỏi mong muốn (hình 27).
71

Hình 55. Trộn câu hỏi khác nhau từ bộ đề cá nhân.


Bước 5.2: Chọn câu hỏi ngẫu nhiên
Click chọn ngẫu nhiên và điền các thông tin cần thiết để hệ thống tự động rút ngẫu
nhiên số câu hỏi mà bạn mong muốn (hình 28).

Hình 56. Chọn câu hỏi ngẫu nhiên.


72

Bước 4 : Trường hợp 2: Chọn câu hỏi từ câu hỏi cộng đồng:
Bước 5: Thực hiện tương tự như với trường hợp chọn ngân hàng câu hỏi cá nhân
Bước 6: Click nút “Xem lại” để vào giao diện xem lại và lưu câu hỏi.
Tại đây bạn có thể chỉnh sửa lại điểm số của từng câu hỏi.

Hình 57. Xem lại câu trả lời đúng.

• Tạo câu hỏi mới:


Bước 3: Trường hợp 2 : Click chọn “Câu hỏi tự tạo” (hình 30).
73

Hình 58. Giao diện tạo kì thi.

Hình 59. Nhập thông tin tạo bộ câu hỏi mới.


Bước 4: Trường hợp 1: Bạn muốn thêm câu hỏi từ file click chọn “Thêm câu hỏi từ
file của bạn”. Bộ câu hỏi được import từ file của bạn thì file câu hỏi cần được soạn
thảo theo mẫu sau:
Câu 1// Đơn vị tổ chức cơ sở của mọi sinh vật là
A. Các đại phân tử.
74

B. Tế bào. dapan
C. Mô.
D. Cơ quan.
Câu 2// Căn cứ chủ yếu để coi tế bào là đơn vị cơ bản của sự sống là
A. Chúng có cấu tạo phức tạp.
B. Chúng được cấu tạo bởi nhiều bào quan.
C. Ở tế bào có các đặc điểm chủ yếu của sự sống. dapan
D. Cả A, B, C.
Bước 4: Trường hợp 2: Thêm câu hỏi tự tạo bằng cách click vào “Thêm nội dung”
(hình 31).

Hình 60. Giao diện thêm nội dung câu hỏi


Bước 5: Nhập nội dung các câu hỏi và thêm các lựa chọn cho câu hỏi, chỉnh sửa
điểm số, chọn đáp án đúng bằng cách chọn biểu tượng trái tim, chọn file dữ liệu đi
kèm với câu hỏi click vào “Chọn file” (hình 32).
Bước 6: Click “Xem lại” để xem lại các câu hỏi đã tạo và lưu câu hỏi.
• Cấu hình và hoàn tất tạo kì thi
75

Sau khi hoàn thành bộ câu hỏi phần cấu hình kì thi sẽ xuất hiện như hình 33. Bạn có
thể tùy chọn thời gian thi, số lượng sinh viên tham gia thi và hình thức thi tại lớp
hay ở nhà.

Hình 61. Giao diện cấu hình kì thi.


- Chức năng thi trực tuyến
Đối với sinh viên:
Bước 1: Thí sinh đăng nhập và click nút thi.

Hình 62. Giao diện thi trực tuyến.


Bước 2: Một bảng thông báo sẽ xuất hiện, thí sinh nhập mã kì thi và ấn tham gia hệ
thống sẽ chuyển thí sinh đến giao diện chờ thi.
76

Hình 63. Giao diện tham gia thi.


Bước 3: Giao diện chờ thi hình

Hình 64. Giao diện màn hình chờ.


Sau khi giáo viên bắt đầu kì thi thí sinh sẽ được chuyển vào trang thi có giao diện
như hình 38 (đối với thi tại lớp) và hình 37(đối với thi tại nhà).
77

Hình 0-65. Giao diện kì thi tại nhà.

Hình 66. Giao diện kì thi tại lớp.

Đối với giáo viên:


Bước 1: Chọn danh sách kì thi ở thanh menu trái, chọn kì thi bạn muốn bắt đầu,
Click vào biểu tượng dấu ba chấm và chọn bắt đầu kì thi (hình 38).
78

Hình 67. Bắt đầu kì thi.


79

Bước 2: Sau khi bắt đầu kì thi hệ thống sẽ chuyển đến giao diện chờ thi của giáo
viên, giáo viên click bắt đầu để bắt đầu kì thi.

Hình 68. Giao diện chờ thi của giáo viên.


Giao diện trang thi của giáo viên sau khi bắt đầu

Hình 69. Giao diện trang thi của giáo viên khi tỏ chức thi tại nhà.
80

Hình 70. Giao diện trang thi của giáo viên khi tổ chức thi tại lớp.

- Kết quả kì thi


• Đối với kì thi tại nhà hệ thống sẽ tự động kết thúc kì thi khi hết thời gian làm
bài và giao diện kết quả sẽ xuất hiện
• Đối với kì thi trên lớp giáo viên cần bấm dừng để kết thúc kì thi (hình 41).
• Giao diện kết quả giống nhau ở cả giáo viên và thí sinh (hình 43).

Hình 71. Giao diện kết quả thi.

- Thống kê câu hỏi:


Nội dung của các câu hỏi thuộc bộ câu hỏi sẽ hiển thị khi bạn click vào nút nội dung.
81

Hình 72. Giao diện hiển thị nội dung câu hỏi sau thống kê.
- Thống kê điểm số theo kì thi:
Hệ thống sẽ hiển thị biểu đồ thống kê về điểm số của tất cả kì thi đã sử dụng bộ câu
hỏi tương ứng, bạn có thể chọn hiện tất cả hoặc thu gọn danh sách.

Hình 73. Giao diện thông kê dựa trên điểm số.


- Thống kê tỉ lệ trả lời đúng của các câu hỏi theo kì thi
82

Hệ thống sẽ hiển thị biểu đồ thống kê về tỉ lệ trả lời đúng của các câu hỏi theo từng
kì thi đã sử dụng bộ câu hỏi tương ứng, bạn có thể chọn hiện tất cả hoặc thu gọn
danh sách.

Hình 74. Giao diện thống kê dựa trên tỉ lệ trả lời đúng.
Click vào biểu đồ để xem chi tiết (hình 47).

Hình 75. Xem chi tiết thống kê bộ câu hỏi.


- Thống kê tỉ lệ trả lời đúng của các câu hỏi trên toàn bộ kì thi
Hệ thống sẽ hiển thị biểu đồ thống kê về tỉ lệ trả lời đúng của các câu hỏi trên tất cả
kì thi đã sử dụng bộ câu hỏi tương ứng (hình 48).
83

Hình 76. Giao diện thống kê toàn bộ kì thi.

You might also like