Với dé tài trên nhóm sẽ tập trung vào khía cạnh du lich,xây dựng một ứng dụng đa nền tảng hỗ trợ các nhóm đi du lịch có phạm vi trong nước với các chức năng như: Tìm kiếm địa điểm, gợi ý
Trang 1ĐẠI HỌC QUỐC GIA TP HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG
MAY TÍNH VÀ TRUYEN THONG
THUY NGỌC HA
NGUYEN MINH TRUNG
KHOA LUAN TOT NGHIEP
PHAT TRIEN UNG DUNG DA NEN TANG HO
TRO DU LICH NHOM
Developing a cross-platform application to support
group traveling.
KỸ SƯ NGANH TRUYEN THONG VA MẠNG MAY TÍNH
TP HO CHi MINH, 2020
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HỌC CÔNG NGHỆ THONG TIN KHOA MẠNG MAY
TINH VA TRUYEN THONG
THUY NGỌC HA - 16520322
NGUYEN MINH TRUNG - 16521316
KHOA LUAN TOT NGHIEP
PHAT TRIEN UNG DUNG DA NEN TANG HO
TRO DU LICH NHOM
Developing a cross-platform application to support
group traveling.
KỸ SU NGANH TRUYEN THONG VA MẠNG MAY TÍNH
GIANG VIEN HUONG DAN
ThS Dé Thi Huong Lan
TP HO CHi MINH, 2020
Trang 3LỜI CẢM ƠN
Đầu tiên, Chúng em xin gửi lời cảm ơn chân thành đến Quý thầy cô trong khoa
Mạng máy tính và Truyền thông, cũng như Trường Đại học Công Nghệ Thông Tin vì đã tận tình dạy bảo và tạo điều kiện, giúp đỡ chúng em trong suốt quá trình học tập và
nghiên cứu tại trường hoàn thành được đề tài này.
Đặc biệt, chúng em xin gửi lời tri ân sâu sắc đến người Cô đáng kính, người đã
trực tiếp tận tình hướng dẫn, truyền đạt kinh nghiệm, đi cùng chúng em trong thời gian
nghiên cứu và hoàn thành khóa luận chuyên ngành: ThS Đỗ Thị Hương Lan.
Kính chúc Quý Thầy Cô được nhiều sức khỏe, niềm vui và thành công trong công
việc, cũng như trong cuộc sống Mong Thầy Cô luôn có được một sức khỏe tốt và một
tinh thần kiên cường, dé có thể tiếp tục truyền day lại những tri thức cũng như kinh
nghiệm cho các học trò thân yêu của trường ĐH CNTT.
Xin gửi lời cảm ơn đến các anh chị, bạn bè đã giúp đỡ và chia sẻ kiến thức trong
suốt quá trình học tập cũng như thực hiện khóa luận.
Trong quá trình thực hiện đề tài nhóm đã có gắng vận dụng hết kiến thức đã được
giảng dạy ở trường đề bồ trợ cho việc hoàn thành tốt khóa luận.
Tuy nhiên, tổng quá trình thực hiện nhóm không tránh khỏi những sai sót Vì vậy nhóm rất mong nhận được sự đóng góp ý kiến từ quý thầy cô để nhóm hoàn thiện kĩ
năng của mình.
Xin chân thành cảm ơn quý Thầy/Cô.
Nhóm tác giả
Trang 4CHƯƠNG 1 MỞ ĐÀU
1.1 Tổng quan đề tài.
1.2 Tên để tài -222c 222 2222222112221122112211221112211211 211cc xe 2
1.4 Đối tượng và phạm vi nghiên cứu 2 ++2+++22+++2Ex++£Exztrxxczrxrcrrrcee 3
1.5 _ Nội dung và phương pháp nghiên UU - c5 5+ s+svEsvxeeevesrsxex 3
CHƯƠNG 2 KHẢO SÁT THUC TE VÀ KIÊN THỨC NEN TẢNG 7 2.1 Khảo sát thực tẾ - 5c St 12 211211211211211211211211211211211212112121211 11 1e 7
2.2 _ Kiến thức nền tảng
2.2.1 Các phần mềm phục vụ đồ at ccseccccsseesssessssessseessseessseesssesssesssessasesssees 8
2.2.1.1 Android Studio
2.2.1.2 Xcode 7 0 »Ẳ / 9 2.2.1.3 Genymotion.
2.2.1.4 Navicat Premium cece cee +5 1kg 9 2.2.1.5 Git.
2.2.1.6 GitHub à cv tt tre 9 2.2.1.7 Github Desktop
2.2.2 Web Application ác re 10 2.2.3 Framework React — ÌNatÏVe cà tên 10 2.2.4 — NodeJS SH HH HH HH HH Hy 11
2.2.5 MongolDB St HH Hy 11
Trang 52.2.6 Cloud Server — Virtual Machine Unbutu 18.04 + ++ 11
2.2.7 Docker — Công nghệ triển khai Server c.cscccssssssssessseessseesssessseessesesees 12
2.2.8 FrameworkK SCTADY ch T HT HH rưy 12
3.2 Mô hình thiết kế cơ sở dữ liệu -c cccctEEtirrrtrtirirrriiirirrre 7
3.2.1 Mô hình quan hệ các bảng trong cơ sở dữ liệu -¿-+ + -<++ 7 3.2.2 Mô tả các bảng trong co sở dữ liéu 8
3.2.2.1 Bảng quản lý thông tin và hoạt động người dùng - 8
3.2.2.2 Bảng quan lý thông tin địa điểm va lịch trình người dùng 8
3.2.2.3 Bảng quan ly thông tin nhóm du lich của người dùng 9
3.2.2.4 Bảng mô tả model cơ sở dữ liệu - -¿- ¿5+2 S+x£*x+£+cvxsvxsxe 20
CHƯƠNG 4 MÔ HÌNH CHỨC NANG VA HIỆN THỰC UNG DUNG 30
4.1 Nhóm chức năng “Quản lý tài khoản”
4.1.1 Mô hình phân rã chức nang 0 eee eeeeeeseeeeeeeseeeeeeseeeeeeeseneeeeeeeeeeeeeeees 30
4.12 — Sơ đồ UseCase
4.1.3 Biểu đỗ sequence diagram cccccssesssseessseessseesssessssessseessseersseesssessseeees 32
4.1.4 Hiện thực các chức nang ứng dung
ii
Trang 64.1.4.1 Đăng ky tài khoản -scSHSnHHHnHHHHey 41 4.1.4.2 Chứng thực c2 thờ 4
4.1.4.3 Đăng nhập Ăn TH TH HH TH Hy 44
4.1.4.4 Quên mật khẩu 2-22 222+222E222E1221127111111 2211221 crek 46
4.1.4.5 Quản lý và chỉnh sửa thông tin -.- 5c se S+cSxsvxsereeeexseeee 48 4.2 Nhóm chức năng “Quan lý lịch trình'” 5+5 s+x+x+svkekekerrrrereree 49
4.2.1 Mô hình phân rã chức năng - - 6StS+S*v+srkrerekerrerree 49
4.2.2 Sơ đồ UseCase Hee 50
4.2.3 Biểu đỗ sequence diagram csccscssessseessseessseessseessseessiesssecssseessseessseess 51
4.2.4 Hiện thực các chức năng ứng dụng
4.2.4.1 Tham khảo, tìm kiếm và gợi ý các địa điêm du lịch
4.2.4.2 Gợi ý lịch trình và tạo lịch trình cho chuyến đI àà c2 cv 55
4.3 Quản lý nhóm du lich wo eee eee ee cee 111k Hi 57
4.3.1 Mô hình phân rã chức nang oe eee cee eceneeeeeeeeeeeeeeeseeneeeees 57
4.3.2 Sơ đồ UseCase ccccesssscccsssssrseessestecsessssssmeieeseeeessnsssnnmmneeeseeeeesnssen 59 4.3.3 Biểu đỗ sequence diagram c.csccccssssessseessseessseesssessssessseessseesssecssseesseeees 61
4.3.4 Hiện thực chức năng ứng dụng - ¿5< sc+st++xsvsvxseeeesveees 65
“ăn Tao nhom aa 65 4.3.4.2 Tạo mới sự kiỆN - c2 1201211121111 1 1511211181111 1181 181181 51 x32 68
4.3.4.3 Chia sẻ hình ảnh lên các trang mạng xã hội ©5552 T7
4.3.4.4 Nhắn tin nhóm 22vccttEEtrhnnr de 79
iii
Trang 75.2
CHUONG 5 KET LUẬN VA HUONG PHAT
TRIÉN -. s-Kết Wa cc eccceccscessssessseessseessseesssessseeessessssessssessssessseesasessasessssessseessseesaseessseees Hướng phát trig ccccccscscessssessssesssessseessseesssessssessseesssessssessssessseesssesasessaseses
1V
Trang 8DANH MỤC HÌNH VE
Hình 1.1 Thuật toán quản lý thanh toán chi phí của ứng dụng 4
Hình 2.1 Màn hình khảo sát những ứng dụng cần thiết khi di du lịch từ “CH Play” 7
Hinh 4.1 Man hinh o1 41
Hình 4.2 Màn hình thông báo lỗi chức năng đăng ký tài khoản . : 42
Hình 4.3 Man hình chứng thu eeceeseeceeeseeeeeeeneeeeeeeneeeeeesneeeeeesieeeeeeseseseeeaeeee 43 Hình 4.4 Man hình đăng nhap oo eee eceeeeseeeeeeeeeeeeeeceeeceeseeeeeeseeeseesieneeeeseeeee 44
Hình 4.5 Màn hình thông báo lỗi chức năng đăng nhập - ¿- 552552 45
Hình 4.6 Màn hình quên mật khâu.
Hình 4.7 Màn hình thông báo lỗi chức năng quên mật khâu - 47
Hình 4.8 Màn hình quản ly và chỉnh sửa thông tin -¿- 5555 5+++c<+x+vc+zxee 48
Hình 4.9 Màn hình tham khảo, tìm kiếm và gợi ý các địa điểm du lịch 33 Hình 4.10 Màn hình các địa điểm và chỉ tiết về địa điểm . -c5c¿ 54 Hình 4.11 Màn hình gợi ý lịch trình và tạo lịch trình chuyến (<n 55
Hình 4.12 Màn hình hiền thị lịch trình trên bản đồ và chon địa điểm 56
Hình 4.13 Màn hình tạo nhóm mới.
Hình 4.14 Màn hình thêm thành viên vào nhóm ¿+ 5+ +£+<+++*£eEexexexexr+ 66
Hình 4.15 Màn hình báo lỗi khi thêm thành viên 2 2 222z+2£2£+2£zzzzzzxzz+2 67
Hình 4.16 Màn hình giao địCH - 6 c1 911v 1 1v vn nh Tnhh Hàn rưến 68 Hình 4.17 Màn hình chọn một thành viên trong nhóm thanh toán chi phí 69
Hình 4.18 Màn hình chọn nhiều thành viên trong nhóm thanh toán chi phí 70
Trang 9hình trường hợp kiểm tra bị lỗi khi nhập sé tiền thanh toán chi phi 71
ình chia đều thanh toán chỉ phí đầu ra 72 Hình 4.21 Man hình chia không đều thanh toán chi phí đầu ra - 73
hình tùy chọn chia không đều thanh toán chi phí dau ra 74 hình thêm địa điểm cccccccccccrrrrtttrtrtrrrrrrrrrrrrrrrrriir 75
inh thêm hình ảnh có thé phóng to/ thu nhỏ 76
hình chia sẻ hình ảnh lên mạng xã hội . eects 77 inh chia sẻ sự kiện lên mang xã hội facebook . 78 hình trò chuyện trong nhóm - ¿+ +52 ++x+£+£vxvxseeeeeexeeeee 79
hình chia sẻ vi trí hin {ại - ¿5c 3232 *++vs+evexeexerereexse 80
hình chỉ đường và điều hướng giữa các thành viên trong nhóm 81
hình email thông báo chi phí .-.- -¿- - ¿5+ + ++x++x+xsexxsexserex 88
hình web hiền thị chỉ tiết chi phí của các thành viên trong nhóm 89
hình chỉ tiết hình ảnh được chia sẻ hiển thị trên trang wcb 90
v2
Trang 10DANH MỤC BANG
Bảng 1.1 Thống kê chức năng ứng dụng - 22: ©2222222222+22EE2zttEEEEveerrrvrrrrrrk 7
Bảng 3.1 Bảng quản lý thông tin và hoạt động người dùng - 18
Bảng 3.2 quản ly thông tin địa điểm và lịch trình người dùng - 18
Bang 3.3 quản lý thông tin nhóm du lịch của người dùng - ¿s5 ++<<<+ 19 Bảng 3.4 Bang mô ta model user
Bang 3.5 Bang mô tả model tTID ¿+ 5 S3 *91E1EEEESE 1E 111011111101, 21 Bang 3.6 Bảng mô tả model fFiD_ uS€T - 2-2 +55 *+£*E+Eexevrererereeekrre 21 Bảng 3.7 Bảng mô ta model transaC(IOH - c5 5+ £vE+vEseeeeeevserserreserree 2 Bảng 3.8 Bảng mô ta model transaction US€T .-.- 6 65+ +vx+eeseeeesereee 23 Bang 3.9 Bảng mô tả model us€r_aC(IVI óc SE sv‡+£eeevsereerrrserree 24 Bang 3.10 Bảng mô tả model pÏanSeT - - 6+5 ***S£*£+E+xzvreketeeeererrx 24 Bảng 3.11 Bảng mô tả model planLocation
Bang 3.12 Bang mô tả model placeLOCafiOT «c5 5+ S+++£+svseeevxseesee 26 Bảng 3.13 Bang mô tả model maInLOCafiOI - «+5 +£+£+evxseeeeexseesee 26 Bảng 3.14 Bang mô ta model detailLocafiO ¿-¿- + + 25+ S+++£+x+zvrvxeeexerrrrre 27 Bảng 3.15 Bảng mô tả model locationSeT ¿<5 25+ S‡E+x+e‡keexetsxerrrree 28 Bang 3.16 Bảng mô tả model image TTÍp - - - 55+ + ***£vxvE+teevrerekekrkrrree 28 Bảng 3.17 Bảng mô tả model chat 5c t3 SE 32E£vE+EEekEkksrkskreksrrkrerskrree 29
Mi
Trang 11DANH MỤC MÔ HÌNH - SƠ DO - BIÊU DO
Mô hình 3.1 Triển khai hệ thống sử dụng mô hình MVC -: 2-22 13
Mô hình 3.2 Mô hình thiết kế cơ sở dữ liệu - -: ¿22222++2222S2c+stEExrrerrrsrree 15
Mô hình 4.1 Mô hình phân rã chức năng - Quản lý tài khoản
Sơ đồ UseCase 4.2 Sơ đồ UseCase - Quản lý tài khoản ccccceeeerrre 31
Biểu đô 4.3 Biểu đồ sequence diagram - Dang ký tài khoản . - 32 Biéu đỗ 4.4 Biểu đồ sequence diagram - Đăng nhập ¿-©¿+c2+z+c5ce2 33
Biểu đỗ 4.5 Biểu đồ sequence diagram - Dữ liệu ứng dụng cá nhân . 35 Biéu đỗ 4.6 Biểu đồ sequence diagram - Quên mật khẩu ¿cz+c5+¿ 36
Biểu đỗ 4.7 Biểu đồ sequence diagram - Xem thông tin cá nhân -. 37 Biéu đỗ 4.8 Biểu đồ sequence diagram - Chỉnh sửa thông tin cá nhân 38 Biéu đồ 4.9 Biểu đồ sequence diagram - Đăng xuất -2:-22©2s++ccxcscsce2 39
Mô hình 4.10 Mô hình phân rã chức năng - Quản lý lịch trình - 49
Sơ đồ UseCase 4.11 Sơ đồ UseCase - Quan lý lịch trình - zcsc+c5sc2 50
Biéu đồ 4.12 Biểu đồ sequence diagram - Tìm kiếm địa điểm và tạo lịch trình 51
Mô hình 4.13 Mô hình phân rã chức nang - Quan lý nhóm du lịch - 58
Sơ đồ UseCase 4.14 Sơ đồ UseCase - Quan lý nhóm du lịch - c2 59 Biểu đỗ 4.15 Biểu đồ sequence diagram - Tạo mới nhóm du lịch.
Biều dé 4.16 Biểu đồ sequence diagram - Tạo mới sự kiỆn - - + «+ 62
Biéu đô 4.17 Biểu đồ sequence diagram - Thống kê và hién thị -. - 63
vai
Trang 12Internetwork Operating System
Application Programming Interface
Application
User Experience
User Interface
Structured Query Language
Model - View - Controller
Secure Socket Shell
Internet Protocol
Virtual Private Server
Gross Domestic Produc
United States dollar
DIEN GIAI
Hệ điều hành IOS Giao tiếp lập trình ứng dụng
Ứng dụng
Trải nghiệm người dùng
Giao diện người dùng
Ngôn ngữ truy vấn cấu trúc
Mô hình kiến trúc hệ thống
Giao thức kết nối bảo mật
Giao thức internet
Máy chủ riêng ảo
Giá trị thị trường hàng hóa
Tiền tệ Hoa Kì (tiền D6)
Trang 13phan trong cuộc sông hằng ngày Với dé tài trên nhóm sẽ tập trung vào khía cạnh du lich,
xây dựng một ứng dụng đa nền tảng hỗ trợ các nhóm đi du lịch có phạm vi trong nước với các chức năng như: Tìm kiếm địa điểm, gợi ý lịch trình, cho phép tạo lịch trình, quản
lý chỉ tiêu, chỉ đường và điều hướng vị trí giữa các thành viên trong nhóm Song song với những vấn đề trên nhóm cũng sẽ tiễn hành thu thập dữ liệu liên quan đến du lịch
thông qua trang web “Travel - Google” từ Google, xây dựng được thuật toán tính toán
chi phí cho hệ thống bao gồm tat cả các trường hợp có thé xảy ra, sử dụng được các API
tối ưu hóa chỉ đường, điều hướng vị trí giữa các thành viên với nhau được cung cấp bởi
“Rapidapi” thị trường cung cấp API cho người dùng được xem lớn nhất hiện nay, nhằm
hỗ trợ quá trình phát triển ứng dụng.
Trang 14nhóm (bạn bè, gia đình, cơ quan, tour ) đang là một trong những cách mà con người
trong xã hội hiện đại ngày nay lựa chọn để tận hưởng, trải nghiệm va nâng cao tinh thần.
Thông qua mỗi chuyến đi, mỗi người trong chúng ta sẽ có những bức ảnh đẹp cho riêng
mình, được trải nghiệm những vẻ đẹp, tận mắt thấy những khung cảnh thiên nhiên, hùng
vĩ Những trò chơi sẽ làm cho mọi người gắn kết với nhau, hiểu nhau hơn làm tiền đề
phát triển mối quan hệ, làm việc một cách hiệu quả [1] [2] [3] Theo số liệu thống kê, khảo sát của bộ Văn Hóa, Thể Thao và Du Lịch, Tổng Cục Du Lịch Việt Nam “Năm
2019, trong bối cảnh du lịch thế giới tăng trưởng chậm lại, du lịch Việt Nam đã vượt qua nhiều khó khăn, đón trên 18 triệu lượt khách quốc tế, 85 triệu khách du lịch nội dia, 755
nghìn tỷ đồng(tương đương 32,8 ty USD) tổng thu từ khách du lịch trong đó: Tổng thu
từ đu lịch quốc tế là 421 nghìn tỷ đồng, chiếm 55,7%, tương đương 18,3 tỷ USD giá trị xuất khẩu từ du lịch và tổng thu từ du lịch nội địa là 334 nghìn ty đồng, chiếm 44,3%,
tương đương 14,5 tỷ USD Đóng góp trực tiếp của du lịch: 9,2% GDP”.
Cùng với sự phát triển mạnh mẽ của Internet, Công nghệ thông tin, việc đi du lịch
càng dé dàng hơn với sự hỗ trợ của những hệ thống về du lịch bao gồm các website va
các ứng dụng trên điện thoại Tuy nhiên những ứng dụng này thường chỉ tập trung vào
một khía cạnh cụ thể (ví dụ: các ứng dụng hỗ trợ di chuyển — Grab, Goviet, Vexere ;
các ứng dụng hỗ trợ đặt phòng: Traveloka, Agoda, ; các ứng dụng tim kiếm tour du lịch: TripHunter, ) và người dùng thường phải cài đặt nhiều ứng dụng đề được hỗ trợ đầy
đủ Từ đó nhóm đã có ý tưởng phát triển một ứng dụng đa nền tảng hỗ trợ cho một nhóm
du lịch với các chức năng: Gợi ý lịch trình, tạo lịch trình, tạo nhóm, quản ly chi tiêu của
Trang 15nhóm, nhắn tin nhóm, chia sẻ vị trí trực tiếp, điều hướng tìm đường cho giữa các thành
viên trong nhóm
12 Tên đề tai
- _ Tên tiếng Việt: Phát triển ứng dụng đa nền tảng hỗ trợ du lịch nhóm.
- Tên tiếng Anh: Developing a cross-platform application to support group
traveling.
1.3 Mục tiêu của đề tài
Với đề tài trên nhóm sẽ phát triển ứng dụng phục vụ cho du lịch nhóm gồm các
chức năng:
Bảng 1.1 Thống kê chức năng ứng dụng
Nhóm chức năng Chức năng
Chức năng tìm - Tìm kiêm, xem thông tin các địa điêm nôi tiêng.
- Gợi ý lịch trình, cho phép người dùng tạo, chỉnh sửa, lưu
lịch trình trước khi đi du lịch.
kiếm địa điểm, tạo
lịch trình
- Quan lý chi tiêu
- Chia sẻ vi trí trực tiếp, điều hướng tìm đường cho giữa Chức năng nỗi bật các thành viên trong nhóm.
- Chia sẻ hình ảnh lên các trang mạng xã hội (facebook,
Instagram )
- Tạo nhóm, thêm lịch trình, thêm thành viên vào nhóm.
- _ Tương tác với các thành viên trong nhóm thông qua nhắn
tin nhóm, chia sẻ vị thông tin, hình ảnh cho nhau.
Chức năng hỗ tro | _ Tụ trự nhật ký ( thông tin giao dịch, hình ảnh, vị trí địa
ứng dụng điểm chuyến đi
- Hiển thị các hoạt động của người dùng: thêm, xoá, sửa
nhóm và giao dịch.
Trang 161.4 _ Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu:
Du lịch nhóm, quản lý chi tiêu, định vi, điều hướng vị trí.
Nghiên cứu UX/UI phù hợp với đối tượng người dùng.
Tìm hiểu về framework React Native của facebook, thông qua đó xây dựng ứng dụng đa nền tảng Android va iOS.
Tìm hiểu về framework NodeJS đề xây dựng server.
Tìm hiểu về “Rapidapi” thị trường cung cấp API cho người dùng được xem là lớn nhất hiện nay trên thê giới.
Tìm hiểu về “Scrapy” thư viện của python dùng dé thu thập dif liệu từ các
trang web (Crawl data) Mạng xã hội du lịch trong nước.
Pham vi nghiên cứu:
Trong giới hạn một khóa luận tốt nghiệp kỹ sư, đề tài hướng đến phát triển
hệ thống phục vụ phạm vi trong nước trên toàn lãnh thổ Việt Nam với ứng dụng
hỗ trợ đa nền tảng.
1.5 Nội dung và phương pháp nghiên cứu
Nôi dung 1 Khảo sát nhu cầu, cách thức hoạt động của ứng dụng.
Mục đích: Nắm rõ nhu cầu của người sử dụng về vấn đề chỉ tiêu, cách quản lý, chia tiền hợp lý trong mỗi chuyến đi và điều đáng nhớ nhất sau mỗi chuyến đi là kỉ niệm
với những bức ảnh đẹp có thé chia sẻ cho nhau, vị trí mà nhóm đã đặt chân tới Tiến
hành lên kế hoạch xây dựng các chức năng phù hợp, cần thiết và thuận tiện nhất cho
Trang 17Kết quả thực hiện:
- Khảo sát được số liệu thống kê du dịch, mức độ cần thiết của ứng dụng.
- Nắm được những chức năng chính của ứng dụng can phát triển.
- Lên kế hoạch xây dựng và phát triển ứng dụng.
Nôi dung 2: Phân tích, thiết kế hệ thống và thuật toán thanh toán chỉ phí.
Mục đích: phân tích - thiết kế hệ thống, thuật toán thanh toán chỉ phí và cơ sơ dữ
liệu phù hợp với từng chức năng.
Phương pháp thực hiện: [5] Tham khảo những tài liệu về phân tích chức năng ứng dụng, xây dựng thuật toán Tiến hành xây dựng thuật toán chỉ phí cho ứng dụng.
Kết quả thực hiện: Xây dựng được Thuật toán thanh toán chi phí cho ứng dụng.
Bắt đầu
‘Chon X thành viên thank
toán giao địch đầu vào
THỊ: Chia không đều [Chọn X thanh vida wong THỊ; Chia đều
nhóm chịu số tiền đầu ra
Ì 201852 eres sees EEEEEE Số tiên mà X thành viên trong,
shia cài cote itor He
Trang 18Chú Thích:
n: Tổng số thành viên trong nhóm của chuyến đi
a: Số tiền đầu vào của giao dịch
X: Số thành viên trong nhóm được chọn dé giao dịch.(1<=X<= n)
y: Số tiền đầu vào của mỗi thành viên được chọn trả cho chi phí
giao dịch.
y1: Tổng số tiền đầu vào của X thành viên trong nhóm được chọn
dé trả cho chi phí giao dịch
z: Số tiền đầu ra của mỗi thành viên được chọn phải chịu cho chỉ
phí giao dịch.
Zl: Tổng số tiền đầu ra của X thành viên trong nhóm được chọn
dé chịu cho chi phí giao dịch
Nôi dung 3: Xây dung chức năng gợi ý lên lịch trình
Mục đích: Thông qua dữ liệu đã được thu thập (crawl) về người dùng có thé xemgợi ý lịch trình cho phép lên lịch trình giúp người dùng có thể chọn một lịch trình tối
ưu tại một địa điểm cụ thể từ gợi ý của ứng dụng hoặc có thê sửa lại lịch trình từ lịchtrình gợi ý dé phù hợp với chuyến đi của nhóm
Phương pháp thực hiện: [4] Thực hiện khảo sát và thu thập dữ liệu từ nhiều
nguon, cac trang web chuyén về du lịch, từ đó thu thập dữ liệu phù hợp, cần thiết ở
mỗi địa điểm Tiếp đến xử lý dữ liệu dé có các lịch trình gợi ý tối ưu ở mỗi địa điểm
Kết quả thực hiện: Hoàn thành một ứng dụng đa nền tảng (IOS, Android, web
application) cung cấp cho người dùng với những chức năng:
- Hién thị nhiều địa điểm du lịch phổ biến
- Gợi ý lịch trình tối ưu tại một địa điểm du lịch cụ thé
- Cho phép người dùng sửa lịch trình để phù hợp với mỗi nhóm
Nôi dung 4: Xây dựng các chức năng chia sẻ vi trí giữa các thành viên trong nhóm.
Mục đích: Tạo ra chức năng chia sẻ vi trí trực tiêp giữa các thành viên của nhóm
Trang 19trong quá trình của chuyến đi Thông qua chức năng trên các thành viên sẽ biết được vịtrí hiện tại của nhau hiển thị trên ban đồ, điều hướng tìm đường đi một cách chính xácnhất tránh cho việc lạc đường, mất nhiều thời gian tìm nhau.
Phương pháp thực hiện: [6] [7] Tham khảo công nghệ, ứng dụng (Google API,
Facebook, Google maps ) có liên về chia sẻ vị trí hiện tại, điều hướng đường đi Từ đó
sử dụng công nghệ thích hợp với chức năng của ứng dụng.
Kết quả thực hiện: Hoàn thành một ứng dụng đa nền tảng (IOS, Android, webapplication) cung cấp cho người dùng với những chức năng:
- Chia sẻ vị trí hiện tại của nhau trên ban đồ.
- _ Điều hướng, tìm đường di giữa các thành viên
Nôi dung 5: Xây dựng các chức năng hỗ trợ ứng dụng.
Mục đích: Tạo ra và phát triển ứng dụng có các chức năng hỗ trợ: chat nhóm,chia sẻ hình ảnh, vị trí những địa điểm mà nhóm đã đi trên bản đồ, đồng thời nhóm cũng
sẽ tạo ra chức năng cho phép người dùng chia hình ảnh, vị trí địa điểm đã được lưu trữlên mạng xã hội dé nhiều người dùng biết đến (facebook, instagram )
Phương pháp thực hiện: Bắt tay vào code các chức năng của ứng dụng Sau khi
đã tạo ra các chức năng đã được hiện thực hoá trên ứng dụng tiễn hành kiểm tra nếu hợp
lý chức năng sẽ được giữ nguyên, nếu không hợp lý chức năng sẽ được sửa cho đến khi
phù hợp.
Kết quả thực hiện: Hoàn thành một ứng dụng đa nền tảng (IOS, Android, webapplication) cung cấp cho người dùng với những chức năng:
-_ Nhắn tin nhóm nhóm ( văn bản, audio, hình anh )
- Luu trữ thông tin, hình ảnh, vị trí địa điểm của chuyến đi
- Chia sẻ hình ảnh, vị trí những địa điểm mà nhóm đã đi trên bản đồ đã được
lưu trữ, đồ ng thời có thể chia sẻ lên các trang mạng xã hội (Facebook,
Instagram ) để nhiều người dùng biết đến
Trang 20CHƯƠNG 2 KHAO SÁT THUC TE VÀ KIÊN THỨC NEN TANG
2.1 Khảo sát thực tế
Với một đề tài — ý tưởng, một điều khá quan trọng đó chính là xem xét xem ý
tưởng đó làm được gi, phục vụ cho ai, cũng như xác định xem ý tưởng đó có từng được
phát triển chưa; nếu có, những điều làm được và chưa được là gì, dé từ đó người tác giả
có thé tham khảo cũng như rút kinh nghiệm cho chính mình
Ngoài ra, lý thuyết phải đi đôi với thực tế, đó cũng là một điều quan trọng Vì thé,
việc thu thập dit liệu, khảo sát từ thực tế giúp một ý tưởng — đề tài có tính ứng dụng cao,
chứ không chỉ còn là lý thuyết suông Ở mục này, nhóm tác giả sẽ đề cập đến những điều
đã tìm hiểu được trong quá trình khảo sát từ thực tế:
13:24 | 0,0KB/s ©
€ dulch Q Ứ
3 “S4 Í
x 4 trở lên Lựa chọn của biên tập viên
Traveloka: Đặt chỗ ở, vé bay, tour & trải
¥ Quảng cáo - Traveloka - Du lịch và Dia phương
48w 37MB []10 Tr+
Agoda
sosse Quảng cáo - agoda.com
45% 63MB @ Lựa chọn của biên tập viên
TripHunter: Lịch trình du lich tự túc & đ
TripHunter JSC - Du lịch và Địa phương
43* 24MB 10 N+
Ờ - Cộng đồng du lịch phượt
( ) Ờ Phượt - Du lịch và Địa phương
50% 14MB ]5N+
AO Hướng dan Du lịch Việt Nam
TONG CỤC DU LỊCH - Du lịch và Địa phương
43% 21MB [#3 500+
Triptour - Chợ tour trực tuyến
TEKGURU CO LTD - Du lịch và Địa phương
47* 49MB @1N+
Du lịch Việt Nam inVietnam
inVietnam - Du lịch và Địa phương
40% 33MB []10N+
Traveloka: Đặt chỗ ở, vé bay, tour & trải
Traveloka + Du lịch và Địa phương
Traveloka: Đặt chỗ ở, vé bay, tour & trai
Traveloka - Du lịch và Địa phương
48% 37MB E]10Tr+
Travel Buddy: Find a Local & Plan Your
Terrainspotter + Du lịch và Dia phương
44% 17MB [100 N+
EiEibEI
Baidu Map + Du lịch và Địa phương
35* 103MB f1 Tr+
Funliday - Travel planner, collaborative
Funliday Inc - Du lịch va Địa phương
45% 8,9MB © 100N+
Lich Van Nién - Lich Am Duong
astudio + Năng suất
43% 2,3MB E]500N+
Bản đồ đường di - Định vi GPS & Tim đ
App Devz Team + Du lịch và Địa phương
44* 31MB E]1Tr+
HOTSGO PLAN Lịch trình du lịch và ghi
HOTSGO - Du lịch và Địa phương
40% 31MB 100 N+
Hình 1.1 Màn hình khảo sát những ứng dụng cần thiết khi di du lịch từ “CH Play”
Trang 21Hiện nay trên thị trường có nhiều ứng dụng hỗ trợ du lịch như:
- Cac ứng dụng hỗ trợ đặt xe và di chuyển : Grab, Goviet, Vexere, MyGo
- Các ứng dung đặt phòng — Khách san, Nha nghỉ, Hostel, Villa, Homestay:
HotelsCombined, Booking, Agoda, Traveloka, Trivago
- Các ứng dụng quản lý chi tiêu: Splitwise, Misa, Money lover, PocketGuard,
HomeBudget
- Cac ứng dụng hỗ trợ tìm kiếm tour, lên lich trình đi du lich: TripHunter, Travel
Smart, Klook, Mytourn.vn, Viettravel
- Cac ứng dụng lưu lại kỉ niệm khi đi du lịch (hình ảnh, địa điểm những nơi đã đi
qua ) : Instagram, EverNote, Google Keep,
Đa số những ứng dụng trên chỉ tập trung vào một khía cạnh cụ thê nên khi người dùngmuốn hỗ trợ đầy đủ các chức năng bắt buộc phải cài đặt nhiều ứng dụng Vì thế pháttriển và xây dựng những ứng dụng tích hợp nhiều tính năng với nhau trên cùng một ứng
dụng là điều rat cần thiết cho người dùng phù hợp với xu thé công nghệ hiện nay
2.2 Kiến thức nền tảng
Trong phần này nhóm sẽ tiến hành tìm hiểu, Nắm rõ nhu cầu của người sử dụng
về vấn đề liên quan đến các chức năng của ứng dụng, lên kế hoạch xây dựng các chức
năng phù hợp, cần thiết và thuận tiện nhất cho người dùng
2.2.1 Cac phần mềm phục vụ đồ án
2.2.1.1 Android Studio
Một phầm mềm bao gồm các bộ công cụ khác nhau dùng dé phát triển ứng dụngchạy trên thiết bị sử dụng hệ điều hành Android như các loại điện thoại smartphone, các
tablet Android Studio được đóng gói với một bộ code editor, debugger, các công cụ
performance tool và một hệ thống build/deploy (trong đó có trình giả lập simulator đểgiả lập môi trường của thiết bị điện thoại hoặc trên máy tính) cho phép các lập trình viên
có thê nhanh chóng phát triển các ứng dụng từ đơn giản tới phức tạp
Trang 222.2.1.3 Genymotion
Một trình giả lập dành cho Android (x86 với khả năng tăng tốc phần cứng
OpenGL) giống Andoroid Studio và có sẵn các phiên bản Android được cấu hình sẵn
Đây là máy ảo rất tuyệt vời dùng dé dành cho việc thử nghiệm ứng dụng Theo đánh giácủa giới lập trình viên thì đây là máy ảo chạy nhanh rất nhiều lần so với AndroidEmulator và giúp tiết kiệm thời gian khi test ứng dụng.
2.2.1.4 Navicat Premium
Công cu quản ly co sở đữ liệu, tích hop day du các chức năng hiện đại, kết ni
các cơ sở dữ liệu lại với nhau trên một giao diện thân thiện, dễ phân tích, thiết kế các
cơ sở dữ liệu phù hợp với chức năng trong hệ thống, tiện lợi hơn so với thông thường.
Không chỉ dừng lại ở đó, Navicat còn tương thích tốt với các dịch vụ đám mây đang rấtphô biến hiện nay như Google Cloud, SQL Azure, Amazon,
2.2.1.5 Git
Công cu giúp quản ly source code tô chức theo dang dit liệu phan tán , giúp đồng
bộ source code của team lên một server, hỗ trợ các thao tác kiểm tra source code trong
quá trình làm việc Một số câu lệnh của Git thường dùng như: git add , git commit, git
push, git rebase
2.2.1.6 GitHub
Một hệ thống quản lý dự án và phiên ban code, hoạt động giống như một mạng
xã hội cho lập trình viên Các lập trình viên có thể clone lại mã nguồn từ một reposItory,
một dịch vụ máy chu repository công cộng, mỗi người có thé tạo tài khoản trên đó dé tạo
Trang 23ra các kho chứa của riêng mình dé có thé làm việc GitHub còn là một dịch vụ nồi tiếng
cung cấp kho lưu trữ mã nguồn “Git” cho các dy án phần mềm “Github có đầy đủ những
tính năng của Git”, ngoài ra nó còn bé sung những tính năng về social dé các developer
tương tác với nhau.
2.2.1.7 Github Desktop
Công cụ trực quan cho phép quản ly “Local Repository” trên máy tinh Cấu hình
dé có thể đồng bộ hóa dữ liệu lên Repository server, giao diện thân thiên, dễ sử dụng, rất
phù hợp cho lập trình viên hiện nay.
2.2.2 Web Application
Web — Application: sử dung ngôn ngử lập trình đơn giản HTML, CSS dưới dang
file chấm “pug”, giúp tách mã HTML thành các phần nhỏ hơn mà có thể sử dụng lại trênnhiều tập tin HTML, vì đặc điểm trên nhóm tác giả đã chọn định dang file trên dé pháttriển Web Application
2.2.3 Framework React — Native
React Native là một framework ứng dung di động mã nguồn mở, được phát triển
bởi Facebook Bản phát hành bản đầu tiên của nó là vào ngày 26 tháng 3 năm 2015, tại
Hội nghị Configuration React JavaScript.
React Native được thiết kế dé tao các ứng dung di động cho iOS va Android bangcách cung cấp cho các developer một công cụ dé sử dung React cùng với nền tang di
động gốc
Cho phép xây dựng các ứng dụng trên Android và iOS chỉ với một ngôn ngữ
thống nhất là Javascript nhưng mang lai trải nghiệm native app thực sự Không như cácframework hybrid khác (viết một lần triển khai nhiều noi), React native tập trung vàoviệc một lập trình viên làm việc hiệu quả trên môi trường đa nền tảng như thế nào
Điều tuyệt vời là đã được tích hợp tính năng Live Reload — tương tự tính tính
nang Reload, trong khi Live Reload chỉ tải lại chức năng/tập tin nào thay đối, thi Reload
sẽ tai lại toàn bộ mã nguồn.
10
Trang 24Ngoài ra, cũng dễ dàng debug Javascript trong Chrome và Safari Đối với những
lỗi thuộc Native thì phải cần đến XCode cho iOS hoặc Android Studio cho Android
Thấy được những ưu điểm của ngôn ngữ lập trình trên có nhiều ưu điểm so vớicác ngôn ngữ lập trình khác, đặc biệt là hỗ trợ đa nền tảng nên nhóm tác giả đã quyết
Do tốc độ xử lý nhanh, nhờ cơ chế xử lý bất đồng độ (non-blocking), NodeJS
có thê xử lý hàng ngàn kết nối cùng lúc mà không gặp bất cứ khó khăn nào, dé dàng
mở rộng tính năng nên vì thế nhóm tác giả đã sử dụng ngôn ngữ lập trình trên dé thiết
lập và chạy server.
2.2.5 MongoDB
Một chương trình cơ sở dữ liệu mã nguồn mở được thiết kế theo kiêu hướng đốitượng trong đó các bảng được cấu trúc một cách linh hoạt cho phép các đữ liệu lưu trênbảng không cần phải tuân theo một dạng cấu trúc nhất định nào Chính do cấu trúc linhhoạt này nên MongoDB có thé được dùng dé lưu trữ các dữ liệu có cấu trúc phức tạp và
đa dạng và không có định (hay còn gọi là Big Data)
Trong đề tài này do nhóm tác giả hướng đến phát triển ứng dụng mạng xã hội dữliệu khá lớn nên sử dụng cơ sở dữ liệu MongDB để lưu trữ dit liệu tương tac.
2.2.6 Cloud Server — Virtual Machine Unbutu 18.04
Sử dung Virtual Machine Unbutu 18.04 tai dia chi https://portal.azure.com.
Thông tin cơ ban về host này là host có cung cấp dịch vu Virtual Machine hay còn gọi
là Virtual Private Server(VPS) giống như một con máy vật lý nhưng có thể tự chọn cấu
hình(Rom, Ram) lớn nhỏ phụ thuộc vào mục đích của người sử dụng Có 2 cách truy cập
II
Trang 25vào VPS là sử dụng Remote Desktop hoặc SSH thông qua dia chi IP public mà azure
cung cap
2.2.7 Docker — Công nghệ triển khai Server
Docker: Công nghệ mới hiện nay được rất nhiều người sử dụng do đễ dàng triểnkhai, tính tiện lợi nhanh chóng, tiết kiệm resource, hệ thong có mức độ tự động mở rộngcao hon,dé dang automate (tự động hóa) việc quản lý các docker container Thấy đượcnhững điểm mạnh trên của Docker nhóm tác giả đã quyết định dùng công nghệ trên détriển khai Server
Sử dụng một sô công nghệ docker đê triên khai trên server :
- Docker: dùng dé build docker container với Dockerfile cấu hình tương ứng
với server ở may local, khi build xong sử dụng lệnh “push” container “Docker Hub”
với image tương ứng Sau đó SSH và dia chỉ IP cua Virtual Machine Unbutu 18.04 trên cloud dung lệnh “pull” docker image tương ứng.
- Docker Hub là một “github for docker images” Trên “Docker Hub” có hang
ngàn public images được tao bởi cộng đồng cho phép dé dang tim thay những image bạn
cần hoặc có thé sử dụng image của bạn
- Docker-compose: file cau hình dùng dé định nghĩa, kết nối các services, đồngthời chạy nhiều container trên ứng dụng Nó cũng có thể giúp tự động tải các image chưa
có trong file cau hình “doeker-compose.yml”
2.2.8 Framework Scrapy
Scrapy là một web framework rất mạnh mẽ của Python trong việc trích xuất dirliệu Scrapy có kiến trúc sự kiện, cho phép thực hiện các công việc như dọn đẹp, tạo, lưu
trữ, thu thập dữ liệu từ các trang web.
Một số tính năng của scrapy như:
- (C6 thể làm việc với các đoạn code HTML “xấu”
- Cộng đồng lớn
12
Trang 26- _ Mã nguồn ồn định.
- _ Tốc độ xử lí nhanh theo dạng bat đồng bộ
- _ Có thé lưu dữ liệu theo nhiều định dag như JSON, CSV, XML
- Có thé trích xuất dir liệu bằng cách sử dụng các biéu thức XPath hay CSS
2.2.9 Rapidapi
Thị trường bên thứ ba cung cấp hàng ngàn API cho người dùng sử dụng giốngnhư “Google API”, không trả phí nhưng bị giới hạn số lượng request người của trongmột ngày Khi đăng ký tài khoản “Rapidapi” sẽ cung cấp một key cho người dùng Một
số API nhóm sẽ sử dụng như: TrueWay Directions API, TrueWay MaTrix API
2.2.10 Mô hình triển khai hệ thống MVC (Model - View - Controller)
Các thành phần trong MVC:
- Model: được giao nhiệm vụ cung cấp dir liệu cho cơ sở dir liệu và lưu dữ liệuvào các kho chứa đữ liệu Tất cả các nghiệp vụ logic được thực thi ở Model Dữ liệu vào
từ người dùng sẽ thông qua View đến Controller và được kiểm tra ở Model trước khi lưu
vào cơ sở dữ liệu Việc truy xuất, xác nhận, và lưu dữ liệu là một phần của Model
- View: hién thị các thông tin cho người dùng của ứng dụng và được giao nhiệm
vụ cho việc nhận các dữ liệu vào từ người dùng, gửi đi các yêu cầu đến controller, sau
đó là nhận lại các phản hồi từ controller và hiền thị kết quả cho người dùng
- Controller: đảm nhiệm việc cập nhật bộ phận hiền thị (View) khi cần thiết Bộđiều khién này nhận dữ liệu nhập từ người dùng, truy xuất các thông tin cần thiết từ môhình trong (Model), và cập nhật thích hợp phần hiển thị (View) Giao điện với người sửdụng phần mềm được thiết lập nhờ sự tương tác qua lại giữa View và Controller: hai bộphận này chính là phan trình bày bên ngoài của đối tượng biểu diễn bên trong
Ưu điêm và nhược điêm của mô hình MVC:
- Ưuđiểm:
13
Trang 27e Trình tự xử lý rất rõ ràng.
e© Mô hình MVC quy hoạch các class/function vào các thành phần riêng
biệt Model View Controller , việc đó làm cho qua trình phat triển
-quản lý - vận hành - bảo trì web diễn ra thuận lợi hơn, tạo ra được các chức
năng chuyên biệt hoá đồng thời kiêm soát được luồng xử lý
e Tạo mô hình chuẩn cho dự án, khi người có chuyên môn ngoài dự án tiếp
cận với dự án dễ dàng hơn.
e_ Mô hình đơn giản, dễ hiểu, xử lý những nghiệp vụ đơn giản, va dé dang
triển khai với các dự án nhỏ
- Nhược điểm:
Đối với dự án nhỏ việc áp dụng mô hình MC gây công kénh, tốn thời gian
trong quá trình phát triển Tốn thời gian trung chuyên dữ liệu của cácthành phần
2.3 Kết chương
Qua quá trình tìm hiểu cũng như khảo sát thực tế, nhóm tác giả phần nào đã hiểuđược những kiến thức cơ bản, nhóm đã lên được ý tưởng, những chức năng cần thiết choứng dụng của mình Đồng thời áp dụng những công nghệ, ngôn ngữ lập trình phù hợp,cũng như các công cụ hỗ trợ cho quá trình xây dựng hệ thông
Trong chương tiếp theo, Nhóm tác giả sẽ trình bày về mô hình kiến trúc, cáchthức hoạt động của hệ thống
14
Trang 28CHUONG3 PHAN TÍCH VÀ THIET KE HE THONG
1OS Android Browser - Web Application
Mô hình 3.1 Triển khai hệ thống sử dụng mô hình MVC
Kiến trúc hệ thống sử dung mô hình MVC bao gồm các thành phan:
- Docker Hub: Kho lưu trữ “docker images” cung cấp images cho ngươi sử dung
- Server: Nơi tiếp nhận các request từ phía Client thong qua API đã được xây dung,
tiến hành xử lý và trả kết quả về cho Client
- API: Giao thức kết nối giữa Client và Server, phương thức trao đôi dữ liệu giữa
các hệ thống
15
Trang 29Client (iOS, Android, Browser - Web Application): Tương tác trực tiếp với ứng
dụng gửi request và nhận kết quả từ Server thông qua API
MongoDB: Cơ sở đữ liệu dùng dé lưu trữ các dữ liệu của hệ thống.
Mô tả hoạt động các module trong hệ thốngDocker Hub: Sau khi build các images cần sử dụng tiến hành dùng lệnh push dé
đưa các images lên Docker Hub.
Server:
e Trên Server tiên hành “pull docker image” muôn sử dung từ “Docker
Hub”.
Tạo một file “docker-compose.yml” nhằm mục đích cấu hình những
“docker image” muốn chạy Trong file “docker-compose.yml” cấu hình
các trường cơ bản như: container-name (tên container), image (docker
image), port (công của docker image), links (cấu hình kết nối với các imagevới nhau ma bạn muốn)
Sau khi hoàn tất quá trình cấu hình file “docker-compose.yml”, dùng lệnh
“docker-compose up -d” dé chạy file “docker-compose.yml” (với “-đ” là
chế độ tách biệt, trong chế độ này các conatiner sẽ chạy riêng biệt với hệthống có thể tuỳ ý gõ các lệnh khác đề kiểm tra) Gõ lệnh “docker ps” kiểmtra các container đang chạy, nếu đúng với các image đã cấu hình trong file
“docker-compose.yml” quá trình triển khai Server hoàn tat (Chú ý khi
chạy file “docker-compose.yml” những image nao chưa có trên Server nó
sẽ tiền hành lên “Docker Hub” pull về.)
Client: Phía người dùng (Client - iOS/Android/Browser-Web Application gửi
request đến Server, thông qua API với phương thức tương ứng (GET, POST,
PUT, DELETE ) bộ phan Controller sẽ có nhiệm vụ chấp nhận yêu cầu và xử
lý yêu cầu đó Nếu cần thiết nó sẽ gọi đến phần Model (bộ phận tương tác và làm
việc với Database) dự liệu trả về được phía Client tiếp nhận
16
Trang 30- API: Có nhiệm vụ nhận request từ người dùng gửi lên Server và tiếp nhận toàn
bộ kết quả từ Server trả về cho người dùng
MongoDB: Tương tác trực tiếp với Server dùng dé lưu trữ dữ liệu của hệ thống
người dùng Khi có sự tương tác của người dùng với ứng dụng những dữ liệu cân
thiết như: thông tin tài khoản người dùng, hoạt động người dùng trong hệ thống
sẽ được lưu lại.
3.2 Mô hình thiết kế cơ sở dữ liệu
3.2.1 Mô hình quan hệ các bang trong cơ sở dữ liệu
[Ho wesouser_activity J@veootransaeionuser Ïj© wesotranselion {Jo weootipuser Jo weoop
® id : int(10) @ id: int(10) ° 71 @ id : int(10) @ id : int(10) @ id:int(10)
# user_id : int(10) PN # transaction_id : int(10)
# transaction_id : int(10) cael user_id : int(10)
# trip_id : int(10) > 4 trip_id : int(10)
© list_user : varchar(255) # amount_user : double
» type : varchar(255) # type : int(10)
¡ added_ date : datetime # total : double redued_date : datetime ® create_date : datetime
© create_date : datetime ø update_date : datetime
© update_date : datetime @ delete_date : datetime
9 id: int(10) a @ id: int(10) |
# type : int(1) for t— \ vationUs h GZ 5 name : varchar(255)
© message : varchar(255) | 0 id : int(10) # email : varchar(255) | @ id : int(10)
location : longtext _@ password : varchar(255) I
# latitude : float 5 location : longtext
# longitude : float name : varchar(255)
# isDelete : tinyint(1) # code : int(10)
© create_date : datetime © create_date : datetime update_date : datetime © update_date : datetime
ím delete_date : datetime ¡ delete_date : datetime
avatar : varchar(255)
_@ secretToken : varchar(255)
# active : tinyint(1) pinCode : varchar(255)
0 desc : varchar(255)
1 ạ code : int(10)
# latitude : float
# longitude : float ) noAccent : varchar(255)
description : varchar(255) ) images : longtext
ñ create_date : datetime
ø update_date : datetime
© delete_date : datetime
Trang 31Mô hình co sở dữ liệu trên gôm có 14 bang: user, trip, trIp user, transaction,
transaction user, user_activity, locationUser, planUser, placeLocation, planLocation,
detailLocation, mainLocation, imageTrip, chat Biểu thi những dữ liệu trong các bảng
có mối quan hệ với nhau, đồng thời thể hiện chi tiết những chức năng người dùng tươngtác với hệ thống, ví dụ người dùng tạo trip thêm thành viên vào trip thì các bảng user,
trip, trip_user sẽ có môi quan hệ với nhau.
3.2.2 Mô tả các bảng trong cơ sở dữ liệu
3.2.2.1 Bảng quan lý thông tin và hoạt động người dùng
Bảng 3.1 Bảng quản lý thông tin và hoạt động người dùng.
user
Luu trữ thong tin người dùng của ứng dụng, ví dụ như: tên người
dùng, tài khoản email, mật khẩu.
user_activity
Luu trữ hoạt động cua người dùng trong ứng dụng như thêm, xóa, sửa
3.2.2.2 Bảng quan lý thông tin địa điểm và lịch trình người dùng
Bảng 3.2 quản lý thông tin địa điểm và lịch trình người dùng
Trang 32những địa điểm du lịch nhỏ: Hồ Xuân Hương, hồ Tuyển Lâm,
đên Trúc Lâm
Lưu trữ gợi ý lịch trình của những địa điểm lớn trong nước,
những lịch trình này được tạo ra dựa trên những địa điểm nhỏ có
planLocation
trong địa điêm lớn Dựa trên khoảng cách của những địa điêm,
những lịch trình tối ưu về di chuyển sẽ được tạo ra
Lưu trữ lịch trình do người dùng tạo ra dựa trên lịch trình mẫu
planUser
hoặc lịch trình hoàn toàn mới theo ý người dùng.
3.2.2.3 Bang quản lý thông tin nhóm du lịch của người dùng
Bảng 3.3 quản lý thông tin nhóm du lịch của người dùng
Bảng cơ sở sữ liệu Chức năng
Lưu trữ các thông tin nhóm du lịch Ví dụ như tên nhóm, ngày
trip ; ñ , ị
bat đâu, ngày ket thúc, sô thành viên tham gia.
trip_user Luu trữ thong tin người dùng tham gia vào các nhóm du lich.
Luu trữ thông tin giao dịch của người dùng Ví dụ như tên giao
transaction
dịch, số tiền giao dịch
Lưu trữ thông tin người dùng tham gia giao dich Vi dụ như số
Transaction_user tién thanh vién tra giao dich, s6 tién thanh vién phai chiu cho
giao dich
Lưu trữ vi trí các thành viên trong nhóm du lich, cho phép chia
location_user ¬ ¬
sẻ vi trí của nhau trên ban đô.
placeLocation Lưu trữ thông tin địa điểm mà nhóm đã di qua
19
Trang 33Lưu trữ hình ảnh của chuyến đi, được sắp xếp theo thời gian cuthể theo quá trình lưu lại của người dùng
chat
Lưu trữ dữ liệu hoạt động của các thành viên trong nhóm thông
qua nhăn tin văn bản, ghi âm giọng nói, chia sẻ hình ảnh
3.2.2.4 Bảng mô tả model cơ sở dữ liệu
Mô tả các bang dữ liệu: Mỗi bảng trong cơ sở dữ liệu thé hiện chi tiết dữ liệu mà người
dùng tương tác với hệ thống bao gồm tên trường thuộc tính, kiểu dữ liệu phù hợp tương
ứng với thuộc tính.
Bảng 3.4 Bảng mô tả model user.
Thuộc tính Kiểu dữ liệu Mô tả
1d integer(10) Mã người dùng
name varchar(255) Tên người dùng
email varchar(255) Email người dùng
password varchar(255) Mật khâu
avatar varchar(255) Ảnh đại diện người dùng
secretToken varchar(255) Mã xác nhận người dùng
active tinyint (1) Trang thai
pinCode varchar(255) Mã xác nhận email
totalBalanceTrip double Tổng tiên chuyến đi người
dùng create-date datetime Ngày tạo
20
Trang 34update_ date datetime Ngày sửa
Bảng 3.5 Bảng mô tả model trip.
Thuộc tính Kiểu dữ liệu Mô tả
id integer(10) Mã chuyến đi
name varchar(255) Tên chuyến đi
author integer(10) Nguoi tao
oweUser double Số tiền người dùng trong
trip
avatarGroup varchar(255) Anh dai dién chuyén di
membersTrip integer(10) Tổng số thành viên của
chuyến đi
begin date datetime Ngay bat dau
end_ date datetime Ngày kết thúc
1sDelete tinyint(1) Trạng thai tồn tai
create_date datetime Ngày tao
update date datetime Ngày sửa
delete_date datetime Ngày xóa
21
Bảng 3.6 Bang mô ta model trip_user.
Trang 35Thuộc tính Kiểu dữ liệu Mô tả
1d integer(10) Mã chuyến đi người dùng
user_id integer(10) Mã người dùng
trip_id integer(10) Ma chuyén di
isCustom tinyint(1) Quyên chỉnh sửa
1sDelete tinyint(1) Trạng thái tồn tai
create_date datetime Ngày tao
update date datetime Ngay stra
delete_date datetime Ngày xóa
Bảng 3.7 Bảng mô tả model transaction.
Thuộc tính Kiểu dữ liệu Mô tả
id integer(10) Mã giao dịch
name varchar(255) Tên giao dịch
author integer(10) Người tao
avatar varchar(255) Anh dai dién giao dich
amount double Tién giao dich
imageURL longtext Hinh anh diad iém giao
dich
trip_id integer(10) Mã chuyên đi
22
Trang 36list_user longtext Danh sách thành viên tham
gia giao dịch
isDelete tinyint(1) Trạng thái tồn tai
create date datetime Ngày tạo
update_ date datetime Ngày sửa
delete date datetime Ngày xóa
Bang 3.8 Bang mô tả model transaction_ user.
1d integer(10) Mã giao dịch người dung
transaction_id integer(10) Mã giao dich
user-id integer(10) Mã người dùng
trip 1d integer(10) Mã chuyên đi
amount_user double Tiền giao dich người dùng
type integer(10) Loại giao dich người dùng
total double Số dư giao dịch ngời dùng
create date datetime Ngày tao
update date datetime Ngày sửa
delete date datetime Ngày xóa
23
Trang 37Bảng 3.9 Bang mô ta model user_activity.
Thuộc tính Kiểu dữ liệu Mô tả
1d integer(10) Mã hoạt động người dùng
user 1d integer(10) Mã người dùng
trip 1d integer(10) Mã chuyên đi
transction_ 1d integer(10) Ma giao dich
list_user longtext Mang thanh vién (thém
hoặc xóa bớt thành viên
trong chuyến đi)
type varchar(255) Loại hoạt động
create_date datetime Ngay tao
added_date datetime Ngày thêm thành viên
reduce_ date datetime Ngày giảm thành viên
update_ dafe datetime Ngày sửa
detele_date datetime Ngày xóa
Bang 3.10 Bảng mô tả model planUser.
Thuộc tính Kiểu dữ liệu Mô tả
1d integer(10) Mã kế hoạch người dùng
đã tạo
user 1d integer(10) Mã người dung
trip 1d integer(10) Mã chuyến đi
24
Trang 38location longtext Tọa độ các địa điểm hành
trình chuyến điname varchar(255) Tên plan của chuyến đi
code integer(10) Mã code chuyến đi
create date datetime Ngày tao
update date datetime Ngày sửa
detele date datetime Ngày xóa
Bảng 3.11 Bảng mô tả model planLocation.
Thuộc tính Kiểu dữ liệu Mô tả
1d integer(10) Mã toa độ kế hoạch
url varchar(255) Hinh anh dia diém
title varchar(255) Tiéu dé dia diém
desc varchar(255) Mô ta địa điểm
code integer(10) Mã code chuyến đi
latitude float Vĩ độ địa điểm
longitude float Kinh độ địa điểm
noAccent varchar(255) Tên địa điểm không dau
create date datetime Ngày tao
update date datetime Ngày sửa
detele_date datetime Ngày xóa
25
Trang 39Bảng 3.12 Bảng mô tả model placeLocation.
Thuộc tính Kiểu dữ liệu Mô tả
id integer(10) Mã tọa độ kế hoạch
trip id integer(10) Mã chuyên đi
author integer(10) Thanh vién ghi lai thong
tin
imageURL longtext Hinh anh dia diém
nameTransaction varchar(255) Tén giao dich
amountTransaction double Tién giao dich
address varchar(255) Dia chi dia diém
latitude float Vi độ địa điểm
longitude float Kinh độ địa điểm
create date datetime Ngày tao
update date datetime Ngày sửa
detele_ date datetime Ngày xóa
Bảng 3.13 Bảng mô tả model mainLocation.
Thuộc tính Kiểu dữ liệu Mô tả
id integer(10) Mã địa dién chính
url varchar(255) Hinh anh dia diém
title varchar(255) Tiéu dé dia diém
26
Trang 40desc varchar(255) Mô ta dia điểm
code integer(10) Mã code chuyến đi
create_date datetime Ngày tao
update date datetime Ngày sửa
detele_date datetime Ngày xóa
Bảng 3.14 Bang mô ta model detailLocation.
Thuộc tinh Kiểu dữ liệu Mô tả
id integer(10) Mã dia điểm chỉ tiết
url varchar(255) Hinh anh dia diém
title varchar(255) Tiéu dé dia diém
desc varchar(255) Mô tả dia điểm
code integer(10) Mã code chuyến đi
latitude double Vĩ độ địa điểm
longitude double Kinh độ địa điểm
noAccent varchar(255) Tên địa điểm không dấu
description varchar(255) Mô tả chỉ tiết dia điểm
images longtext Hinh anh chi tiét dia diém
create date datetime Ngày tao
update date datetime Ngày sửa
detele date datetime Ngày xóa
27