Tải bản đầy đủ (.pdf) (40 trang)

XÂY DỰNG MẠNG xã hội DU LỊCH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.1 MB, 40 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
--------------------

BÁO CÁO CUỐI KÌ
MƠN: ĐỒ ÁN 2
ĐỀ TÀI: XÂY DỰNG MẠNG XÃ HỘI DU LỊCH
Giảng viên hướng dẫn:
ThS. HUỲNH NGUYỄN KHẮC HUY

Sinh viên thực hiện:
NGUYỄN HOÀNG TUẤN

17521217

HỨA PHƯỚC THANH

17521046

TPHCM, 06/01/2021

1


NHẬN XÉT CỦA GIẢNG VIÊN
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................


............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................

2


LỜI CẢM ƠN

Đầu tiên, nhóm tác giả xin gởi lời cảm ơn chân thành đến tập thể quý Thầy Cô
Trường Đại học Công nghệ thông tin – Đại học Quốc gia TP.HCM và quý Thầy
Cô khoa Công nghệ phần mềm đã giúp cho nhóm tác giả có những kiến thức cơ
bản làm nền tảng để thực hiện đề tài này.
Đặc biệt, nhóm tác giả xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới thầy
Huỳnh Nguyễn Khắc Huy. Thầy đã hướng dẫn, hỗ trợ nhóm hồn thành đồ án này.
Trong thời gian một học kỳ thực hiện đề tài, nhóm tác giả đã vận dụng những kiến

thức nền tảng đã tích lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những
kiến thức mới. Từ đó, nhóm vận dụng tối đa những gì đã thu thập được để hoàn
thành một báo cáo đồ án tốt nhất. Tuy nhiên, trong q trình thực hiện, nhóm tác
giả khơng tránh khỏi những thiếu sót. Chính vì vậy, nhóm tác giả rất mong nhận
được những sự góp ý từ phía các Thầy Cơ nhằm hồn thiện những kiến thức mà
nhóm tác giả đã học tập và là hành trang để nhóm tác giả thực hiện tiếp các đề tài
khác trong tương lai.
Xin chân thành cảm ơn các quý Thầy Cơ!
TP. HCM, ngày 06 tháng 01 năm 2021

Nguyễn Hồng Tuấn
Hứa Phước Thanh
3


MỤC LỤC
LỜI CẢM ƠN ........................................................................................................................................ 3
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI ..................................................................................................... 6
1.1.

Đặt vấn đề............................................................................................................................... 6

1.2.

Mô tả đề tài........................................................................................................................... 10

1.3.

Phạm vi và mục tiêu đề tài ................................................................................................... 11


1.3.1. Mục tiêu .............................................................................................................................. 11
1.3.2. Phạm vi ............................................................................................................................... 11
CHƯƠNG 2: CÁC HỆ THỐNG LIÊN QUAN................................................................................... 12
2.1. Các hệ thống trong nước........................................................................................................... 12
2.1.1. Group facebook “Ờ! Phượt đi”.......................................................................................... 12
2.2. Các hệ thống ngoài nước........................................................................................................... 13
2.2.1. Backpackr........................................................................................................................... 13
CHƯƠNG 3: CÁC CÔNG NGHỆ SỬ DỤNG .................................................................................... 15
3.1. NodeJS....................................................................................................................................... 15
3.1.1. Giới thiệu chung ................................................................................................................. 15
3.1.2. Đặc điểm nổi bật của NodeJS ............................................................................................ 15
3.1.3. Lý do sử dụng NodeJS ....................................................................................................... 16
3.2 Framework Expressjs ................................................................................................................ 17
3.2.1 Giới thiệu:............................................................................................................................ 17
3.2.2 Kiến trúc.............................................................................................................................. 19
3.2.3 Lý do vì sao chọn Express.js làm Framework:................................................................... 20
CHƯƠNG 4: PHÁT BIỂU YÊU CẦU ................................................................................................ 22
4.1 Quản lý chuyến đi ...................................................................................................................... 22
4.1.1 Tạo chuyến đi ...................................................................................................................... 22
4.1.2 Tham gia chuyến đi ............................................................................................................. 22
4.1.3 Thảo luận............................................................................................................................. 22
4.1.4 Xem danh sách chuyến đi ................................................................................................... 22
4.1.5 Tìm kiếm chuyến đi............................................................................................................. 23
4.2 Các tính năng khác. ................................................................................................................... 23
4.2.1 Đăng bài............................................................................................................................... 23
4.2.2 Group theo địa điểm ........................................................................................................... 23
4


