Professional Documents
Culture Documents
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
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
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
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
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
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
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:
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
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
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
- 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-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
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
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).
• 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.
• 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ả:
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).
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.
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
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
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 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 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.
2
3
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
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).
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.
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.
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).
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à.
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 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.
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ệ 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).