Professional Documents
Culture Documents
HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
NGÀNH CÔNG NGHỆ THÔNG TIN
---o0o---
Lê Văn Vinh
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
Giáo viên phản biện
LỜI CẢM ƠN
Lời đầu tiên, nhóm sinh viên thực hiện báo cáo xin gửi lời cảm ơn chân
thành nhất đến nhà trường và quý thầy cô. Trong quá trình học tập tại trường Đại
học Sư phạm kỹ thuật thành phố Hồ Chí Minh, quý thầy cô đã tạo nhiều điều kiện
cho chúng em được học tập tốt nhất, truyền đạt những kiến thức nền tảng và chuyên
ngành, cũng như hỗ trợ, giúp đỡ khi nhóm gặp khó khăn trong quá trình học tập và
trong lúc thực hiện đồ án
Tiếp đó, nhóm sinh viên thực hiện báo cáo xin gửi lời cảm ơn sâu sắc đến
thầy Lê Văn Vinh – người đã hướng dẫn, giúp đỡ cho nhóm trong suốt quá trình
thực hiện đề tài.
Do có những hạn chế về kiến thức và thiếu kinh nghiệm trong việc tìm hiểu
thực tế, vì thế nhóm chúng em còn có nhiều thiếu sót, nhóm hy vọng nhận được
những ý kiến đóng góp quý báu từ quý thầy cô để rút ra kinh nghiệm cho các đồ án
khác trong tương lai. Nhóm thực hiện xin chân thành cảm ơn.
Lời cuối cùng, nhóm chúng em xin chúc thầy cô có thật nhiều sức khỏe để
tiếp tục thực hiện sứ mệnh cao cả của mình đó chính là truyền đạt những kiến thức
bổ ích cho nhiều thế hệ sinh viên tiếp theo. Chúng em xin bày tỏ lòng biết ơn thầy
cô rất nhiều!
Nhóm thực hiện
Trần Phương Linh
Võ Ngọc Phong
TÓM TẮT
1. Các vấn đề nghiên cứu
- Tìm hiểu về các hệ thống tương tự, phân tích để tìm ra điểm mạnh và phù
hợp để áp dụng.
- Tìm hiểu về Reactjs, Framework Expressjs của Nodejs để giải quyết vấn đề
cung cấp dịch vụ API cho hệ thống học tiếng Anh trực tuyến.
2. Các vấn đề phát sinh
- Bảo mật là một trong những yêu cầu quan trọng cho website thực tế.
- Không thể lưu video, audio bằng Blob.
3. Các phương pháp giải quyết vấn đề
- Sử dụng JWT để cải thiện yêu cầu bảo mật cho website.
- Chuyển đổi video, audio về chuỗi base64 và lưu chuỗi đó vào database.
4. Kết quả đạt được
- Hệ thống học tiếng Anh trực tuyến bao gồm: giao diện cho phía người dùng
và giao diện phía người quản trị.
- Giao diện dễ sử dụng, thân thiện và thu hút người dùng.
- Dễ dàng quản lý, sửa chữa và mở rộng.
MỤC LỤC
MỤC LỤC BẢNG....................................................................................................I
MỤC LỤC HÌNH ẢNH..........................................................................................V
DANH MỤC CÁC TỪ VIẾT TẮT......................................................................XI
PHẦN MỞ ĐẦU......................................................................................................1
1.1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI................................................................1
1.2. MỤC ĐÍCH CỦA ĐỀ TÀI...........................................................................1
1.3. CÁCH TIẾP CẬN VÀ PHƯƠNG PHÁP NGHIÊN CỨU...........................1
1.3.1. Đối tượng nghiên cứu................................................................................2
1.3.2. Phạm vi nghiên cứu...................................................................................2
1.4. PHÂN TÍCH CÁC ỨNG DỤNG CÓ LIÊN QUAN....................................3
1.5. KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC.............................................................3
PHẦN NỘI DUNG..................................................................................................4
Chương 1. CƠ SỞ LÝ THUYẾT.......................................................................4
1.1. NODEJS [1].................................................................................................4
1.1.1. Định nghĩa về NodeJS...............................................................................4
1.1.2. Các tính năng của NodeJS.........................................................................4
1.1.3. Đối tượng và ứng dụng của NodeJS...........................................................5
1.1.4. Một số ưu, nhược điểm của NodeJS..........................................................5
1.1.5. Sử dụng NodeJS trong đề tài......................................................................6
1.2. EXPRESSJS.................................................................................................7
1.2.1. Định nghĩa về ExpressJS [2]......................................................................7
1.2.2. Tại sao nên sử dụng Expressjs trong lập trình web? [3].............................7
1.2.3. Những tính năng của Expressjs là gì?[3]....................................................8
1.2.4. Sử dụng ExpressJS trong đề tài..................................................................9
1.3. MONGODB [4]...........................................................................................9
1.3.1. Giới thiệu về MongoDB............................................................................9
1.3.2. Sử dụng MongoDB mang lại những lợi ích gì?.......................................10
1.3.3. MongoDB có những ưu và nhược điểm gì?.............................................11
1.3.4. Sử dụng MongoDB trong đề tài...............................................................13
1.4. RESTFUL API [5].....................................................................................13
1.4.1. Các khái niệm..........................................................................................13
1.4.2. Cách thức hoạt động................................................................................14
1.4.3. Sử dụng RESTFUL API trong đề tài........................................................14
1.5. REACTJS...................................................................................................14
1.5.1. Reactjs là gì [6]........................................................................................14
1.5.2. Đặc trưng của ReactJS [7]........................................................................15
1.5.3. Sử dùng ReactJS trong đề tài...................................................................17
1.6. JSON WEB TOKEN [8]............................................................................17
1.6.1. Định nghĩa JSON Web Token..................................................................17
1.6.2. Cấu trúc của một JWT.............................................................................17
1.6.3. Flow hệ thống sử dụng JWT....................................................................19
1.6.4. Hệ thống Verify chuỗi JWT thế nào?.......................................................20
1.6.5. Khi nào sử dụng JWT?.............................................................................21
1.6.6. Sử dụng JSON Web Token trong hệ thống..............................................21
Chương 2. KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU............21
2.1. KHẢO SÁT HIỆN TRẠNG......................................................................21
2.1.1. Duolingo..................................................................................................21
2.1.2. Elllo.........................................................................................................22
2.1.3. BBC English............................................................................................23
2.1.4. Voca.vn....................................................................................................24
2.1.5. Busuu.......................................................................................................26
2.1.5.1.Các chức năng chính...............................................................................26
2.1.6. Kết luận....................................................................................................27
2.2. XÁC ĐỊNH YÊU CẦU..............................................................................27
2.2.1. Yêu cầu chức năng...................................................................................27
2.2.2. Yêu cầu phi chức năng.............................................................................30
2.3. MÔ HÌNH HÓA YÊU CẦU......................................................................31
2.3.1. Lược đồ Usecase......................................................................................31
2.4. MÔ TẢ USECASE....................................................................................33
2.4.1. Chức năng của “Khách vãng lai”.............................................................33
2.4.2. Chức năng của “Người dùng”..................................................................36
2.4.3. Chức năng của “Người tạo nội dung”......................................................55
2.4.4. Chức năng của “Người quản trị”..............................................................90
Chương 3. THIẾT KẾ PHẦN MỀM.............................................................104
3.1. LƯỢC ĐỒ LỚP.......................................................................................104
3.2. LƯỢC ĐỒ TUẦN TỰ.............................................................................104
3.2.1. Khách vãng lai.......................................................................................104
3.2.2. Người dùng............................................................................................105
3.2.3. Người tạo nội dung................................................................................112
3.2.4. Người quản trị........................................................................................126
3.3. THIẾT KẾ CƠ SỞ DỮ LIỆU..................................................................132
3.3.1. Lược đồ cơ sở dữ liệu............................................................................133
3.3.2. Mô tả các bảng.......................................................................................133
3.4. THIẾT KẾ GIAO DIỆN..........................................................................138
3.4.1. Giao diện Người dùng và Khách vãng lai..............................................138
3.4.2. Giao diện Người quản trị và Người tạo nội dung...................................160
Chương 4. CÀI ĐẶT VÀ KIỂM THỬ..........................................................184
4.1. CÀI ĐẶT.................................................................................................184
4.1.1. Cài đặt ứng dụng....................................................................................184
4.1.2. Công cụ dùng trong dự án......................................................................185
4.1.3. Công nghệ dùng trong dự án..................................................................186
4.2. KIỂM THỬ..............................................................................................186
4.2.1. Các trường hợp kiểm thử.......................................................................186
4.2.2. Kết quả kiểm thử....................................................................................187
PHẦN KẾT LUẬN..............................................................................................204
5.1. KẾT QUẢ ĐẠT ĐƯỢC...........................................................................204
5.2. ƯU ĐIỂM................................................................................................204
5.3. NHƯỢC ĐIỂM........................................................................................204
5.4. HƯỚNG PHÁT TRIỂN...........................................................................204
TÀI LIỆU THAM KHẢO...................................................................................204
-
MỤC LỤC BẢNG
Bảng 1. Bảng chức năng của Người quản trị...........................................................28
Bảng 2. Bảng chức năng của Người tạo nội dung...................................................28
Bảng 3. Bảng chức năng của Người dùng được xác thực........................................29
Bảng 4. Bảng chức năng của Khách vãng lai..........................................................30
Bảng 5. Bảng mô tả chức năng Đăng ký.................................................................34
Bảng 6. Bảng mô tả chức năng đăng nhập..............................................................36
Bảng 7. Bảng mô tả chức năng đăng xuất...............................................................38
Bảng 8. Bảng mô tả chức năng học bảng phiên âm.................................................40
Bảng 9. Bảng mô tả chức năng học ngữ pháp.........................................................42
Bảng 10. Bảng mô tả chức năng học từ vựng..........................................................44
Bảng 11. Bảng mô tả chức năng học bài luyện nghe...............................................46
Bảng 12. Bảng mô tả chức năng đổi mật khẩu........................................................48
Bảng 13. Bảng mô tả chức năng Chỉnh sửa thông tin cá nhân................................50
Bảng 14. Bảng mô tả chức năng chơi trò chơi........................................................52
Bảng 15. Bảng mô tả chức năng xem bảng xếp hạng..............................................54
Bảng 16. Bảng mô tả chức năng Xem danh sách bài nghe......................................56
Bảng 17. Bảng mô tả chức năng thêm bài nghe......................................................58
Bảng 18. Bảng mô tả chức năng chỉnh sửa bài nghe...............................................60
Bảng 19. Bảng mô tả chức năng Xóa bài nghe........................................................63
Bảng 20. Bảng mô tả chức năng Xem danh sách ngữ pháp.....................................65
Bảng 21. Bảng mô tả chức năng them ngữ pháp.....................................................67
Bảng 22. Bảng mô tả chức năng Sửa ngữ pháp.......................................................70
Bảng 23. Bảng mô tả chức năng Xóa ngữ pháp......................................................73
Bảng 24. Bảng mô tả chức năng Xem danh sách từ vựng.......................................75
Bảng 25. Bảng mô tả chức năng Thêm từ vựng......................................................77
Bảng 26. Bảng mô tả chức năng Sửa từ vựng.........................................................80
I
Bảng 27. Bảng mô tả chức Xóa từ vựng.................................................................82
Bảng 28. Bảng mô tả chức năng Thêm bài trắc nghiệm..........................................84
Bảng 29. Bảng mô tả chức năng Thêm bài trắc nghiệm..........................................87
Bảng 30. Bảng mô tả chức năng Khóa tài khoản....................................................90
Bảng 31. Bảng mô tả chức năng Mở khóa tài khoản...............................................92
Bảng 32. Bảng mô tả chức năng phân quyền người dùng.......................................94
Bảng 33. Bảng mô tả chức năng Thêm người dùng................................................96
Bảng 34. Bảng mô tả chức năng chỉnh sửa người dùng..........................................98
Bảng 35. Bảng mô tả chức năng Xem danh sách người dùng...............................100
Bảng 36. Bảng mô tả chức năng Xem thống kê....................................................102
Bảng 37. Bảng Grammars.....................................................................................133
Bảng 38. Bảng Highscores....................................................................................134
Bảng 39. Bảng IPA...............................................................................................134
Bảng 40. Bảng Listenings.....................................................................................135
Bảng 41. Bảng Questions......................................................................................135
Bảng 42. Bảng Quizzes.........................................................................................136
Bảng 43. Bảng Users.............................................................................................136
Bảng 44. Bảng Words...........................................................................................137
Bảng 45. Bảng mô tả Giao diện Đăng nhập..........................................................139
Bảng 46. Bảng mô tả Giao diện Đăng ký..............................................................140
Bảng 47. Bảng mô tả giao diện Quên mật khẩu....................................................142
Bảng 48. Bảng mô tả giao diện Đặt lại mật khẩu..................................................142
Bảng 49. Bảng mô tả giao diện Trang chủ............................................................144
Bảng 50. Bảng mô tả giao diện chủ đề bài nghe...................................................146
Bảng 51. Bảng mô tả giao diện danh sách bài nghe..............................................146
Bảng 52. Bảng mô tả giao diện chi tiết bài nghe...................................................147
Bảng 53. Bảng mô tả giao diện cấp độ của ngữ pháp............................................148
II
Bảng 54. Bảng mô tả giao diện danh sách ngữ pháp của cấp dộ...........................149
Bảng 55. Bảng mô tả giao diện chi tiết ngữ pháp..................................................150
Bảng 56. Bảng mô tả giao diện chủ đề của từ vựng..............................................151
Bảng 57. Bảng mô tả giao diện danh sách từ vựng theo hai chế độ xem...............152
Bảng 58. Bảng mô tả giao diện danh sách phiên âm.............................................154
Bảng 59. Bảng mô tả giao diện chi tiết phiên âm..................................................155
Bảng 60. Bảng mô tả giao diện danh sách trò choie..............................................156
Bảng 61. Bảng mô tả giao diện Bảng xếp hạng.....................................................157
Bảng 62. Bảng mô tả giao dện trò chơi Hãy chọn từ đúng....................................158
Bảng 63. Bảng mô tả giao diện trò chơi Ghép từ..................................................159
Bảng 64. Bảng mô tả giao diện trò chơi Tay nhanh hơn nào.................................160
Bảng 65. Bảng mô tả Giao diện quản lý từ vựng..................................................161
Bảng 66. Bảng mô tả Giao diện Thêm từ vựng.....................................................162
Bảng 67. Bảng mô tả giao diện Sửa từ vựng.........................................................164
Bảng 68. Bảng mô tả giao diện quản lý bài nghe..................................................165
Bảng 69. Bảng mô tả giao diện Thêm bài nghe.....................................................167
Bảng 70. Bảng mô tả giao diện Sửa bài nghe........................................................168
Bảng 71. Bảng mô tả Giao diện quản lý bài trắc nghiệm......................................170
Bảng 72. Bảng mô tả giao diện chi tiết bài trắc nghiệm........................................171
Bảng 73. Bảng mô tả giao diện thêm câu hỏi........................................................172
Bảng 74. Bảng mô tả giao diện sửa câu hỏi..........................................................173
Bảng 75. Bảng mô tả giao diện quản lý ngữ pháp.................................................174
Bảng 76. Bảng mô tả giao diện chi tiết ngữ pháp..................................................175
Bảng 77. Bảng mô tả giao diện thêm ngữ pháp.....................................................176
Bảng 78. Bảng mô tả giao diện sửa ngữ pháp.......................................................178
Bảng 79. Bảng mô tả giao diện quản lý người dùng.............................................180
Bảng 80. Bảng mô tả giao diện chi tiết người dùng..............................................181
III
Bảng 81. Bảng mô tả giao diện thêm tài khoản.....................................................182
Bảng 82. Bảng mô tả giao diện sửa người dùng....................................................183
Bảng 83. Bảng mô tả giao diện trang chủ Admin..................................................184
Bảng 84. Bảng công cụ dùng trong dự án.............................................................185
Bảng 85. Bảng công nghệ dùng trong dự án.........................................................186
Bảng 86. Các trường hợp kiểm thử.......................................................................186
Bảng 87. Kết quả kiểm thử chức năng Đăng nhập................................................187
Bảng 88. Kết quả kiểm thử chức năng Đăng ký....................................................190
Bảng 89. Kết quả kiểm thử chức năng Thêm từ vựng...........................................196
Bảng 90. Kết quả kiểm thử chức năng Thêm người dùng.....................................201
IV
MỤC LỤC HÌNH ẢNH
Hình 1. Cấu trúc một API được xây dựng với ExpressJS.........................................7
Hình 2. Express.js cung cấp cơ chế định tuyến giúp duy trì trạng thái của website. .9
Hình 3. MongoDB..................................................................................................10
Hình 4. Hình minh họa chức năng truy vấn cơ sở dữ liệu đặc biệt..........................11
Hình 5. Hình minh họa ưu điểm của MongoDB.....................................................12
Hình 6. Hình minh hoa nhược điểm của MongoDB...............................................13
Hình 7. JSX............................................................................................................. 15
Hình 8. Luồng dữ liệu một chiều............................................................................16
Hình 9. Virtual DOM..............................................................................................16
Hình 10. JSON Web Token....................................................................................17
Hình 11. JWT.........................................................................................................18
Hình 12. Header......................................................................................................18
Hình 13. JWT format..............................................................................................20
Hình 14. Màn hình trang chủ website Doulingo.....................................................22
Hình 15. Màn hình trang chủ website Ello..............................................................23
Hình 16. Màn hình trang chủ website BBC English...............................................24
Hình 17. Màn hình trang chủ website Voca.vn.......................................................25
Hình 18. Màn hình trang chủ website Busuu..........................................................26
Hình 19. Lược đồ chức năng Người quản trị và Người tạo nội dung......................32
Hình 20. Lược đồ chức năng của Khách vãng lai và Người dùng...........................33
Hình 21. Lược đồ chức năng Đăng ký....................................................................34
Hình 22. Lược đồ chức năng Đăng nhập................................................................36
Hình 23. Lược đồ chức năng Đăng xuất.................................................................38
Hình 24. Lược đồ chức năng học bảng phiên âm....................................................40
Hình 25. Lược đồ chức năng học ngữ pháp............................................................42
Hình 26. Lược đồ chức năng học từ vựng...............................................................44
V
Hình 27. Lược đồ chức năng học bài luyện nghe....................................................46
Hình 28. Lược đồ chức năng Đổi mật khẩu............................................................48
Hình 29. Lược đồ chức năng Chỉnh sửa thông tin cá nhân.....................................50
Hình 30. Lược đồ chức năng chơi trò chơi.............................................................52
Hình 31. Lược đồ chức năng Xem bảng xếp hạng..................................................54
Hình 32. Lược đồ chức năng Xem danh sách bài nghe...........................................56
Hình 33. Lược đồ chức năng Thêm tệp nghe..........................................................58
Hình 34. Lược đồ chức năng chỉnh sửa bài nghe....................................................60
Hình 35. Lược đồ chức năng Xóa bài nghe.............................................................63
Hình 36. Lược đồ chức năng Xem danh sách ngữ pháp..........................................65
Hình 37. Lược đồ chức năng Thêm ngữ pháp.........................................................67
Hình 38. Lược đồ chức năng Sửa ngữ pháp............................................................70
Hình 39. Lược đồ chức năng xóa ngữ pháp............................................................73
Hình 40. Lược đồ chức năng Xem danh sách từ vựng............................................75
Hình 41. Lược đồ chức năng Thêm từ vựng...........................................................77
Hình 42. Lược đồ chức năng Sửa từ vựng..............................................................80
Hình 43. Lược đồ chức năng Xóa từ vựng..............................................................82
Hình 44. Lược đồ chức năng Thêm bài trắc nghiệm...............................................84
Hình 45. Lược đồ chức năng Thêm bài trắc nghiệm...............................................87
Hình 46. Lược đồ chức năng Khóa tài khoản..........................................................90
Hình 47. Lược đồ chức năng Mở khóa tài khoản....................................................92
Hình 48. Lược đồ chức năng Phân quyền người dùng............................................94
Hình 49. Lược đồ chức năng Thêm người dùng.....................................................96
Hình 50. Lược đồ chức năng Chỉnh sửa người dùng..............................................98
Hình 51. Lược đồ chức năng Xem danh sách người dùng....................................100
Hình 52. Lược đồ chức năng Xem thống kê.........................................................102
Hình 53. Lược đồ lớp website Learning English..................................................104
VI
Hình 54. Lược đồ tuần tự chức năng Đăng ký......................................................105
Hình 55. Lược đồ tuần tự chức năng Đăng nhập..................................................106
Hình 56. Lược đồ tuần tự chức năng Đăng xuất...................................................107
Hình 57. Lược đồ tuần tự chức năng Học phiên âm..............................................108
Hình 58. Lược đồ tuần tự chức năng Học ngữ pháp.............................................109
Hình 59. Lược đồ tuần tự chức năng Học từ vựng................................................110
Hình 60. Lược đồ tuần tự chức năng Học bài nghe...............................................111
Hình 61. Lược đồ tuần tự chức năng Đổi mật khẩu..............................................112
Hình 62. Lược đồ tuần tự chức năng Xem danh sách bài nghe.............................113
Hình 63. Lược đồ tuần tự chức năng Thêm bài nghe............................................114
Hình 64. Lược đồ tuần tự chức năng Chỉnh sửa bài nghe.....................................115
Hình 65. Lược đồ tuần tự chức năng Xóa bài nghe...............................................116
Hình 66. Lược đồ tuần tự chức năng Xem danh sách ngữ pháp............................117
Hình 67. Lược đồ tuần tự chức năng Thêm ngữ pháp...........................................118
Hình 68. Lược đồ tuần tự chức năng Chỉnh sửa ngữ pháp....................................119
Hình 69. Lược đồ tuần tự chức năng Xóa ngữ pháp.............................................120
Hình 70. Lược đồ tuần tự chức năng Xem danh sách từ vựng..............................121
Hình 71. Lược đồ tuần tự chức năng Thêm từ vựng.............................................122
Hình 72. Lược đồ tuần tự chức năng Chỉnh sửa từ vựng......................................123
Hình 73. Lược đồ tuần tự chức năng Xóa từ vựng................................................124
Hình 74. Lược đồ tuần tự chức năng Thêm bài trắc nghiệm.................................125
Hình 75. Lược đồ tuần tự chức năng Chỉnh sửa bài trắc nghiệm..........................126
Hình 76. Lược đồ tuần tự chức năng Khóa tài khoản............................................127
Hình 77. Lược đồ tuần tự chức năng Mở khóa tài khoản......................................128
Hình 78. Lược đồ tuần tự chức năng Phân quyền người dùng..............................129
Hình 79. Lược đồ tuần tự chức năng Thêm người dùng.......................................130
Hình 80. Lược đồ tuần tự chức năng Chỉnh sửa người dùng.................................131
VII
Hình 81. Lược đồ tuần tự Xem danh sách người dùng..........................................132
Hình 82. Lược đồ tuần tự chức năng Xem thống kế.............................................132
Hình 83. Lược đồ Cơ sở dữ liệu............................................................................133
Hình 84. Giao diện Đăng nhập..............................................................................139
Hình 85. Giao diện Đăng ký.................................................................................140
Hình 86. Giao diện quên mật khẩu........................................................................141
Hình 87. Giao diện Đặt lại mật khẩu.....................................................................142
Hình 88. Giao diện trang chủ................................................................................144
Hình 89. Giao diện chủ đề bài nghe......................................................................145
Hình 90. Giao diện Danh sách bài nghe của một chủ đề.......................................146
Hình 91. Giao diện chi tiết bài nghe.....................................................................147
Hình 92. Giao diện cấp độ của ngữ pháp..............................................................148
Hình 93. Giao diện Danh sách ngữ pháp của cấp độ.............................................149
Hình 94. Giao diện chi tiết ngữ pháp....................................................................150
Hình 95. Giao diện chủ đề của từ vựng.................................................................151
Hình 96. Danh sách từ vựng theo chế độ gallery..................................................152
Hình 97. Danh sách từ vựng theo chế độ slide......................................................152
Hình 98. Giao diện Danh sách phiên âm...............................................................154
Hình 99. Giao diện Chi tiết phiên âm....................................................................155
Hình 100. Giao diện Danh sách các trò chơi.........................................................156
Hình 101. Giao diện Bảng xếp hạng.....................................................................157
Hình 102. Giao diện trò chơi Hãy chọn từ đúng...................................................158
Hình 103. Giao diện trò chơi Ghép từ...................................................................159
Hình 104. Giao diện trò chơi Tay nhanh hơn não.................................................160
Hình 105. Giao diện Quản lý từ vựng...................................................................161
Hình 106. Giao diện Thêm từ vựng......................................................................162
Hình 107. Giao diện Sửa từ vựng.........................................................................164
VIII
Hình 108. Giao diện Quản lý bài nghe..................................................................165
Hình 109. Giao diện Thêm bài nghe.....................................................................167
Hình 110. Giao diện Sửa bài nghe........................................................................168
Hình 111. Giao diện Quản lý bài trắc nghiệm.......................................................170
Hình 112. Giao diện Chi tiết bài trắc nghiệm........................................................171
Hình 113. Giao diện Thêm câu hỏi.......................................................................172
Hình 114. Giao diện Sửa câu hỏi..........................................................................173
Hình 115. Giao diện Quản lý ngữ pháp................................................................174
Hình 116. Giao diện Chi tiết ngữ pháp.................................................................175
Hình 117. Giao diện Thêm ngữ pháp....................................................................176
Hình 118. Giao diện Sửa ngữ pháp.......................................................................178
Hình 119. Giao diện Quản lý người dùng.............................................................180
Hình 120. Giao diện Chi tiết người dùng..............................................................181
Hình 121. Giao diện thêm người dùng..................................................................182
Hình 122. Giao diện sửa người dùng....................................................................183
Hình 123. Giao diện Trang chủ Admin.................................................................184
Hình 124. Kết quả kiểm thử test case TC_SI_01..................................................189
Hình 125. Kết quả kiểm thử test case TC_SI_02..................................................189
Hình 126. Kết quả kiểm thử test case TC_SI_03..................................................190
Hình 127. Kết quả kiểm thử test case TC_SU_01.................................................194
Hình 128. Kết quả kiểm thử test case TC_SU_01.................................................194
Hình 129. Kết quả kiểm thử test case TC_SU_02.................................................195
Hình 130. Kết quả kiểm thử test case TC_SU_03.................................................195
Hình 131. Kết quả kiểm thử test case TC_SU_04.................................................196
Hình 132. Kết quả kiểm thử test case TC_SU_05.................................................196
Hình 133. Kết quả kiểm thử test case TC_AW_01...............................................200
Hình 134. Kết quả kiểm thử test case TC_AW_02...............................................200
IX
Hình 135. Kết quả kiểm thử test case TC_AW_03...............................................201
Hình 136. Kết quả kiểm thử test case TC_AU_01................................................203
Hình 137. Kết quả kiểm thử test case TC_AU_02................................................203
X
DANH MỤC CÁC TỪ VIẾT TẮT
API: Application Programming Interface
BSON: Binary JSON
CLI: Command line interface
DOM: Document Object Model
HTML: Hyper Text Markup Language
HTTP: Hyper Text Transfer Protocol
IDE: Integrated Development Environment
JSON: JavaScript Object Notation
JSON: JavaScript Object Notation
JSX: JavaScript + XML
JWT: JSON Web Token
MAC: Media Access Control
MERN STACK: bộ công nghệ mã nguồn mở liên quan đến JavaScript, bao gồm
các công nghệ: MongoDB, Express, React/React Native và Nodejs.
MIT: Massachusetts Institute of Technology
I/O: Input/Output
URL: Uniform Resource Locator
XML: Extensible Markup Language
XI
PHẦN MỞ ĐẦU
1.1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong xu thế hội nhập kinh tế thế giới như hiện nay, ngôn ngữ được coi là một yếu
tố quan trong. Nó chính là công cụ để giúp cho mọi người dân tại các quốc gia khác
nhau có thể hiểu nhau, giao lưu kinh tế, văn hóa xã hội và cùng nhau phát triển. Tuy
nhiên, các quốc gia khác nhau có một ngôn ngữ khác nhau. Chỉnh vì vậy mà đã tạo
ra rào cản giữa các quốc gia dân tộc có sự bất đồng về ngôn ngữ. Trước xu thế toàn
cầu, hội nhập kinh tế sâu rộng như hiện nay cùng với nhu cầu hợp tác, giao lưu kinh
tế, văn hóa – xã hội giữa các quốc gia, đòi hỏi phải có một ngôn ngữ thống nhất làm
ngôn ngữ giao tiếp chung cho mọi người trên khắp thế giới. Theo các chuyên gia
ngôn ngữ học, tiếng Anh là một trong những ngôn ngữ dễ học và dễ giao tiếp nhất.
Ngoài ra, do sự ảnh hưởng các nước phát triển trong nhiều lĩnh vực, nên tiếng Anh
càng được sử dụng phổ biến hơn. Do đó, ngày nay, tiếng Anh được xem là một
ngôn ngữ chung, một hành lang quan trọng cho mọi người.
Tiếng Anh có vai trò vô cùng quan trọng, nó không chỉ là công cụ giao tiếp giữa
mọi người với nhau, mà tạo cơ hội thăng tiến cho những người đang làm việc, và
nhất là những người đang làm việc trong những doanh nghiệp nước ngoài, và còn là
một trong những điều kiện quyết định tương lai của hầu hết sinh viên khi tốt
nghiệp.
Nhận thấy được tầm quan trọng của tiếng Anh, nhóm chúng em đã quyết định
chọn đề tài “Xây dựng trang web học tiếng Anh sử dụng MERN STACK” để giúp
mọi người có thể học và rèn luyện tiếng Anh, củng cố thêm vốn từ vựng của mình.
1.2. MỤC ĐÍCH CỦA ĐỀ TÀI
Các mục tiêu của dự án nằm trong danh sách dưới đây:
- Phát triển hai mô-đun chính. Đầu tiên là hệ thống quản lý bao gồm các tính năng
cần thiết giúp quản trị viên và người tạo nội dung có thể quản lý dữ liệu của trang
web. Phần thứ hai tập trung vào trang web của người dùng, giúp người dùng có thể
luyện nghe, học, chơi các trò chơi nhỏ để củng cố thêm vốn từ vựng và rèn luyện kỹ
năng luyện nghe.
- Bên cạnh việc thực hiện chức năng chính, hệ thống phải đáp ứng các yêu cầu phi
chức năng như xác thực giữa người dùng và máy chủ, áp dụng phương pháp mã hóa
mật khẩu người dùng và thiết lập cơ chế phân quyền cho toàn hệ thống.
1
1.3. CÁCH TIẾP CẬN VÀ PHƯƠNG PHÁP NGHIÊN CỨU
1.3.1. Đối tượng nghiên cứu
Đối với đề tài “Xây dựng trang web học tiếng Anh sử dụng MERN STACK”,
đối tượng nghiên cứu dựa trên những nhu cầu cần thiết phải học tiếng Anh. Đồng
thời kèm theo đó là các công nghệ áp dụng để tạo ra ứng dụng. Cụ thể như sau:
Tập trung nghiên cứu Restful API, NodeJS, ExpressJS để xây dựng nên hệ
thống các APIs hỗ trợ lấy dữ liệu một cách chính xác và nhanh chóng nhất.
Áp dụng cơ sở dữ liệu noSQL là MongoDB để lưu trữ dữ liệu người dùng
của hệ thống.
Về phần bảo mật hệ thống, tiến hành nghiên cứu công nghệ Json Web Token
làm bảo mật cho hệ thống, tất cả các luồng dữ liệu vào ra đều được kiểm soát
thông qua Token. Người dùng bắt buộc phải đăng nhập vào hệ thống để có
một Token riêng và mỗi request từ phía người dùng đều phải thông qua một
“cánh cửa” Interceptor và Token là “chìa khóa”.
Về phần hiển thị cho người sử dụng cuối nhóm chúng em tiến hành nghiên
cứu Framework ReactJS và một số thư viện được hỗ trợ cho ReactJS để xây
dựng và xử lý giao diện và cho người dùng sử dụng.
1.3.2. Phạm vi nghiên cứu
Đề tài “Xây dựng trang web học tiếng Anh sử dụng MERN STACK” chủ yếu
tập trung vào các chức năng cơ bản của một trang web học tiếng Anh trực tuyến bao
gồm 2 phần là phần Quản trị và phần Người dùng.
Trong phần Quản trị, tập trung vào các nghiệp vụ như:
Quản lý tài khoản
Quản lý bài nghe
Quản lý ngữ pháp
Quản lý từ vựng
Quản lý bài trắc nghiệm
Trong phần Người dùng tập trung vào:
Đăng ký
Đăng nhập
2
Học bài nghe
Học ngữ pháp
Học phát âm
Học từ vựng
Chơi trò chơi
1.4. PHÂN TÍCH CÁC ỨNG DỤNG CÓ LIÊN QUAN
Hầu hết các website học tiếng anh đã được xây dựng và ra mắt rất nhiều, có nhiều
tính năng từ cơ bản đến phức tạp. Tuy nhiên một số ứng dụng vẫn có những nhược
điểm sau:
- Có tính phí người dùng.
- Giao diện còn hơi khó sử dụng đối với một số người mới dùng lần đầu.
- Các trang web hầu như chỉ chuyên về một tính năng nhất định.
1.5. KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC
Xây dựng một trang web học tiếng Anh trực tuyến với các tính năng cơ bản, đáp
ứng được nhu cầu học tiếng Anh cho người dùng.
3
PHẦN NỘI DUNG
Chương 1. CƠ SỞ LÝ THUYẾT
1.1. NODEJS [1]
1.3.3. Định nghĩa về NodeJS
NodeJS là một mã nguồn mở, đa nền tảng, chạy trên môi trường JavaSript, được
xây dựng trên V8 JavaScript engine của Chrome - V8 thực thi mã JavaScript bên
ngoài trình duyệt. Nó được tạo ra vào năm 2009 đi kèm với một lợi thế chính -
NodeJS cho phép thực hiện lập trình bất đồng bộ.
Ở chế độ đồng bộ thực thi từng dòng và tiến hành thực thi dòng tiếp theo khi
dòng hiện tại đã thực thi xong.
Khi bất đồng bộ thực thi tất cả dòng code cùng một lúc.
NodeJS là một nền tảng được xây dựng trên JavaScript runtime của Chrome với
mục đích xây dựng các ứng dụng mạng nhanh chóng và có thể mở rộng được một
cách dễ dàng hơn. NodeJS sử dụng mô hình I/O lập trình theo sự kiện, non-
blocking, do đó nodeJS khá gọn nhẹ và hiệu quả - công cụ hoàn hảo cho các ứng
dụng chuyên sâu về dữ liệu theo thời gian thực chạy trên các thiết bị phân tán.
NodeJS là môi trường runtime mã nguồn mở đa nền tảng, được sử dụng để phát
triển các ứng dụng mạng và ứng dụng server-side. Các ứng dụng NodeJS được viết
bằng JavaScript và có thể chạy trong NodeJS runtime trên OS X, Microsoft
Windows và Linux.
NodeJS cũng cung cấp một thư viện bao gồm rất nhiều các module JavaScript
khác nhau nhằm đơn giản hóa việc phát triển các ứng dụng web, qua đó giảm thiểu
tình trạng sử dụng quá nhiều Node.js.
1.3.4. Các tính năng của NodeJS
Lập trình hướng sự kiện và không đồng bộ: Toàn bộ API trong thư viện NodeJS đều
không đồng bộ, hay không bị chặn. Về cơ bản điều này có nghĩa là một server sử
dụng NodeJS sẽ không bao giờ chờ một API trả về dữ liệu. Server sẽ chuyển sang
API kế tiếp sau khi gọi API đó và cơ chế thông báo của Events trong NodeJS giúp
server nhận được phản hồi từ lần gọi API trước.
Cực kỳ nhanh chóng: Được xây dựng trên Công cụ JavaScript V8 của Google
Chrome, thư viện NodeJS có khả năng xử lý mã vô cùng nhanh.
4
Đơn luồng/Single thread nhưng có khả năng mở rộng cao: NodeJS sử dụng một mô
hình luồng đơn với vòng lặp sự kiện/event. Cơ chế event cho phép máy chủ phản
hồi non-blocking và cũng cho phép khả năng mở rộng cao hơn so với các server
truyền thống hỗ trợ giới hạn các thread để xử lý yêu cầu. NodeJS sử dụng một
chương trình đơn luồng, cùng một chương trình có thể cung cấp dịch vụ cho một số
lượng yêu cầu lớn hơn so với các máy chủ truyền thống như Apache HTTP Server.
Không có buffer - Các ứng dụng NodeJS không có vùng nhớ tạm thời (buffer) cho
bất kỳ dữ liệu nào. Các ứng dụng này chỉ đơn giản xuất dữ liệu theo khối.
License - NodeJS được phát hành theo giấy phép MIT.
1.3.5. Đối tượng và ứng dụng của NodeJS
1.3.5.1. Đối tượng
Các công ty đang sử dụng Nodejs có thể kể đến một số tên tuổi lớn như eBay,
General Electric, GoDaddy, Microsoft, PayPal, Uber, Wikipin, Yahoo, và Yammer
1.3.5.2. Ứng dụng
- Hệ thống Notification - Giống như Facebook hay Twitter.
- Websocket server - Các máy chủ web socket như là Online Chat, Game
Server…
- Fast File Upload Client - Các chương trình upload file tốc độ cao.
- Ad Server - Các máy chủ quảng cáo.
- Cloud Services - Các dịch vụ đám mây.
- RESTful API - Những ứng dụng mà được sử dụng cho các ứng dụng khác
thông qua API.
- Any Real-time Data Application - Bất kỳ một ứng dụng nào có yêu cầu về
tốc độ thời gian thực.
- Ứng dụng Single Page Application (SPA) - Những ứng dụng này thường
request rất nhiều đến server thông qua AJAX
- Ứng dụng truy vấn tới NoSQL database - Như MongoDB, CouchDB, …
- Ứng dụng CLI - Các công cụ sử dụng command-line.
1.3.6. Một số ưu, nhược điểm của NodeJS
1.3.6.1. Ưu điểm
5
- Nhận và xử lý nhiều kết nối chỉ với một single-thread 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.
- NodeJS tận dụng tối đa tài nguyên của server mà không tạo ra độ trễ vì áp
dụng ưu điểm non-blocking I/O của Javascript.
- 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ụ Website làm bằng
JSON.
- Với khả năng xử lý nhiều Request/s đồng thời thời gian phản hồi nhanh. Rất
phù hợp để áp dụng NodeJS để xây dựng các ứng dụng Single page
Application, các ứng dụng không muố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, các **ứng dụng thời gian thực **như
ứng dụng chat, các dịch vụ mạng xã hội như Facebook, Twitter, …
- 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.
- Streaming Data: Các web thông thường gửi HTTP request và nhận phản hồi
lại (Luồng dữ liệu). Giả xử sẽ cần xử lý 1 luồng giữ liệu cực lớn, 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.
- Viết được cho cả 2 phía server và client. Chạy đa nền tảng trên Windows,
MAC hoặc Linux. Hơn nữa cộng đồng NodeJS rất lớn và hoàn toàn miễn
phí.
1.3.6.2. Nhược điểm
- Rất hạn chế khi áp dụng NodeJS khi xây dựng ứng dụng nặng, tốn tài
nguyên. Bởi vì NodeJS được viết bằng C++ & Javascript, nên phải thông qua
thêm 1 trình biên dịch của NodeJS sẽ lâu hơn 1 chút.
- Giống như hầu hết các công nghệ mới, việc triển khai NodeJS trên host
không phải là điều dễ dàng.
- Thiếu sự kiểm duyệt chất lượng các module NodeJS.
1.3.7. Sử dụng NodeJS trong đề tài
Sử dụng NodeJS để làm môi trường xây dựng website bên phía server.
6
1.6. EXPRESSJS
1.4.1. Định nghĩa về ExpressJS [2]
ExpressJS là một framework được xây dựng trên nền tảng của NodeJS. Nó cung
cấp các tính năng mạnh mẽ để phát triển web hoặc mobile. ExpressJS hỗ trợ các
method HTTP và middleware tạo ra API vô cùng mạnh mẽ và dễ sử dụng.
Hình 1. Cấu trúc một API được xây dựng với ExpressJS
1.4.2. Tại sao nên sử dụng Expressjs trong lập trình web? [3]
1.4.2.1. Sự phổ biến của Javascript
Javascript là một ngôn ngữ lập trình được sử dụng rộng rãi hiện nay, dễ đọc
và được hỗ trợ ở mọi nơi. Mà Expressjs lại hỗ trợ Javascript, do đó nếu bạn đã biết
đến Javascript thì chắc chắn việc lập trình bằng Express.js là vô cùng đơn giản.
Ngay cả những người mới bắt đầu tham gia vào lĩnh vực phát triển web này cũng có
thể sử dụng Expressjs.
Javascript là ngôn ngữ lập trình dễ học với cả những người không có bất kỳ
kiến thức gì về ngôn ngữ lập trình khác. Chính vì tính phổ biến, dễ học và dễ sử
dụng này mà Express.js cho phép các tài năng trẻ tham gia và đạt được nhiều thành
công trong phát triển ứng dụng web.
1.4.2.2. Hỗ trợ xây dựng website một cách nhanh chóng
Thời gian chính là tài sản quý giá của bất kỳ doanh nghiệp nào. Hơn thế, nhiều lập
trình viên còn phải chịu áp lực xây dựng các ứng dụng web một cách hiệu quả trong
7
thời gian ngắn. Nhưng để thực hiện tốt công việc này cần rất nhiều thời gian và
Express.js chính là công cụ cứu cánh cho các nhà lập trình.
Express.js có thể giúp làm giảm một nửa thời gian viết mã mà vẫn xây dựng lên các
ứng dụng web hiệu quả. Không chỉ trợ giúp về mặt thời gian Expressjs còn làm
giảm những áp lực cần thiết để xây dựng với sự trợ giúp của các tính năng khác
nhau của nó. Express js còn cung cấp một phần mềm trung gian đảm nhận nhiệm vụ
đưa ra các quyết định để phản hồi chính xác những yêu cầu của khách hàng.
Nếu không có Express.js, các lập trình viên phải viết mã code riêng để xây dựng
nên thành phần định tuyến. Đó là một công việc vô cùng tẻ nhạt và tốn thời gian.
Express.js đã giúp cho công việc này trở nên đơn giản và hiệu quả hơn rất nhiều.
1.4.2.3. Express.js hoàn toàn miễn phí
Một trong những yếu tố để tổ chức, doanh nghiệp nên sử dụng công cụ, ứng
dụng nào chính là chi phí. Với một ứng dụng web với nhiều tính năng tuyệt vời như
vậy mà lại không tốn một chút kinh phí nào thì không có lý do gì để không sử dụng
nó.
1.4.3. Những tính năng của Expressjs là gì?[3]
- Phát triển máy chủ nhanh chóng: Expressjs cung cấp nhiều tính năng dưới
dạng các hàm để dễ dàng sử dụng ở bất kỳ đâu trong chương trình. Điều này
đã loại bỏ nhu cầu viết mã từ đó tiết kiệm được thời gian.
- Phần mềm trung gian Middleware: Đây là phần mềm trung gian có quyền
truy cập vào cơ sở dữ liệu, yêu cầu của khách hàng và những phần mềm
trung gian khác. Phần mềm Middleware này chịu trách nhiệm chính cho việc
tổ chức có hệ thống các chức năng của Express.js.
- Định tuyến - Routing: Express js cung cấp cơ chế định tuyến giúp duy trì
trạng thái của website với sự trợ giúp của URL.
- Tạo mẫu - Templating: Các công cụ tạo khuôn mẫu được Express.js cung
cấp cho phép các nhà xây dựng nội dung động trên các website bằng cách tạo
dựng các mẫu HTML ở phía máy chủ.
- Gỡ lỗi - Debugging: Để phát triển thành công các ứng dụng web không thể
thiết đi việc gỡ lỗi. Giờ đây với Expressjs việc gỡ lỗi đã trở nên dễ dàng hơn
nhờ khả năng xác định chính xác các phần ứng dụng web có lỗi.
8
Hình 2. Express.js cung cấp cơ chế định tuyến giúp duy trì trạng thái của website
1.4.4. Sử dụng ExpressJS trong đề tài
ExpressJs được dùng để xây dựng các API bên phía server cho website.
1.7. MONGODB [4]
1.5.1. Giới thiệu về MongoDB
MongoDB là phần mềm cơ sở dữ liệu mã nguồn mở NoSQL, được thiết kế
hướng theo đối tượng và hỗ trợ trên đa nền tảng. Các bảng MongoDB có cấu trúc
linh hoạt, cho phép dữ liệu không cần tuân theo bất kỳ dạng cấu trúc nào.
MongoDB hoạt động trên collection, hướng tài liệu kiểu JSON thay cho bảng để
tăng tốc độ truy vấn. MongoDB có chức năng định hướng tài liệu cung cấp, hiệu
suất cao, tính sẵn sàng cao và khả năng mở rộng dễ dàng.
9
Hình 3. MongoDB
Collection trong MongoDB về bản chất thì có thể hiểu là nhóm các
document, một collection sẽ chứa các tập document.
Ở MongoDB, các collection không theo bản chất cũ vì các document không
tuân theo cấu trúc, nghĩa là các document trong một collection không có cấu trúc cố
định như nhau (không cần chia ra các cột để lưu trữ), vậy thì không cần phải định
nghĩa thành phần các cột trong một collection như trong cơ sở dữ liệu quan hệ.
Giải thích thêm về NoSQL được nhắc đến ở khái niệm MongoDB
NoSQL là cơ sở dữ liệu được xây dựng dành riêng cho các ứng dụng hiện
đại, dữ liệu lưu trữ lớn và ứng dụng nền web thời gian thực. NoSQL cần đơn giản
trong thiết kế, kiểm soát tính khả dụng tốt và yêu cầu database lưu trữ dữ liệu dung
lượng cực lớn, tăng khả năng chịu lỗi tốt, thực hiện các truy vấn tốc độ cao không
đòi hỏi năng lực phần cứng và tài nguyên hệ thống.
1.5.2. Sử dụng MongoDB mang lại những lợi ích gì?
Nhờ vào tính linh hoạt và sự đa dạng hóa trong cách thức chuyển hóa cơ sở dữ
liệu, MongoDB trở thành giải pháp đáng tin cậy đối với nhiều doanh nghiệp.
MongoDB không chỉ là một cơ sở dữ liệu dựa trên tài liệu điển hình, mà nó còn nổi
bật nhờ vào một số tính năng khác như sau.
1.5.2.1. Truy vấn cơ sở dữ liệu đặc biệt
Thay vì sử dụng các lược đồ để xác định trước thì MongoDB lại sử dụng một
trong những lợi thế của mình là khả năng xử lý dữ liệu mà không cần lược đồ xác
định. Để nâng cao tính tối ưu và khả năng tiếp cận với các nhà phát triển,
10
MongoDB đã sử dụng ngôn ngữ truy vấn tương tự như cơ sở dữ liệu SQL. Với khả
năng này, MongoDB sẽ giúp chúng ta đơn giản hóa việc sắp xếp, truy vấn, cập nhật
và xuất dữ liệu của mình thông qua các phương pháp phổ biến khác.
Hình 4. Hình minh họa chức năng truy vấn cơ sở dữ liệu đặc biệt
1.5.2.2. Cân bằng tải
Để đảm bảo tính khả dụng và độ tin cậy của dịch vụ, yêu cầu quy mô ứng
dụng đám mây của doanh nghiệp phải tăng lên. MongoDB sẽ duy trì sự cân bằng
thông qua sự phân phối các tập dữ liệu trên nhiều máy ảo cùng lúc, có thể thực hiện
tác vụ đọc và ghi ở mức có thể chấp nhận. Đối với MongoDB dữ liệu lưu trữ được
mở rộng tính qui mô theo chiều ngang, đây được gọi là Sharding. Dựa vào điều này,
các tổ chức, doanh nghiệp sẽ tiết kiệm được chi phí mở rộng theo chiều dọc của
phần cứng, trong khi khả năng hoạt động trên đám mây vẫn giữ nguyên.
1.5.2.3. Hỗ trợ đa ngôn ngữ
Đây là một trong những điều tuyệt vời khi nhắc đến MongoDB, các phiên bản
được cập nhật và phát triển liên tục nhằm hỗ trợ cho quá trình điều khiển các ngôn
ngữ lập trình phổ biến như Python, PHP, Ruby, C++, Javascript, …
1.5.3. MongoDB có những ưu và nhược điểm gì?
1.5.3.1. Ưu điểm
- MongoDB là một cơ sở dữ liệu hướng tài liệu, sử dụng bộ nhờ nội tại,
truy cập dễ dàng nhờ vào việc lập ra các chỉ mục, tăng tốc độ phản hồi
11
truy vấn nhanh. Theo đánh giá thì tốc độ MongoDB có thể nhanh hơn
100 lần so với cơ sở dữ liệu quan hệ.
- Sự linh hoạt của cơ sở dữ liệu: MongoDB sử dụng lưu trữ dữ liệu dưới
dạng Document JSON nên mỗi collection sẽ có kích cỡ khác nhau và các
document cũng khác nhau. Do sử dụng cơ sở dữ liệu không có lược đồ
nên điều này mang lại sử linh hoạt và tự do lưu trữ dữ liệu thuộc nhiều
loại khác nhau.
- Khả năng mở rộng: Lợi thế về cơ sở dữ liệu theo chiều ngang, vì vậy, khi
xử lý một dữ liệu lớn thì chúng ta có thể phân phối cho nhiều máy.
- Đội ngũ hỗ trợ chuyên nghiệp: Khi gặp phải bất kỳ sự cố nào chúng ta có
thể liên hệ trực tiếp đến hệ thống hỗ trợ để xử lý kịp thời.
- Tính khả dụng cao: MongoDB không chỉ có các tính năng về sao chép
mà có thể sử dụng gridFS (có thể lưu trữ và truy xuất các tệp vượt quá
kích thước 16MB). Các tính năng giúp tăng tính khả dụng và đạt hiệu
suất cao.
13
REST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc dữ
liệu, một kiểu kiến trúc để viết API. Nó sử dụng phương thức HTTP đơn giản để tạo
cho giao tiếp giữa các máy. Vì vậy, thay vì sử dụng một URL cho việc xử lý một số
thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, …
đến một URL để xử lý dữ liệu.
RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng
dụng web để quản lý các resource. RESTful là một trong những kiểu thiết kế API
được sử dụng phổ biến ngày nay để cho các ứng dụng (web, mobile…) khác nhau
giao tiếp với nhau.
Chức năng quan trọng nhất của REST là quy định cách sử dụng các HTTP
method (như GET, POST, PUT, DELETE…) và cách định dạng các URL cho ứng
dụng web để quản các resource. RESTful không quy định logic code ứng dụng và
không giới hạn bởi ngôn ngữ lập trình ứng dụng, bất kỳ ngôn ngữ hoặc framework
nào cũng có thể sử dụng để thiết kế một RESTful API.
1.6.2. Cách thức hoạt động
REST hoạt động chủ yếu dựa vào giao thức HTTP. Các hoạt động cơ bản nêu
trên sẽ sử dụng những phương thức HTTP riêng.
- GET (SELECT): Trả về một Resource hoặc một danh sách Resource.
- POST (CREATE): Tạo mới một Resource.
- PUT (UPDATE): Cập nhật thông tin cho Resource.
- DELETE (DELETE): Xoá một Resource.
Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng
với Create, Read, Update, Delete (Tạo, Đọc, Sửa, Xóa).
1.6.3. Sử dụng RESTFUL API trong đề tài
RESTFUL API được dùng làm giao thức giao tiếp giữa Client và Server trong
ứng dụng.
1.9. REACTJS
1.7.1. Reactjs là gì [6]
React là thư viện JavaScript phổ biến nhất để xây dựng giao diện người dùng
(UI). Nó cho tốc độ phản hồi tuyệt vời khi user nhập liệu bằng cách sử dụng phương
pháp mới để render trang web.
14
Components của công cụ này được phát triển bởi Facebook. Nó được ra mắt
như một công cụ JavaScript mã nguồn mở vào năm 2013. Hiện tại, nó đã đi trước
các đối thủ chính như Angular và Bootstrap, hai thư viện JavaScript bán chạy nhất
thời bấy giờ.
1.7.2. Đặc trưng của ReactJS [7]
Những đặc điểm nổi bật của ReactJS:
1.7.2.1. JSX
Hình 7. JSX
Trong React, thay vì thường xuyên sử dụng JavaScript để thiết kế bố cục trang
web thì sẽ dùng JSX. JSX được đánh giá là sử dụng đơn giản hơn JavaScript và cho
phép trích dẫn HTML cũng như việc sử dụng các cú pháp thẻ HTML để render các
subcomponent. JSX tối ưu hóa code khi biên soạn, vì vậy nó chạy nhanh hơn so với
code JavaScript tương đương.
1.7.2.2. Redux
Một thành phần cực kỳ quan trọng, không một react developer nào mà không
biết.
- Single-way data flow (Luồng dữ liệu một chiều)
15
Hình 8. Luồng dữ liệu một chiều
ReactJS không có những module chuyên dụng để xử lý data, vì vậy ReactJS
chia nhỏ view thành các component nhỏ có mối quan hệ chặt chẽ với nhau. Tại sao
chúng ta phải quan tâm tới cấu trúc và mối quan hệ giữa các component trong
ReactJS? Câu trả lời chính là luồng truyền dữ liệu trong ReactJS: Luồng dữ liệu một
chiều từ cha xuống con. Việc ReactJS sử dụng one-way data flow có thể gây ra một
chút khó khăn cho những người muốn tìm hiểu và ứng dụng vào trong các dự án.
Tuy nhiên, cơ chế này sẽ phát huy được ưu điểm của mình khi cấu trúc cũng như
chức năng của view trở nên phức tạp thì ReactJS sẽ phát huy được vai trò của mình.
- Virtual DOM
17
Hình 11. JWT
1.8.2.1. Header
Header bao gồm hai phần chính:
typ – Loại token (mặc định là JWT – cho biết đây là một Token JWT)
1.8.2.2. Payload
Là nơi chứa các nội dung của thông tin (claim). Thông tin truyền đi có thể là mô tả
của 1 thực thể (ví dụ như người dùng) hoặc cũng có thể là các thông tin bổ sung
thêm cho phần Header. Chúng được chia làm 3 loại: reserved, public và private
- Reserved: là những thông tin đã được quy định ở trong IANA JSON Web
Token Claims registry. Những thông tin này không có cái nào là bắt buộc
18
cả. Tuy nhiên tùy vào từng ưng dụng bạn implement mà hãy ràng buộc yêu
cầu bắt buộc đối với những thông tin cần thiết
exp (expired time): thời điểm token sẽ hết hạn (không bắt buộc)
nbf (not before time): token sẽ chưa hợp lệ trước thời điểm này
iat (issued at): thời điểm token được phát hành, tính theo UNIX
time
jti: JWT ID
- Public: Khóa có thể define tùy theo ý muốn của người sử dụng JWT. Tuy
nhiên để tránh trùng lặp, khó nên được quy định ở trong IANA JSON Web
Token Registry hoặc là 1 URI có chứa không gian tên không bị trùng lặp.
- Private: Phần thông tin thêm dùng để truyền qua giữa các client.
Ví dụ:
1.8.2.3. Signature
Phần chữ ký được tạo bằng cách kết hợp 2 phần Header + Payload, rồi mã hóa nó
lại bằng 1 giải thuật encode bất kỳ ví dụ như HMAC SHA-256
19
Hình 13. JWT format
Nhìn vào hình ta có thể thấy flow đi như sau:
1. User thực hiện login bằng cách gửi id/password hay sử dụng các tài khoản
mạng xã hội lên phía Authentication Server (Server xác thực)
2. Authentication Server tiếp nhận các dữ liệu mà User gửi lên để phục vụ
cho việc xác thực người dùng. Trong trường hợp thành công,
Authentication Server sẽ tạo một JWT và trả về cho người dùng thông
qua response.
3. Người dùng nhận được JWT do Authentication Server vừa mới trả về làm
“chìa khóa” để thực hiện các “lệnh” tiếp theo đối với Application Server.
4. Application Server trước khi thực hiện yêu cầu được gọi từ phía User, sẽ
verify JWT gửi lên. Nếu OK, tiếp tục thực hiện yêu cầu được gọi.
1.8.4. Hệ thống Verify chuỗi JWT thế nào?
- Chuỗi JWT có cấu trúc H.P.S được Client gửi lên. Server sẽ làm tương tự
như sau
Set S1 = S
So sánh S1 == S2?
20
- Nếu S1 và S2 khớp nhau, tức là chữ ký hợp lệ, hệ thống mới tiếp decode
payload và tục kiểm tra các data trong payload. Ví dụ trường exp (expiration
date).
1.8.5. Khi nào sử dụng JWT?
Với JWT, chúng ta không cần phải giữ session data trên server để xác thực user.
Luồng đi như sau:
- Người dùng gọi authentication service để gửi username/password.
- Authentication service phản hồi cho người dùng mã JWT, cái này sẽ định
nghĩa xem user là ai.
- Người dùng yêu cầu truy cập một dịch vụ được bảo mật bằng việc gửi
token lên.
- Lớp bảo mật sẽ check chữ ký trên token và nếu đó là quyền truy cập hợp
lệ thì được tiếp tục truy cập.
Các sessions sẽ có thời hạn hết hạn và cần phải được xử lý kiểu xoá đi các session
hết hạn này. JWT hoàn toàn có thể sở hữu chính expiry date của chính nó kèm với
dữ liệu user. Cho nên khi tầng Security check authen của JWT, nó có thể check
expiry time của token và đơn giản là từ chối truy cập.
Nếu không sử dụng session thì bạn mới có thể ứng dụng tạo một service thuần
RESTful, bởi vì một service thuần RESTful được định nghĩa là phải stateless. Với
dung lượng nhỏ, JWT có thể được gửi lên với mọi request cũng giống như session
cookie. Nhưng ko giống với session cookie, nó ko cần phải trỏ đến bất kì dữ liệu
nào được lưu trữ trên server, bản thân JWT đã có dữ liệu.
1.8.6. Sử dụng JSON Web Token trong hệ thống
JSON Web Token được dùng làm giao thức xác thực quyền truy cập của người
dùng trong hệ thống.
21
Hình 14. Màn hình trang chủ website Doulingo
2.1.1.1. Các chức năng chính
- Lựa chọn nhiều ngôn ngữ muốn học.
- Hiển thị các chủ đề theo lộ trình từ dễ đến khó.
- Đặt mục tiêu hằng ngày và nhắc nhở chúng ta hoàn thành nó.
- Bảng xếp hạng trình độ học.
- Diễn đàn trao đổi.
2.1.1.2. Ưu điểm
- Có nhiều ngôn ngữ để lựa chọn.
- Giao diện thân thiện, dễ sử dụng.
- Số lượng bài học lớn.
- Được thiết kế đầy đủ từ cơ bản đến nâng cao.
2.1.1.3. Nhược điểm
- Chỉ phù hợp với những người mất gốc và muốn học lại từ đầu.
- Dễ gây nhàm chán với những người có kiến thức từ trước.
2.1.2. Elllo
Elllo là một trang cực kỳ nổi tiếng về việc học tiếng Anh, đặc biệt là việc học nghe.
Có hơn 1300 bài học nghe trên trang web này. Ngoài ra trang web còn có rất nhiều
video và các công cụ học tập khác giúp chúng ta cải thiện việc học ngôn ngữ.
22
Hình 15. Màn hình trang chủ website Ello
2.1.2.1. Các chức năng chính
- Học bài nghe qua video, script và làm bài trắc nghiệm.
- Học bài ngữ pháp qua các chủ đề, video, script và làm bài trắc nghiệm.
- Tìm kiếm và lọc danh sách bài nghe theo chủ đề.
- Cho phép download tài liệu.
2.1.2.2. Ưu điểm
- Các bài học được chia làm nhiều chủ đề và cấp độ khác nhau.
- Tất cả bài học đều có transcript và bài tập từ vựng đi kèm và đồng thời còn
cho phép người học tải về để sử dụng offline.
- Số lượng bài tập tự luyện lớn.
- Có các bài học phù hợp cho cả giáo viên và sinh viên.
- Trang web cung cấp miễn phí tài liệu cho người dùng muốn học theo lộ
trình.
2.1.2.3. Nhược điểm
- Website có cấu trúc phức tạp.
- Không sắp xếp bài học để học theo thứ tự
- Khó tiếp cận với người mới bắt đầu.
2.1.3. BBC English
BBC Learning English là trang web học tiếng anh online chuyên về chủ đề ngữ
pháp, từ vựng, phát âm, tìm hiểu bí quyết dạy tiếng Anh…, ngoài ra bạn cũng có thể
23
tự kiểm tra trình độ tiếng Anh qua các bài thi trực tuyến. Bên cạnh đó còn có rất
nhiều bài luyện nghe có thể download ngay tại website về máy để ôn tập mỗi ngày
hiệu quả hơn.
24
để học từ vựng tiếng Anh. Đây là trang web học từ vựng tiếng Anh hàng đầu tại
Việt Nam tính tới thời điểm hiện tại.
25
- Sau khi học những bộ từ miễn phí ban đầu thì bạn phải trả phí để học các bộ
từ vựng khác
- Đây chưa phải là trang web tối ưu cho những ai cần hoàn thiện cả 4 kỹ năng,
nó chủ yếu giúp bạn nâng cao vốn từ vựng.
2.1.5. Busuu
Busuu là trang web học ngoại ngữ cung cấp các khóa học về kĩ năng viết, nâng cao
vốn từ vựng, kĩ năng đọc hiểu, … Bên cạnh các khóa học còn có phương pháp học
tiếng Anh bằng cách tham gia vào diễn đàn và nói chuyê ̣n, giao lưu với các thành
viên đến từ nhiều nước trên thế giới.
Người quản trị: sử dụng hệ thống với đặc quyền cao nhất. Người thực hiện các
chức năng quản trị hệ thống, đó là quản lý người dùng, ngữ pháp, các bài
luyện nghe, từ vựng, bài trắc nghiệm và xem các thống kê. Các chức năng
quản trị cấp cao trong hệ thống này phải được đăng nhập.
Người tạo nội dung: dưới sự kiểm soát của Người quản trị, Người tạo nội dung
có quyền quản lý ngữ pháp, các bài trắc nghiệm, bài luyện nghe, từ vựng. Các
chức năng quản trị trong hệ thống này phải được đăng nhập.
Người dùng được xác thực: có thể xem các bài luyện nghe, học ngữ pháp, từ
vựng, bảng phiên âm, chơi các trò chơi ôn tập và xem bảng xếp hạng của các
trò chơi. Các chức năng người dùng này phải được đăng nhập
27
Khách vãng lai: đăng ký tài khoản để đăng nhập vào hệ thống.
2.2.1.2. Các chức năng chính
Các chức năng của Người quản trị
Bảng 1. Bảng chức năng của Người quản trị
3 Phân quyền người dùng Phân quyền truy cập cho người dùng
trong hệ thống
5 Thêm người dùng Thêm một tài khoản người dùng vào hệ
thống
6 Chỉnh sửa người dùng Chỉnh sửa thông tin tài khoản người
dùng trong hệ thống
7 Xem danh sách người dùng Xem danh sách người dùng trong hệ
thống
2 Chỉnh sửa bài nghe Chỉnh sửa một bài nghe trong hệ thống
5 Chỉnh sửa ngữ pháp Chỉnh sửa ngữ pháp trong hệ thống
28
6 Xóa ngữ pháp Xóa ngữ pháp trong hệ thống
10 Thêm bài trắc nghiệm Thêm bài trắc nghiệm của tệp luyện
nghe hoặc ngữ pháp vào hệ thống
11 Chỉnh sửa bài trắc nghiệm Chỉnh sửa câu hỏi và các đáp án của câu
hỏi trong bài trắc nghiêm
12 Xem danh sách bài nghe Xem, tìm kiếm và lọc danh sách bài
nghe
13 Xem danh sách ngữ pháp Xem, tìm kiếm và lọc danh sách ngữ
pháp
14 Xem danh sách từ vựng Xem, tìm kiếm và lọc danh sách từ vựng
2 Học bảng phiên âm Người dùng xem video bài giảng và chi
tiết của âm, nghe audio cách phát âm
4 Học bài luyện nghe Người dùng xem video và script, trả lời
các câu hỏi trắc nghiệm của video
5 Chỉnh sửa thông tin cá nhân Người dùng có thể chỉnh sửa thông tin
cá nhân của mình
29
6 Đổi mật khẩu Người dùng có thể đổi mật khẩu tài
khoản đăng nhập
8 Chơi các trò chơi Chơi ba trò chơi là: Hãy chọn từ đúng,
Ghép từ, Tay nhanh hơn não
9 Xem bảng xếp hạng Xem bảng xếp hạng người chơi trong
các trò chơi
30
Các chức năng của Khách vãng lai
Bảng 4. Bảng chức năng của Khách vãng lai
31
uc UC_Admin
Xem thong ke
Nguoi quan tri
Dang xuat
Them bai nghe
Chinh sua bai nghe
Dang nhap
Xem danh sach bai
«include» «include» nghe Xem danh sach ngu
«include» phap
«include»
«include»
Them tu vung
«include»
Quan ly tu vung
«include» Xoa tu vung
«include»
«include»
Xem danh sach tu
vung
Chinh sua tu vung
«include»
Chinh sua bai trac
Chinh sua thong tin nghiem
ca nhan
«extend» Doi mat khau
Hình 19. Lược đồ chức năng Người quản trị và Người tạo nội dung
2.3.1.2. Lược đồ chức năng của Người dùng và Khách vãng lai
32
uc UC_User
Dang ky
«extend»
Nghe video
«include»
«include»
«include»
Xem file script
«include»
«include»
Hoc tu vung
Hình 20. Lược đồ chức năng của Khách vãng lai và Người dùng
2.4. MÔ TẢ USECASE
2.4.1. Chức năng của “Khách vãng lai”
2.4.1.1. Use case “Đăng ký”
33
uc Usecases
Dang ky
1 Người dùng click vào “Đăng Trang web chuyển hướng đến trang
ký” ở phía bên phải của thanh “Đăng ký”
điều hướng.
3 Người dùng click vào “Đăng Hiển thị thông báo "Đăng ký thành
ký” công" và chuyển về Trang chủ
[Ngoại lệ 4]
1 Người dùng để trống một trong Lỗi xuất hiện dưới phần nhập ở các
các trường tên, email, mật khẩu, trường là “Input value.”
xác nhận mật khẩu hoặc bỏ trống
tất cả
2 Email không đúng định dạng Lỗi xuất hiện dưới phần nhập email
người dùng “Email không hợp lệ”
3 Password có chiều dài dưới 6 ký tự Lỗi xuất hiện dưới phần nhập mật
khẩu “Mật khẩu tối thiểu 6 ký tự.”
4 Email đã tồn tại trong hệ thống Lỗi xuất hiện dưới phần nhập tên
người dùng “Email đã tồn tại.”
35
Các ràng buộc:
Dang nhap
36
Kích hoạt:
Người dùng cần đăng nhập trang web cho một số chức năng cụ thể.
Người dùng nhấp vào “Đăng nhập” trên thanh điều hướng.
Tiền điều kiện:
Người dùng chưa đăng nhập vào website.
Hậu điều kiện:
Thành công: Người dùng đã đăng nhập vào trang web theo vai trò cụ thể.
Không thành công: Hiển thị thông báo lỗi.
Dòng sự kiện chính:
1 Người dùng click vào “Đăng Trang web chuyển hướng đến trang
nhập” ở phía bên phải của thanh Đăng nhập
điều hướng
3 Người dùng click vào “Đăng Đóng của sổ Đăng nhập. Ở bên phải
nhập” của thanh điều hướng sẽ có tên
người dùng của người dùng
[Ngoại lệ 3]
[Ngoại lệ 4]
[Ngoại lệ 5]
1 Người dùng để trống email hoặc Lỗi xuất hiện dưới phần nhập email
password hoặc cả hai trường đều hoặc password
trống
37
2 Password ngắn hơn 6 ký tự Lỗi xuất hiện dưới phần nhập mật
khẩu “Mật khẩu tối thiểu 6 ký tự.”
3 Email không tồn tại Hiển thị thông báo lỗi “Email không
tồn tại.”
4 Password không đúng Hiển thị thông báo lỗi “Mật khẩu
không chính xác.”
5 Tài khoản đã bị kháo Hiển thị thông báo lỗi “Tài khoản đã
bị khóa”
Dang xuat
Nguoi dung
Nguoi quan tri
38
Ngày tháng 10/10/2020 Mức độ Thấp
1 Người dùng nhấp vào icon Trang web hiển thị các tùy chọn
Avatar “Thông tin cá nhân”, “Cài đặt”,
“Đăng xuất”
2 Người dùng chọn “Đăng xuất” Hiển thị thông báo đăng xuất thành
công. Quay lại trang chủ khi chưa
đăng nhập
39
2.4.2.3. Use case “Học bảng phiên âm”
uc Usecases
40
Thành công: Người dùng vào được trang Bảng phiên âm.
Dòng sự kiện chính:
1 Người dùng click vào Trang web hiển danh sách bảng
“Pronunciation” phiên âm
2 Người dùng chọn một phiên âm Trang web hiển trang chi tiết phiên
cần học âm
4 Người dùng click vào Hiển thị danh sách phiên âm liên
“Relative” quan cùng loại
41
case
1 Người dùng nhấp vào nút Trang web chuyển đến trang ngữ
“Grammar” pháp
2 Người dùng chọn mức độ của Trang web chuyển đến trang danh
ngữ pháp sách ngữ pháp của mức độ được
chọn
3 Người dùng chọn một ngữ pháp Trang web hiển trang chi tiết ngữ
cần học pháp
42
nghe bài giảng ngữ pháp
5 Người dùng chọn lần lượt các Hiển thị nội dung các tab người
tab để xem script, ngữ pháp và dùng đã chọn
làm câu hỏi trắc nghiệm
Hoc tu vung
43
Cho phép người dùng học nhiều từ vựng mới theo nhiều chủ đề các nhau.
Mục tiêu:
Người dùng học từ vựng theo các chủ đề.
Kích hoạt:
Người dùng nhấp vào nút “Vocabulary”.
Tiền điều kiện:
Người dùng đã đăng nhập vào hệ thống
Hậu điều kiện:
Thành công: Người dùng vào được trang Từ vựng.
Dòng sự kiện chính:
1 Người dùng nhấp vào nút Trang web chuyển đến trang hiển thỉ
“Vocabulary” các chủ đề của từ vựng
2 Người dùng chọn một chủ đề Trang web chuyển đến trang hiển thị
từ vựng của chủ đề vừa chọn
3 Người dùng chọn icon “Speak” Phát audio cách đọc từ vựng
để nghe cách đọc của từ vựng
4 Người dùng click icon “Next” Hiển thị từ vựng tiếp theo của chủ
để học từ tiếp theo đề
[Thay thế 1]
1 Người dùng click vào icon Hiển thị lại từ vựng vừa xem
“Prev”
44
2 Người dùng chọn icon Hiển thị từ vựng theo gallery
“Gallery” để học từ vựng theo
giao diện slide
Ngoại lệ:
Mối liên hệ:
Các ràng buộc:
45
Mục tiêu:
Người dùng có thể nghe video, xem script và trả lời các câu hỏi để cải
thiện kỹ năng nghe.
Kích hoạt:
Người dùng cần đăng nhập trang web.
Người dùng click vào “Listenning”.
Hậu điều kiện:
Người dùng đã đăng nhặp vào website.
Post conditions:
Thành công: trang web hiển thị video tiếng anh
Dòng sự kiện chính:
1 Người dùng click vào Trang web chuyển hướng đến trang
“Listenning” ở trang chủ hệ Listenning
thống
2 Người dùng chọn một chủ đề Trang web chuyển hướng đến trang
luyện nghe hiển thị danh sách bài nghe của chủ
đề được chọn
3 Người dung chọn một bài nghe Trang web chuyển hướng đến trang
học bài nghe
5 Người dùng click vào “Script” Hiển thị file script của video
để xem file script của video
6 Người dùng click vào “Quiz” để Hiển thị các câu trắc nghiệm của
trả lời các câu hỏi video
7 Người dùng chọn đáp án Tick xanh vào đáp án người dùng đã
chọn
8 Người dùng click vào “Check Hiển thị kết quả “v” nếu người dung
46
Answer” chọn đúng và “x” nếu người dungf
chọn sai
9 Người dùng click vào “Reset Hủy các câu trả lời người dùng đã
Quiz” chọn, tải lại trang Quiz trống
10 Người dùng click vào “Show Hiển thị các đáp án màu xanh là đáp
Answer” án của các câu trắc nghiệm
47
Ngày tháng 10/10/2020 Mức độ Trung bình
Người dùng click vào icon “Avatar” trên thanh điều hướng.
Người dụng chọn “Thông tin cá nhân”.
Người dùng click vào “Chỉnh sửa”.
Tiền điều kiện:
Thành công: Trang web quay trở lại trang thông tin người dùng.
Không thành công: Trang web hiện lỗi.
Dòng sự kiện chính:
1 Người dùng click vào icon Hiển thị các tùy chọn “Thông tin cá
“Avatar” trên thanh điều hướng nhân”, “Cài đặt”, “Đăng xuất”.
2 Người dụng chọn “Thông tin cá Hệ thống chuyển đến trang thông tin
nhân” chi tiết người dùng
5 Người dùng click “Chỉnh sửa” Thông báo đổi thành công. Quay lại
[Thay thế 1] trang thông tin cá nhân người dùng
48
Bước Hành động tác nhân Phản ứng hệ thống
1 Người dùng click “Hủy bỏ” Hủy các thay đổi và quay lại trang
thông tin cá nhân người dùng
Ngoại lệ:
1 Người dùng nhập mật khẩu mới Lỗi xuất hiện dưới phần nhập mật
dưới 6 ký tự khẩu mới “Mật khẩu phải tối thiểu 6
ký tự.”
2 Mật khẩu mới và mật khẩu xác Lỗi xuất hiện dưới phần nhập mật
nhận không khớp khẩu xác nhận “Xác nhận mật khẩu
không khớp.”
Nguoi dung
Hình 29. Lược đồ chức năng Chỉnh sửa thông tin cá nhân
49
Bảng 13. Bảng mô tả chức năng Chỉnh sửa thông tin cá nhân
Người dùng click vào icon “Avatar” trên thanh điều hướng.
Người dụng chọn “Thông tin cá nhân”.
Người dùng click vào “Chỉnh sửa”.
Tiền điều kiện:
Thành công: Trang web quay trở lại trang thông tin người dùng.
Không thành công: Trang web hiện lỗi.
Dòng sự kiện chính:
1 Người dùng click vào icon Hiển thị các tùy chọn “Thông tin cá
“Avatar” trên thanh điều hướng nhân”, “Cài đặt”, “Đăng xuất”.
2 Người dụng chọn “Thông tin cá Hệ thống chuyển đến trang thông tin
50
nhân” chi tiết người dùng
4 Người dùng chỉnh sửa tên Hiển thị thông tin chỉnh sửa
5 Người dùng click “Chỉnh sửa” Thông báo đổi thành công. Quay lại
[Thay thế 1] trang thông tin cá nhân người dùng
1 Người dùng click “Hủy bỏ” Hủy các thay đổi và quay lại trang
thông tin cá nhân người dùng
Ngoại lệ:
Mối liên hệ:
Các ràng buộc Business:
Thành công: Cho phép người dùng chơi các trò chơi.
Dòng sự kiện chính:
1 Người dùng click vào “Playing Chuyển đến trang hiển thi các trò
Games” chơi
2 Người dùng click vào “Hãy Chuyển đến trang chơi trò chơi
chọn từ đúng” “Hãy chọn từ đúng”
[Thay thế 1]
[Thay thế 2]
1 Người dùng click vào “Ghép từ” Chuyển đến trang chơi trò chơi
“Ghép từ”
2 Người dùng click vào “Tay Chuyển đến trang chơi trò chơi “Tay
52
nhanh hơn não” nhanh hơn não”
Ngoại lệ:
Mối liên hệ:
Các ràng buộc Business:
Nguoi dung
53
Người dùng xem bảng xếp bạng các trò chơi và số coin.
Kích hoạt:
Thành công: Cho phép người dùng chơi các trò chơi.
Dòng sự kiện chính:
1 Người dùng click vào “Playing Chuyển đến trang hiển thi các trò
Games” chơi
2 Người dùng click vào “Xem Chuyển đến trang hiển thị bảng
bảng xếp hạng” bảng người dung có nhiều coin nhất,
các bảng xếp hạng của các trò chơi
“Hãy chọn từ đúng”, “Ghép từ”,
“Tay nhanh hơn não”
54
uc Usecases
Hình 32. Lược đồ chức năng Xem danh sách bài nghe
Bảng 16. Bảng mô tả chức năng Xem danh sách bài nghe
55
Hậu điều kiện:
Thành công: hiển thị danh sách bài luyện nghe
Dòng sự kiện chính:
1 Người dùng click vào “Quản lý Trang web hiển thị danh sách các
bài nghe” ở trang chủ hệ thống tệp nghe của hệ thống
2 Người dùng click vào icon Hiển thị hộp thoại lọc theo chủ đề
“Setting” để lọc danh sách theo
chủ đề
3 Người dùng chọn chủ đề Hiển thị thông tin người dùng đã
chọn
4 Người dùng click “OK” Hiển thị danh sách bài nghe được
[Thay thế 1] lọc theo chủ đề được chọn
5 Người dùng chọn icon “Filter” Hiển thị các tùy chọn “Newest”,
để lọc bài nghe mới nhất hoặc “Oldest”
cũ nhất
6 Người dùng chọn “Newest” Hiển thị bài nghe được sắp xếp từ
[Thay thế 2] mới nhất đến cũ nhất
7 Người dùng gõ tên bài nghe vào Hiển thị danh sách bài nghe có tên
ô tìm kiếm đúng và gần đúng với từ khóa tìm
kiếm
[Ngoại lệ 1]
2 Người dùng chọn “Oldest” Hiển thị bài nghe được sắp xếp từ cũ
nhất đến mới nhất
Ngoại lệ:
56
Bước Hành động tác nhân Phản ứng hệ thống
1 Không tìm thấy bài nghe có tên Hiển thị “No result”
trùng với từ khóa tìm kiếm
57
Kích hoạt:
Người dùng cần đăng nhập trang web với quyền quản trị viên hoặc quyền
tạo nội dung.
Người dùng click vào “Quản lý bài nghe”.
Người dùng click vào icon “Add”.
Tiền điều kiện:
Người dùng đã đăng nhập vào website với quyền quản trị hoặc quyền tạo
nội dung.
Hậu điều kiện:
Thành công: thêm tệp nghe mới vào danh sách tệp nghe.
Dòng sự kiện chính:
1 Người dùng click vào “Quản lý Trang web hiển thị danh sách các
bài nghe” ở trang chủ hệ thống tệp nghe của hệ thống
2 Người dùng click vào icon Trang web chuyển hướng đến trang
“Add” thêm tệp nghe mới
3 Người dùng thêm tên, mô tả, Hiển thị thông tin người dùng đã
chủ đề, script, hình ảnh, và thêm
upload video
[Thay thế 1]
4 Người dùng click “Save” Hiển thị thông báo “Thêm bài nghe
[Thay thế 2] thành công”
[Ngoại lệ 1]
[Ngoại lệ 2]
1 Người dùng chọn thêm link Hiển thị thông tin người dùng nhập
youtube video
58
2 Người dùng click vào “Return” Quay lại trang quản lý bài nghe
Ngoại lệ:
1 Người dùng không nhập đầy đủ Hiển thị thông báo “Error, không thể
các trường thông tin bắt buộc tạo listening”
2 Người dùng thêm link video không Hiển thị thông báo “Link video is
phải link youtube invalid.”
59
Đối tượng sử dụng:
Người quản trị hệ thống, người tạo nội dung
Tổng quan:
Cho phép người quản trị chỉnh sửa các tệp nghe của hệ thống
Mục tiêu:
Câp nhật các tệp nghe trong database.
Kích hoạt:
Người dùng cần đăng nhập trang web với quyền quản trị viên hoặc quyền
tạo nội dung.
Người dùng click vào “Quản lý bài nghe”.
Người dùng click icon “Edit” của tệp cần chỉnh sửa
Tiền điều kiện:
Người dùng đã đăng nhập vào website với quyền quản trị hoặc quyền tạo
nội dung.
Hậu điều kiện:
Thành công: cấp nhật tệp nghe sau chỉnh sửa trong danh sách tệp nghe.
Dòng sự kiện chính:
1 Người dùng click vào “Quản lý Trang web hiển thị danh sách các
bài nghe” ở trang chủ hệ thống tệp nghe của hệ thống
2 Người dùng click icon “Edit” Trang web chuyển hướng đến trang
của tệp cần chỉnh sửa chi tiết tệp nghe
3 Người dùng chỉnh sửa tên, mô Hiển thị thông tin người dùng đã
tả, chủ đề, hình ảnh, script và chỉnh sửa
upload video
[Thay thế 1]
4 Người dùng click “Save” Hiển thị thông báo “Chỉnh sửa
[Thay thế 2] listening thành công”
60
[Ngoại lệ 1]
[Ngoại lệ 2]
1 Người dùng chọn thêm link Hiển thị thông tin người dùng nhập
youtube video
2 Người dùng click vào “Return” Quay lại trang quản lý bài nghe
Ngoại lệ:
1 Người dùng không nhập đầy đủ Hiển thị thông báo “Error, không thể
các trường thông tin bắt buộc chỉnh sửa listening”
2 Người dùng thêm link video không Hiển thị thông báo “Link video is
phải link youtube invalid.”
61
USE CASE – LEW-AS_UC_04
1 Người dùng click vào “Quản lý Trang web chuyển sang trang Quản
bài nghe” lý danh sách bài luyện nghe
62
2 Người dùng click vào icon Trang web hiển thị hộp thoại thông
“Delete” ở tệp luyện nghe muốn báo “Bạn có muốn xóa bài nghe?”
xóa
3 Người dùng chọn “Yes” Đóng hộp thoai, hiển thị thông báo
[Thay thế 1] “Xóa bài nghe thành công.” và cập
nhật lại danh sách tệp luyện nghe
[Ngoại lệ 1]
1 Người dùng click vào “No” Đóng hộp thoại thông báo
Ngoại lệ:
1 Không thể xóa được bài nghe Hiển thị thông báo lỗi “Error, không
thể xóa bài nghe”
Hình 36. Lược đồ chức năng Xem danh sách ngữ pháp
Bảng 20. Bảng mô tả chức năng Xem danh sách ngữ pháp
63
USE CASE – LEW-AS_UC_05
1 Người dùng click vào “Quản lý Trang web hiển thị danh sách các
ngữ pháp” ở trang chủ hệ thống ngữ pháp của hệ thống
2 Người dùng click vào icon Hiển thị hộp thoại lọc theo mức độ
“Setting” để lọc danh sách theo
64
mức độ
3 Người dùng chọn mức độ Hiển thị thông tin người dùng đã
chọn
4 Người dùng click “OK” Hiển thị danh sách ngữ pháp được
[Thay thế 1] lọc theo mức độ được chọn
5 Người dùng chọn icon “Filter” Hiển thị các tùy chọn “Newest”,
để lọc ngữ pháp mới nhất hoặc “Oldest”
cũ nhất
6 Người dùng chọn “Newest” Hiển thị ngữ pháp được sắp xếp từ
[Thay thế 2] mới nhất đến cũ nhất
7 Người dùng gõ tên ngữ pháp Hiển thị danh sách ngữ pháp có tên
vào ô tìm kiếm đúng và gần đúng với từ khóa tìm
kiếm
[Ngoại lệ 1]
2 Người dùng chọn “Oldest” Hiển thị ngữ pháp được sắp xếp từ
cũ nhất đến mới nhất
Ngoại lệ:
65
Hình 37. Lược đồ chức năng Thêm ngữ pháp
Bảng 21. Bảng mô tả chức năng them ngữ pháp
66
Người dùng phải đăng nhập vào hệ thống với tài khoản có quyền là Người
tạo nội dung hoặc Người quản trị
Hậu điều kiện:
Thành công: Người dùng thêm ngữ pháp thành công
Không thành công: Người dùng thêm ngữ pháp không thành công
Dòng sự kiện chính:
1 Người dùng click vào “Quản lý Trang web hiển thị danh sách ngữ
ngữ pháp” pháp của hệ thống
2 Người dùng click vào icon Trang web chuyển hướng đến trang
"Add" phía trên danh sách ngữ thêm ngữ pháp
pháp
3 Người dùng thêm tiêu đề. Nội Hiển thị thông tin người dùng đã
dung, mức độ, script, hình ảnh, thêm
và upload video và audio
[Thay thế 1]
4 Người dùng click vào icon Hiển thị hộp thoại thêm chủ đề
“Add” để thêm các chủ đề cho
ngữ pháp
5 Người dùng nhập chủ đề và các Hiển thị nội dung người dùng nhập
ví dụ
[Thay thế 3]
6 Người dùng click “Save” Lưu lại chủ đề vừa thêm và đóng
[Thay thế 3] hộp thoại
7 Người dùng click “Save” Hiển thị thông báo “Thêm ngữ pháp
[Thay thế 2] thành công”
[Ngoại lệ 1]
[Ngoại lệ 2]
67
Dòng sự kiện thay thế:
1 Người dùng chọn thêm link Hiển thị thông tin người dùng nhập
youtube video
2 Người dùng click vào “Return” Quay lại trang quản lý ngữ pháp
Ngoại lệ:
1 Người dùng không nhập đầy đủ Hiển thị thông báo “Error, không thể
các trường thông tin bắt buộc tạo ngữ pháp”
2 Người dùng thêm link video không Hiển thị thông báo “Link video is
phải link youtube invalid.”
68
USE CASE – LEW-AS_UC_07
1 Người dùng click vào “Quản lý Trang web hiển thị danh sách ngữ
69
ngữ pháp” pháp của hệ thống
2 Người dùng click vào icon Trang web hiển thị tất cả thông tin
“Edit” ở cấu trúc ngữ pháp về cấu trúc ngữ pháp đã chọn
muốn sửa
3 Người dùng chỉnh sửa tiêu đề, Hiển thị thông tin người dùng đã
nội dung, mức độ, script, hình chỉnh sửa
ảnh, và upload video và audio
[Thay thế 1]
4 Người dùng click vào icon Hiển thị hộp thoại thêm chủ đề
“Add” để thêm các chủ đề cho
ngữ pháp
[Thay thế 4]
[Thay thế 5]
5 Người dùng nhập chủ đề và các Hiển thị nội dung người dùng nhập
ví dụ
[Thay thế 3]
6 Người dùng click “Save” Lưu lại chủ đề và đóng hộp thoại
[Thay thế 3] thêm
7 Người dùng click “Save” Hiển thị thông báo “Chỉnh sửa ngữ
[Thay thế 2] pháp thành công”
[Ngoại lệ 1]
[Ngoại lệ 2]
1 Người dùng chọn thêm link Hiển thị thông tin người dùng nhập
youtube video
2 Người dùng click vào “Return” Quay lại trang quản lý ngữ pháp
70
4 Người dùng click vào ngữ pháp Hiển thị hộp thoại thông tin chủ đề
của ngữ pháp
5 Người dùng click icon “Delete” Xóa chủ đề của ngữ pháp
tại chủ đề của ngữ pháp
Ngoại lệ:
1 Người dùng không nhập đầy đủ Hiển thị thông báo “Error, không thể
các trường thông tin bắt buộc tạo ngữ pháp”
2 Người dùng thêm link video không Hiển thị thông báo “Link video is
phải link youtube invalid.”
71
Tên use case Xóa ngữ pháp
1 Người dùng click vào “Quản lý Trang web chuyển sang trang Quản
ngữ pháp” lý ngữ pháp
2 Người dùng click vào icon Trang web hiển thị hộp thoại thông
“Delete” ở cấu trúc ngữ pháp
72
muốn xóa báo “Bạn có muốn xóa ngữ pháp?”
3 Người dùng chọn “Yes” Đóng hộp thoai, hiển thị thông báo
[Thay thế 1] “Xóa ngữ pháp thành công.” và cập
nhật lại danh sách ngữ pháp
[Ngoại lệ 1]
1 Người dùng click vào “No” Đóng hộp thoại thông báo
Ngoại lệ:
1 Không thể xóa được ngữ pháp Hiển thị thông báo lỗi “Error, không
thể xóa ngữ pháp.”
73
case
1 Người dùng click vào “Quản lý Trang web hiển thị danh sách các từ
từ vựng” ở trang chủ hệ thống vựng của hệ thống
2 Người dùng click vào icon Hiển thị hộp thoại lọc
“Setting” để lọc danh sách
3 Người dùng chọn loại từ, Hiển thị thông tin người dùng đã
74
chuyên ngành, cấp bậc, chủ đề chọn
4 Người dùng click “OK” Hiển thị danh sách từ vựng được lọc
[Thay thế 1]
5 Người dùng chọn icon “Filter” Hiển thị các tùy chọn “A->Z”, “Z-
để sắp xếp từ vựng >A”, “Random”
6 Người dùng chọn “A->Z” Hiển thị từ vựng được sắp xếp theo
[Thay thế 2] thứ tự từ A đến Z
[Thay thế 3]
7 Người dùng nhập từ vào khung Hiển thị danh sách từ có kết quả
tìm kiếm đúng và gần đúng với từ khóa được
tìm kiếm
[Ngoại lệ 1]
2 Người dùng chọn “Z->A” Hiển thị từ vựng được sắp xếp theo
thứ tự từ Z đến A
3 Người dùng chọn “Random” Hiển thị từ vựng được sắp xếp theo
thứ tự ngẫu nhiên
Ngoại lệ:
1 Không tìm thấy kết quả tìm Hiển thị “No result.”
kiếm
75
Hình 41. Lược đồ chức năng Thêm từ vựng
Bảng 25. Bảng mô tả chức năng Thêm từ vựng
76
Tiền điều kiện:
Người dùng phải đăng nhập vào hệ thống với tài khoản có quyền là Người
tạo nội dung hoặc Người quản trị
Post conditions:
Thành công: Người dùng thêm từ vựng thành công
Không thành công: Người dùng thêm từ vựng không thành công
Dòng sự kiện chính:
1 Người dùng click vào “Quản lý Trang web chuyển sang trang hiển
từ vựng” thị danh sách từ vựng của hệ thống
2 Người dùng click vào icon Trang web hiển thị hộp thoại để
"Add" phía trên danh sách từ thêm từ vựng
vựng
3 Người dùng nhập và chọn từ, Hiển thị thông tin người dùng đã
nghĩa của từ, cấp bậc, ký âm, nhập
loại từ, chuyên ngành, chủ đề,
câu ví dụ, từ đồng nghĩa, từ trái
nghĩa, ghi chú của từ vựng
4 Người dùng click vào nút Trang web xuất hiện thông báo
“Thêm từ” “Thêm từ thành công”
[Thay thế 1] [Ngoại lệ 1]
[Ngoại lệ 2]
1 Người dùng click vào “Quay Hủy bỏ các thao tác thêm và quay
lại” về trang quản lý từ vựng
Ngoại lệ:
77
ST Hành động tác nhân Phản ứng hệ thống
T
1 Người dùng để trống một trong Lỗi xuất hiện dưới phần nhập ở các
các trường bắt buộc hoặc bỏ trống trường thông tin.
tất cả
2 Người dùng thêm từ trùng với từ Hiển thị thông báo “Từ đã tồn tại
đã tạo trong database trong từ điển”
78
trị
Tổng quan:
Cho phép sửa từ vựng vào trong hệ thống
Mục tiêu:
Người dùng sẽ sửa được từ vựng trong hệ thống
Kích hoạt:
Người dùng cần đăng nhập trang web với quyền Người quản trị hoặc
người tạo nội dung.
Người dùng click vào “Quản lý từ vựng”.
Người dùng click vào icon “Edit” tại từ vựng muốn chỉnh sửa.
Tiền điều kiện:
Người dùng phải đăng nhập vào hệ thống với tài khoản có quyền là Người
tạo nội dung hoặc Người quản trị
Hậu điều kiện:
Thành công: Người dùng sửa từ vựng thành công
Không thành công: Người dùng sửa từ vựng không thành công
Dòng sự kiện chính:
1 Người dùng click vào “Quản lý Trang web chuyển sang trang hiển
từ vựng” thị danh sách từ vựng của hệ thống
2 Người dùng click vào icon Trang web hiển thị hộp thoại hiển
“Edit” ở từ vựng muốn sửa thị tất cả thông tin về từ vựng đã
chọn
3 Người dùng chỉnh sửa và chọn Hiển thị thông tin người dùng đã
lại nghĩa của từ, cấp bậc, ký âm, chỉnh sửa
loại từ, chuyên ngành, chủ đề,
câu ví dụ, từ đồng nghĩa, từ trái
nghĩa, ghi chú của từ vựng
4 Người dùng click vào nút “Sửa Trang web xuất hiện thông báo
79
từ” “Chỉnh sửa từ thành công”
[Thay thế 1] [Ngoại lệ 1]
1 Người dùng click vào “Cancel” Đóng hộp thoại thêm từ vựng
Ngoại lệ:
1 Người dùng để trống một trong Lỗi xuất hiện dưới phần nhập ở các
các trường bắt buộc hoặc bỏ trống trường thông tin.
tất cả
80
Tên use case Xóa từ vựng
1 Người dùng click vào “Quản lý Trang web chuyển sang trang hiển
từ vựng” thị danh sách từ vựng của hệ thống
2 Người dùng click vào icon Trang web hiển thị hộp thoại xác
“Delete” ở từ vựng muốn xóa nhận “Bạn có muốn xóa từ vựng?”
3 Người dùng chọn “Yes” Đóng hộp thoại xác nhận, hiển thị
thông báo “Xóa từ vựng thành
81
[Thay thế 1] công.” và cập nhật lại danh sách từ
vựng.
[Ngoại lệ 1]
1 Người dùng click vào “No” Đóng hộp thoại xác nhận
Ngoại lệ:
1 Không thể xóa được từ vựng Hiển thị thông báo lỗi “Error, không
thể xóa từ vựng.”
82
Tác giả Võ Ngọc Phong
1 Người dùng click vào “Quản lý Trang web hiển thị danh sách bài
bài trắc nghiệm” nghe và ngữ pháp của hệ thống
2 Người dùng click vào “Thêm Trang web chuyển hướng đến trang
quiz” và tiếp tục click vào icon thêm câu hỏi cho bài trắc nghiệm
“Add”
83
3 Người dùng nhập đầy đủ câu Hiển thị nội dung người dùng đã
hỏi, các đáp án cho câu hỏi và nhập
check tại đáp án đúng
4 Người dùng click vào “Thêm” Trang web xuất hiện thông báo
[Thay thế 1] “Thêm thành công” và quay về
trang hiển thị câu hỏi của bài trắc
nghiệm
[Ngoại lệ 1]
[Ngoại lệ 2]
[Ngoại lệ 3]
[Ngoại lệ 4]
1 Người dùng click vào “Quay Quay về trang câu hỏi của bài trắc
lại” nghiệm
Ngoại lệ:
1 Người dùng không check đáp án Hiển thị thông báo lỗi “Please check
đúng the correct answer”.
2 Người dùng để trống câu hỏi Hiển thị lỗi tại trường them câu hỏi
3 Người dùng chỉ nhập một đáp án Hiển thị lỗi “Error, câu hỏi không
hợp lệ”
4 Người dùng check chọn đáp án Hiển thị lỗi “Error, câu hỏi không
đúng cho tất cả các đáp án được hợp lệ”
nhập
84
Các ràng buộc Business:
85
Người dùng cần đăng nhập trang web với quyền Người quản trị hoặc
người tạo nội dung.
Người dùng click vào “Quản lý bài trắc nghiệm”.
Người dùng click vào bài nghe hoặc ngữ pháp muốn chỉnh sửa bài trắc
nghiệm
Tiền điều kiện:
Người dùng phải đăng nhập vào hệ thống với tài khoản có quyền là Người
tạo nội dung hoặc Người quản trị
Hậu điều kiện:
Thành công: Người dùng chỉnh sửa bài trắc nghiệm thành công
Không thành công: Người dùng chỉnh sửa bài trắc nghiệm không thành
công
Dòng sự kiện chính:
1 Người dùng click vào “Quản lý Trang web hiển thị danh sách bài
bài trắc nghiệm” nghe và ngữ pháp của hệ thống
2 Người dùng click vào icon Trang web chuyển hướng đến trang
“Add” thêm câu hỏi cho bài trắc nghiệm
3 Người dùng đầy đủ nhập câu Hiển thị nội dung người dùng đã
hỏi, các đáp án cho câu hỏi và nhập
check tại đáp án đúng
4 Người dùng click vào “Thêm” Trang web xuất hiện thông báo
[Thay thế 1] “Thêm thành công” và quay về
trang hiển thị câu hỏi của bài trắc
nghiệm
[Ngoại lệ 1]
[Ngoại lệ 2]
[Ngoại lệ 3]
[Ngoại lệ 4]
86
5 Người dùng click vào câu hỏi Trang web chuyển hướng đến trang
muốn chỉnh sửa chỉnh sửa câu hỏi cho bài trắc
nghiệm
6 Người dùng chỉnh sửa câu hỏi, Hiển thị nội dung người dùng đã
các đáp án cho câu hỏi và check nhập
tại đáp án đúng
7 Người dùng click vào “Sửa” Trang web xuất hiện thông báo
[Thay thế 1] “Chỉnh sửa thành công” và quay về
trang hiển thị câu hỏi của bài trắc
nghiệm
[Ngoại lệ 1]
[Ngoại lệ 2]
[Ngoại lệ 3]
[Ngoại lệ 4]
8 Người dùng clicl và icon Hiển thị hộp thoại thống báo “Bạn
“Delete” tại câu hỏi muốn xóa có muốn xóa câu hỏi?”
9 Người dùng chọn “OK” Xóa câu hỏi, đóng hộp thoại và tải
[Thay thế 2] lại trang
1 Người dùng click vào “Quay Quay về trang câu hỏi của bài trắc
lại” nghiệm
Ngoại lệ:
1 Người dùng không check đáp án Hiển thị thông báo lỗi “Please check
87
đúng the correct answer”.
2 Người dùng để trống câu hỏi Hiển thị lỗi tại trường them câu hỏi
3 Người dùng chỉ nhập một đáp án Hiển thị lỗi “Error, câu hỏi không
hợp lệ”
4 Người dùng check chọn đáp án Hiển thị lỗi “Error, câu hỏi không
đúng cho tất cả các đáp án được hợp lệ”
nhập
88
Đối tượng sử dụng:
1 Quản trị click vào “Quản lý Hiển thị danh sách người dùng trong
người dùng” hệ thống
2 Quản trị chọn một tài khoản Chuyển hướng đến trang chi tiết
muốn khóa người dùng
3 Quản trị click vào “Khóa tài Hiển thị thông báo “Account was
khoản” blocked”
[Ngoại lệ 1]
89
Ngoại lệ:
1 Khóa tài khoản không thành công Đóng hộp thoai. Hiển thị thông báo
“Couldn’t block account”.
90
Mục tiêu:
Người dùng có thể truy cập vào website
Kích hoạt:
1 Quản trị click vào “Quản lý Hiển thị danh sách người dùng trong
người dùng” hệ thống
2 Quản trị chọn một tài khoản Chuyển hướng đến trang chi tiết
muốn mở khóa người dùng
3 Quản trị click vào “Mở khóa tài Hiển thị thông báo “Account was
khoản” unblocked”
[Ngoại lệ 1]
1 Khóa tài khoản không thành công Đóng hộp thoai. Hiển thị thông báo
91
“Couldn’t unblock account”.
92
Quản trị click chọn một tài khoản người dùng.
Tiền điều kiện:
Người dùng đã đăng nhập vào hệ thống với quyền quản trị viên.
Hậu điều kiện:
Thành công: Trang web thông báo “Chỉnh sửa tài khoản thành công.”.
Không thành công: Trang web hiện thông báo “Không thể chỉnh sửa tài
khoản”.
Dòng sự kiện chính:
1 Quản trị click vào “Quản lý Hiển thị danh sách người dùng trong
người dùng” hệ thống
2 Quản trị chọn một tài khoản Chuyển hướng đến trang chi tiết
muốn chỉnh sửa người dùng
3 Quản trị click vào “Chỉnh sửa” Chuyển hướng đến trang chỉnh sửa
4 Quản trị thay đổi quyền của Hiển thị thông tin được thay đổi
người dùng
5 Quản trị click “Sửa” Hiển thị thông báo “Chỉnh sửa tài
[Thay thế 1] khoản thành công”, quay về trang
chi tiết người dùng
[Ngoại lệ 1]
1 Người dùng chọn “Quay lại” Quay về trang chi tiết người dùng
Ngoại lệ:
93
ST Hành động tác nhân Phản ứng hệ thống
T
1 Phân quyền không thành công Đóng hộp thoai. Hiển thị thông báo
“Chỉnh sửa tài khoản không thành
công”.
94
Mục tiêu:
Quản trị chỉnh thêm được người dùng
Kích hoạt:
Thành công: Trang web thông báo “Thêm tài khoản thành công.”.
Không thành công: Trang web hiện thông báo “Không thể thêm tài
khoản”.
Dòng sự kiện chính:
1 Quản trị click vào “Quản lý Hiển thị danh sách người dùng trong
người dùng” hệ thống
2 Quản trị click vào icon “Add” Chuyển hướng đến trang thêm
người dùng
3 Quản trị nhập email, tên và chọn Hiển thị thông tin quản trị nhập
quyền cho người dùng
4 Quản trị click “Thêm” Hiển thị thông báo “Thêm tài khoản
[Thay thế 1] thành công”, quay về trang danh
sách người dùng
[Ngoại lệ 1]
1 Người dùng chọn “Quay lại” Quay về trang danh sách người
dùng
95
Ngoại lệ:
1 Quản trị nhập email đã tồn tại Hiển thị thông báo “Email đã tồn tại”
96
Kích hoạt:
Thành công: Trang web thông báo “Chỉnh sửa tài khoản thành công.”.
Không thành công: Trang web hiện thông báo “Không thể chỉnh sửa tài
khoản”.
Dòng sự kiện chính:
1 Quản trị click vào “Quản lý Hiển thị danh sách người dùng trong
người dùng” hệ thống
2 Quản trị chọn một tài khoản Chuyển hướng đến trang chi tiết
muốn chỉnh sửa người dùng
3 Quản trị click vào “Chỉnh sửa” Chuyển hướng đến trang chỉnh sửa
4 Quản trị chỉnh sửa tên, tài khoản Hiển thị thông tin được thay đổi
email của người dùng
5 Quản trị click “Sửa” Hiển thị thông báo “Chỉnh sửa tài
[Thay thế 1] khoản thành công”, quay về trang
chi tiết người dùng
[Ngoại lệ 1]
[Ngoại lệ 2]
1 Người dùng chọn “Quay lại” Quay về trang chi tiết người dùng
97
Ngoại lệ:
1 Người dùng để trống các trường Hiển thị lỗi tại các trường thông tin
bắt buộc đó.
Hình 51. Lược đồ chức năng Xem danh sách người dùng
Bảng 35. Bảng mô tả chức năng Xem danh sách người dùng
98
Cho phép người quản trị xem danh sách người dùng trong hệ thống.
Mục tiêu:
Người quản trị xem được danh sách người dùng của hệ thống
Kích hoạt:
1 Quản trị click vào “Quản lý Hiển thị danh sách người dùng trong
người dùng” hệ thống
Xem thong ke
99
Bảng 36. Bảng mô tả chức năng Xem thống kê
1 Quản trị click vào “Thống kê” Hiển thị số lượng người dùng, bài
nghe, ngữ pháp, tự vựng, bài trắc
nghiệm của hệ thống
100
Ngoại lệ:
Mối liên hệ:
Các ràng buộc Business:
101
Chương 3. THIẾT KẾ PHẦN MỀM
4.1. LƯỢC ĐỒ LỚP
4.2. LƯỢC ĐỒ TUẦN TỰ
class LearningEnglish
User
HighScore Vocabulary
Game
+ Avatar: String
+ Coin: Number + AccountId: Schema.Types.ObjectId + getWordPackCWG(): json + Antonyms: [String]
+ Email: String 0...1 + Coin: Number
0...* 0...* + getWordPackFS(): json + Examples: [String]
+ Name: String + IsChecked: Boolean
+ IsLocked: Number + getWordPackWMG(): json
0...3 + Level: String
+ Name: String + getLeaderboard(): json
+ Password: String 0...* + Mean: String
+ postScore(): json
+ RoleType: String + Note: String
+ Phonetic: String
+ activateEmail(): json + Picture: String
+ addUser() : json Statistics 0...* + Specialty: String
+ editUser() : json + Synonyms: [String]
+ forgotPassword(): json + countGrammar(): json
+ Topics: String
+ countListening(): json
+ getAccessToken(): json + Type: String
+ getAllUsers(): json + countQuiz(): json
+ Word: String
+ getTopCoin(): json + countUser(): json
+ getUserDetails(): json + countWord(): json + deleteWord(): json
+ getUserInfo(): json + getAllWords(): json
Listening
+ lockUser() : json + getByTopic(): json
+ login(): json + CreateDate: Date + getSearchWord(): json
+ logout(): json + Description: String + getTopics(): json
+ putUpdateUserCoin( ): json + Image: String + getTotalWordPack(): json
+ register( ): json + Name: String + getTotalWordPackTopic(): json
Quiz
+ resetPassword(): json + Script: String + getWordByWord(): json
+ unlockUser(): json + Topic: String + ListeningId: ObjectId + getWordDetails(): json
+ updateAvatar(): json + Video: String + getWordPack(): json
+ deleteById(): json + postContributeWord(): json
+ updatePassword(): json
+ deleteListen(): json 0...1 1 + getAllQuizzes(): json + putContributeWord(): json
+ updateProfile(): json
+ getAll(): json + getById(): json
+ getByTopic(): json + getByListeningId(): json
+ getDetails(): json + postQuiz(): json
IPA + getListening(): json Grammar
+ getSearchListen(): json 0...* 1
+ Description: String + getTopics(): json + Audio: String
+ Examples: [Schema.Types.Map] + Content: String Grammar_Item
+ postListening(): json
+ Image: String + putListen(): json + Image: String
1 + Content: String
+ Phonetic: String + Items: Schema.Types.Map 1
0...1 + Example: [String]
+ Title: String + Level: String
Question
+ Type: String + Script: String
+ Video: String + Answers: [Schema.Types.Map] + Title: String 0...*
Answer + Video: String
+ getById(): json + Content: String
+ getIPARelative( ): json + Content: string + QuizId: ObjectId + deleteById(): json
+ getIPAsByType( ): json + IsCorrect: boolean 1 + deleteById(): json + getAllGrammars(): json
+ QuestionId: ObjectId 2...3 + getById(): json
+ getById(): json
+ getByQuizId() : json + getByLevel(): json
+ postQuestion() : json + getGrammar( ): json
+ putQuestion(): json + getLevels(): json
+ getSearchGrammar(): json
+ postGrammar(): json
+ putGrammar( ): json
102
sd Dang Ky
KhachVangLai
Main Login Register UserController User
alt
Ma hoa mat
khau, gui email
return() : success den email tai
khoan vua dang
ky()
Thong bao dang ky
thanh cong()
103
3.2.2.1. Lược đồ Đăng nhập
sd Dang Nhap
NguoiDung
Main Login UserController User
alt
104
sd Dang xuat
NguoiDung
TrangChu QuanLyNguoiDung
click avatar()
return() : success
reload( )
Thong bao Dang xuat thanh cong( )
105
sd Hoc phien am
NguoiDung
ManHinhTrangChu ManHinhPhienAm QuanLyPhienAm IPAs
return(): phien am
return(): phien am
opt
106
sd Hoc ngu phap
NguoiDung
MucDoNguPhap DanhSachNguPhap ChiTietNguPhap QuanLyBaiNghe Listenning Quiz Question
return() : list
Hien thi danh sach grammar
()
return() : grammar
return( ): quiz
clickResetQuiz
()
reload( )
107
3.2.2.5. Lược đồ học từ vựng
sd Hoc tu vung
NguoiDung
ChuDeTuVung GalleryTuVung SlideTuVung QuanLyTuVung Word
108
3.2.2.6. Lược đồ Học bài nghe
NguoiDung
ChuDeBaiNghe DanhSachBaiNghe ChiTietBaiNghe QuanLyBaiNghe Listenning Quiz Question
return(): listening
return(): quiz
clickResetQuiz()
reload()
109
3.2.2.7. Lược đồ Đổi mật khẩu
NguoiDung
TrangChu ThongTinCaNhan QuanLyNguoiDung User
click Save()
[Mat khau moi va xac nhan mat khau khong trung khop]
[T hat bai]
return(): error
110
sd Xem danh sach bai nghe
NguoiTaoNoiDung
ManHinhTrangChu QuanLyBaiNghe QuanLyBaiNghe Listening
HopThoaiLoc
Chon chu de bai nghe muon loc( )
Hình 62. Lược đồ tuần tự chức năng Xem danh sách bài nghe
111
3.2.3.2. Thêm bài nghe
sd Them bai nghe
NguoiTaoNoiDung
QuanLyBaiNghe ThemBaiNghe QuanLyBaiNghe Listenning
alt
return(): error message return(): null
[That bai]
[Thanh cong]
return(): listening
return(): success
Thong bao them thanh cong()
112
sd Chinh sua bai nghe
NguoiTaoNoiDung
QuanLyBaiNghe ChinhSuaBaiNghe QuanLyBaiNghe Listenning
return() : listening
return(): listening
alt
[Nguoi dung day du cac thong tin] Chinh sua bai nghe( )
return() : success
Hình 64. Lược đồ tuần tự chức năng Chỉnh sửa bài nghe
113
3.2.3.4. Xóa bài nghe
sd Xoa bai nghe
NguoiTaoNoiDung
QuanLyBaiNghe QuanLyBaiNghe Listening
DialogXacNhan
alt
alt
return() : true
[Thanh cong]
return() : success
reload( )
114
sd Xem danh sach ngu phap
NguoiTaoNoiDung
ManHinhTrangChu QuanLyNguPhap QuanLyNguPhap Grammar
Chon mot trong hai tuy chon "Newest" hoac " Oldest" ()
Lay danh sach ngu phap theo
Lay danh sach theo thu tu(type)
thu tu(type)
HopThoaiLoc
Chon muc do ngu phap muon loc
()
click button OK()
Hình 66. Lược đồ tuần tự chức năng Xem danh sách ngữ pháp
115
3.2.3.6. Thêm ngữ pháp
NguoiTaoNoiDung
QuanLyNguPhap ThemNguPhap QuanLyNguPhap Grammar
HopThoaiThemChuDe
Nhap chu de, noi dung( )
alt
alt
[Thanh cong]
return() : grammar
return(): success
116
3.2.3.7. Chỉnh sửa ngữ pháp
sd Chinh sua ngu phap
NguoiTaoNoiDung
QuanLyNguPhap ChinhSuaNguPhap QuanLyNguPhap Grammar
click icon Edit tai ngu phap( )
Di den trang chi tiet ngu phap( ) Lay chi tiet ngu phap( id)
Tim kiem ngu phap(id)
return() :
Hien thi chi tiet ngu phap() grammar
Nhap tieu de, noi dung, video, hinh anh, audio,
script()
alt
alt
Dong hop thoai()
[Nguoi dung click Save] Luu chu de chinh sua()
show error
message( )
Hình 68. Lược đồ tuần tự chức năng Chỉnh sửa ngữ pháp
117
sd Xoa ngu phap
NguoiTaoNoiDung
QuanLyNguPhap QuanLyNguPhap Grammar
DialogXacNhan
alt
Dong hop thoai( )
[Nguoi dung click OK]
alt
return() : true
[Thanh cong]
return() : success
reload( )
118
sd Xem danh sach tu vung
NguoiTaoNoiDung
ManHinhTrangChu QuanLyTuVung QuanLyTuVung Word
Nhap tu()
Tim kiem tu gan dung va dung voi tu khoa
tim kiem(word)
Tim kiem danh sach
tu(name)
HopThoaiLoc
Chon chu de, loai tu, chuyen
nganh, cap bac tu muon loc()
click button OK()
Hình 70. Lược đồ tuần tự chức năng Xem danh sách từ vựng
119
3.2.3.10. Thêm từ vựng
sd Them tu vung
NguoiTaoNoiDung
QuanLyTuVung ThemTuVung QuanLyTuVung Word
click icon Add()
alt
alt
return() : null
[Tu chua ton tai]
Them tu vung moi()
return(): success
Thong bao them thanh cong( )
120
sd Chinh sua tu vung
NguoiTaoNoiDung
QuanLyTuVung ChinhSuaTuVung QuanLyTuVung Word
return(): word
alt
alt
[That bai]
return( ): null
[Thanh cong]
return(): word
return( ): success
Thong bao chinh sua thanh
cong()
121
sd Xoa tu vung
NguoiTaoNoiDung
QuanLyTuVung QuanLyTuVung Word
DialogXacNhan
alt
Xoa tu vung(id)
alt
return() : true
return(): success
[Thanh cong]
reload( )
122
sd Them bai trac nghiem
NguoiTaoNoiDung
QuanLyBaiTracNghiem ChiTietBaiTracNghiem ThemCauHoi QuanLyBaiTracNghiem QuanLyCauHoi Quiz Question
alt
return(): question
[Thanh cong]
return(): success
Hình 74. Lược đồ tuần tự chức năng Thêm bài trắc nghiệm
3.2.3.14. Chỉnh sửa bài trắc nghiệm
123
sd Chinh sua bai trac nghiem
NguoiTaoNoiDung
QuanLyBaiTracNghiem ChiTietBaiTracNghiem ChinhSuaCauHoi QuanLyCauHoi Question
alt
return( ): question
[Thanh cong] return(): success
Quay lai trang chi tiet quiz()
HopThoaiXacNhan
alt
Dong hop thoai( )
[Nguoi dung chon OK]
Xoa cau hoi(questionid)
return( ): true
return(): success
reload( )
Hình 75. Lược đồ tuần tự chức năng Chỉnh sửa bài trắc nghiệm
3.2.4. Người quản trị
124
3.2.4.1. Lược đồ Khóa tài khoản
sd Khoa nguoi dung
125
3.2.4.2. Lược đồ Mở khóa tài khoản
sd Mo khoa tai khoan
return( ): list
user
Hien thi danh sach nguoi dung
()
alt
return( ): true
[Thanh cong]
return(): success
126
sd Phan quyen nguoi dung
NguoiQuanTri
TrangChu QuanLyNguoiDung ChiTietNguoiDung ChinhSuaNguoiDung QuanLyNguoiDung User
return(): success
Hình 78. Lược đồ tuần tự chức năng Phân quyền người dùng
3.2.4.4. Lược đồ thêm người dùng
127
sd Them nguoi dung
NguoiQuanTri
TrangChu QuanLyNguoiDung ThemNguoiDung QuanLyNguoiDung User
alt
return(): null
[Thanh cong]
return(): success
return(): success
128
sd Chinh sua nguoi dung
NguoiQuanTri
TrangChu QuanLyNguoiDung ChiTietNguoiDung ChinhSuaNguoiDung QuanLyNguoiDung User
[Thanh Cong]
Chinh sua nguoi dung( email, ten)
return(): user
return(): success
Hình 80. Lược đồ tuần tự chức năng Chỉnh sửa người dùng
3.2.4.6. Lược đồ Xem danh sách người dùng
129
sd Xem danh sach nguoi dung
NguoiQuanTri
TrangChu QuanLyNguoiDung QuanLyNguoiDung User
NguoiQuanTri Database
TrangChu ThongKe QuanLyThongKe
Di den trang Thong ke() Dem so luong bai nghe, ngu phap,
tu vung, bai trac nghiem, nguoi
dung()
Dem so luong bai nghe, ngu phap, tu
vung, bai trac nghiem, nguoi dung()
131
9 Item Array Các điểm, ví dụ của ngữ pháp
1 id ObjectId Mã phiên âm
132
âm
6 Image String Link hình ảnh minh họa của bài nghe
133
3 QuizId String Mã quiz
1 id ObjectId Mã quiz
134
7 IsLocked Boolean Tình trạng tài khoản người dùng
(đang khóa hoặc hoạt động)
1 id ObjectId Mã từ vựng
135
3.4.1. Giao diện Người dùng và Khách vãng lai
3.4.1.1. Đăng nhập
136
4 Link Link chuyển sang trang quên mật khẩu
3.4.1.2. Đăng ký
137
1 Textbox Nhập email của người dùng
138
STT Loại Ý nghĩa
139
3 Textbox Nhập lại mật khẩu của người dùng
140
Hình 88. Giao diện trang chủ
Bảng 49. Bảng mô tả giao diện Trang chủ
141
2 Link Link chuyển sang trang Nghe
142
1 Link Nhấn vào chủ đề bất kỳ sẽ chuyển sang trang danh
sách bài nghe của chủ đề đó
Hình 90. Giao diện Danh sách bài nghe của một chủ đề
Bảng 51. Bảng mô tả giao diện danh sách bài nghe
1 Link Nhấn vào bài nghe bất kỳ sẽ chuyển sang trang chi
tiết bài nghe
143
Hình 91. Giao diện chi tiết bài nghe
Bảng 52. Bảng mô tả giao diện chi tiết bài nghe
2 Tab Nhấn vào để chuyển sang tab Phụ đề của bài nghe
3 Tab Nhấn vào để chuyển sang tab Quiz của bài nghe
144
6 Button Nhấn vào để đưa quiz về trạng thái ban đầu
7 Button Nhấn vào để hiện đáp án đúng của tất cả câu hỏi
145
Hình 93. Giao diện Danh sách ngữ pháp của cấp độ
Bảng 54. Bảng mô tả giao diện danh sách ngữ pháp của cấp dộ
146
Hình 94. Giao diện chi tiết ngữ pháp
Bảng 55. Bảng mô tả giao diện chi tiết ngữ pháp
4 Tab Nhấn vào để chuyển sang tab Danh sách các chủ
đề của ngữ pháp
147
5 Tab Nhấn vào để chuyển sang tab Quiz của ngữ pháp
9 Button Nhấn vào để hiện đáp án đúng của tất cả câu hỏi
148
3.4.1.13. Danh sách từ vựng theo hai chế độ gallery và slide
149
3 List Danh sách các từ vựng theo từng trang (chế độ
Collection)
7 Text Từ vựng
9 Text Loại từ
150
Hình 98. Giao diện Danh sách phiên âm
Bảng 58. Bảng mô tả giao diện danh sách phiên âm
151
Hình 99. Giao diện Chi tiết phiên âm
Bảng 59. Bảng mô tả giao diện chi tiết phiên âm
2 Text Phiên âm
152
Hình 100. Giao diện Danh sách các trò chơi
Bảng 60. Bảng mô tả giao diện danh sách trò choie
3 Button Nhấn vào để vào chơi game Tay nhanh hơn não
153
Hình 101. Giao diện Bảng xếp hạng
Bảng 61. Bảng mô tả giao diện Bảng xếp hạng
154
Hình 102. Giao diện trò chơi Hãy chọn từ đúng
Bảng 62. Bảng mô tả giao dện trò chơi Hãy chọn từ đúng
155
Hình 103. Giao diện trò chơi Ghép từ
Bảng 63. Bảng mô tả giao diện trò chơi Ghép từ
7 Icon Nhấn vào để chấp nhận sai câu hỏi hiện tại và
chuyển sang câu tiếp theo
3.4.2. Giao diện Người quản trị và Người tạo nội dung
3.4.2.1. Quản lý từ vựng
157
Hình 105. Giao diện Quản lý từ vựng
Bảng 65. Bảng mô tả Giao diện quản lý từ vựng
2 Icon Sắp xếp danh sách từ vựng theo các tiêu chí
3 Icon Nhấn vào để lọc danh sách từ vựng theo tiêu chí
158
3.4.2.2. Thêm từ vựng
159
9 Input Nhập các từ đồng nghĩa cho từ vựng
160
2 Input Nhập từ vựng
161
Hình 108. Giao diện Quản lý bài nghe
Bảng 68. Bảng mô tả giao diện quản lý bài nghe
2 Icon Sắp xếp danh sách bài nghe theo các tiêu chí
3 Icon Nhấn vào để lọc danh sách bài nghe theo các tiêu
chí
162
3.4.2.5. Thêm bài nghe
163
7 Input Thêm video cho bài nghe
164
3 Input Nhập mô tả cho bài nghe
165
Hình 111. Giao diện Quản lý bài trắc nghiệm
Bảng 71. Bảng mô tả Giao diện quản lý bài trắc nghiệm
1 Icon Nhấn vào để lọc quiz theo ngữ pháp hay bài nghe
2 List Danh sách ngữ pháp và bài nghe, nhấn vào một bài
để chuyển sang trang chi tiết quiz của bài đó
166
Hình 112. Giao diện Chi tiết bài trắc nghiệm
Bảng 72. Bảng mô tả giao diện chi tiết bài trắc nghiệm
167
Hình 113. Giao diện Thêm câu hỏi
Bảng 73. Bảng mô tả giao diện thêm câu hỏi
168
Hình 114. Giao diện Sửa câu hỏi
Bảng 74. Bảng mô tả giao diện sửa câu hỏi
169
Hình 115. Giao diện Quản lý ngữ pháp
Bảng 75. Bảng mô tả giao diện quản lý ngữ pháp
2 Icon Nhấn vào để lọc ngữ pháp theo các tiêu chí
4 List Danh sách ngữ pháp, nhấn vào một bài bất kỳ sẽ
chuyển sang trang chi tiết của bài đó
170
Hình 116. Giao diện Chi tiết ngữ pháp
Bảng 76. Bảng mô tả giao diện chi tiết ngữ pháp
171
6 Button Nhấn vào để chuyển tới trang sửa ngữ pháp
172
2 Input Nhập tên ngữ pháp
173
Hình 118. Giao diện Sửa ngữ pháp
Bảng 78. Bảng mô tả giao diện sửa ngữ pháp
174
5 Tab Nhấn vào để chuyển sang tab Upload
175
Bảng 79. Bảng mô tả giao diện quản lý người dùng
3 Text Tên người dùng, nhấn vào để chuyển sang trang chi
tiết người dùng
176
STT Loại Ý nghĩa
8 Button Nhấn vào để khóa tài khoản (tài khoản đang hoạt
động) hoặc mở tài khoản (tài khoản bị khóa)
177
Hình 121. Giao diện thêm người dùng
Bảng 81. Bảng mô tả giao diện thêm tài khoản
178
Hình 122. Giao diện sửa người dùng
Bảng 82. Bảng mô tả giao diện sửa người dùng
179
Hình 123. Giao diện Trang chủ Admin
Bảng 83. Bảng mô tả giao diện trang chủ Admin
2 List Thống kê
180
- Sau khi clone project về máy, chuột phải vào thư mục backend và chọn
“Open in Windows Terminal”.
- Chạy lệnh “npm i” để cập nhật các thư viện và package cần thiết để project
hoạt động.
- Tiếp tục chạy lệnh “npm start” trên Windows Terminal để bắt đầu chạy
back-end.
Bước 3: Khởi chạy front-end (admin và user)
- Chọn “Terminal” và nhấn “New Terminal”.
- Chạy lệnh “npm i” để cập nhật các thư viện và package cần thiết để project
hoạt động.
- Tiếp tục chạy lệnh “npm start” trên Windows Terminal để bắt đầu chạy
back-end.
4.1.2. Công cụ dùng trong dự án
Bảng 84. Bảng công cụ dùng trong dự án
Công cụ Tên
DBMS MongoDB
181
web
1 Người dùng Đăng nhập Kiểm tra phản hồi của trang web khi người
xác thực dùng điền vào biểu mẫu đăng nhập và nhấn nút
“Đăng nhập”.
2 Khách vãng lai Đăng ký Kiểm tra phản hồi của trang web khi khách
vãng lai điền vào biểu mẫu đăng ký và nhấn nút
“Đăng Ký”.
3 Người tạo nội Thêm từ vựng Kiểm tra phản hồi của trang web khi người tạo
dung nội dung điền vào biểu mẫu thêm từ và nhấn
nút “Thêm từ”.
4 Người quản trị Thêm người Kiểm tra phản hồi của trang web khi người
182
dùng quản trị điền vào biểu mẫu thêm người dùng và
nhấn nút “Thêm”.
184
Hình 125. Kết quả kiểm thử test case TC_SI_02
185
đợi c tế
188
Hình 127. Kết quả kiểm thử test case TC_SU_01
189
Hình 129. Kết quả kiểm thử test case TC_SU_02
190
Hình 131. Kết quả kiểm thử test case TC_SU_04
193
dùng - Click Loại từ: “động từ” ví dụ
thêm từ icon Chủ đề: “Khác” phải
có câu ví Add chứa từ
Chuyên ngành:
dụ tại vựng
“Không”
không trang mới”
chứa từ quản Cấp bậc: “Chưa xác
vựng lý định”
mới - Nhập Câu ví dụ: “I study
từ English”
- Nhập
nghĩa
của từ
- Nhập
phiên
âm
- Chọn
loại từ
- Chọn
chủ đề
- Chọn
chuyê
n
ngành
- Chọn
cấp
bậc
- Nhập
câu ví
dụ
194
Hình 133. Kết quả kiểm thử test case TC_AW_01
195
Hình 135. Kết quả kiểm thử test case TC_AW_03
4.1.4.4. Kết quả kiểm thử chức năng Thêm người dùng
Bảng 90. Kết quả kiểm thử chức năng Thêm người dùng
196
- Nhập
họ tên
- Nhập
email
- Chọn
phân
quyền
- Nhấn
nút
“Thêm
”.
197
Hình 136. Kết quả kiểm thử test case TC_AU_01
198
PHẦN KẾT LUẬN
6.1. KẾT QUẢ ĐẠT ĐƯỢC
Dự án đã hoàn thiện 100%, cung cấp cái nhìn tổng quan về kiến trúc và thiết kế hệ
thống, hoàn thiện tất cả các chức năng của ứng dụng đã đề ra ngay từ đầu. Từ đó có
cái nhìn tổng quan cho hoạt động của hệ thống học tiếng Anh trực tuyến. Chúng em
đã áp dụng những kiến thức đã học cũng như những kiến thức tự tìm tòi mới để xây
dựng trang web của mình.
Link truy cập website dự án: https://englishwebsite.herokuapp.com/
Link Github source code:
https://github.com/phongvn2611/LearningEnglishWebsite/tree/main
6.2. ƯU ĐIỂM
- Giao diện thân thiện với người dùng, dễ sử dụng.
- Hệ thống đáp ứng được các chức năng cơ bản của một website học tiếng Anh
trực tuyến.
- Ứng dụng dễ bảo trì và nâng cấp.
6.3. NHƯỢC ĐIỂM
- Chưa thể hạn chế hết tất cả trường hợp lỗi của web.
- Các chức năng của trang web còn khá đơn giản.
- Chưa có chức năng quản lý tiến độ học.
6.4. HƯỚNG PHÁT TRIỂN
- Cần thiết kế thêm chức năng quản lý tiến độ học của người dùng.
- Cải thiện thêm các chức năng phân loại bài học theo các trình độ khác nhau.
- Tạo các diễn đàn giao lưu tiếng anh trực tuyến.
- Cần thêm các chức năng kiểm tra trình độ người dung.
- Thiết kế thêm chức năng cho phép người dùng thi thử qua các bài kiểm tra
trực tuyến.
- Thêm chức năng tra cứu từ điển.
- Thêm chức năng ghim và học từ vựng.
199
TÀI LIỆU THAM KHẢO
[1] Doan Van Phu, Tổng quan về NodeJS - Một số điểm khác biệt với PHP,
viblo.asia, 15/10/2020, https://viblo.asia/p/tong-quan-ve-nodejs-mot-so-diem-khac-
biet-voi-php-1Je5E9945nL
[2] Topdev.vn, Expressjs là gì. Tất tần tật về
Express.js, /https://topdev.vn/blog/express-js-la-gi/
[3] Pokimobile.vn, Expressjs Là Gì – Tất Tần Tật Về Khái Niệm Express,
https://pokimobile.vn/expressjs-la-gi-1639669048#Expressjs_la_gi
[4] Tuấn Thanh, MongoDB là gì? Tìm hiểu chi tiết về MongoDB, wiki.tino.org,
https://wiki.tino.org/mongodb-la-gi/
[5] Lê Đức Mạnh, RESTful API là gì, viblo.asia, 05/09/2020,
https://viblo.asia/p/restful-api-la-gi-1Je5EDJ4lnL
[6] Hai G, React là gì. Và nó hoạt động như thế nào, hostinger.vn, 23/03/2020,
https://www.hostinger.vn/huong-dan/react-la-gi-va-no-hoat-dong-nhu-the-nao
[7] topdev.vn, ReactJS – Những điều bạn cần phải biết,
https://topdev.vn/blog/reactjs-nhung-dieu-ban-can-phai-biet/
[8] topdev.vn, JSON Web Token là gì, https://topdev.vn/blog/json-web-token-la-gi/
200