4.2.3 Kết bạn ................................................................................................................................ 23

4.2.4 Nhắn tin ............................................................................................................................... 23
4.2.5 Lưu bài viết. ........................................................................................................................ 23
CHƯƠNG 5: PHÂN TÍCH YÊU CẦU ............................................................................................... 24
5.1 Phân tích yêu cầu ....................................................................................................................... 24
5.1.1 Sơ đồ Use Case .................................................................................................................... 24
5.1.2 Danh sách yêu cầu ............................................................................................................... 25
5.2 Thiết kế cơ sở dữ liệu ................................................................................................................. 26
5.2.1 Tổng quát ............................................................................................................................ 26
5.2.2 Mô tả các bảng dữ liệu ........................................................................................................ 27
5.3. Giao diện ................................................................................................................................... 30
5.3.1. Trang chủ ........................................................................................................................... 30
5.3.2. Đăng nhập .......................................................................................................................... 31
5.3.3. Đăng ký............................................................................................................................... 31
5.3.4. Viết bài ............................................................................................................................... 32
5.3.5. Thông tin cá nhân............................................................................................................... 32
5.3.6. Quản lý tour đã tạo ............................................................................................................ 33
5.3.7. Thơng tin chi tiêt tour ........................................................................................................ 33
5.3.8. Tạo lịch trình ...................................................................................................................... 34
5.3.9. Tạo ghi chú ......................................................................................................................... 34
5.3.10. Thảo luận trong nhóm...................................................................................................... 35
5.3.11. Thơng báo ......................................................................................................................... 35
5.3.12. Group theo địa điểm......................................................................................................... 36
5.3.13. Các bài viết đã lưu ............................................................................................................ 37
5.3.14. Trang cá nhân .................................................................................................................. 37
5.3.15. Chat với bạn bè ................................................................................................................ 38
CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .................................................................... 39
6.1 Kết quả đạt được ....................................................................................................................... 39
6.2 Hướng phát triển ....................................................................................................................... 39
TÀI LIỆU THAM KHẢO ................................................................................................................... 40


5


CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
1.1.

Đặt vấn đề

Du lịch là một trong những sở thích của con người. Du lịch giúp cho con người
giải tỏa căng thẳng sau những ngày mệt mỏi, không chỉ thế du lịch là cơ hội để
chúng ta học hỏi những nét văn hóa mới, Tạo dựng những mối quan hệ mới.
Du lịch tự túc, du lịch bụi hay phượt đang là một trào lưu trong giới trẻ hiện
nay. Giới trẻ ngày nay đam mê và nhiệt huyết hơn, dám thử thách bản thân và
thích phiêu lưu mạo hiểm. Vì thế, thay vì chọn tour du lịch có sẵn của các cơng
ty, người trẻ thường chọn đi tự đi để tự trải nghiệm, khám phá phản thân, khám
phá thiên nhiên, và bởi vì họ có thể tự tạo ra và quản lý chuyến đi cho mình.
Các cộng đồng, đội nhóm được lập ra, hoạt động sơi nổi và năng động.
Du lịch tự túc buộc người đi phải tự lên lịch trình, tự chọn phương tiện, điểm
đến cho mình. Việc tổ chức một chuyến đi khá phức tạp, địi hỏi người tổ chức
phải có kinh nghiệm để có thể viết ra lịch trình, quản lý thành viên, chi phí và
đặc biệt tìm các địa điểm ăn uống và điểm dừng tốt nhất.
Hiện nay, tại Việt Nam, việc du lịch tự túc thông thường được thực hiện như
sau: Một nhóm bạn tổ chức đi phượt, nhưng thiếu thành viên hoặc muốn có
nhiều thành viên đi chung cho vui. Vì thế, họ viết ra kế hoạch bao gồm lịch
trình, chi phí, các đăng ký, thơng tin liên lạc lên các trang web, diễn đàn, mạng
xã hội. Sau đó người dùng khác vào xem rồi liên lạc qua điện thoại hoặc bình
luận để đăng ký tham gia. Sau khi tìm đủ người, họ tạo group facebook, group
forum để thảo luận nhóm. Bước tiếp theo là gặp mặt trực tiếp. Chuẩn bị mọi thứ
xong thì bắt đầu hành trình. Trong quá trình di chuyển, họ có thể xem lại lộ
trình đã lưu trên điện thoại để kiểm tra mình đi đúng hay không. Kết thúc


