Nhiệm vụ yêu cầu về nội dung và số liệu ban đầu: Luận văn yêu cầu việc phân tích, thiết kế, xây dựng, kiểm thử và triển khai hệ thống quản lý dành cho một trung tâm ngoại ngữ bao gồm cá
Trang 1LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
XÂY DỰNG HỆ THỐNG QUẢN LÝ DÀNH CHO MỘT TRUNG TÂM
NGOẠI NGỮ
NGÀNH: KHOA HỌC MÁY TÍNH
Tp.Hồ Chí Minh, 12/2022
Trang 2KHOA: KH & KT MÁY TÍNH NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP
BỘ MÔN: HỆ THỐNG THÔNG TIN Chú ý: Sinh viên phải dán tờ này vào trang nhất của bản thuyết trình
1 Đầu đề luận văn:
Xây dựng hệ thống quản lý dành cho một trung tâm ngoại ngữ
2 Nhiệm vụ (yêu cầu về nội dung và số liệu ban đầu):
Luận văn yêu cầu việc phân tích, thiết kế, xây dựng, kiểm thử và triển khai hệ thống quản lý dành cho một trung tâm ngoại ngữ bao gồm các chức năng dành cho người quản lý trung tâm, nhân viên, giáo viên, học sinh và phụ huynh
Đề tài được chia làm hai giai đoạn như sau:
Giai đoạn ĐCLV
− Tìm hiểu và phân tích các chức năng cần thiết dành cho một trung tâm ngoại ngữ
− Tìm hiểu các ứng dụng liên quan và các công nghệ liên quan
3 Ngày giao nhiệm vụ luận văn: 29/08/2022
4 Ngày hoàn thành nhiệm vụ: 12/12/2022
5 Họ tên giảng viên hướng dẫn: Phần hướng dẫn:
ThS Trương Quỳnh Chi
Nội dung và yêu cầu LVTN đã được thông qua Bộ môn
Ngày tháng năm
CHỦ NHIỆM BỘ MÔN GIẢNG VIÊN HƯỚNG DẪN CHÍNH
PHẦN DÀNH CHO KHOA, BỘ MÔN:
Người duyệt (chấm sơ bộ):
Trang 5Chúng tôi xin cam đoan rằng đây là hệ thống riêng của nhóm chúng tôi thực hiện,dưới sự hướng dẫn của Thạc sĩ Trương Quỳnh Chi Các nội dung tìm hiểu, thiết kế
đề tài này là trung thực, hoàn toàn không sao chép hay sử dụng kết quả của đề tàinào khác tương tự
Nếu có phát hiện bất kỳ gian lận nào, chúng tôi xin hoàn toàn chịu trách nhiệm vềnội dung luận văn tốt nghiệp của mình và chấp nhận mọi hình thức kỷ luật trướcban chủ nhiệm khoa Khoa Học Và Kỹ Thuật Máy Tính cũng như Ban Giám HiệuTrường Đại Học Bách Khoa, ĐHQG TP Hồ Chí Minh
Trang 6Lời nói đầu tiên, chúng tôi xin gửi lời cảm ơn chân thành và sâu sắc nhất đến Thạc
sĩ Trương Quỳnh Chi, người đã tận tình chỉ bảo và hướng dẫn chúng tôi trong suốtquá trình thực hiện đề cương luận văn tốt nghiệp cũng như luận văn tốt nghiệp
Cô đã chỉ dẫn cho chúng tôi các bước để phân tích, thiết kế một hệ thống từ các ýtưởng sơ khai đầu tiên, cung cấp cho chúng tôi các tài liệu tham khảo bổ ích và đãđưa ra những đánh giá, đưa ra những góp ý hữu ích trong quá trình hiện thực, kiểmthử và đánh giá hệ thống, giúp chúng tôi có thể hoàn thiện hệ thống của mình hơn.Tiếp theo, chúng tôi xin gửi lời cảm ơn đến quý thầy cô trường Đại Học Bách Khoa,đặc biệt là các thầy cô thuộc Khoa Khoa Học Và Kỹ Thuật Máy Tính Trong suốtnhững năm học qua, các thầy cô đã tận tình chỉ dạy cho chúng tôi nhiều bài học,kiến thức nền tảng bổ ích Nhờ đó chúng tôi có thể hoàn thành đề tài của mình, vàchúng cũng sẽ là hành trang đồng hành cùng với chúng tôi trong suốt quãng đời cònlại
Kế đến, chúng tôi cũng muốn gửi lời cảm ơn đến gia đình, bạn bè, những người đãluôn động viên và tạo điều kiện học tập tốt nhất cho chúng tôi
Cuối cùng, do bản thân chúng tôi còn nhiều hạn chế về kiến thức, về thời gian, nênkhó tránh khỏi những sai sót trong quá trình thực hiện đề tài Chúng tôi rất mongnhận được những đánh giá và góp ý từ bạn bè, quý thầy cô, đặc biệt là giáo viênphản biện đề tài để chúng tôi có thể hoàn thiện hệ thống của mình hơn
Một lần nữa, chúng tôi xin chân thành cảm ơn!
Nhóm sinh viên thực hiện đề tài
Trang 7Tóm tắt
Trung tâm ngoại ngữ là một hệ thống website cung cấp dịch vụ quản lý trung tâmtiếng anh, bao gồm các chức năng dành cho người quản lý trung tâm, nhân viên,giáo viên, trợ giảng, học sinh và phụ huynh
Chúng tôi đã tiến hành thực hiện:
• Khảo sát các hệ thống liên quan đến quản lý trung tâm ngoại ngữ
• Tìm hiểu quy trình nghiệp vụ trong một trung tâm ngoại ngữ
• Liệt kê các chức năng chính cần có của hệ thống
• Mô tả hệ thống thông qua sơ đồ usecase và mô tả usecase
• Thiết kế giao diện bằng Figma
• Xây dựng cơ sở dữ liệu bằng ERD và ánh xạ qua cơ sở dữ liệu quan hệ
• Tìm hiểu công nghệ dùng để xây dựng hệ thống, bao gồm NextJS, ExpressJS
và MySQL
• Hiện thực, kiểm thử, triển khai và đánh giá hệ thống
• Viết báo cáo
Trang 8Tóm tắt iii
1.1 Tổng quan 2
1.2 Ý nghĩa của đề tài 2
1.2.1 Ý nghĩa thực tiễn 2
1.2.2 Ý nghĩa học thuật 3
1.3 Nội dung thực hiện 3
1.4 Giới hạn đề tài 3
Chương 2 KIẾN THỨC NỀN TẢNG 5 2.1 React JS [1] 6
2.2 JSX 6
2.2.1 Components 7
2.2.2 Props và State 7
2.2.3 React Life-cycle 7
2.2.4 Virtual DOM 8
2.3 NextJS [2] 9
2.4 Redux [3] 10
2.5 NodeJS [4] 10
2.6 ExpressJS [5] 11
2.7 SocketIO [6] 11
2.8 Restful API 11
2.9 MySQL 12
Chương 3 PHÂN TÍCH VÀ ĐỀ XUẤT 14 3.1 Các khái niệm 15
3.1.1 LMS(Learning Management System) “Hệ thống quản lý học tập” 15
3.1.2 EMS[7] (Education Management System) - “Hệ quản trị đào tạo” hay “hệ quản trị học tập” 15
3.2 Các hệ thống tương tự cùng lĩnh vực đề tài 15
3.2.1 Mona eLMS 16
3.2.2 Eduspace 17
3.3 Đề xuất về đề tài 18
Trang 9Chương 4 USECASE 19
4.1 Các chức năng của người dùng chưa đăng nhập 20
4.2 Các chức năng chung của người dùng đã đăng nhập 25
4.3 Các chức năng của người dùng là học viên và phụ huynh 31
4.4 Các chức năng của người dùng là giáo viên và trợ giảng 41
4.5 Các chức năng của người dùng là nhân viên 71
4.6 Các chức năng của người dùng là Quản lý (Admin) 102
Chương 5 THIẾT KẾ CƠ SỞ DỮ LIỆU 107 5.1 ERD thực thể 108
5.2 ERD quan hệ 110
5.3 Mô tả Erd 112
5.3.1 Mô tả bảng Ca học (Shift) 112
5.3.2 Mô tả bảng Bài tập (Exercise) 112
5.3.3 Mô tả bảng Câu hỏi (Question) 113
5.3.4 Mô tả bảng Câu trả lời sai (WrongAnswer) 113
5.3.5 Mô tả bảng Tài liệu (Document) 114
5.3.6 Mô tả bảng Thông báo (Notification) 114
5.3.7 Mô tả bảng Tag 115
5.3.8 Mô tả bảng Khoản thu chi (Transaction) 115
5.3.9 Mô tả bảng Lương (Salary) 116
5.3.10 Mô tả bảng Học phí (Fee) 116
5.3.11 Mô tả bảng Hoàn phí (Refund) 117
5.3.12 Mô tả bảng Người dùng (User) 117
5.3.13 Mô tả bảng Người làm (Worker) 118
5.3.14 Mô tả bảng Học sinh (Student) 118
5.3.15 Mô tả bảng Phụ huynh (Parents) 119
5.3.16 Mô tả bảng Giáo viên (Teacher) 119
5.3.17 Mô tả bảng Trợ giảng (Tutor) 119
5.3.18 Mô tả bảng Nhân viên (Employee) 120
5.3.19 Mô tả bảng Quản lý (Admin) 120
5.3.20 Mô tả bảng Tài Khoản (Account) 120
5.3.21 Mô tả bảng Chi Nhánh (Branch) 121
5.3.22 Mô tả bảng Phòng Học (Classroom) 121
5.3.23 Mô tả bảng Khóa Học (Course) 122
5.3.24 Mô tả bảng Chương Trình Học (Curriculum) 123
5.3.25 Mô tả bảng Bài Học (Lecture) 124
5.3.26 Mô tả bảng Giáo Viên dạy Chương Trình Học (TeacherPrefer-Curriculum) 124
5.3.27 Mô tả bảng Buổi Học (StudySession) 125
5.3.28 Mô tả bảng Buổi Học thuộc Ca Học (StudySessionBelong-ToShift) 126
5.3.29 Mô tả bảng Trợ Giảng rảnh Ca Học (TutorFreeInShift) 126
5.3.30 Mô tả bảng Học Sinh tham gia Khóa Học (StudentPartici-pateCourse) 127
5.3.31 Mô tả bảng Người dùng nhắn tin (UsersChatEachOther) 128
Trang 105.3.32 Mô tả bảng Câu hỏi thuộc về Tag (QuestionBelongTag) 129
5.3.33 Mô tả bảng Chương Trình Học thuộc về Tag (CurriculumBe-longTag) 129
5.3.34 Mô tả bảng Học Sinh tham dự Buổi Học (StudentAttend-StudySession) 130
5.3.35 Mô tả bảng Bài tập gồm Câu hỏi (ExerciseContainQuestion) 130 5.3.36 Mô tả bảng Học Sinh làm Bài tập (StudentDoExercise) 131
5.3.37 Mô tả bảng Học Sinh học bù (MakeUpLesson) 132
Chương 6 HIỆN THỰC 133 6.1 Kiến trúc hệ thống 134
6.2 Công nghệ và những thư viện sử dụng 135
6.2.1 Front-end 135
6.2.2 Back-end 136
6.3 Quản lý mã nguồn 136
6.3.1 Lưu trữ và quản lý mã nguồn bằng Git 136
6.3.2 Cấu trúc mã nguồn 137
6.4 Giao diện của hệ thống 140
6.4.1 Giao diện chung 140
6.4.2 Giao diện của học viên 147
6.4.3 Giao diện của phụ huynh 155
6.4.4 Giao diện của giáo viên 156
6.4.5 Giao diện trợ giảng 171
6.4.6 Giao diện nhân viên 173
Chương 7 KIỂM THỬ 183 Chương 8 TRIỂN KHAI VÀ ĐÁNH GIÁ HỆ THỐNG 191 8.1 Nền tảng điện toán đám mây Google Cloud 192
8.2 Nền tảng Vercel 192
8.3 Sơ đồ triển khai 193
8.4 Các bước triển khai server trên Google Cloud Platform 194
8.5 Các bước triển khai frontend trên Vercel 199
8.6 Đánh giá và cải thiện hiệu suất 201
8.6.1 Đánh giá hiệu suất của trang web bằng Google PageSpeed Insights và Lighthouse 201
8.6.2 Cải thiện hiệu suất 201
Chương 9 TỔNG KẾT VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 204 9.1 Tổng kết kết quả làm được 205
9.1.1 Đối với nhiệm vụ của đề tài 205
9.1.2 Đối với lợi ích thực tế 205
9.1.3 Đối với cơ sở lý thuyết và công nghệ 205
9.1.4 Đối với quy trình phát triển phần mềm 206
9.2 Đánh giá kết quả đạt được 206
9.2.1 Ưu điểm 206
Trang 119.2.2 Nhược điểm 2079.3 Hướng phát triển đề tài 207
Trang 122.1 Logo ReactJS 6
2.2 Vòng đời của component 8
2.3 Mô hình DOM cơ bản 8
2.4 Cơ chế cập nhật Virtual DOM 9
3.1 Hình mô tả các chức năng cơ bản của hệ thống 17
4.1 Usecase nhóm các chức năng của người dùng chưa đăng nhập 20
4.2 Usecase nhóm các chức năng chung của người dùng (đã đăng nhập) 25 4.3 Usecase nhóm các chức năng của người dùng là học viên và phụ huynh 31 4.4 Usecase nhóm các chức năng của người dùng là giáo viên và trợ giảng 41 4.5 Usecase nhóm các chức năng của người dùng là nhân viên 71
4.6 Usecase nhóm các chức năng của người dùng là Admin 102
5.1 Các thực thể trong Erd (1) 108
5.2 Các thực thể trong Erd (2) 109
5.3 Quan hệ của các thực thể trong Erd (1) 110
5.4 Quan hệ của các thực thể trong Erd (2) 111
6.1 Kiến trúc hệ thống 134
6.2 Cấu trúc thư mục của ứng dụng Web 138
6.3 Cấu trúc thư mục pages 139
6.4 Cấu trúc thư mục của Back-end 140
6.5 Giao diện trang chủ (1) 141
6.6 Giao diện trang chủ (2) 142
6.7 Giao diện trang chủ (3) 143
6.8 Giao diện đăng nhập 144
6.9 Giao diện nhắn tin 145
6.10 Giao diện tìm kiếm người dùng trong nhắn tin 146
6.11 Giao diện thông báo 147
6.12 Giao diện thời khóa biểu của học viên 148
6.13 Giao diện danh sách khóa học của học viên 149
6.14 Giao diện kết quả điểm danh của học viên 150
6.15 Giao diện tài liêu của khóa học 151
6.16 Giao diện danh sách bài tập của học viên 152
6.17 Giao diện làm bài tập của học viên 152
6.18 Giao diện đánh giá khóa học của học viên 153
6.19 Giao diện thông tin cá nhân của học viên (1) 154
6.20 Giao diện thông tin cá nhân của học viên (2) 154
6.21 Giao diện thêm phụ huynh của học viên 155
6.22 Giao diện chọn học viên theo dõi 155
6.23 Giao diện lịch sử thanh toán 156
Trang 136.24 Giao diện chương trình dạy 157
6.25 Giao diện danh sách buổi học 158
6.26 Giao diện chi tiết buổi học 158
6.27 Giao diện xin nghỉ dạy buổi học 159
6.28 Giao diện danh sách học viên 159
6.29 Giao diện thông tin chi tiết học viên 160
6.30 Modal gửi thông báo đến học viên 160
6.31 Giao diện danh sách bài tập 161
6.32 Giao diện tạo bài tập 162
6.33 Giao diện chi tiết bài tập 163
6.34 Giao diện danh sách câu hỏi 164
6.35 Giao diện danh sách tài liệu 165
6.36 Giao diện tạo tài liệu 166
6.37 Giao diện nhật ký giảng dạy 167
6.38 Giao diện danh sách chương trình dạy 168
6.39 Giao diện thêm chương trình dạy (1) 168
6.40 Giao diện thêm chương trình dạy (2) 169
6.41 Giao diện thông tin cá nhân (1) 170
6.42 Giao diện thông tin cá nhân (2) 170
6.43 Giao diện đăng ký ca rảnh của trợ giảng 172
6.44 Giao diện thông tin cơ bản trong tạo khóa học 173
6.45 Giao diện chọn giáo viên trong tạo khóa học 173
6.46 Giao diện chọn ca học trong tạo khóa học 174
6.47 Giao diện chọn thông tin lịch học trong tạo khóa học 175
6.48 Giao diện thông tin ca học trong tạo khóa học 175
6.49 Giao diện thông tin cơ bản trong chi tiết khóa học 176
6.50 Giao diện danh sách học viên trong chi tiết khóa học 176
6.51 Giao diện danh sách buổi học trong chi tiết khóa học 177
6.52 Giao diện thay đổi buổi học trong chi tiết khóa học 177
6.53 Giao diện quản lý phòng học 178
6.54 Giao diện quản lý học viên 179
6.55 Giao diện thông tin học viên 179
6.56 Giao diện danh sách giao dịch 180
6.57 Giao diện danh sách nhân sự 181
7.1 Giao diện tiện ích Katalon Recorder trên Google Chrome 185
7.2 Kết quả kiểm thử test suite đăng nhập 187
7.3 Kết quả kiểm thử test suite học viên 188
7.4 Kết quả kiểm thử test suite giáo viên 189
7.5 Kết quả kiểm thử test suite nhân viên 190
8.1 Kiến trúc của Google App Engine 192
8.2 Sơ đồ triển khai 193
8.3 Chọn SQL tại màn hình console 194
8.4 Chọn Create Instance tại giao diện quản lý Cloud SQL 194
8.5 Chọn MySQL làm hệ cơ sở dữ liệu cần dùng 194
Trang 148.6 Điền tên và mật khẩu của database instance 195
8.7 Chọn vị trí server và múi giờ 195
8.8 Chọn User để đi đến trang quản lý người dùng 196
8.9 Tạo người dùng mới 196
8.10 Chọn Database để đến trang quản lý cơ sở dữ liệu 197
8.11 Tạo cơ sở dữ liệu 197
8.12 Cấu trúc tập tin app.yaml 198
8.13 Thông báo hoàn thành triển khai app engine 198
8.14 Chọn thêm dự án mới tại trang chủ Vercel 199
8.15 Chọn dự án từ tài khoản Github 199
8.16 Điền thông tin dự án trước khi triển khai trên Vercel 200
8.17 Triển khai trên Vercel thành công 200
8.18 Điểm đánh giá PageSpeed lần đầu tiên 201
8.19 Cấu trúc tập tin next.config.js. 202
8.20 Các tập tin hình ảnh được cache 202
8.21 Hiệu suất được cải thiện 203
Trang 154.1 Usecase đăng nhập 21
4.2 Usecase đăng ký 22
4.3 Usecase xem danh sách khóa học sắp khai giảng 23
4.4 Usecase xem chi tiết khóa học 24
4.5 Usecase đăng xuất 26
4.6 Usecase xem thông tin cá nhân 27
4.7 Usecase chỉnh sửa thông tin cá nhân 28
4.8 Usecase xem danh sách thông báo 29
4.9 Usecase trò chuyện 30
4.10 Usecase xem danh sách học viên phụ thuộc 32
4.11 Usecase đăng ký tham gia khóa học sắp khai giảng 33
4.12 Usecase danh sách các khóa học đã đăng ký 34
4.13 Usecase đánh giá khóa học 35
4.14 Usecase xem kết quả điểm danh 36
4.15 Usecase xem tài liệu khóa học 37
4.16 Usecase làm bài tập trực tuyến 38
4.17 Usecase xem kết quả bài tập trực tuyến 39
4.18 Usecase xem thời khóa biểu của học viên 40
4.19 Usecase đăng ký ca làm rảnh 42
4.20 Usecase xem nhật ký giảng dạy 43
4.21 Usecase xem chi tiết buổi học 44
4.22 Usecase chỉnh sửa buổi học 45
4.23 Usecase xem danh sách khóa học 46
4.24 Usecase xem thông tin chi tiết khóa học 47
4.25 Usecase xem danh sách buổi học 48
4.26 Usecase xin nghỉ buổi học 49
4.27 Usecase xem danh sách học viên 50
4.28 Usecase xem chi tiết học viên 51
4.29 Usecase gửi thông báo tới lớp học 52
4.30 Usecase xem danh sách bài tập 53
4.31 Usecase xóa bài tập 54
4.32 Usecase thêm bài tập 55
4.33 Usecase xem chi tiết bài tập 56
4.34 Usecase chỉnh sửa bài tập 57
4.35 Usecase xem danh sách tài liệu 58
4.36 Usecase xóa tài liệu 59
4.37 Usecase thêm tài liệu 60
4.38 Usecase đóng khóa học 61
4.39 Usecase xem đánh giá 62
4.40 Usecase xem danh sách chương trình học 63
4.41 Usecase xóa chương trình học 64
4.42 Usecase thêm chương trình học 65
Trang 164.43 Usecase xem chi tiết chương trình học 66
4.44 Usecase chỉnh sửa chương trình học 67
4.45 Usecase xem danh sách giáo viên dạy chương trình học 68
4.46 Usecase thêm giáo viên dạy chương trình học 69
4.47 Usecase xóa giáo viên dạy chương trình học 70
4.48 Usecase xem lịch sử giao dịch 72
4.49 Usecase xem danh sách nhân sự 73
4.50 Usecase tạo lương 74
4.51 Usecase xem danh sách học viên 75
4.52 Usecase đăng ký tài khoản 76
4.53 Usecase danh sách học viên nợ học phí 77
4.54 Usecase nhắc nhở học viên 78
4.55 Usecase xem chi tiết học viên 79
4.56 Usecase thanh toán 80
4.57 Usecase thay đổi phụ huynh liên kết 81
4.58 Usecase xem danh sách khóa học 82
4.59 Usecase xem chi tiết khóa học 83
4.60 Usecase tạo khóa học mới 84
4.61 Usecase chỉnh sửa khóa học 85
4.62 Usecase xóa khóa học 86
4.63 Usecase xem danh sách học viên tham gia khóa học 87
4.64 Usecase thêm học viên vào khóa học 88
4.65 Usecase xóa học viên khỏi khóa học 89
4.66 Usecase xem danh sách buổi học 90
4.67 Usecase thêm buổi học 91
4.68 Usecase xóa buổi học 92
4.69 Usecase chỉnh sửa buổi học 93
4.70 Usecase đóng khóa học 94
4.71 Usecase mở khóa học 95
4.72 Usecase khóa khóa học 96
4.73 Usecase mở khóa khóa học 97
4.74 Usecase xem danh sách phòng học 98
4.75 Usecase tạo phòng học mới 99
4.76 Usecase chỉnh sửa phòng học 100
4.77 Usecase xóa phòng học 101
4.78 Usecase Quản lý người dùng 103
4.79 Usecase Quản lý chương trình đào tạo, khóa học 104
4.80 Usecase Báo cáo, thống kê 105
4.81 Usecase Quản lý chi nhánh 106
5.1 Chi tiết thuộc tính của bảng Ca học (Shift) 112
5.2 Chi tiết thuộc tính của bảng Bài tập (Exercise) 112
5.3 Chi tiết thuộc tính của bảng Câu hỏi (Question) 113
5.4 Chi tiết thuộc tính của bảng Câu trả lời sai (WrongAnswer) 113
5.5 Chi tiết thuộc tính của bảng Tài liệu (Document) 114
5.6 Chi tiết thuộc tính của bảng Thông báo (Notification) 114
Trang 175.7 Chi tiết thuộc tính của bảng Tag 115
5.8 Chi tiết thuộc tính của bảng Khoản thu chi (Transaction) 115
5.9 Chi tiết thuộc tính của bảng Lương (Salary) 116
5.10 Chi tiết thuộc tính của bảng Học phí (Fee) 116
5.11 Chi tiết thuộc tính của bảng Hoàn phí (Refund) 117
5.12 Chi tiết thuộc tính của bảng User (Người dùng) 117
5.13 Chi tiết thuộc tính của bảng Người làm (Worker) 118
5.14 Chi tiết thuộc tính của bảng Học sinh (Student) 118
5.15 Chi tiết thuộc tính của bảng Phụ huynh (Parents) 119
5.16 Chi tiết thuộc tính của bảng Giáo viên (Teacher) 119
5.17 Chi tiết thuộc tính của bảng Trợ giảng (Tutor) 119
5.18 Chi tiết thuộc tính của bảng Nhân viên (Employee) 120
5.19 Chi tiết thuộc tính của bảng Quản lý (Admin) 120
5.20 Chi tiết thuộc tính của bảng Tài Khoản (Account) 120
5.21 Chi tiết thuộc tính của bảng Chi Nhánh (Branch) 121
5.22 Chi tiết thuộc tính của bảng Phòng Học (Classroom) 121
5.23 Chi tiết thuộc tính của bảng Khóa Học (Cource) 122
5.24 Chi tiết thuộc tính của bảng Chương Trình Học (Curriculum) 123
5.25 Chi tiết thuộc tính của bảng Bài Học (Lecture) 124
5.26 Chi tiết thuộc tính của bảng Giáo Viên dạy Chương Trình Học (TeacherPreferCurriculum) 124
5.27 Chi tiết thuộc tính của bảng Buổi Học (StudySession) 125
5.28 Chi tiết thuộc tính của bảng Buổi Học thuộc Ca Học (StudySession-BelongToShift) 126
5.29 Chi tiết thuộc tính của bảng Trợ Giảng rảnh Ca Học (TutorFreeInShift).126 5.30 Chi tiết thuộc tính của bảng Học Sinh tham gia Khóa Học (Student-ParticipateCourse) 127
5.31 Chi tiết thuộc tính của bảng Người dùng nhắn tin (UsersChatEa-chOther) 128
5.32 Chi tiết thuộc tính của bảng Câu hỏi thuộc về Tag (QuestionBelong-Tag) 129
5.33 Chi tiết thuộc tính của bảng Chương Trình Học thuộc về Tag (Cur-riculumBelongTag) 129
5.34 Chi tiết thuộc tính của bảng Học Sinh tham dự Buổi Học (Studen-tAttendStudySession) 130
5.35 Chi tiết thuộc tính của bảng Bài tập gồm Câu hỏi (ExerciseContain-Question) 130
5.36 Chi tiết thuộc tính của bảng Học Sinh làm Bài tập (StudentDoExercise).131 5.37 Chi tiết thuộc tính của bảng Học Sinh học bù (MakeUpLesson) 132
7.1 Test suite đăng nhập và đăng xuất 186
7.2 Test suite học viên 187
7.3 Test suite giáo viên 188
7.4 Test suite nhân viên 189
Trang 18Tổng quan hệ thống
Trong chương đầu tiên này, chúng tôi sẽ nêu lên vấn đề, giới thiệu về đề tài, nói lên
ý nghĩa mà đề tài mang lại và các công việc đã thực hiện
Mục lục
1.1 Tổng quan 2
1.2 Ý nghĩa của đề tài 2
1.3 Nội dung thực hiện 3
1.4 Giới hạn đề tài 3
Trang 191.1 Tổng quan
Trong quá trình thế giới hội nhập ngày nay, ngoại ngữ đóng một vai trò vô cùngquan trọng giúp các cá nhân, tổ chức thuộc các quốc gia khác nhau có thể dễ dàngtrong việc giao lưu kinh tế, văn hóa Do đó, nhu cầu học ngoại ngữ của mọi ngườiđang ngày càng cao, ở bất kỳ lứa tuổi hay ngành nghề nào, không chỉ tiếng Anh
mà còn là các ngoại ngữ phổ biến khác như tiếng Nhật, Trung, Hàn, Pháp, Từ
đó những nhà đầu tư cũng sẽ muốn mở các trung tâm ngoại ngữ để có thể đáp ứngnhu cầu của mọi người Nhưng họ sẽ gặp khó khăn khi không biết phải bắt đầu từđâu, cũng như phải quản lý trung tâm như thế nào cho hiệu quả
Với sự phát triển của khoa học kỹ thuật hiện nay, đặc biệt là cuộc cách mạng 4.0
đã góp phần làm đơn giản hóa và nâng cao hiệu quả của các công việc trong nhiềulĩnh vực khác nhau Dựa trên những nhu cầu và sự phát triển này, nhóm chúng tôi
đã lên ý tưởng để xây dựng một hệ thống quản lý dành cho các trung tâm ngoạingữ, giúp cho người chủ có thể dễ dàng xây dựng, quản lý và phát triển một trungtâm ngoại ngữ Đồng thời cũng tăng hiệu quả giảng dạy và học tập của những giáoviên, học viên khi tham gia vào trung tâm
1.2 Ý nghĩa của đề tài
• Giảm các chi phí và tối ưu hóa công tác quản lý
• Mang lại tất cả thông tin giáo viên giúp học viên có thể tìm hiểu một cáchđơn giản
• Hỗ trợ giáo viên xây dựng các chương trình học phù hợp và hiệu quả, đồngthời dễ dàng quản lý các lớp học của mình
• Giúp các học viên theo dõi được quá trình và kết quả học tập của mình tạitrung tâm
Trang 201.2.2 Ý nghĩa học thuật
Việc thực hiện xây dựng hệ thống quản lý dành cho một trung tâm ngoại ngữ giúpchúng tôi biết thêm được nhiều kiến thức hữu ích về ngành giáo dục Trong quátrình xây dựng hệ thống này, chúng tôi cũng đã có cơ hội vận dụng và củng cố cáckiến thức mà mình đã học được trong các năm học qua, ví dụ như kiến thức về kiếntrúc hệ thống, cơ sở dữ liệu, công nghệ phần mềm, kỹ thuật lập trình web, Ngoài
ra, trong quá trình này chúng tôi cũng đã được tìm hiểu và làm việc thêm với cáccông nghệ mới và phổ biến hiện nay như framework NextJS dành cho Front-end,NodeJs (cùng ExpressJS) cùng với framework Express dành cho Back-end, Đâycũng là cơ hội không thể tốt hơn để chúng tôi nâng cao khả năng tìm hiểu và nghiêncứu, rèn luyện cho mình những kỹ năng mềm cần thiết, đặc biệt là kỹ năng làm việcnhóm, kỹ năng trình bày ý tưởng cũng như khả năng phản biện của bản thân, giúpchúng tôi có thể dễ dàng hòa nhập vào những môi trường mới và thuận tiện hơntrong quá trình phát triển sự nghiệp sau này
1.3 Nội dung thực hiện
Trong thời gian làm đề tài luận văn tốt nghiệp Xây dựng hệ thống quản lý cho một trung tâm ngoại ngữ này, chúng tôi đã làm các công việc sau:
• Tìm hiểu, đánh giá một vài hệ thống có chức năng tương tự với đề tài
• Đề xuất các chức năng cần thiết của hệ thống, vẽ và mô tả các biểu đồ usecasecủa hệ thống
• Thiết kế giao diện cho các trang web của hệ thống
• Thiết kế cơ sở dữ liệu cho hệ thống
• Tiến hành tìm hiểu các công nghệ cần thiết để hiện thực hệ thống, từ đó lựachọn và hiện thực hệ thống
• Kiểm thử, triển khai và đánh giá hệ thống
• Viết báo cáo
1.4 Giới hạn đề tài
Đề tài không đi sâu vào việc quản lý nhân sự, việc dạy và học trực tuyến Chúng tôichỉ dừng lại ở mức cơ bản các chức năng phục vụ cho vấn để quản lý các thông tincần thiết của một trung tâm ngoại ngữ như thông tin những người dùng (học viên,phụ huynh, giáo viên, trợ giảng, nhân viên, admin), các chi nhánh và phòng học củatrung tâm, chương trình học, các khóa học, buổi học Ngoài ra, trong các khóa họcchúng tôi cũng chỉ cung cấp việc tạo tài liệu (dạng tệp) và các bài tập (không hỗtrợ giới hạn thời gian thực hiện, ngân hàng câu hỏi) ở mức thông thường
Bên cạnh đó, trong quá trình hiện thực hệ thống chúng tôi nhận thấy có nhiều thiếusót về những chức năng vì giới hạn về mặt thời gian và nhân lực, chúng tôi sẽ tiếp
Trang 21tục phát triển những chức năng này trong tương lai Cụ thể, chúng tôi chưa thể hiệnthực các chức năng của người dùng là admin.
Trang 23ReactJS là một thư viện JavaScript có tính hiệu quả và linh hoạt để xây dựng cácthành phần giao diện người dùng (UI) có thể sử dụng lại ReactJS giúp phân chiacác UI phức tạp thành các thành phần nhỏ (được gọi là component) Nó được tạo rabởi Jordan Walke, một kỹ sư phần mềm tại Facebook ReactJS ban đầu được pháttriển và duy trì bởi Facebook và sau đó được sử dụng trong các sản phẩm của mìnhnhư WhatsApp và Instagram React là một thư viện UI phát triển tại Facebook để
hỗ trợ việc xây dựng những thành phần (components) UI có tính tương tác cao, cótrạng thái và có thể sử dụng lại được
Hình 2.1: Logo ReactJS
2.2 JSX
JSX (viết tắt của cụm từ JavaScript XML) là một dạng ngôn ngữ cho phép viết các
mã HTML trong Javascript Đặc điểm của JSX:
• Nhanh hơn: JSX thực hiện tối ưu hóa trong khi biên dịch sang mã Javascript.Các mã này cho thời gian thực hiện nhanh hơn nhiều so với một mã tươngđương viết trực tiếp bằng Javascript
• An toàn hơn: Ngược với Javascript, JSX được biên dịch trước khi chạy, giốngnhư Java, C++ Vì thế các lỗi sẽ được phát hiện ngay trong quá trình biêndịch Ngoài ra, nó cũng cung cấp tính năng gỡ lỗi khi biên dịch rất tốt
Việc sử dụng JSX mang lại nhiều lợi ích là:
Trang 24• Giúp cho việc xây dựng ứng dụng React có thể được xây dựng nhanh chónghơn, dễ tối ưu hơn trong việc biên dịch mã sang Javascript.
• JSC giúp xem lỗi trong quá trình triển khai dễ hơn và những lỗi này sẽ đượchiển thị trong quá trình biên dịch
• Các cú pháp khá giống với HTML nên sẽ dễ dàng hơn nhiều cho việc viếtchuyển đổi
React được xây dựng xung quanh các component, chứ không dùng template nhưcác framework khác React xây dựng trang web sử dụng những thành phần (com-ponent) nhỏ có thể tái sử dụng ở nhiều nơi với các thuộc tính khác nhau Trongmột component lại có thể chứa thành phần khác Mỗi component trong React cómột trạng thái riêng có thể thay đổi, và React sẽ thực hiện cập nhật componentdựa trên những thay đổi của trạng thái Mọi thứ trong React đều là component vàchúng giúp bảo trì mã code khi làm việc với các dự án lớn
Trong ReactJS có hai loại component:
• Stateful component: là component có thành phần dữ liệu độc lập với nent cha và có thể thay đổi
compo-• Stateless component: là component không có thành phần dữ liệu độc lập,component hoàn toàn phụ thuộc vào component cha
2.2.2 Props và State
Các thành phần dữ liệu của component gồm có hai loại:
• Props: là một đối tượng chứa các thuộc tính của thẻ JSX Props giúp truyền
dữ liệu từ component này sang component khác, và props là bất biến
• State: thể hiện trạng thái của component Khác với props, state của
compo-nent không thể truyền được ra ngoài, compocompo-nent sẽ quản lý state của chính
nó State là một đối tượng mà lưu trữ giá trị của các thuộc tính bên trongcomponents và chỉ tồn tại trong phạm vi của component đó Mỗi khi bạn thayđổi giá trị của một state thì component đó sẽ được render lại
2.2.3 React Life-cycle
React Life-cycle là một vòng đời của component Khi tiến hành render một nent thì ReactJS thực hiện nhiều tiến trình khác nhau, các tiến trình này được lặp
compo-đi lặp lại đối với các component
Giả sử khi một component được gọi, trước tiên component sẽ cài đặt props và state,sau đó tiến hành mounting, update, unmounting, Việc tham gia vào quá trình nàycần sử dụng đến các hàm hỗ trợ của life-cycle mà ReactJS cung cấp
Trang 25Hình 2.2: Vòng đời của component.
Khái niệm DOM và Virtual DOM:
• DOM (Document Object Model) là giao diện lập trình cho văn bản HTML vàXML Nó xác định cấu trúc logic của văn bản HTML và XML, cũng như cáchchúng được truy cập và thao tác Khi một trang web được load, trình duyệt
sẽ tạo DOM cho trang web đó dưới dạng các nút có mô hình cơ bản như sau:
Hình 2.3: Mô hình DOM cơ bản.
• Do việc tạo và cập nhật DOM khá tốn thời gian, nên đội ngũ phát triển củafacebook đã tạo ra Virtual DOM nhằm tăng tốc độ cập nhật DOM trong ứngdụng ReactJS của mình Virtual DOM được thiết kế nhỏ gọn và bản chất của
nó là một đối tượng sao chép lại DOM do trình duyệt tạo ra
Virtual DOM hoạt động theo 3 bước:
Trang 26• Khi state hoặc prop thay đổi, toàn bộ UI sẽ render lại tại Virtual DOM.
• Kiểm tra sự khác biệt giữa DOM và Virtual DOM theo thuật toán kiểm trakhác biệt
• Cập nhật DOM với những thay đổi đã tìm được bằng thuật toán ở bước 2
Hình 2.4: Cơ chế cập nhật Virtual DOM.
Khi chúng ta thực hiện render một JSX element, mỗi Virtual DOM object sẽ đượccập nhật, khi virtual DOM được cập nhật, ReactJS sẽ so sánh virtual DOM vớivirtual DOM trước đó để kiểm tra trước khi thực hiện cập nhật và sau đó sẽ cậpnhật trên một phần của DOM thật Thay đổi của DOM thật sẽ được hiển thị ramàn hình Việc chỉ cập nhật một phần của DOM giúp tiết kiệm tài nguyên và tốc
độ xử lý nhanh hơn
2.3 NextJS [ 2 ]
Client-side rendering (CSR) có những nhược điểm nhất định:
• Vấn đề hiệu năng và trang trống khi tải web lần đầu
Trang 27NextJS, một React framework giúp dễ dàng để xây dựng ứng dụng React tích hợp
cơ chế Server-side rendering (SSR) Nextjs bao gồm nhiều tính năng như:
• Pre-rendering, cả static generation (SSG) và server-side rendering (SSR)
• Tách mã tự động để tải trang nhanh hơn, mỗi page chỉ load những gì cần thiếtcho page đó
• Hỗ trợ routing, SEO, tối ưu hóa các tập tin tĩnh như hình ảnh và css
2.4 Redux [ 3 ]
Vấn đề quản lý trạng thái trở nên khó khăn hơn khi giao diện hệ thống ngày càngphức tạp Việc chia sẻ cùng dữ liệu từ component cha và truyền dữ liệu qua cáccomponent trung gian khiến việc quản lý trạng thái vô cùng phức tạp, dễ gây lỗi
và khó khăn cho việc kiểm thử Để giải quyết vấn đề này, chúng tôi sử dụng Reduxgiúp tập trung hóa các trạng thái đối tượng tại một nơi duy nhất - nhờ đó quản lýtrạng thái dễ dàng hơn
Gồm 3 thành phần chính: Actions, Store, Reducers
• Actions: đơn giản là các events Chúng là cách mà chúng ta gửi dữ liệu từ
web app đến Redux store Những dữ liệu này có thể là từ sự tương tác củangười dùng với web app hoặc tác vụ gọi đến API
• Reducers: là các hàm, chúng lấy state hiện tại của web app, thực hiện một
action và trả về một state mới Những states này được lưu như những đốitượng và chúng định rõ cách state của một ứng dụng thay đổi trong việc phảnhồi một action được gửi đến store
• Store: lưu trạng thái ứng dụng và nó là duy nhất trong bất kỳ một ứng dụng
Redux nào Bạn có thể truy cập các state được lưu, cập nhật state, và đăng
ký hoặc hủy đăng ký các listeners thông qua các hàm tiện ích được hỗ trợ
2.5 NodeJS [ 4 ]
NodeJS là một nền tảng được xây dựng trên V8 JavaScript Engine – trình thôngdịch thực thi mã JavaScript Nhờ đó, NodeJS cho phép mã Javascript thực thi ngoàimôi trường trình duyệt và được dùng để xây dựng các công cụ tiện ích, bao gồm cảmáy chủ web
NodeJS không cần đợi API trả dữ liệu về, do đó mọi APIs nằm trong NodeJS đềukhông được đồng bộ NodeJS được xem là một máy chủ đơn luồng và không thể hỗtrợ đa luồng
Trang 28Ưu điểm Nhược điểm
- Hướng sự kiện không đồng bộ giúp
xử lý nhiều yêu cầu đồng thời
- Đáp ứng được những yêu cầu về thời
gian thực
- Có tốc độ cực rất nhanh, đáp ứng
được nhu cầu sử dụng của khách truy
cập ‘khổng lồ’ trong thời gian ngắn
- NodeJS không cung cấp khả năng mởrộng và không thể tận dụng lợi thế củanhiều lõi thường có trong phần cứngcấp máy chủ ngày nay
- Thao tác với cơ sở dữ liệu quan hệ làmột khó khăn nếu bạn đang sử dụngNodeJS
- NodeJS không phù hợp với các tác
vụ đòi hỏi nhiều CPU mà chỉ phù hợpvới những I/O như máy chủ web
2.6 ExpressJS [ 5 ]
Expressjs là một framework được xây dựng trên nền tảng của Nodejs, cung cấp cáctính năng mạnh mẽ để phát triển web, bao gồm các chức năng chính:
• Thiết lập các lớp trung gian để trả về các HTTP request
• Định nghĩa router cho phép sử dụng với các hành động khác nhau dựa trênphương thức HTTP và URL
• Cho phép trả về các trang HTML dựa vào các tham số
2.7 SocketIO [ 6 ]
Khi truy cập vào một trang web hoặc ứng dụng bất kỳ thì việc giao tiếp giữa máychủ (Server) và máy khách (Client) là việc rất quan trọng Để máy chủ và máykhách có thể nhận biết được sự thay đổi của đối phương thì cần sử dụng những cáchthức như AJAX, long-polling, short-polling, và HTML5 server-sent events, Việc
sử dụng cách giao tiếp bằng những công cụ kể trên tồn tại nhiều nhược điểm trong
đó có thể kể đến là kết quả trả về chậm và tốn rất nhiều tài nguyên
Để khắc phục những nhược điểm này, công cụ socket.io ra đời để giúp cho việc giaotiếp giữa Server và Client diễn ra tức khắc và chiếm ít tài nguyên nhất SocketIOđược xây dựng trên Websocket protocol và cấu trúc gồm 2 phần: server và clienttương tác với nhau theo hướng sự kiện
2.8 Restful API
Các khái niệm cơ bản:
• API (Application Programming Interface) là một tập các quy tắc và cơ chế màtheo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng
Trang 29hay thành phần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng củamình ở những kiểu dữ liệu phổ biến như JSON hay XML.
• 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 là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web(thiết kế Web services) để tiện cho việc quản lý các tài nguyên Nó chú trọngvào tài nguyên hệ thống (tệp văn bản, ảnh, âm thanh, video, hoặc dữ liệuđộng ), bao gồm các trạng thái tài nguyên được định dạng và được truyềntải qua HTTP RESTful là một trong những kiểu thiết kế API được sử dụngphổ biến ngày nay để cho các ứng dụng (web, mobile ) khác nhau giao tiếpvới nhau
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 tài nguyên hoặc một danh sách tài nguyên
• POST (CREATE): Tạo mới một tài nguyên
• PUT (UPDATE): Cập nhật thông tin cho tài nguyên
• DELETE (DELETE): Xóa một tài nguyên
• Tuân theo tính chất ACID (Atomicity, Consistency, Isolation, Durability)
Cơ sở dữ liệu quan hệ là tập hợp dữ liệu được tổ chức theo mô hình dữ liệu quan
hệ, nơi mà dữ liệu được tổ chức thành các bảng bao gồm các cột và các hàng Mỗicột là thuộc tính của thực thể, có tính chất nguyên tử (atomic) và thuộc về mộtmiền giá trị nhất định thể hiện ràng buộc về dữ liệu của thuộc tính đó Mỗi hàng
là một thực thể, các thực thể trong một bảng cần phân biệt với nhau qua ít nhấtmột thuộc tính Mối quan hệ giữa các bảng được thể hiện qua khóa ngoại
Hệ quản trị cơ sở dữ liệu là một phần mềm cho phép quản lý, truy xuất và thaotác với dữ liệu trong cơ sở dữ liệu Trong đó, MySQL được sử dụng vô cùng rộng
Trang 30rãi, một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở hoạt động theo mô hìnhclient-server:
• MySQL tạo ra bảng để lưu trữ dữ liệu, định nghĩa quan hệ giữa các bảng
• Client sẽ gửi yêu cầu SQL bằng câu lệnh trên MySQL
• Ứng dụng trên server sẽ phản hồi thông tin và trả về kết quả trên máy client
Là một ứng dụng mã nguồn mở, hiệu năng ổn định và được hỗ trợ bởi cộng đồngđông đảo, MySQL trở thành lựa chọn phù hợp cho hệ thống của chúng tôi
Trang 31Phân tích và đề xuất
Trong chương này, chúng tôi sẽ giới thiệu các khái niệm liên quan, phân tích mộtvài hệ thống tương tự và đưa ra các đề xuất về chức năng của hệ thống quản lý chongoại ngữ trung tâm ngoại ngữ
Mục lục
3.1 Các khái niệm 15
3.2 Các hệ thống tương tự cùng lĩnh vực đề tài 15
3.3 Đề xuất về đề tài 18
Trang 32• LMS là quá trình cải tiến giáo dục do ngoài việc có thể chứa học liệu, LMScòn chứa các hoạt động do người dạy và người học trực tiếp sinh ra Thôngqua các hoạt động này, hành vi học tập có thể được nhận diện để người dạy
có thể tạo ra các chiến lược dạy học đáp ứng
• Một LMS tốt thường sẽ có một bộ các tính năng cơ bản như:
– Quản lý học liệu (các loại học liệu, kể cả ngân hàng câu hỏi, tuy nhiên
không phải là tất cả)
– Quản lý các hoạt động (hoạt động của người dạy, người học hay bất kể
ai liên quan đến khóa học)
– Cho phép tổ chức các phương pháp giảng dạy đa dạng (nói chung về các
phương pháp tổ chức lớp học) và có khả năng biến đổi nhanh để đáp ứngnhu cầu thay đổi phương pháp giảng dạy
– Đặc biệt quan trọng đối với các LMS hiện nay đó là khả năng tích hợp,
bổ sung tính năng
3.1.2 EMS[ 7 ] (Education Management System) - “Hệ quản
trị đào tạo” hay “hệ quản trị học tập”
EMS[7] tập trung nhiều vào các quy trình quản trị mang tính hành chánh hơn nhưthông tin của người học, các hoạt động tài chính, thời khóa biểu, học bạ Bêntrong EMS rất khó có thể đi sâu vào việc tổ chức các nội dung dạy và học EMS cóthể được phát triển sâu như là một hệ thống ERP cho giáo dục vì khả năng quản
lý xuyên suốt các mảng hành chính (Không bao gồm hoạt động dạy và học)
(ERP là thuật ngữ dành cho hệ thống hoạch định tài nguyên cho doanh nghiệp)
3.2 Các hệ thống tương tự cùng lĩnh vực đề tài
Để biết thêm về các nghiệp vụ trong ngành giáo dục, chúng tôi đã tiến hành khảosát một vài trang web chuyên cung cấp các hệ thống phần mềm quản lý trung tâmgiáo dục tương tự, để có thể tìm ra các vấn đề và đề xuất các tính năng cho hệthống của mình Chúng tôi đã chọn hai hệ thống khá nổi tiếng là Mona eLMS vàEduspace
Trang 333.2.1 Mona eLMS
Hệ thống Mona eLMS có tên miền là https://mona.media/, là hệ thống phầnmềm quản lý trường học - trung tâm - cơ sở giáo dục và trang web học trực tuyếnelearning, cung cấp các chức năng cho phép người dùng dễ dàng quản lý toàn bộnghiệp vụ trong ngành giáo dục
• Công nghệ: MCV NET
• Hướng đến những loại người dùng sau:
– Học viên.
– Giáo viên.
– Lãnh đạo / Chủ trung tâm.
– Người bán hàng, tư vấn viên.
• Chức năng:
– Quản lý giáo viên: Quản lý danh sách giáo viên, thông tin giáo viên, phân
bổ giáo viên dạy học
– Quản lý khóa học: Tạo, chỉnh sửa khóa học, lựa chọn thời gian học; Quản
lý, điểm danh học viên trong khóa; Quản lý bài tập, tài liệu học tập, bàikiểm tra
– Quản lý học viên: Quản lý danh sách học viên, Quản lý tình hình học
tập, Học viên gửi phản hồi cho giáo viên
– Quản lý sổ sách, giấy tờ.
– Quản lý tài chính, thu chi.
– Quản lý nhân sự, tiền lương, hoa hồng.
– Quản lý giảng dạy trực tuyến (dạy học ngoại ngữ 1-1, dạy theo nhóm,
dạy học các dạng thức khác, bán video khóa học)
Nhận xét
Ưu điểm:
• Giao diện đẹp, thân thiện với người dùng
• Có nhiều gói dịch vụ phù hợp với nhiều mô hình đào tạo
• Hỗ trợ hình thức học trực tuyến: Dạy học một với một, phòng học online,
• Hỗ trợ trên cả nền tảng website, web app cũng như app di động
Khuyết điểm:
• Không cho phép chức năng dùng thử
Trang 343.2.2 Eduspace
Hệ thống Eduspace có tên miền là https://eduspace.vn/, cung cấp các giải pháptổng thể trong việc quản lý và vận hành một trung tâm đào tạo Hình 3.1 mô tả sơviệc vận hành một trung tâm với eduspace sẽ như thế nào
• Hướng đến những loại người dùng sau:
– Quản lý thu chi: thu học phí, xây dựng các chương trình ưu đãi, xây dựng
các khoản thu khác (sách, đồng phục, ), các khoản chi hàng tháng
– Học trực tuyến: khóa học online, bài kiểm tra online (E-learning).
– Báo cáo hàng tháng: báo cáo doanh thu, báo cáo nợ học phí, kết quả kinh
doanh
Hình 3.1: Hình mô tả các chức năng cơ bản của hệ thống
Nhận xét
Ưu điểm:
• Giao diện đẹp, thân thiện với người dùng
• Có nhiều gói dịch vụ phù hợp với các loại trung tâm khác nhau
• Có tài liệu hướng dẫn rõ ràng cho từng chức năng của hệ thống (tài liệu pdf,video hướng dẫn)
• Hỗ trợ tính năng dùng thử
Trang 35– Học viên: Đăng ký – chuyển – hủy khóa học, xem thời khóa biểu; kết quả
học, tiến trình học của bản thân; xem tài liệu của khóa học mình thamgia; tham gia kiểm tra trực tuyến, làm bài tập trực tuyến; Phản hồi, liênlạc (hệ thống chat) với giáo viên, có thể đăng ký học bù
– Phụ huynh học viên: Xem tiến trình, kết quả học của học viên; kết quả
điểm danh của học viên; liên lạc (hệ thống chat) với giáo viên khóa học
– Giáo viên: Xem nhật ký giảng dạy, quản lý điểm danh, tình hình học tập
của các học viên; quản lý bài tập, tài liệu; liên lạc với phụ huynh họcsinh
– Trợ giảng: Xem nhật ký giảng dạy, thông tin chương trình dạy, buổi học,
học viên thuộc khóa học, đăng ký ca làm việc
– Chủ trung tâm: Quản lý doanh thu, chi phí; báo cáo theo quý, năm; quản
lý giáo viên, nhân viên, học viên; quản lý lương thưởng
– Tư vấn viên, nhân viên: Danh sách khóa học, lịch học; tạo, chỉnh sửa
khóa học; tạo lịch học cho khóa học; danh sách học viên nợ học phí; liênlạc (hệ thống chat)
Trang 364.1 Các chức năng của người dùng chưa đăng nhập 20
4.2 Các chức năng chung của người dùng đã đăng nhập 25
4.3 Các chức năng của người dùng là học viên và phụ huynh 31
4.4 Các chức năng của người dùng là giáo viên và trợ giảng 41
4.5 Các chức năng của người dùng là nhân viên 71
4.6 Các chức năng của người dùng là Quản lý (Admin) 102
Trang 374.1 Các chức năng của người dùng chưa đăng nhập
Nhóm các chức năng của người dùng được trình bày ở hình 4.1
Hình 4.1: Usecase nhóm các chức năng của người dùng chưa đăng nhập.
Trang 38Usecase Id: UC_DN
Tên use-case: Đăng nhập
Actor: Người dùng chưa đăng nhập
Mô tả: Người dùng đăng nhập vào hệ thống bằng tài khoản đã có
Kích hoạt: Người dùng nhấn chọn "Đă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 hệ thống
Hậu điều kiện: Người dùng đăng nhập thành công và được điều hướng đến
trang chủ của hệ thống
Luồng thông
thường:
1 Người dùng truy cập vào hệ thống
2 Người dùng nhấn chọn "Đăng nhập" trên thanh điều hướng
3 Hệ thống hiển thị màn hình đăng nhập
4 Người dùng nhập tên người dùng và mật khẩu
5 Người dùng nhấn "Đăng nhập" để đăng nhập
6 Đăng nhập thành công, hệ thống điều hướng đến màn hìnhtrang chủ
Luồng thay thế: Không có
Ngoại lệ: Ngoại lệ bước 6 Hệ thống thông báo lỗi khi người dùng để
trống hoặc nhập sai tên đăng nhập hoặc mật khẩu
Yêu cầu phi
chức năng:
Không có
Bảng 4.1: Usecase đăng nhập.
Trang 39Usecase Id: UC_DK
Tên use-case: Đăng ký
Actor: Người dùng chưa đăng nhập
Mô tả: Người dùng đăng ký tài khoản để sử dụng hệ thống
Kích hoạt: Người dùng nhấn chọn "Đăng ký" trên thanh điều hướng, hoặc
"Đăng ký ngay" trong trang Đăng nhập
Tiền điều kiện: Người dùng chưa đăng nhập vào hệ thống
Hậu điều kiện: Người dùng đăng ký thành công và được điều hướng đến trang
đăng nhập của hệ thống
Luồng thông
thường:
1 Người dùng truy cập vào hệ thống
2 Người dùng nhấn chọn "Đăng ký" trên thanh điều hướng
3 Hệ thống hiển thị màn hình đăng ký
4 Người dùng nhập các thông tin cá nhân và tài khoản
5 Người dùng nhấn "Đăng ký" để đăng ký
6 Đăng ký thành công, hệ thống điều hướng đến màn hìnhđăng nhập
Luồng thay thế: Thay thế bước 2 Người dùng nhấn "Đăng nhập" trên thanh
điều hướng, và "Đăng ký ngay" khi chưa có tài khoản
Ngoại lệ: Ngoại lệ bước 6 Hệ thống thông báo lỗi khi người dùng để
trống các thông tin cá nhân hoặc tên người dùng tài khoản đãtồn tại
Yêu cầu phi
chức năng:
Không có
Bảng 4.2: Usecase đăng ký.
Trang 40Usecase Id: UC_XKH
Tên use-case: Xem danh sách khóa học sắp khai giảng
Actor: Người dùng chưa đăng nhập
Mô tả: Người dùng xem danh sách các khóa học sắp khai giảng
Kích hoạt: Người dùng nhấn chọn "Xem tất cả khóa học" tại trang chủ
của hệ thống
Tiền điều kiện: Người dùng chưa đăng nhập vào hệ thống
Hậu điều kiện: Người dùng xem được tất cả các khóa học sắp khai giảng
Luồng thông
thường:
1 Người dùng truy cập vào hệ thống
2 Người dùng nhấn chọn "Xem tất cả khóa học" tại trang chủcủa hệ thống
3 Hệ thống hiển thị màn hình chứa tất cả khóa học sắp khaigiảng
Luồng thay thế: Không có