Tên đề tài: Xây dựng ứng dụng di động kết nối gia sư và học viên Sinh viên thực hiện: Lê Quốc Tuấn Mã SV: 1911505310158 Lớp: 19T1 Nội dung tóm tăt Trong thời đại nay, nhu cầu tìm kiếm gi
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
ĐỒ ÁN TỐT NGHIỆP
ĐẠI HỌC NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI:
KẾT NỐI GIA SƯ VÀ HỌC VIÊN
Sinh viên thực hiện : Lê Quốc Tuấn
Trang 3TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
ĐỒ ÁN TỐT NGHIỆP
ĐẠI HỌC NGÀNH: CÔNG NGHỆ THÔNG TIN
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI:
KẾT NỐI GIA SƯ VÀ HỌC VIÊN
Giảng viên hướng dẫn duyệt
Trang 5
Nhận xét của người phản biện
Trang 6
Trang 7
Tên đề tài:
Xây dựng ứng dụng di động kết nối gia sư và học viên
Sinh viên thực hiện: Lê Quốc Tuấn
Mã SV: 1911505310158 Lớp: 19T1
Nội dung tóm tăt
Trong thời đại nay, nhu cầu tìm kiếm gia sư nhằm bổ trợ kiếnthức tại nhà dành cho học sinh ngày càng tăng, các trung tâm gia
sư cũng vì thế mà xuất hiện nhiều Tuy nhiên hiện nay vẫn còntồn tại không ít trung tâm giới thiệu gia sư không đáng tin cậy,gia sư ở nhiều nguồn, nhiều trường khác nhau mà phụ huynhkhông hề biết được năng lực cũng như trình độ của gia sư đó nhưthế nào Mặt khác, có rất nhiều sinh viên cũng như giáo viên cótrình độ đang muốn tìm kiếm cho mình những công việc làmthêm, dạy kèm học sinh hoặc mở lớp dạy thêm cho học sinhngoài giờ Ngoài đi đến các trung tâm gia sư, có thể khiến cácgiáo viên dù mất đi một khoản phụ phí mà chưa chắc có thể tìmđược lớp ưng ý, thì họ không có cách nào để liên hệ, thể hiện mộtcách đầy đủ nhất bản thân với những khách hàng cần thuê gia
sư
Giải pháp hiệu quả trong thời đại công nghệ phát triển hiệnnay chính là “Xây dựng ứng dụng di động kết nối gia sư và họcviên” cho phép người dùng có thể tìm kiếm gia sư một cách dễdàng nhất Thông tin gia sư đưa ra một cách cụ thể và công khai.Giúp người sử dụng hệ thống có thể nắm rõ trình độ cũng như cácthông tin cần thiết về gia sư Người dùng là học viên có thể tìmkiếm gia sư bằng các yêu cầu cụ thể Mặt khác người dùng là gia
sư có thể đăng lịch dạy công khai để tìm học viên với các thông
Trang 8của 2 bên Và cuối cùng sau mỗi khóa học, học viên có thể để lạiđánh giá của mình dành cho gia sư, giúp ghi lại một cách chínhxác nhất năng lực cũng như kinh nghiệm của từng gia sư.
Trang 9Ngành: Công nghệ thông tin
1 Tên đề tài đồ án: Xây dựng ứng dụng di động kết nối gia
sư và học viên
2 Các số liệu và dữ liệu ban đầu: Không có
3 Nội dung các phần thuyết minh và tính toán:
Nội dung của thuyết minh gồm:
- Mở đầu: Phần mở đầu của luận văn, giới thiệu đề tài,
tổng quan về đề tài và mục tiêu cần đạt được
- Chương 1: Cơ sở lý thuyết
- Chương 2: Phân tích và thiết kế hệ thống
- Chương 3: Xây dựng chương trình
- Kết luận và hướng phát triển
4 Các sản phẩm dự kiến
- Ứng dụng người dùng và website quản trị hoàn chỉnh
- Báo cáo đồ án tốt nghiệp hoàn chỉnh
5 Họ tên người hướng dẫn: ThS Nguyễn Thị Hà Quyên
6 Ngày giao nhiệm vụ đồ án: 06/02/2023.
7 Ngày hoàn thành đồ án: 07/06/2023.
Đà Nẵng, ngày tháng năm 2023
Trang 10Lời đầu tiên, em xin chân thành cảm ơn Trường Đại Học Sư phạm
Kỹ thuật – Đại học Đà Nẵng đã tạo điều kiện cho em có được môitrường học tập và những sự hỗ trợ tốt nhất để em có thể hoàn thành
đồ án tốt nghiệp này
Em xin cảm ơn quý Thầy cô trong khoa Công Nghệ Số đã giảngdạy và trang bị cho em những kiến thức về công nghệ thông tintrong thời gian học tập tại trường
Em cũng xin gửi lời cảm ơn đặc biệt đến giáo viên hướng dẫn củamình – ThS Nguyễn Thị Hà Quyên - đã tận tình hướng dẫn, cho emnhiều lời khuyên và truyền đạt những kinh nghiệm trong quá trìnhhoàn thành đồ án
Dù đã cố gắng hết sức hoàn thành với toàn bộ kiến thức và sựhiểu biết nhưng do thời gian thực hiện còn hạn chế, kết quả sẽ khôngtránh khỏi những thiếu sót không mong muốn Em rất mong nhậnđược sự thông cảm và góp ý của quý Thầy cô
Em xin chân thành cảm ơn!
i
Trang 11Em xin cam đoan:
● Những nội dung trong luận văn này do em thực hiện dưới sựhướng dẫn của cô Nguyễn Thị Hà Quyên
● Mọi sự tham khảo trong luận văn đều được trích dẫn rõ ràngtác giả, tên công trình, thời gian địa điểm công bố
● Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo haygian trá, em xin chịu hoàn toàn trách nhiệm
Sinh viên thực hiện
Lê Quốc Tuấn
Trang 12LỜI NÓI ĐẦU i
CAM ĐOAN ii
MỤC LỤC iii
DANH MỤC BẢNG BIỂU vi
DANH MỤC HÌNH VẼ viii
DANH MỤC CHỮ VIẾT TẮT TIẾNG ANH xi
MỞ ĐẦU 1
1 Mục tiêu đề tài 1
2 Đối tượng nghiên cứu và phạm vi nghiên cứu 1
3 Phương pháp nghiên cứu 2
4 Cấu trúc đồ án 2
5 Giải pháp công nghệ 2
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 4
1.1 Hệ quản trị cơ sở dữ liệu PosgreSQL 4
1.1.1 PostgreSQL là gì? 4
1.1.2 Vai trò chính của PosgreSQL 4
1.1.3 Một vài tính năng cơ bản của PostgreSQL 4
1.2 Tổng quan về Express.js 5
1.2.1 Định nghĩa Express.js 5
1.2.2 Tại sao nên sử dụng ExpressJS trong lập trình backend? 5
1.2.3 Phân biệt Node.js và Express.js 6
1.3 Mô hình MVVM trong việc phát triển ứng dụng Android 7
1.3.1 Mô hình MVVM là gì? 7
iii
Trang 131.3.3 Cấu trúc thư mục trong MVVM 8
1.3.4 Ưu nhược điểm của MVVM: Model – View – ViewModel.9 CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 11
2.1 Khảo sát yêu cầu 11
2.1.1 Người dùng hệ thống 11
2.1.2 Hoạt động nghiệp vụ 11
2.1.3 Sơ đồ hoạt động nghiệp vụ 12
2.1.4 Liệt kê người dùng và yêu cầu 13
2.2 Phân tích thiết kế hệ thống 14
2.2.1 Liệt kê Actor và Usecase 14
2.2.2 Sơ đồ usecase 15
2.2.3 Kịch bản 16
2.2.4 Sơ đồ hoạt động 25
2.2.5 Sơ đồ Robustness 30
2.2.6 Phác thảo giao diện 32
2.2.7 Thiết kế các bảng dữ liệu 32
2.2.8 Thiết kế ERD 36
2.2.9 Sơ đồ lớp 37
2.2.10 Sơ đồ tuần tự 37
CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH 40
3.1 Giao diện chương trình 40
3.1.1 Giao diện người dùng 40
3.1.2 Giao diện gia sư 44
3.1.3 Giao diện học viên 48
Trang 14KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 59 TÀI LIỆU THAM KHẢO 60
v
Trang 15Bảng 1.1.Phân biệt Express.js và Node.js 6
Bảng 2.1.Kịch bản cho usecase “Đăng ký tài khoản” 17
Bảng 2.2 Kịch bản cho usecase “Đăng nhập” 16
Bảng 2.3 Kịch bản cho usecase “Đăng ký buổi dạy” 16
Bảng 2.4.Kịch bản cho usecase “Duyệt học viên đăng ký buổi dạy” 17 Bảng 2.5.Kịch bản cho usecase “Xóa buổi dạy” 18
Bảng 2.6 Kịch bản cho usecase “Xem hồ sơ cá nhân” 19
Bảng 2.7 Kịch bản cho usecase “Xem thông tin cá nhân” 20
Bảng 2.8 Kịch bản cho usecase “Quản lý lịch học” 20
Bảng 2.9 Kịch bản cho usecase “Tìm kiếm theo tên gia sư” 21
Bảng 2.10 Kịch bản cho usecase “Xem hồ sơ gia sư” 22
Bảng 2.11 Kịch bản cho usecase “Xét duyệt đăng ký học viên” 23
Bảng 2.12 Kịch bản cho usecase “Xét duyệt đăng ký gia sư” 23
Bảng 2.13 Thông tin bảng “District” 31
Bảng 2.14 Thông tin bảng “Ward” 31
Bảng 2.15 Thông tin bảng “Role” 31
Bảng 2.16 Thông tin bảng “Account” 31
Bảng 2.17 Thông tin bảng “Admin” 32
Bảng 2.18 Thông tin bảng “Teacher” 32
Bảng 2.19 Thông tin bảng “Student” 32
Bảng 2.20 Thông tin bảng “Class” 33
Bảng 2.21 Thông tin bảng “Subject” 33
Bảng 2.22 Thông tin bảng “SubjectOfTeacher” 33
Trang 16Bảng 2.25 Thông tin bảng “Rating” 35
vii
Trang 17Hình 1.1: Mô hình MVVM 7
Hình 1.2: Cấu trúc thư mục trong MVVM 8
Hình 2.1: Sơ đồ hoạt động nghiệp vụ 11
Hình 2.2: Sơ đồ Usecase 14
Hình 2.3: Sơ đồ hoạt động usecase “Quản lý lịch học” 24
Hình 2.4: Sơ đồ hoạt động usecase “Quản lý lịch dạy” 25
Hình 2.5: Sơ đồ hoạt động usecase “Tìm kiếm gia sư theo tên” 26
Hình 2.6: Sơ đồ hoạt động usecase “Xem hồ sơ gia sư” 27
Hình 2.7: Sơ đồ hoạt động usecase “Đăng ký tài khoản” 28
Hình 2.8: Robustness diagram cho usecase “Đăng ký tài khoản” .29 Hình 2.9: Robustness diagram cho usecase “Quản lý lịch dạy” 29
Hình 2.10: Robustness diagram cho usecase “Quản lý lịch học” 30
Hình 2.11: Robustness diagram cho usecase “Xem hồ sơ gia sư” .30 Hình 2.12: Giao diện phác thảo chức năng đăng nhập 31
Hình 2.13: Giao diện phác thảo chức năng “Đăng ký” 31
Hình 2.14: Giao diện phác thảo chức năng “Xem lịch dạy” 32
Hình 2.15: Giao diện phác thảo chức năng “Đăng ký buổi dạy” 32
Hình 2.16: Giao diện phác thảo chức năng “Xem lịch học” 33
Hình 2.17: Giao diện phác thảo chức năng “Đăng ký học” 33
Hình 2.18: Giao diện phác thảo chức năng “Đánh giá gia sư” 34
Hình 2.19: Phác thảo giao diện chức năng “Tìm kiếm gia sư” 34
Hình 2.20: Sơ đồ ERD 35
Hình 2.21: Sơ đồ lớp 35
Hình 2.22: Sequence diagram cho usecase “Đăng ký tài khoản” 36
Trang 18Hình 2.24: Sequence diagram cho usecase “Duyệt học viên đăng
ký buổi dạy” 37
Hình 2.25: Sequence diagram cho usecase “Quản lý lịch học” 37
Hình 2.26: Sequence diagram cho usecase “Xem hồ sơ gia sư” 38
Hình 3.1: Giao diện đăng ký tài khoản 39
Hình 3.2: Giao diện cập nhật thông tin tài khoản gia sư 40
Hình 3.3: Giao diện cập nhật thông tin tài khoản học viên 41
Hình 3.4: Giao diện đăng nhập 42
Hình 3.5: Giao diện trang chủ tài khoản gia sư 43
Hình 3.6: Giao diện chức năng quản lý lịch dạy 44
Hình 3.7: Giao diện chức năng đăng ký giờ dạy 45
Hình 3.8: Giao diện chức năng duyệt học viên đăng ký buổi học 45
Hình 3.9: Giao diện chức năng xem hồ sơ cá nhân 46
Hình 3.10: Giao diện trang chủ tài khoản học viên 47
Hình 3.11: Giao diện chức năng quản lý lịch học 48
Hình 3.12: Giao diện chức năng đánh giá gia sư 49
Hình 3.13: Giao diện chức năng tìm kiếm gia sư 50
Hình 3.14: Giao diện chức năng xem hồ sơ gia sư 51
Hình 3.15: Giao diện xem các đánh giá của học viên dành cho gia sư 52
Hình 3.16: Giao diện đăng ký buổi học của gia sư 52
Hình 3.17: Giao diện xem hồ sơ học viên 53
Hình 3.18: Giao diện đăng nhập trang quản trị 54
Hình 3.19: Giao diện danh sách gia sư đã duyệt 54
ix
Trang 19của gia sư 55
Hình 3.21: Giao diện danh sách gia sư chưa duyệt 55
Hình 3.22: Giao diện danh sách gia sư chưa cập nhật thông tin 56
Hình 3.23: Giao diện danh sách học viên đã được duyệt 56
Hình 3.24: Giao diện danh sách học viên đang chờ duyệt 57 Hình 3.25: Giao diện danh sách học viên chưa cập nhật thông tin.57
Trang 20Một chuỗi mã hóa mà gốcgác ban đầu của nó là 1chuỗi JSON
-Controller
Mô hình phát triển phầnmềm
5 XAML Extensible Application
Markup Language
Ngôn ngữ đánh dấu ứngdụng mở rộng
Kit
Bộ công cụ phát triển phầnmềm
Trang 21MỞ ĐẦU
1 Mục tiêu đề tài
Trong thời đại nay, nhu cầu tìm kiếm gia sư cũng như các lớp họcthêm là rất lớn, phổ biến ở mọi loại đối tượng Tuy nhiên việc quản lýchất lượng gia sư và học viên cũng như quản lý chất lượng dạy vàhọc hiện nay ở các trung tâm gia sư còn nhiều hạn chế, tồn tại nhiềubất cập, dẫn đến tình trạng lộn xộn trong việc cung cấp gia sư đảmbảo cho học viên Để giải quyết những vấn đề trên, mục đích chínhcủa đề tài là xây dựng một ứng dụng giúp kết nối người có nhu cầumuốn làm gia sư và người muốn tìm gia sư trên nền tảng trực tuyến.Trong đó, cần đạt được những mục tiêu cụ thể sau:
Cho phép người dùng hệ thống đăng ký tài khoản thànhviên
Người dùng thành viên là học viên có thể tìm kiếm gia sưqua các tiêu chí: môn học, lớp, quận/huyện sinh sống củagiảng viên
Người dùng thành viên là gia sư có thể tạo các buổi dạydựa theo các khoảng thời gian trong ngày, khoảng thờigian của các buổi dạy không được trùng nhau
Cho phép người dùng thành viên là học viên có thể đăng kýcác buổi dạy của gia sư
Cho phép quản lý lịch dạy và học của gia sư và học viên
Quản lý trình độ, chất lượng cũng như các thông tin cầnthiết khác về gia sư và học viên
Tạo ra môi trường liên lạc, trao đổi giữa gia sư và học viên
Cho phép học viên để lại đánh giá về gia sư sau khi họcxong khóa học
2 Đối tượng nghiên cứu và phạm vi nghiên cứu
Trang 22 Người dạy: là những đối tượng có nhu cầu chia sẻ kiến thứcchuyên môn, có nhu cầu tìm lớp dạy, tìm người học trênnền tảng.
Người học: là những đối tượng có nhu cầu tìm người dạytrên nền tảng
Phụ huynh: là các bậc cha mẹ có liên quan, kết nối thôngtin với người học
Trung tâm gia sư hiện tại : www.trungtamdaykem.com,
b Phạm vi nghiên cứu
Đề tài chỉ nghiên cứu áp dụng trên địa bàn thành phố ĐàNẵng
3 Phương pháp nghiên cứu
Khảo sát nhu cầu thực tế của những người có nhu cầu tìmgia sư cho học sinh cấp một, cấp hai, cấp ba, những sinhviên hoặc giáo viên có nhu cầu làm thêm ngoài giờ vớicông việc gia sư dạy kèm
Tham khảo, trải nghiệm các website tìm gia sư trực tuyến
4 Cấu trúc đồ án
Ngoài phần các kí hiệu và chữ viết tắt, danh mục các bảng, danhmục các hình vẽ, danh mục tài liệu tham khảo, nội dung đồ án gồm:
Mở đầu
Chương 1 Cơ sở lý thuyết
Chương này trình bày các thông tin, khái niệm của các kiến thứcchuyên môn, giải thích các thuật ngữ, chú thích xuất hiện trongxuyên suốt đồ án
Chương 2 Phân tích thiết kế hệ thống
Chương này trình bày tổng quan và mục đích chính của đề tài.Ngoài ra còn phân tích về quy trình tìm lớp dạy và tìm kiếm gia sư,
Trang 23đưa ra các giải pháp công nghệ sử dụng, cơ sở dữ liệu và ngôn ngữlập trình.
Chương 3 Xây dựng chương trình
Chương này phân tích các chức năng của hệ thống, đưa ra một
số giao diện chính của ứng dụng Cuối cùng là đưa ra yêu cầu phầncứng và phần mềm của hệ thống, dữ liệu thử nghiệm và đưa ra bộtiêu chí đánh giá
Kết luận và hướng phát triển
5 Giải pháp công nghệ
Công cụ thiết kế giao diện: Figma.com
Programing tools: Android studio, Visual studio code,Dbeaver, Postman
Công nghệ ứng dụng di động: Kotlin Android native,Dagger-Hilt, Retrofit, Room, Kotlin Coroutine, mô hìnhMVVM
Công nghệ backend: NodeJs, ExpressJs, JWT
Hệ quản trị cơ sở dữ liệu: PostgreSQL
Trang 24CHƯƠNG 1
CƠ SỞ LÝ THUYẾT
1.1 Hệ quản trị cơ sở dữ liệu PosgreSQL
1.1.1 PostgreSQL là gì?
PostgreSQL được biết đến là một hệ cơ sở quản trị dữ liệu mở Hệ
cơ sở dữ liệu này giữ vai trò tiền phong mở đường cho khái niệm hệquản trị dữ liệu thương mại ra đời sau này
Thời kỳ đầu, PostgreSQL hoạt động của giống như nền tảng điềuhành Unix Về sau, PostgreSQL dần thay đổi để trở nên linh hoạt và
có thể khởi chạy trên một số nền tảng như Windows, Solaris, Mac OS.Đồng thời, tích hợp thêm nhiều tính năng vượt trội khác
Về mặt kỹ thuật, PostgreSQL chính là một mã nguồn mở hoàntoàn miễn phí, xây dựng theo quy chuẩn SQL99 Nhờ đó, tất cả ngườidùng đều có quyền sử dụng, tham gia chỉnh sửa
Khác với phần lớn cơ sở dữ liệu khác, PostgreSQL hoạt động rất
ổn định không yêu cầu bảo trì cầu kỳ Nó dễ dàng để triển khai trênnhiều ứng dụng khác nhau với phí đầu tư hợp lý
1.1.2 Vai trò chính của PosgreSQL
PostgreSQL hoạt động như một hệ quản trị dữ liệu mang tính mở,phù hợp để mọi doanh nghiệp khai thác Đây là một hệ quản trịtương thích với hầu hết các nền tảng, ứng dụng đa ngôn ngữ, phầnmềm phổ biến
Ngày nay, PostgreSQL là một phần quan trọng của ngành dữ liệuGIS cho tổ chức chính phủ, ngành ngân hàng, thương mại, công nghệweb, PostgreSQL hoàn toàn không bị quản lý bởi bất kỳ tổ chứcnào Tuy vậy, việc không bị quản lý bởi bất kỳ tổ chức nào đôi khi lại
là yếu điểm của PostgreSQL
Trang 251.1.3 Một vài tính năng cơ bản của PostgreSQL
1.1.3.1 Cung cấp nhiều kiểu dữ liệu
PostgreSQL cung cấp đa dạng kiểu dữ liệu như nguyên hàm, cấutrúc, hình học,
1.1.3.2 Bảo đảm toàn vẹn dữ liệu
Dữ liệu trong PostgreSQL luôn được đảm bảo tính toàn vẹn
1.1.3.3 Tính năng thiết lập linh hoạt
PostgreSQL cho phép người dùng thiết lập danh mục từ cơ bảnđến nâng cao, tối ưu ưu hóa tốc độ truy cập, hỗ trợ thống kê trênnhiều cột, Cùng với đó là vô số thiết lập khác
1.1.3.6 Chức năng tìm kiếm văn bản
PostgreSQL cung cấp tính năng tìm kiếm văn bản đầy đủ, hệthống hóa ký tự theo cách khoa học
1.2 Tổng quan về Express.js
1.2.1 Định nghĩa Express.js
Expressjs hay còn được viết là Express js, Express.js Đây là mộtframework mã nguồn mở miễn phí cho Node.js Express.js được sửdụng trong thiết kế và xây dựng các ứng dụng web một cách đơngiản và nhanh chóng
Trang 261.2.2 Tại sao nên sử dụng ExpressJS trong lập trình backend?
1.2.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ệnnay, 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ệclập trình bằng Express.js là vô cùng đơn giản Ngay cả những ngườimới bắt đầu tham gia vào lĩnh vực phát triển phần mềm cũng có thể
sử dụng Expressjs
1.2.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 ứngdụng một cách hiệu quả trong thời gian ngắn Nhưng để thực hiệntố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âydựng với sự trợ giúp của các tính năng khác nhau của nó Express.jscòn cung cấp một phần mềm trung gian đảm nhận nhiệm vụ đưa racác quyết định để phản hồi chính xác những yêu cầu của kháchhàng
1.2.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ụngcông cụ, ứng dụng nào chính là chi phí Với một ứng dụng với nhiềutính năng tuyệt vời như vậy mà lại không tốn một chút kinh phí nàothì không có lý do gì để không sử dụng nó
1.2.3 Phân biệt Node.js và Express.js
Bảng 1.2.3.1.1.1.1 Phân biệt Express.js và Node.js
Trang 27Được viết bằng một ngôn
ngữ lập trình duy nhất là
Javascript.,
Được viết bằng nhiềungôn ngữ lập trình khácnhau như C/C++,
Là một framework Không phải là framework
Để sử dụng Expressjs các
lập trình viên cần cài đặt
Express.js cùng Node.js
Các lập trình viên chỉ cầncài đặt Node.js trên thiết
bị của mình để có thể sửdụng
1.3 Mô hình MVVM trong việc phát triển ứng dụng Android
1.3.1 Mô hình MVVM là gì?
MVVM không phải là framework hay thư viện, api… nó chỉ đơnthuần là hướng dẫn bạn định nghĩa cấu trúc ứng dụng của bạn.MVVM được phát triển dựa trên kiến trúc MVP
Mô hình mvvm cho phép tách biệt dữ liệu (Model), mã thực thi(logic hay ViewModel) và giao diện người dùng (View)
Trong các mô hình truyền thống, chúng ta thường xử lý sự kiệnClick và viết mã thực thi trực tiếp ở trên một Button nhưng với môhình MVVM không cho phép làm điều này
Trong mô hình MVVM, các điều khiển(control) như Button,ListView, SearchBar, v.v không thể kết buộc trực tiếp đến dữ liệu màphải thông qua thuộc tính Command – là một thuộc tính kiểuICommand
Trang 281.3.2.2 Model
Cũng tương tự như trong mô hình MVC Model là các đối tượnggiúp truy xuất và thao tác trên dữ liệu thực sự
1.3.2.3 ViewModel
Lớp trung gian giữa View và Model ViewModel có thể được xem
là thành phần thay thế cho Controller trong mô hình MVC Nó chứacác mã lệnh cần thiết để thực hiện data binding, command
1.3.3 Cấu trúc thư mục trong MVVM
Thông thường khi sử dụng với MVVM chúng ta nên tạo 3 thư mụcchính chứa các file code liên quan
Trang 29Hình 1.3.3.1.1.1: Cấu trúc thư mục trong MVVM
1.3.3.2 Views
Trong thư mục Views chứ các file giao diện Và mỗi file giao diệnđều có class code-behind đi kèm Đặc biệt file code-behind ta sẽkhông sử dụng đến, mọi điều cần làm sẽ chuyển xuống classViewModel Tất nhiên là bạn có thể code trong file code-behind củaXAML nhưng điều đó sẽ phá vỡ quy ước MVVM Bạn có thể khai báothuộc tính datacontext hoặc vài thiết lập khác nhưng nên hạn chế tốithiểu code ở đây Views được sử dụng để kết hợp với các mô hìnhMVVM… Nó dùng để cung cấp một sự chia tách gọn gàng của kháiniệm giữa UI và presentation logic và data
1.3.3.3 Models
Trong thư mục Models trong đó tạo các class chứa data và bất kỳliên kết validation, logic nghiệp vụ để chắc chắc tính toàn vẹn củadata, bạn có thể tách ra thư mục Repositories khác Chúng đượcdùng như một phần của mô hình MVVM
1.3.3.4 ViewModels
Tương tự ta cũng tạo một thư mục ViewModels Thông thườngmột file giao diện thì ta tạo một class ViewModels tương ứng (có đôi
Trang 30lúc ta tạo nhiều class phụ giúp tinh giản file code và gọi chúng trongclass ViewModels chính).
ViewModels sẽ sử dụng các model nếu cần định nghĩa dữ liệu Sựliên kết giữa View-ViewModel giúp chúng gửi và nhận dữ liệu, để hiểu
rõ ta cần tìm hiểu các khái niệm về Binding, DataContext, BehaviorsSDK Nhờ đó ta tách code-behind của View và đưa xuống ViewModel
Ngoài ra một lớp ViewModels chứa presentation logic và statecủa ứng dụng ViewModels cần chứa các chức năng của ứng dụng.ViewModels định nghĩa properties, commands, và events, để chuyểnđổi controls trong view cần data-bind
1.3.4 Ưu nhược điểm của MVVM: Model – View – ViewModel
1.3.4.1 Ưu điểm
● Thực hiện Unit testing bây giờ sẽ rất dễ dàng, vì bạn thực
sự không phụ thuộc vào view
● MVVM sẽ tạo sự tương tác hiệu quả giữa designer vàdeveloper
● Tăng khả năng sử dụng lại các thành phần hay việc thayđổi giao diện chương trình mà không cần phải viết lại codequá nhiều
● Phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp, bảo trì…
1.3.4.2 Nhược điểm
● Khả năng duy trì khi view có thể gán cả biến và biểu thức,các logic không liên quan sẽ tăng dần theo thời gian, ảnhhưởng đến việc thêm code vào XML
● Đối với dự án nhỏ việc áp dụng mô hình MVVM gây cồngkềnh, tốn thời gian trong quá trình phát triển
● Đối với dự án lớn hơn, nó gây khó khăn và mất thời gian đểthiết kế các ViewModel
Trang 31● Việc liên kết dữ liệu cho tất cả các thành phần gây khókhăn trong việc debug khi cơ sở dữ liệu phức tạp.
Trang 32● Đăng ký thành viên hệ thống: Đăng ký làm gia sư hoặc đăng ký làm học
viên, sau khi đăng ký người dùng tiến hành cập nhật thông tin cá nhân
● Quản lý lịch dạy: Xem lịch dạy, đăng ký buổi dạy, xét duyệt học viên
đăng ký học, kết thúc khóa học và chờ nhận xét của học viên, xóa buổi dạy
● Quản lý lịch học: Xem lịch học, đăng ký buổi dạy sau khi xem lịch dạy
của gia sư, hủy buổi dạy nếu như gia sư chưa duyệt đăng ký, đánh giá gia
sư sau khi gia sư kết thúc khóa học
● Tìm kiếm gia sư: Học viên tìm kiếm gia sư theo nhu cầu, chọn xem hồ sơ
và lịch dạy của gia sư muốn đăng ký học
● Xét duyệt thành viên: Duyệt thông tin đăng ký tài khoản gia sư, duyệt
thông tin đăng ký tài khoản học viênSơ đồ hoạt động nghiệp vụ
Trang 332.1.3 Sơ đồ hoạt động nghiệp vụ
Hình 2.1.3.1.1.1: Sơ đồ hoạt động nghiệp vụ
Trang 342.1.4 Liệt kê người dùng và yêu cầu
2.1.4.1 Người dùng chung
Cho phép đăng ký tài khoản người dùng (tài khoản gia sư hoặctài khoản học viên)
2.1.4.2 Gia sư
Đăng nhập tài khoản với quyền Gia sư
2.1.4.2.1 Cho phép đăng ký các buổi dạy hiển thị công khai trong lịch dạy
cá nhân để học viên đăng ký học, buổi dạy gồm các thông tin: thời gian bắt đầu, thời lượng buổi học, số lượng học sinh, …
2.1.4.2.2 Cho phép chấp nhận hoặc từ chối đăng ký buổi dạy của học viên
sau khi xem thông tin học viên
2.1.4.2.3 Trước khi buổi dạy có học viên đăng ký, gia sư có thể xóa buổi dạy
đã đăng ký
2.1.4.2.4 Sau khi buổi dạy có học viên đăng ký đã được chấp nhận, gia sư có
thể xem địa chỉ, số điện thoại của học viên Khi chương trình học đã xong, gia sư có thể kết thúc buổi dạy
2.1.4.2.5 Cho phép gia sư xem thông tin cá nhân đã đăng ký của mình cũng
như tất cả các đánh giá của học viên
2.1.4.3 Học viên
Đăng nhập tài khoản với quyền Học viên
2.1.4.3.1 Cho phép học viên đăng ký buổi dạy của gia sư Trong thời gian
chờ gia sư phản hồi, học viên có thể hủy đăng ký
2.1.4.3.2 Cho phép xem lịch học trong tuần của mình
2.1.4.3.3 Học viên có thể xem địa chỉ, số điện thoại của giảng viên sau khi
được gia sư chấp nhận đăng ký Khi chương trình học đã xong, học viên có thể đánh giá gia sư
2.1.4.3.4 Cho phép học viên cập nhật thông tin hồ sơ của mình (trường, lớp,
học lực, …)
2.1.4.3.5 Cho phép xem các thông báo về các hoạt động trong hệ thống
Trang 362.1.4.4 Admin
Đăng nhập tài khoản với quyền Admin
2.1.4.4.1 Cho phép xem danh sách, thông tin chi tiết của tất cả các tài
khoản học viên và gia sư
2.1.4.4.2 Cho phép xét duyệt hay không duyệt đối với tài khoản học viên và
gia sư mới đăng ký
2.2.1.2.1 Đăng nhập tài khoản
2.2.1.2.2 Đăng ký buổi dạy
2.2.1.2.3 Duyệt học viên đăng ký buổi dạy
2.2.1.2.4 Quản lý lịch dạy
2.2.1.2.5 Xem hồ sơ cá nhân
2.2.1.3 Học viên
2.2.1.3.1 Đăng nhập tài khoản
2.2.1.3.2 Xem hồ sơ gia sư
2.2.1.3.3 Đăng ký học
2.2.1.3.4 Quản lý lịch học
2.2.1.3.5 Xem thông tin cá nhân
2.2.1.3.6 Tìm kiếm gia sư theo tên
2.2.1.3.7 Đánh giá gia sư
2.2.1.4 Admin
2.2.1.4.1 Xét duyệt đăng ký tài khoản học viên
Trang 372.2.1.4.2 Xét duyệt đăng ký tài khoản gia sư
Trang 382.2.2 Sơ đồ usecase
Trang 40Hình 2.2.2.1.1.1: Sơ đồ Usecase
2.2.3 Kịch bản
2.2.3.1 Usecase “Đăng ký tài khoản”
Bảng 2.2.3.1.1.1.1 Kịch bản cho usecase “Đăng ký tài khoản”
Usecase
Name Đăng ký tài khoản
Description Actor đăng ký tài khoản để trở thành thành viên
Thông tin gia sư (nếu đăng ký tài khoản gia sư):
họ tên, số điện thoại, địa chỉ, trình độ, kinh nghiệm,
Thông tin học viên (nếu đăng ký tài khoản học viên):
họ tên, số điện thoại, địa chỉ, trường, lớp, học lực, …
Output Tài khoản học viên mới hoặc tài khoản gia sư mới
được cập nhật trên hệ thống
Basic Flow 1 Actor khởi chạy ứng dụng – Bắt đầu usecase
2 Actor nhấn “Đăng ký”
3 Ứng dụng hiển thị form đăng ký tài khoản
4 Actor nhập số điện thoại, mật khẩu
5 Actor chọn tài khoản gia sư
6 Actor nhấn “Tiếp tục”
7 Ứng dụng hiển thị form cập nhật thông tingia sư
8 Actor nhập thông tin cá nhân
9 Actor đăng ký các môn dạy