6


chuyến đi, họ thường đăng ảnh trên các diển đàn, viết bài đánh giá, lưu ảnh
trong máy.
Xem qua quá trình này, ta sẽ thấy có điều bất ổn: việc tổ chức chuyến phượt
cịn nhiều thủ cơng. Như việc lên kế hoạch, việc đăng ký tham gia, quản lý
thành viên tham gia. Với việc lên kế hoạch bằng văn bản, thành viên sẽ khó
nắm bắt và nhớ hết.

Ta hãy xem một lịch trình ví dụ:

7


8


Lịch trình trên bao gồm một chuỗi các hoạt động cùng với mốc thời gian
tương ứng. Ngồi ra có thơng tin chi phí, người tổ chức, vật dụng yêu cầu, các
quy định trong chuyến đi. Rõ ràng với thông tin nhiều và chi tiết thế này, người
đọc sẽ rất khó nhớ hết.
Trên ví dụ này, ta có thể thấy thêm việc đăng ký cũng thủ công: đăng ký
bằng các nhắn tin trên facebook, forum. Bên cạnh đó, việc quản lý các thành
viên tham gia cũng khó khăn khi người tổ chức phải theo dõi từng bình luận,
từng tin nhắn, phải trả lời và ghi lại những người nào tham gia. Nào giờ thời đại
công nghệ mà việc tổ chức vẫn cịn thủ cơng thế này.
Đó là xét từ phương diện người tổ chức. Còn đối với người tham gia, họ
cũng khơng kém phần khó khăn. Để tìm được chuyến đi u thích, họ phải tìm

kiếm trên nhiều kênh khác nhau: theo dõi trên group facebook, cập nhật thông
tin trên diễn đàn hay đơn giản là tìm kiếm trên google. Đơi lúc họ có thể bỏ lỡ
chuyến đi nào đó trên group facebook vì bị trơi xuống bởi nhiều bài đăng mới
9


liên tục được đăng. Như vậy, việc tìm kiếm rất khó khăn khi thơng tin chuyến
phượt khơng được tổ chức, lưu trữ rõ ràng ở một kênh chính thống.
Từ những thực trạng, những vấn đề như thế, em đã lên ý tưởng về một hệ
thống hỗ trợ xây dựng, tổ chức chuyến phượt.
Theo đó, em đã thực hiện khảo sát xem tại Việt Nam đã có giải pháp nào
cho các vấn đề nêu trên chưa và kết quả là có nhưng chưa phù hợp, chưa phổ
biến, chưa đầy đủ, còn thiếu sót (phần này sẽ nói rõ hơn ở chương khảo sát).
Trên thế giới, hiện nay đã có những ứng dụng hỗ trợ đầy đủ cho người đi du
lịch tự túc. Tuy nhiên, hầu hết chúng phục vụ cho người phương Tây. Trong khi
đó, đặc điểm của phượt các nước phương Tây rất khác với phượt tại Việt Nam.
Nhận thấy đây là ý tưởng khá mới, nhóm quyết định tạo ra hệ thống này một hệ thống đặc trưng cho người du lịch tự túc với nhiều tính năng kết hợp –
nhóm đặt tên là Ứng dụng mạng xã hội du lịch.

1.2.

Mô tả đề tài

Ứng dụng mạng xã hội du lịch là một hệ thống đầy đủ hỗ trợ người đi du lịch
lên kế hoạch, tổ chức chuyến đi của mình, đồng thời là nơi để kết nối bạn bè
cùng sở thích. Hệ thống được xây dựng dựa theo nhu cầu của người dùng dựa
theo các bước xây dựng chuyến đi. Bao gồm những chức năng chính như sau:
Tạo chuyến đi, xây dựng lịch trình cho chuyến đi:
1. Tham gia chuyến phượt
2. Tìm kiếm chuyến phượt

3. Lịch sử chuyến đi.
4. Thảo luận
5. Mời bạn bè tham gia.
Viết review, trải nghiệm về chuyến đi:
1. Đăng bài chia sẻ trải nghiệm, cảm xúc cá nhân.
10


