ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN
BÁO CÁO ĐỒ ÁN 1
SE121.M21.PMCL
ĐỀ TÀI: TÌM HIỂU FLUTTER VÀ XÂY DỰNG ỨNG
DỤNG CHIA SẺ KHÁM PHÁ DU LỊCH
Giảng viên hướng dẫn:
Th.S Lê Thanh Trọng
Sinh viên thực hiện
19521505 – Nguyễn Thành Hiếu
19521686 – Trần Quốc Khánh
Tp. Hồ Chí Minh, 6/2022
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN
BÁO CÁO ĐỒ ÁN 1
SE121.M21.PMCL
ĐỀ TÀI: TÌM HIỂU FLUTTER VÀ XÂY DỰNG ỨNG
DỤNG CHIA SẺ KHÁM PHÁ DU LỊCH
Giảng viên hướng dẫn:
Th.S Lê Thanh Trọng
Sinh viên thực hiện
19521505 – Nguyễn Thành Hiếu
19521686 – Trần Quốc Khánh
Tp. Hồ Chí Minh, 6/2022
2
LỜI CẢM ƠN
Lời đầu tiên, cho nhóm chúng em gửi lời cảm ơn trực tiếp đến các quý thầy cô của
Trường Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh nói
chung và q thầy cô của Khoa Công nghệ Phần mềm đã giảng dạy và giúp đỡ chúng em
có những kiến thức quý báu, để xây dựng nền tảng thực hiện đồ án lần này.
Điều thứ hai, chúng em muốn gửi lời cảm ơn trực tiếp đến thầy Lê Thanh Trọng, là
giáo viên hướng dẫn trực tiếp đến nhóm. Những lời tư vấn, góp ý và hướng dẫn tận tính
của thầy là những điều quý báu giúp nhóm chúng em thực hiện và hồn thành được đồ án
báo cáo của mình.
Trong q trình thực hiện đồ án, nhóm chúng em đã áp dụng những kiến thức nền
tảng đã học và tích lũy được đồng thời kết hợp với những kiến thức mới trong quá trình
làm đồ án. Do kiến thức và kinh nghiệm khi thực hiện của nhóm cịn nhiều hạn chế, khó
khăn ở từng giai đoạn thực hiện, từ đó có thể dẫn đến các sai sót. Vì vậy, chúng em mong
nhận được những lời góp ý, ý kiến quý báu từ q thầy cơ để nhóm chúng em ngày càng
hồn thiện hơn không chỉ là về đồ án hiện tại, mà cịn những đồ án mơn học sắp tới. Đây
cũng chính là hành trang để chúng em định hướng, phát triển và hồn thiện bản than trong
tương lai.
Một lần nữa nhóm chúng em xin chân thành cảm ơn ạ.
3
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
………………., ngày ……, tháng……, năm……..
Người nhận xét
(Kí và ghi rõ họ tên)
4
MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU CHUNG ........................................................................................................ 8
1.1
Giới thiệu đề tài ........................................................................................................................... 8
1.2
Mô tả đề tài .................................................................................................................................. 8
1.3
Mục tiêu của đề tài ...................................................................................................................... 8
1.4
Phương pháp nghiên cứu ............................................................................................................ 9
CHƯƠNG 2: CƠNG NGHỆ TRONG ỨNG DỤNG .............................................................................. 10
2.1
TÌM HIỂU FLUTTER .............................................................................................................. 10
2.1.1
Khái niệm Flutter .............................................................................................................. 10
2.1.2
Khái niệm Dart .................................................................................................................. 10
2.1.3
Tại sao chọn Flutter .......................................................................................................... 11
2.2
TÌM HIỂU FIREBASE ............................................................................................................. 12
2.2.1
Khái niệm Firebase ........................................................................................................... 12
2.2.2
Ưu nhược điểm của Firebase............................................................................................ 12
CHƯƠNG 3: PHÂN TÍCH - THIẾT KẾ CƠ SỞ DỮ LIỆU ................................................................. 13
3.1
SƠ ĐỒ LỚP ............................................................................................................................... 13
3.2
DANH SÁCH CÁC LỚP .......................................................................................................... 13
3.3
MÔ TẢ CHI TIẾT CÁC LỚP ................................................................................................. 14
3.3.1
VatractionUser Class ........................................................................................................ 14
3.3.2
RoleType Enum ................................................................................................................. 14
3.3.3
FavoriteDestinationPost Class.......................................................................................... 14
3.3.4
DestinationPost Class ........................................................................................................ 15
3.3.5
Province Class.................................................................................................................... 15
3.3.6
District Class ...................................................................................................................... 15
3.3.7
Wards Class ....................................................................................................................... 16
3.3.8
PostType Enum ................................................................................................................. 16
3.3.9
PostStatus Enum ............................................................................................................... 16
CHƯƠNG 4: MƠ HÌNH USE-CASE ...................................................................................................... 17
4.1
SƠ ĐỒ USE-CASE .................................................................................................................... 17
4.2
DANH SÁCH CÁC ĐỐI TƯỢNG ........................................................................................... 17
4.3
DANH SÁCH CÁC USE-CASE............................................................................................... 17
4.4
ĐẶC TẢ CÁC USE-CASE ....................................................................................................... 19
4.4.1
Đặc tả Use-case “Đăng nhập”........................................................................................... 19
4.4.2
Đặc tả Use-case “Đăng xuất”............................................................................................ 19
5
4.4.3
Đặc tả Use-case “Đăng bài – địa điểm” ........................................................................... 19
4.4.4
Đặc tả Use-case “Tìm kiếm” ............................................................................................. 20
4.4.5
Đặc tả Use-case “Xem thơng tin bài đăng (địa điểm)” ................................................... 20
4.4.6
Đặc tả Use-case “Đánh giá” .............................................................................................. 21
4.4.7
Đặc tả Use-case “Yêu thích” ............................................................................................. 21
4.4.8
Đặc tả Use-case “Bỏ u thích” ........................................................................................ 22
4.4.9
Đặc tả Use-case “Xem thơng tin cá nhân” ...................................................................... 22
4.4.10
Đặc tả Use-case “Cập nhật thông tin” ............................................................................. 22
4.4.11
Đặc tả Use-case “Thay đổi ảnh đại diện” ........................................................................ 23
4.4.12
Đặc tả Use-case “Thay đổi mật khẩu” ............................................................................. 23
4.4.13
Đặc tả Use-case “Đăng ký” ............................................................................................... 24
4.4.14
Đặc tả Use-case “Quên mật khẩu”................................................................................... 24
4.4.15
Đặc tả Use-case “Kiểm duyệt bài đăng” .......................................................................... 24
4.4.16
Đặc tả Use-case “Chấp nhận bài đăng”........................................................................... 25
4.4.17
Đặc tả Use-case “Từ chối bài đăng” ................................................................................ 25
CHƯƠNG 6: THIẾT KẾ KIẾN TRÚC HỆ THỐNG ............................................................................ 27
CHƯƠNG 7: THIẾT KẾ GIAO DIỆN ................................................................................................... 28
7.1
DANH SÁCH MÀN HÌNH ....................................................................................................... 28
7.2
CHI TIẾT MÀN HÌNH............................................................................................................. 29
7.2.1
Màn hình Welcome và Splash .......................................................................................... 29
7.2.2
Màn hình Đăng nhập ........................................................................................................ 30
7.2.3
Màn hình Đăng ký ............................................................................................................. 31
7.2.4
Màn hình Quên mật khẩu ................................................................................................ 33
7.2.5
Màn hình chính – Home Screen ....................................................................................... 34
7.2.6
Màn hình chi tiết địa điểm ................................................................................................ 35
7.2.7
Màn hình phân loại các địa điểm ..................................................................................... 36
7.2.8
Màn hình tìm kiếm địa điểm ............................................................................................ 36
7.2.9
Màn hình tạo địa điểm mới .............................................................................................. 37
7.2.10
Màn hình danh sách u thích ......................................................................................... 39
7.2.11
Màn hình cài đặt tài khoản............................................................................................... 40
7.2.12
Màn hình thơng tin cá nhân ............................................................................................. 41
7.2.13
Màn hình thay đổi ảnh đại diện ....................................................................................... 43
7.2.14
Màn hình thay đổi mật khẩu ............................................................................................ 44
7.2.15
Màn hình kiểm duyệt địa điểm ........................................................................................ 45
6
7.2.16
Màn hình kiểm duyệt địa điểm chi tiết ............................................................................ 46
7.2.17
Màn hình khám phá - Discovery ...................................................................................... 47
CHƯƠNG 8: MƠI TRƯỜNG TRIỂN KHAI VÀ PHÁT TRIỂN ........................................................ 49
8.1
MÔI TRƯỜNG PHÁT TRIỂN ................................................................................................ 49
8.2
MÔI TRƯỜNG TRIỂN KHAI ................................................................................................ 49
CHƯƠNG 9: TỔNG KẾT ........................................................................................................................ 49
9.1
KẾT QUẢ ĐẠT ĐƯỢC ............................................................................................................ 49
9.2
HƯỚNG PHÁT TRIỂN ............................................................................................................ 49
9.3
BẢNG PHÂN CÔNG CÔNG VIỆC ........................................................................................ 50
CHƯƠNG 10: LINK SOURCE CODE VÀ TÀI LIỆU THAM KHẢO ............................................... 51
10.1
LINK SOURCE CODE ............................................................................................................ 51
10.2
TÀI LIỆU THAM KHẢO ........................................................................................................ 51
7
CHƯƠNG 1: GIỚI THIỆU CHUNG
1.1
Giới thiệu đề tài
Ngày nay, với sự phát triển vượt bậc của công nghệ, tất cả mọi thứ của con người
ngày càng trở nên tiện ích hơn, khi bạn chỉ cần 1 chiếc smartphone và kết nối Internet.
Nhu cầu khám phá, du lịch không chỉ phát triển ở giới trẻ, mà gần như tất cả mọi người
đều có quan tâm đến. Du lịch, khám phá dần trở nên là một chủ đề hot trong gần như
các cuộc nói chuyện của mọi người.
Mọi người có thể tìm kiếm địa điểm du lịch bây giờ dễ dàng với cơng cụ tìm kiếm
Google, nhưng khơng chỉ dừng lại ở việc tìm kiếm tham khảo về địa điểm du lịch, mọi
người còn quan tâm đến các vấn đề khác về địa điểm đó qua những hình chia sẻ thực tế,
đánh giá từ những người đã đến, chất lượng của địa điểm như thế nào? Đặc biệt, với
nhu cầu du lịch (trong nước) sau đợt dịch đang ngày càng cao, khi mọi người đã ở nhà
quá lâu, mọi người cần nơi tổng hợp những thông tin, những địa điểm mà họ quan tâm.
Hiểu được vấn đề đó, nhóm chúng em quyết định xây dựng một ứng dụng KHÁM
PHÁ CHIA SẺ DU LỊCH – VATRACTION để trở thành cầu nối giữa những con
người yêu thích du lịch, mong muốn sẻ chia các địa điểm mới, những thông tin tương
quan đến những người có chung sở thích, hoặc đơn giản muốn góp phần đóng góp cho
sự phát triển du lịch địa phương, trong nước.
1.2
Mô tả đề tài
Ứng dụng Vattraction là một ứng dụng chia sẻ các địa điểm du lịch trong nước, mang
đến một nơi chia sẻ du lịch cho tất cả mọi người thích khám phá, tìm kiếm những địa
điểm du lịch.
Cùng với đó, ứng dụng cịn là nơi mọi người có thể tương tác, chia sẻ với nhau để
cùng sẻ chia các kinh nghiệm du lịch. Ứng dụng sẽ được kiểm soát bởi những admin,
kiểm tra bài đăng của các người dùng có hợp lệ hay khơng, từ đó đưa đến những bài
chia sẻ có chất lượng tốt nhất để người sử dụng ứng dụng.
Ứng dụng lấy nền tảng người dùng là chính, khi những đóng góp của người dùng
cho ứng dụng sẽ làm cho ứng dụng ngày càng phổ biến và phát triển hơn.
1.3
Mục tiêu của đề tài
Xây dựng một Ứng dụng chia sẻ khám phá du lịch cung cấp các tính năng cơ bản cụ thể
là thơng tin của từng địa điểm du lịch, lượt đánh giá của địa điểm đó một cách trực quan
nhất. Người dùng có thể tìm kiếm và thêm vào danh sách u thích những địa điểm thông
8
qua ứng dụng. Thông qua ứng dụng người dùng sẽ có thêm những thơng tin từ chính thống
đến các thơng tin bền lề về địa điểm mình đang quan tâm.
Ngồi ra, ứng dụng cịn là nơi người dùng có thể mang những trải nghiệm của mình về
một địa điểm mới nào đó, chia sẻ đến mọi người.
Song song với mục tiêu của ứng dụng, đề tài này cịn giúp nhóm có thêm các kiến thức
về Flutter, cách thức xử lý, xây dựng và phát triển một ứng dụng di động, nhằm mục đích
cho việc học tập, cũng như định hướng phát triển.
1.4
Phương pháp nghiên cứu
• Nghiên cứu các tài liệu về nghiệp vụ có liên quan trực tiếp đến đề tài.
• Tham khảo các ứng dụng du lịch hiện hành như: MeTrip, Airbnb, Booking.com…
• Nghiên cứu, tham khảo và tìm hiểu các tài liệu, video hướng dẫn liên quan đến các
cơng nghệ sử dụng vào q trình xây dụng phát triển ứng dụng.
9
CHƯƠNG 2: CƠNG NGHỆ TRONG ỨNG DỤNG
2.1
TÌM HIỂU FLUTTER
2.1.1 Khái niệm Flutter
Flutter được biết đến là nền tảng hỗ trợ phát triển phần mềm, ứng dụng di động. Những
ứng dụng đa nền cho hệ điều hành IOS và Android do tập đoàn Google phát triển.
Flutter là mobile UI framework của Google để tạo ra các giao diện chất lượng cao trên
iOS và Android trong khoảng thời gian ngắn. Flutter hoạt động với những code sẵn có được
sử dụng bởi các lập trình viên, các tổ chức.
Flutter hồn tồn miễn phí và cũng là mã nguồn mở
Có 2 thành phần chính tạo nên nền tảng Flutter mạnh mẽ và hữu dụng, đó là:
• Một SDK (Software Development Kit): SDK được biết đến là bộ sưu tập những
công cụ giúp cho người dùng phát triển được ứng dụng nền của mình. Người dùng
sử dụng công cụ này để hỗ trợ phần lớn các thao tác phát triển ứng dụng. Trong đó
bao gồm các trình biên dịch mã thành các mã gốc dành riêng cho hai hệ điều hành
IOS và Android.
• Một Framework (UI Library based on widgets): Framework cho phép người
dùng tập hợp những thành phần của giao diện. Chính vì điều đó, việc tái sử dụng
những mã code trên Framework trở nên dễ dàng hơn. Tiết kiệm thời gian và tính hữu
dụng của Framework các bạn có thể tự tìm hiểu để biết thêm chi tiết. Tuy nhiên, điều
này thật sự có ích với việc cá nhân hóa tùy theo nhu cầu của người dùng.
Các tính năng nổi bật của Flutter:
•
•
•
•
•
•
•
Tính năng phát triển nhanh chóng cho các ứng dụng
UI đẹp mắt, có tính linh hoạt
Flutter hiện đã và đang là một react framework
Hỗ trợ rất nhiều widget khác nhau
Thể hiện cùng một UI trên nhiều nền tảng
Ứng dụng có hiệu năng cao
Sử dụng ngơn ngữ lập trình Dart đơn giản và dễ học
2.1.2 Khái niệm Dart
Dart là ngôn ngữ lập trình đa mục đích ban đầu được phát triển bởi Google và sau đó
được Ecma (ECMA-408) phê chuẩn làm tiêu chuẩn. Nó được sử dụng để xây dựng các ứng
dụng web, server, máy tính để bàn và thiết bị di động
10
Dart là một ngôn ngữ hướng đối tượng, được xác định theo lớp, với cơ chế garbagecollected, sử dụng cú pháp kiểu C để dịch mã tùy ý sang JavaScript. Nó hỗ trợ interface,
mixin, abstract, generic, static typing và sound type (2 cái cuối có thể hiểu là type-safe).
Những ưu điểm của Dart:
• Năng suất: Cú pháp Dart rõ ràng và súc tích, cơng cụ của nó đơn giản nhưng mạnh
mẽ. Type-safe giúp bạn xác định sớm các lỗi tinh tế. Dart có các thư viện cốt lõi và
một hệ sinh thái gồm hàng ngàn package.
• Nhanh: Dart cung cấp tối ưu hóa việc biên dịch trước thời hạn để có được dự đốn
hiệu suất cao và khởi động nhanh trên các thiết bị di động và web.
• Di động: Dart biên dịch thành mã ARM và x86, để các ứng dụng di động của Dart
có thể chạy tự nhiên trên iOS, Android và hơn thế nữa. Đối với các ứng dụng web,
chuyển mã từ Dart sang JavaScript.
• Dễ gần: Dart quen thuộc với nhiều nhà phát triển hiện có, nhờ vào cú pháp và định
hướng đối tượng không gây ngạc nhiên của nó. Nếu bạn đã biết C ++, C # hoặc Java,
bạn có thể làm việc hiệu quả với Dart chỉ sau vài ngày.
• Reactive: Dart rất phù hợp với lập trình Reactive, với sự hỗ trợ để quản lý các đối
tượng tồn tại trong thời gian ngắn, chẳng hạn như các widget UI, thông qua phân bổ
đối tượng nhanh và GC. Dart hỗ trợ lập trình khơng đồng bộ thơng qua các tính năng
ngơn ngữ và API sử dụng các đối tượng Future và Stream.
2.1.3 Tại sao chọn Flutter
• Phát triển ứng dụng nhanh chóng: Tính năng hot reload giúp bạn nhanh chóng và
dễ dàng thử nghiệm, xây dựng giao diện người dùng, thêm tính năng và sửa lỗi nhanh
hơn. Trải nghiệm tải lại lần thứ hai, mà không làm mất trạng thái, trên emulator,
simulator và device cho iOS và Android.
• Giao diện người dùng đẹp và thu hút: Thỏa mãn người dùng của bạn với các
widget built-in đẹp mắt của Flutter theo Material Design và Cupertino (iOS-flavor),
các giao diện lập trình ứng dụng (API) chuyển động phong phú, scroll tự nhiên mượt
mà và tự nhận thức được nền tảng.
• Framework hiện đại: Dễ dàng tạo giao diện người dùng của bạn với framework
hiện đại của Flutter và tập hợp các platform, layout và widget phong phú. Giải quyết
các thách thức giao diện người dùng khó khăn của bạn với các API mạnh mẽ và linh
hoạt cho 2D, animation, gesture, hiệu ứng và hơn thế nữa.
• Cộng đồng ngày càng phát triển: Flutter đang có một cộng đồng ngày càng phát
phát triển, cùng với đó là hệ thống package đa dạng giúp ích cho việc lập trình rất
nhiều
11
2.2
TÌM HIỂU FIREBASE
2.2.1
Khái niệm Firebase
Firebase là một nền tảng sở hữu bởi google giúp chúng ta phát triển các ứng dụng di
động và web. Họ cung cấp rất nhiều công cụ và dịch vụ tiện ích để phát triển ứng dụng nên
một ứng dụng chất lượng. Điều đó rút ngắn thời gian phát triển và giúp ứng dụng sớm ra
mắt với người dùng.
Firebase cung cấp các dịch vụ đa năng và bảo mật cực tốt. Firebase hỗ trợ cả
hai nền tảng Android và IOS
Với việc sử dụng Firebase, developer có thể tập trung vào việc phát
triển application mà không cần lo về việc sản phẩm của mình sẽ hoạt động và được quản
lý thể nào ở phía Backend.
2.2.2
Ưu nhược điểm của Firebase
Ưu điểm:
• Xây dựng ứng dụng nhanh chóng mà không tốn thời gian, nhân lực để quản lý hệ
thống và cơ sở hạ tầng phía sau: Firebase cung cấp cho bạn chức năng như phân tích,
cơ sở dữ liệu, báo cáo hoạt động và báo cáo các sự cố lỗi để bạn có thể dễ dàng phát
triển, định hướng ứng dụng của mình vào người sử dụng nhằm đem lại các trải
nghiệm tốt nhất cho họ.
• Uy tín chất lượng đảm bảo từ Google: Firebase được google hỗ trợ và cung cấp trên
nền tảng phần cứng với quy mô rộng khắp thế giới, được các tập đoàn lớn và các
ứng dụng với triệu lượt sử dụng từ người dùng.
• Quản lý cấu hình và trải nghiệm các ứng dụng của Firebase tập trung trong một giao
diện website đơn giản, các ứng dụng này hoạt động độc lập nhưng liên kết dữ liệu
phân tích chặt chẽ.
Nhược điểm:
• Khơng thể sử dụng Firebase như một mã nguồn mở để phát triển ứng dụng di động.
• Chỉ hoạt động với Cơ sở dữ liệu NoSQL: Firebase sử dụng Json và hầu như khơng
có tính năng SQL mặc dù đã có những cải tiến đáng kể trên Cloud. Tuy nhiên, cơ sở
dữ liệu của Firebase vẫn không thể sử dụng cơ sở dữ liệu quan hệ.
• Firebase khá đắt và giá khơng ổn định: Giá thành của các tính năng sử dụng trên
Firebase khá đắt, việc tính giá tiền dựa trên mức độ sử dụng khiến việc giới hạn giá
cả trở nên không rõ ràng và khơng thể dự đốn trước chi phí bỏ ra khi sử dụng
Firebase.
• Cơ sở dữ liệu của họ được tổ chức theo kiểu trees, parent-children, không phải là
kiểu Table nên những ai đang quen với SQL có thể sẽ gặp khó khăn từ mức đơi chút
tới khá nhiều.
12
CHƯƠNG 3: PHÂN TÍCH - THIẾT KẾ CƠ SỞ DỮ LIỆU
3.1
SƠ ĐỒ LỚP
3.2
DANH SÁCH CÁC LỚP
STT
Tên lớp
1
VatractionUser
2
RoleType (admin/ user)
3
DestinationPost
4
PostType
5
PostStatus
6
Province
7
District
8
Wards
9
FavoriteDestinationPost
13
3.3
MƠ TẢ CHI TIẾT CÁC LỚP
3.3.1 VatractionUser Class
STT
Tên thuộc tính
Kiểu dữ liệu
Ràng
buộc
Ý nghĩa
1
Uid
String
Có
Id của mỗi người dùng
2
Email
String
Có
3
username
String
Có
4
avatarUrl
String
Có
5
gender
String
Có
6
phoneNumber
String
Khơng
7
dateOfBirth
DateTime
Khơng
8
address
String
Khơng
9
role
Enum
Có
3.3.2 RoleType Enum
STT
Kiểu số
Tài khoản email dùng
để đăng nhập vào ứng
dụng
Tên hiện thị của người
dùng
Hình ảnh đại diện của
người dùng
Giới tính của người
dùng
Số điện thoại của người
dùng
Ngày sinh của người
dùng
Địa chỉ của người dùng
Thông tin vai trò của
người dùng
Giá trị
Ý nghĩa
1
1
Admin
Vai trò người quản lí ứng dụng
2
2
User
Vai trị người dùng (phổ thơng)
của ứng dụng
3.3.3 FavoriteDestinationPost Class
STT
Tên thuộc tính
Kiểu dữ liệu
1
userId
String
Ràng
buộc
Có
2
listDestionationPost
List<String>
Có
Ý nghĩa
Id của user
Danh sách các id
destination post
14
3.3.4 DestinationPost Class
STT
Tên thuộc tính
Kiểu dữ liệu
1
2
destinationPostId
postName
String
String
Ràng
buộc
Có
Có
3
description
String
Có
4
province
Province
Có
5
district
District
Có
6
wards
Wards
Có
7
road
String
Khơng
8
Images
List<String>
Có
9
type
Enum
Có
10
rate
Double
Có
11
countRating
Int
Có
12
dateTime
DateTime
Có
13
status
Enum
Có
14
sharer
String
Có
Ý nghĩa
Id của destination post
Tên của bài post
Nội dung mô tả của bài
đăng
Tỉnh/ thành phố của bài
post
Quận/ huyện của bài
post
Xã/ phường/ thị trấn của
bài post
Tên đường của bài post
Danh sách các link hình
ảnh của bài post
Phân loại cho bài post
Điểm đánh giá của bài
post
Số lượt đánh giá của bài
post
Ngày đăng bài post
Trạng thái kiểm duyệt
của bài post
Id của user gửi bài post
3.3.5 Province Class
STT
Tên thuộc tính
Kiểu dữ liệu
1
2
code
nameProvince
String
String
Ràng
buộc
Có
Có
Ý nghĩa
Mã Tỉnh/ Thành phố
Tên Tình/ Thành phố
3.3.6 District Class
STT
Tên thuộc tính
Kiểu dữ liệu
1
2
codeDistrict
nameDistrict
String
String
Ràng
buộc
Có
Có
Ý nghĩa
Mã Quận/ Huyện
Tên Quận/ Huyện
15
3
nameProvince
String
Có
Tên Tỉnh/ Thành phố
Ý nghĩa
3.3.7 Wards Class
STT
Tên thuộc tính
Kiểu dữ liệu
Ràng
buộc
1
codeWards
String
Có
2
3
nameDistrict
nameProvince
String
String
Có
Có
4
nameWards
String
Có
3.3.8 PostType Enum
STT
Kiểu số
Mã Phường/ Xã, Thị
trấn
Tên Quận/ Huyện
Tên Tỉnh/ Thành phố
Tên Phường/ Xã, Thị
trấn
Giá trị
Ý nghĩa
1
1
Beach
Vùng biển
2
3
4
2
3
4
Mountain
Island
City
Vùng núi non
Vùng hòn đảo
Thành phố
Giá trị
Ý nghĩa
3.3.9 PostStatus Enum
STT
Kiểu số
1
1
Pending
Chưa kiểm duyệt
2
3
2
3
Approve
Decline
Chấp nhận
Từ chối
16
CHƯƠNG 4: MƠ HÌNH USE-CASE
4.1
SƠ ĐỒ USE-CASE
4.2
DANH SÁCH CÁC ĐỐI TƯỢNG
STT
Tên của đối tượng
1
USER
2
ADMIN
4.3
STT
Mô tả ngắn về đối tượng
Người dùng ứng dụng, hầu như có tất cả các
tính năng cơ bản của ứng dụng
Quản lí ứng dụng, có các tính năng của ứng
dụng và tính năng kiểm duyệt bài đăng
DANH SÁCH CÁC USE-CASE
Đối tượng
Tên của Use-case
Mô tả
17
1
Đăng nhập
2
Đăng xuất
3
Đăng bài
4
Tìm kiếm
Xem thơng tin địa điểm
(bài đăng)
Đánh giá
5
6
7
Tất cả
u thích
8
Bỏ u thích
9
Xem thơng tin cá nhân
10
Cập nhật thông tin
11
Thay đổi ảnh đại diện
12
Thay đổi mật khẩu
13
14
Người dùng
(User)
Kiểm duyệt bài đăng
15
16
17
Đăng ký
Quên mật khẩu
Admin (Quản
lý)
Chấp nhận
Từ chối
Sử dụng tài khoản (email) và
mật khẩu để đăng nhập vào ứng
dụng
Đăng xuất tài khoản ra khỏi
ứng dụng
Đăng bài đăng về địa điểm du
lịch mới và chờ kiểm duyệt
Tìm kiếm địa điểm mong muốn
Xem các thông tin chi tiết của
bài đăng về 1 địa điểm
Đánh giá (sao) cho địa điểm
Thêm địa điểm vào danh sách
u thích
Xóa địa điểm khỏi danh sách
u thích
Xem thông tin cá nhân của
người dùng ứng dụng
Thay đổi, chỉnh sửa và cập nhật
thông tin cá nhân
Thay đổi ảnh đại diện của
người dùng
Thay đổi mật khẩu hiện tại của
tài khoản
Đăng ký tài khoản mới
Lấy lại mật khẩu
Kiểm duyệt các bài đăng được
người dùng đăng tải trong danh
sách chờ
Chấp nhận bài đăng của người
dùng
Từ chối bài đăng của người
dùng
18
4.4
ĐẶC TẢ CÁC USE-CASE
4.4.1 Đặc tả Use-case “Đăng nhập”
Tên use-case
Đăng nhập
Đối tượng chính Tất cả
Use-case bắt đầu khi người dùng đăng nhập vào ứng dụng bằng tài
Mô tả
khoản và mật khẩu
Điều kiện tiên
1. User phải có tài khoản, mật khẩu
quyết
2. Phải đảm bảo kết nối với Internet
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Hiện thị màn hình đăng nhập
2. Người dùng nhập tài khoản và mật khẩu
3. Nhấn vào nút đăng nhập
Luồng cơ bản
4. Hệ thống kiểm tra tài khoản
5. Hiện thị thông báo đăng nhập
6. Chuyển đến màn hình Home
1. Xử lý trường hợp người dùng nhập không đúng định dạng
Các luồng thay
2. Hiện thị thông báo khi người dùng nhập tài khoản mật khẩu
thế
không đúng
4.4.2 Đặc tả Use-case “Đăng xuất”
Tên use-case
Đăng xuất
Đối tượng chính Tất cả
Use-case bắt đầu khi người dùng đã đăng nhập vào ứng dụng và
Mô tả
chọn vào đăng xuất
Điều kiện tiên
1. Người dùng phải đăng nhập được vào ứng dụng
quyết
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Người dùng vào màn hình cài đặt tài khoản
Luồng cơ bản
2. Chọn vào Đăng xuất khỏi ứng dụng
Các luồng thay
Khơng có
thế
4.4.3 Đặc tả Use-case “Đăng bài – địa điểm”
Tên use-case
Đăng bài – địa điểm
Đối tượng chính Tất cả
Use-case bắt đầu khi người dùng đã đăng nhập vào ứng dụng và
Mô tả
chọn vào button tạo bài đăng mới
19
Điều kiện tiên
quyết
Điều kiện sau
Luồng cơ bản
Các luồng thay
thế
1. Người dùng phải đăng nhập được vào ứng dụng
2. Phải đảm bảo kết nối được Internet
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Người dùng chọn vào button Tạo bài đăng mới
2. Màn hình chuyển tới màn hình tạo bài đăng (địa điểm) mới
3. Nhập các thông tin theo yêu cầu
4. Nhấn nút Gửi để hoàn tất
5. Hiện thị dialog thông báo thành công
6. Bài đăng được đưa vào danh chờ duyệt
Hiện thị dialog thông báo thất bại khi người dùng nhập thiếu các
thông tin yêu cầu
4.4.4 Đặc tả Use-case “Tìm kiếm”
Tên use-case
Tìm kiếm địa điểm
Đối tượng chính Tất cả
Use-case bắt đầu khi người dùng đã đăng nhập vào ứng dụng và
Mơ tả
tìm kiếm địa điểm
Điều kiện tiên
1. Người dùng phải đăng nhập được vào ứng dụng
quyết
2. Phải đảm bảo kết nối với Internet
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Người dùng chọn vào thanh tìm kiếm
2. Nhập tên địa điểm cần tìm
Luồng cơ bản
3. Hệ thống hiện thị danh sách địa điểm theo nội dung tìm
kiếm
Các luồng thay
Khơng tìm thấy sẽ hiện thị thơng báo cho người dùng
thế
4.4.5 Đặc tả Use-case “Xem thông tin bài đăng (địa điểm)”
Tên use-case
Xem thông tin của địa điểm
Đối tượng chính Tất cả
Use-case bắt đầu khi người dùng đã đăng nhập vào ứng và chọn
Mô tả
vào địa điểm mong muốn
Điều kiện tiên
1. Người dùng phải đăng nhập được vào ứng dụng
quyết
2. Phải đảm bảo kết nối với Internet
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
1. Người dùng chọn vào địa điểm mong muốn
20
2. Ứng dụng hiện thị thông chi tiết của địa điểm đó cho người
dùng
Các luồng thay
thế
Khơng có
4.4.6 Đặc tả Use-case “Đánh giá”
Tên use-case
Đánh giá
Đối tượng chính Tất cả
Use-case bắt đầu khi người dùng đã đăng nhập vào ứng dụng và
Mô tả
đánh giá cho địa điểm người dùng đang xem
1. Người dùng phải đăng nhập được vào ứng dụng
Điều kiện tiên
2. Phải qua đặc tả Xem thông tin bài đăng (mục 4.4.5)
quyết
3. Phải đảm bảo kết nối với Internet
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Người dùng chọn vào ô đánh giá
2. Chọn số sao đánh giá bài đăng
Luồng cơ bản
3. Ứng dụng sẽ nhận đánh giá của người dùng và cập nhật lại
thông tin cho địa điểm
Các luồng thay
Khơng có
thế
4.4.7 Đặc tả Use-case “u thích”
Tên use-case
u thích địa điểm
Đối tượng chính Tất cả
Use-case bắt đầu khi người dùng đã đăng nhập vào ứng dụng và
Mô tả
thêm địa điểm vào danh sách yêu thích
1. Người dùng phải đăng nhập được vào ứng dụng
Điều kiện tiên
2. Phải qua đặc tả Xem thông tin bài đăng (mục 4.4.5)
quyết
3. Phải đảm bảo kết nối với Internet
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Người dùng chọn vào ô đánh giá
2. Chọn vào button Yêu thích (trái tim)
Luồng cơ bản
3. Địa điểm sẽ được thêm vào danh sách u thích của
người dùng
Các luồng thay
Khơng có
thế
21
4.4.8 Đặc tả Use-case “Bỏ yêu thích”
Tên use-case
Bỏ yêu thích địa điểm
Đối tượng chính Tất cả
Use-case bắt đầu khi người dùng đã đăng nhập vào ứng dụng và bỏ
Mô tả
địa điểm vào danh sách yêu thích
1. Người dùng phải đăng nhập được vào ứng dụng
Điều kiện tiên
2. Phải qua đặc tả Xem thông tin bài đăng (mục 4.4.5)
quyết
3. Phải đảm bảo kết nối với Internet
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Ứng dụng hiển thị địa điểm đang được yêu thích
2. Người dùng ấn vào button yêu thích 1 lần nữa
Luồng cơ bản
3. Hệ thống sẽ xóa địa điểm khỏi danh sách u thích của
người dùng
Các luồng thay
Khơng có
thế
4.4.9 Đặc tả Use-case “Xem thơng tin cá nhân”
Tên use-case
Xem thơng tin cá nhân
Đối tượng chính Tất cả
Use-case bắt đầu khi người dùng đã đăng nhập vào ứng dụng và
Mơ tả
click vào màn hình thơng tin cá nhân
Điều kiện tiên
1. Người dùng phải đăng nhập vào ứng dụng
quyết
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Chọn thông tin cá nhân
Luồng cơ bản
2. Ứng dụng hiện thị tồn bộ thơng tin của người dùng
Các luồng thay
Khơng có
thế
4.4.10 Đặc tả Use-case “Cập nhật thơng tin”
Tên use-case
Cập nhật thơng tin
Đối tượng chính Tất cả
Use-case bắt đầu khi người dùng đã đăng nhập vào ứng dụng, click
Mô tả
vào màn hình thơng tin cá nhân và ấn cập nhật thơng tin
Điều kiện tiên
1. Người dùng phải đăng nhập vào ứng dụng
quyết
2. Thực hiện mục 4.4.9
22
Điều kiện sau
Luồng cơ bản
Các luồng thay
thế
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Nhập thông tin cần cập nhật
2. Ấn nút Lưu
3. Hiện thị thông báo thành công
4. Hệ thống lưu lại thông tin mới của người dùng
Nếu người dùng nhập sai format -> hiện thị thông báo không thành
công
4.4.11 Đặc tả Use-case “Thay đổi ảnh đại diện”
Tên use-case
Thay đổi ảnh đại diện
Đối tượng chính Tất cả
Use-case bắt đầu khi người dùng đã đăng nhập vào ứng dụng, click
Mơ tả
vào màn hình thơng tin cá nhân và ấn vào thay đổi ảnh đại diện
Điều kiện tiên
1. Người dùng phải đăng nhập vào ứng dụng
quyết
2. Thực hiện mục 4.4.10
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Màn hình hiển thị bottom dialog
2. Chọn thay đổi ảnh diện
3. Cập nhật ảnh mới từ thư viện của người dùng
Luồng cơ bản
4. Ấn nút Lưu để đổi ảnh đại diện
5. Hiện thị thông báo thành công
6. Hệ thống lưu lại ảnh đại diện mới của người dùng
Các luồng thay
Nếu người dùng nhập sai format -> hiện thị thông báo không thành
thế
công
4.4.12 Đặc tả Use-case “Thay đổi mật khẩu”
Tên use-case
Thay đổi mật khẩu
Đối tượng chính Tất cả
Use-case bắt đầu khi người dùng đã đăng nhập vào ứng dụng, click
Mô tả
vào màn hình thơng tin cá nhân
Điều kiện tiên
1. Người dùng phải đăng nhập vào ứng dụng
quyết
2. Thực hiện mục 4.4.9
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Nhấn vào tag thay đổi mật khẩu
2. Chuyển sang màn hình thay đổi mật khẩu
Luồng cơ bản
3. Nhập mật khẩu theo yêu cầu
4. Nhấn lưu để thay đổi mật khẩu
23
Các luồng thay
thế
5. Hiện thị thông báo thành công
6. Hệ thống cập nhật lại mật khẩu mới
Nếu người dùng nhập sai format -> hiện thị thông báo không thành
công
4.4.13 Đặc tả Use-case “Đăng ký”
Tên use-case
Đăng ký
Đối tượng chính User (người dùng)
Mô tả
Use-case bắt đầu khi người dùng chọn đăng ký tài khoản
Điều kiện tiên
1. Phải đảm bảo kết nối Internet
quyết
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Hiện thị màn hình nhập thơng tin
2. Ấn tạo tài khoản
3. Hệ thống gửi mã code về địa chỉ Email để xác nhận
Luồng cơ bản
4. Nhập code
5. Thông báo thành cơng
6. Chuyển vào màn hình Home
1. Xử lý trường hợp người dùng nhập không đúng định dạng
Các luồng thay
hoặc sai mã code xác nhận
thế
2. Hiện thị thông báo lỗi
4.4.14 Đặc tả Use-case “Quên mật khẩu”
Tên use-case
Quên mật khẩu
Đối tượng chính User (người dùng)
Use-case bắt đầu khi người dùng chọn quên mật khẩu ở màn hình
Mơ tả
đăng nhập
Điều kiện tiên
Phải đảm bảo kết nối Internet
quyết
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
Các luồng thay
thế
4.4.15 Đặc tả Use-case “Kiểm duyệt bài đăng”
Tên use-case
Kiểm duyệt bài đăng
Đối tượng chính Admin (quản lý)
24
Mô tả
Điều kiện tiên
quyết
Điều kiện sau
Luồng cơ bản
Các luồng thay
thế
Use-case bắt đầu khi người dùng đăng nhập vào ứng dụng với vai
trò (role) là ADMIN
1. Phải đảm bảo kết nối Internet
2. Đăng nhập thành công
3. Role = admin
4. Thực hiện mục 4.4.9
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Chọn vào tag Kiểm duyệt bài đăng
2. Hiện thị danh sách cái bài đăng trong danh sách chờ
3. Ấn vào bài bắt kì để xem thơng tin chi tiết
Khơng có
4.4.16 Đặc tả Use-case “Chấp nhận bài đăng”
Tên use-case
Chấp nhận bài đăng
Đối tượng chính Admin (quản lý)
Use-case bắt đầu khi người dùng đăng nhập vào ứng dụng với vai
Mơ tả
trị (role) là ADMIN
Điều kiện tiên
Thực hiện mục 4.4.15
quyết
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
1. Click vào button Chấp nhận
2. Hệ thống thông báo thành công
Luồng cơ bản
3. Bài đăng sẽ được chuyển status sang PostStauts = approve
4. Hiện thị bài đăng ra danh sách các bài đăng mới
Các luồng thay
Khơng có
thế
4.4.17 Đặc tả Use-case “Từ chối bài đăng”
Tên use-case
Từ chối bài đăng
Đối tượng chính Admin (quản lý)
Use-case bắt đầu khi người dùng đăng nhập vào ứng dụng với vai
Mơ tả
trị (role) là ADMIN
Điều kiện tiên
Thực hiện mục 4.4.15
quyết
Điều kiện sau
Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
1. Click vào button Từ chối
25