2. Kết bạn.
3. Chat
4. Like, comment bài viết.
5. Lưu bài viết.
1.3. Phạm vi và mục tiêu đề tài
1.3.1. Mục tiêu
Xây dựng mạng xã hội du lịch bao gồm những chức năng trên.
Xây dựng hệ thống sử dụng những công nghệ phù hợp nhất đáp ứng khả năng
mở rộng và tương tác cao.
Xây dựng ứng dụng có giao diện trực quan, phù hợp mọi đối tượng người dùng.
1.3.2. Phạm vi
Phạm vi địa lý: Ứng dụng sử dụng cho các chuyến phượt tại Việt Nam.
Phạm vi người dùng: người dùng có máy tính và điện thoại thơng minh, có nhu
cầu đi du lịch và tổ chức đi du lịch.

11


CHƯƠNG 2: CÁC HỆ THỐNG LIÊN QUAN
Phần khảo sát sẽ nêu lên một số hệ thống liên quan đến phượt. Các hệ thống,
phần mềm được chia theo phạm vi khảo sát bao gồm trong nước và ngoài nước.
Phần khảo sát mỗi hệ thống bao gồm mô tả chung và nhận xét hệ thống đó.

Thơng qua việc khảo sát, có thể biết được ý tưởng đã tồn tại hay chưa, học hỏi
những ưu điểm, chức năng hay của mỗi hệ thống, hiểu được nhu cầu của người
du lich, từ đó phát triển chức năng phù hợp cho hệ thống.
2.1. Các hệ thống trong nước
2.1.1. Group facebook “Ờ! Phượt đi”
* Mô tả chung: Đây là tập hợp các group dành cho người thích phượt trao
đổi, thảo luận. Group này do tổ chức “Ờ! Phượt đi” quản lý.

Người dùng đến với group này để chia sẻ hình ảnh trong chuyến phượt, tổ chức
chuyến đi, tìm kiếm bạn đồng hành, xin tư vấn, chia sẻ kinh nghiệm.

12


Các chuyến phượt được đăng bởi tổ chức này hoặc cá nhân. Các hoạt động
trong group này diễn ra sôi nổi. Vì nó ở dạng group facebook nên mọi hoạt
động gì điều quy về đăng bài. Các bài đăng ở đây có thể được phân loại như
sau:
Chia sẻ hình ảnh phượt
Đăng kế hoạch chuyến phượt chi tiết
Đăng kế hoạch chuyến phượt cơ bản
Chia sẻ kinh nghiệm, dạng blog.
Hỏi, xin tư vấn.
Xin giúp đỡ cho người xuyên Việt.
Ưu điểm: Đáp ứng được nhu cầu kết nối, trao đổi trong cộng đồng du lịch bụi
Cập nhật thơng tin nhanh chóng nhờ tính năng notification của facebook, dễ
dành tham gia vì facebook khác là phổ biến và gần như ai cũng có một tài
khoản facebook, dễ sử dụng, đơn giản, chỉ cần đăng bài lên một nơi duy nhất
Khuyết điểm: Các bài đăng khơng được phân loại. Có các loại bài đăng: quy
định, kinh nghiệm, hỏi, chia sẻ, tìm bạn đồng hành,… người muốn tìm chuyến

phượt phải tìm trên nhiều bài đăng. Khơng có tính lưu trữ: Các bài đăng chia sẻ
kinh nghiệm hay sẽ không được lưu trong thời gian dài.
2.2. Các hệ thống ngồi nước
2.2.1. Backpackr
Mơ tả: “The Social app for backpacker”
Backpackr là ứng dụng di động dành cho người đi Phượt. Ứng dụng
có các tính năng giúp người dùng tổ chức chuyến phượt, tìm bạn đồng
hành, kết nối cộng đồng phượt trên thế giới đồng thời cung cấp những
tính năng cho hành trình phượt như tìm kiếm địa điểm, ghi lại hành
trình . Backpackr có lượng người dùng lớn trên khắp thế giới. Có thể

13


nói đây là ứng dụng di động nổi tiếng nhất trên thế giới dành cho dân
phượt.
Các tính năng của Backpackr:
Tìm kiếm bạn bè.
Đăng kế hoạch đi phượt, câu hỏi, bình
luận trên những bài đăng khác.
Tìm kiếm từ khóa hoặc hashtags liên
quan đến kế hoạch đi du lịch.
Tìm kiếm những bài đăng gần địa
điểm của mình đang ở hoặc tìm kiếm
theo quốc gia.
Tìm kiếm dịch vụ tại nơi đang đứng
(nhà hàng, khách sạn, quán nước, sự
kiện) và đặt hàng trước đến nơi đó.
Gợi ý những người đi cùng: hệ thống
sẽ tìm kiếm những điểm tương tự về

sở thích, nơi ở, thời gian đi, địa điểm
Ưu điểm: Lượng người dùng lớn. Ứng dụng cung cấp khá nhiều chức năng.
Giao diện trực quan, dễ sử dụng.
Khuyết điểm: Chỉ có ứng dụng, khơng có web để người dùng sử dụng.

14


CHƯƠNG 3: CÁC CÔNG NGHỆ SỬ DỤNG
3.1. NodeJS
3.1.1. Giới thiệu chung
Node.js là một mã nguồn mở, một môi trường cho các máy chủ và ứng
dụng mạng.
Node.js sử dụng Google V8 JavaScript engine để thực thi mã, và một tỷ
lệ lớn các mô-đun cơ bản được viết bằng JavaScript. Các ứng dụng
node.js thì được viết bằng JavaScript.
Node.js chứa một thư viện built-in cho phép các ứng dụng hoạt động như
một Webserver mà không cần phần mềm như Nginx, Apache HTTP Server
hoặc IIS.
Mọi hàm trong Node.js là không đồng bộ (asynchronous). Do đó, các tác
vụ đều được xử lý và thực thi ở chế độ nền (background processing).

3.1.2. Đặc điểm nổi bật của NodeJS
Đặc điểm nổi bật của Node.js là nó nhận và xử lý nhiều kết nối chỉ với một
single-thread. Điều này giúp hệ thống tốn ít RAM nhất và chạy nhanh nhất
khi không phải tạo thread mới cho mỗi truy vấn giống PHP. Ngoài ra, tận d
15


ụng ưu điểm non-blocking I/O của Javascript mà Node.js tận dụng tối đa tài

nguyên của server mà không tạo ra độ trễ như PHP.
Shelling tools unix NodeJS sẽ tận dụng tối đa Unix để hoạt động. Tức là
NodeJS có thể xử lý hàng nghìn Process và trả ra 1 luồng khiến cho hiệu
xuất hoạt động đạt mức tối đa nhất và tuyệt vời nhất.
Streamming Data (Luồng dữ liệu) Các web thông thường gửi HTTP request
và nhận phản hồi lại (Luồng dữ liệu). Giả xử sẽ cần xử lý 1 luồng giữ liệu
cực lớn, NodeJS sẽ xây dựng các Proxy phân vùng các luồng dữ liệu để
đảm bảo tối đa hoạt động cho các luồng dữ liệu khác.
Ứng dụng Web thời gian thực Với sự ra đời của các ứng dụng di động &
HTML 5 nên Node.js rất hiệu quả khi xây dựng những ứng dụng thời gian
thực (real-time applications) như ứng dụng chat, các dịch vụ mạng xã hội.

3.1.3. Lý do sử dụng NodeJS
NodeJS được viết bằng ngôn ngữ Javascript nên việc xử lý JSON dễ dàng
hơn.
NodeJS hỗ trợ giao thứ TCP vì vậy chúng ta dễ dàng xây dựng bất kỳ một
phương thức custom nào.
Ứng dụng thời gian thực.(Real-Time).
Node.js xử lý mọi request trên cùng một process giúp cho việc xây dựng các
bộ nhớ đệm chưa bao giờ đơn giản đến thế: Hãy lưu nó vào một biến global,
và thế là mọi request đều có thể truy cập đến bộ nhớ đệm đó. Caching sẽ
khơng cịn q đau đầu như trước đây, và bạn có thể lưu cũng như chia sẻ
trạng thái của một client với các client khác ngay trong ngôn ngữ, chứ bạn
không cần thông qua các bộ nhớ ngoài.

16


3.2 Framework Expressjs
3.2.1 Giới thiệu:

Express js là một Framework nhỏ, nhưng linh hoạt được xây dựng trên nền
tảng của Nodejs. Express hỗ trợ việc phát triển ứng dụng theo mô hình MVC,
mơ hình phổ biến cho việc lập trình web hiện nay. Về các package hỗ trợ:
Expressjs có vơ số các package hỗ trợ. Cho phép định nghĩa Middleware hỗ trợ
cho việc tổ chức và tái sử dụng code. Định nghĩa routes và các request method
đến server một cách dễ dàng. Hỗ trợ REST API.
Performance (hiệu suất)
Express tính năng ứng dụng web như routing cơ bản, middleware, template
engine và static files serving, từ đó hiệu suất I/O mạnh mẽ của Node.js khơng bị
ảnh hưởng.
Generator
Express vẫn có generator tạo cấu trúc folder cụ thể. Sau khi cài đặt gói npm
express-generator và tạo khung xương ứng dụng với lệnh generator, một folder
ứng dụng với cấu trúc rõ ràng sẽ được tạo để giúp bạn quản lysimage, front-end
static JavaScript, stylesheet file và HTML template files.
Middleware
Middleware về cơ bản chỉ là các hàm có truy cập toàn phần đến cả object
request và response. Middleware sẽ áp đặt một số chỉ dẫn filtering trước khi
giao quyền kiểm soát cho business l ogic thực sự hoặc cấp độ middleware tiếp
theo.

17


Hình 3.2: Middleware

Template Engine
Template engine cho phép lập trình viên nhúng biến backend vào file
HTML, và khi được yêu cầu, template file sẽ được trả lại format HTML thông
thường. Theo mặc định, express-generator sử dụng Pug (ban đầu được biết đến

với tên Jade) template engine.
Database Integration
Express, là minimal framework, sẽ không bắt buộc database integaration.
Khi sử dụng một một công nghệ lưu trữ dữ liệu cụ thể, dù là MySQL,
MongoDB, PostgreSQL, Redis, ElasticSearch,.. vấn đề chỉ nằm ở chỗ cài đặt
gói npm làm database driver. Những database driver của bên thứ 3 này không
phù hợp với cấu trúc thống nhất khi đi theo chỉ thị CRUB, dẫn đến việc thay đổi
database phức tạp và tìm ẩn lỗi.

18


3.2.2 Kiến trúc

Hình 3.3 Cấu trúc của Expressjs

Root:
app.js chứa các thơng tin về cấu hình, khai báo, các định nghĩa để ứng dụng
của chúng ta chạy ok.
package.json chứa các package cho ứng dụng.
Folder routes: chứa các route có trong ứng dụng
Folder view: chứa view/template cho ứng dụng
Folder public: chứa các file css, js, images,...cho ứng dụng

19


3.2.3 Lý do vì sao chọn Express.js làm Framework:
Đối với đề tài, server cần sử lý lượng request rất lớn từ cả web và ứng dụng
Ngoài ra, phần ứng dụng cần đến tính cập nhật nhanh, liên tục trong chức năng

cập nhật bản đồ, xem vị trí thành viên, gởi nhận dữ liệu ghi lại hành trình.
Mặc dù framework này khá mới, nhưng những tính năng đáp ứng được cho
đề tài mà nó mang lại hết sức phù hợp cho vị trí trung tâm của hệ thống này.
Express.js cịn hỗ trợ cài thêm các gói khác như socket io, sequenlize, jwt để có
thể hỗ trợ tối đa cho người lập tình.

*Các gói hổ trợ package khác:
Sequelize là một ORM dành cho Node.js và io.js. Nó hỗ trợ bạn truy cập
một cách dễ dàng đến PostgreSQL, MySQL, MariaDB, SQLite và MSSQL
cùng với các tính năng như là relations, transaction, replication (Nguồn
viblo.asia).
Để tạo 1 ánh xạ giữa 1 model và 1 table ta sử dụng phương thức define.
Sequelize sẽ tự động tạo các attributes là createdAt và updatedAt.
Các loại relation gồm: One-To-One associations, One-To-Many associations,
Belongs-To-Many associations giúp cho người lập trình tiết kiệm thời gian vì
khơng phải viết lại các câu lệnh sql truyền thống.
Ngồi ra những tính năng trên cịn có rất nhiều tính năng khác như:
Transaction, Scope, Hooks.
Tham khảo: />JSON Web Mã (JWT) là một chuẩn mở (RFC 7519) định nghĩa một cách
nhỏ gọn và khép kín để truyền một cách an tồn thơng tin giữa các bên dưới
dạng đối tượng JSON. Thơng tin này có thể được xác minh và đáng tin cậy vì
nó có chứa chữ ký số. JWTs có thể được ký bằng một thuật tốn bí mật (với
20


thuật toán HMAC) hoặc một public / private key sử dụng mã hoá RSA. (Nguồn:
viblo.asia).
JSON Web Token cũng là một cách hữu hiệu và bảo mật để trao đổi thông
tin giữa nhiều ứng dụng, bởi vì JWT phải được ký (bằng cặp public / private
key), khơng hoặc khó để mạo danh bằng JWT, ngồi ra, chữ ký cũng được tính

tốn dựa trên nội dung của header và nội dung payload, nhờ đó, bạn có thể xác
thực được nội dung là nguyên bản, chưa được chỉnh sửa hoặc can thiệp. Tuy
nhiên, một lưu ý hết sức quan trọng là do cấu trúc của JWT đơn giản nên JWT
có thể dễ dàng bị decode, do vậy, không nên dùng JWT để transfer các thông
tin nhạy cảm.
3 thành phần của JWT
Header bao gồm hai phần chính: loại token (mặc định là JWT - Thông tin này
cho biết đây là một Token JWT) và thuật tốn đã dùng để mã hóa (HMAC
SHA256 - HS256 hoặc RSA).
Payload chứa các claims. Claims là một các biểu thức về một thực thể (chẳng
hạn user) và một số metadata phụ trợ. Có 3 loại claims thường gặp trong
Payload: reserved, public và private claims.
Chữ ký Signature trong JWT là một chuỗi được mã hóa bởi header, payload
cùng với một chuỗi bí mật theo nguyên tắc.
Tham khảo: />
21


CHƯƠNG 4: PHÁT BIỂU YÊU CẦU
4.1 Quản lý chuyến đi
4.1.1 Tạo chuyến đi
Để tạo một chuyến đi mới người dùng cần phải điền thông tin chuyến đi bao
gồm: tên chuyến đi, ngày bắt đầu, ngày kết thúc, địa điểm bắt đầu, địa điểm kết
thúc, số lượng thành viên dự kiến, chi phí, phương tiện di chuyển. Những thơng
tin khác như lịch trình, ghi chú có thể bổ sung sau.
4.1.2 Tham gia chuyến đi
Để tham gia chuyến đi có 2 cách: một là nhận được lời mời từ admin hoặc
gửi yêu cầu tham gia được admin chấp nhận.

4.1.3 Thảo luận


Các thành viên có thể thảo luận trực tiếp trong nhóm.
4.1.4 Xem danh sách chuyến đi
Người dùng có thể xem các danh sách chuyến đi chuẩn bị diễn ra để tham
gia.

22


4.1.5 Tìm kiếm chuyến đi
Người dùng có thể tìm kiếm các chuyến đi bằng địa danh, thành phố…
4.2 Các tính năng khác.
4.2.1 Đăng bài
Người dùng có thể đăng bài chia sẻ những khoảnh khắc đi phượt, kinh
nghiệm phượt, cảm xúc cá nhân…
4.2.2 Group theo địa điểm
Để người dùng cùng nhau chia sẻ những hình ảnh đẹp, những kinh nghiệm
phượt, những quán ăn ngon …

4.2.3 Kết bạn
Người dùng có thể kết bạn với nhau để tiện theo dõi, liên lạc.

4.2.4 Nhắn tin
Người dùng có thể nhắn tin với bạn bè.
4.2.5 Lưu bài viết.
Người dùng có thể lưu trữ bài viết để sau này xem lại. Ví dụ lưu giữ các bài
viết về các quán ăn ngon tại một địa danh nào đó.
23



CHƯƠNG 5: PHÂN TÍCH U CẦU
5.1 Phân tích u cầu
5.1.1 Sơ đồ Use Case

24


5.1.2 Danh sách yêu cầu

STT

Tên Use case

Mô tả

1

Tạo chuyến đi

Cho phép người dùng bất
kì tạo mới một chuyến đi

2

Thay đổi lịch trình

Cho phép người dùng
chỉnh sửa lịch trình

3


Tham gia chuyến đi

Người dùng có thể xin gia
nhập chuyến đi được tổ
chức bởi người dùng khác

4

Kết bạn

Các người dùng kết bạn
với nhau tiện theo dõi,
liên lạc

5

Tìm kiếm chuyến đi

Người dùng có thể tìm
kiếm chuyến đi bằng các
địa điểm

6

Lưu lại bài viết

Người dùng có thể lưu lại
các bài viết hay để tiện
xem lại


7

Đăng bài

Người dùng có thể đăng
bài chia sẻ kinh nghiệm,
cảm xúc cá nhân.

25


×