Hiện nay nhu cầu mong muốn giao lưu kết bạn càng ngày càng cao đặc biệt với những người có chung sở thích và đặc biệt hơn nữa là chung sở thích đi phượt. “Phượt” – Chắc hẳn hiện nay không ai là không nghe nhiều tới từ ngữ phổ biến này. DU LỊCH BỤI hay còn gọi là PHƯỢT là bạn tự chọn phương tiện cho mình, đi bất cứ đâu mà bạn muốn và có thể đi một mình hay đi một nhóm người.Hầu hết các dân phượt tham gia phượt đôi khi không có kế hoạch, không biết mình đi đâu và không biết mình đi đường nào, đơn giản là họ muốn khám phá, muốn thử sức và muốn tìm tòi những thứ mình chưa biết. Điều này một mặt khá tốt, tuy nhiên việc đi không nắm rõ lộ trình cũng sẽ gây nguy hiểm rất nhiều.Hiện nay cũng đã xuất hiện một vài ứng dụng trên android hỗ trợ để giảm thiểu rủi do cho dân phượt như: Google maps, GPS Status Toolbox, Smart Compass, Smart Measure, My Track,… Với mong muốn tạo một ứng dụng trên android kết hợp việc du lịch và mạng xã hội, chúng tôi nghiên cứu và phát triển một phần mềm có tên WeGo. Trong khóa luận này tôi xây dựng một phần mềm trên android nhằm phục vụ mục đích của những người thích đi phượt hay đi du lịch. Với ứng dụng, mọi người có thể tham gia hay tạo một tour về thời gian, địa điểm, tự xây dựng lộ trình đi của mình, đánh dấu các điểm đã đi qua, theo dõi thành viên trong nhóm tránh lạc nhau……Ứng dụng này có chức năng đơn giản nhưng đã được xây dựng một cách khá hoàn thiện, từ quá trình xử lý dữ liệu trên server, liên kết dữ liệu giữa server và client, về giao diện và cả tính năng mở rộng,…. Giúp người dùng có thể đơn giản khi sử dụng, từ đó giúp cho người dùng, đặc biệt là dân phượt tham gia các chuyến đi tốt hơn.
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Khuất Thanh Sơn
MẠNG XÃ HỘI DU LỊCH DỰA TRÊN
VỊ TRÍ, ĐỊA ĐIỂM
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
HÀ NỘI – 2016
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Khuất Thanh Sơn
MẠNG XÃ HỘI DU LỊCH DỰA TRÊN
VỊ TRÍ, ĐỊA ĐIỂM
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Cán bộ hướng dẫn: ThS.Vũ Quang Dũng
Cán bộ đồng hướng dẫn: CN Bùi Đức Hiếu
HÀ NỘI – 2016
Trang 3LỜI CẢM ƠN
Trước tiên, tôi xin gửi lời cảm ơn các thầy cô và các cán bộ của trường đại họcCông Nghệ - Đại học Quốc Gia Hà Nội đặc biệt các thầy cô giáo thuộc khoa CNTT đãdạy bảo tận tình và luôn điều kiện thuận lợi cho tôi được học tập và nghiên cứu trongsuốt 4 năm đại học
Tôi xin chân thành gửi lời cảm ơn sâu sắc đến thầy giáo ThS Vũ Quang Dũngngười đã tận tình hướng dẫn và đóng góp ý kiến quý báu trong suốt quá trình thực hiệnkhóa luận tốt nghiệp Đồng thời, tôi xin cảm ơn anh Bùi Đức Hiếu, anh Dương MạnhTình Samsung Vietnam Mobile R&D Centre(SVMC) - Cty Samsung đã cho tôi nhữnggợi ý và lời khuyên giúp tôi hoàn thiện đề tài
Tôi cũng gửi tới lời cảm ơn đến bạn Ngô Quang Đại (Lớp K57CC- Đại học CôngNghệ, Đại học quốc gia Hà Nội) là người bạn đã đồng hành với tôi trong khóa luận này.Khóa luận của tôi sẽ không thể thực hiện được nếu thiếu đi bạn
Cuối cùng, tôi muốn gửi lời cảm ơn đến gia đình bạn bè, đặc biệt là bố mẹ, nhữngngười đã không quản khó khăn, vất vả nuôi con ăn học để trở thành người như ngày hômnay
Tôi xin chân thành cảm ơn!
Trang 4TÓM TẮT Tóm tắt: Hiện nay, có rất nhiều người đặc biệt là các bạn trẻ ham muốn tham quan các
địa danh trên đất nước để hiểu thêm về lịch sử và tìm tòi những vẻ đẹp của đất nước Tuynhiên không ít người gặp rất nhiều khó khăn từ việc đăng kí tham gia phượt, cho đến khi
di chuyển dễ lạc nhau hay gặp sự cố Bên cạnh đó việc phát triển mạnh mẽ của côngnghệ thông tin đặc biệt là trên dòng điện thoại smartphone mà hầu hết ai cũng có Xuấtphát từ ý tưởng muốn đơn giản và hỗ trợ những bạn trẻ có đam mê đi “phượt”, tôi mongmuốn viết nên một phần mềm để hỗ trợ “Dân phượt” khi tham gia các chuyến đi Dovậy, trong đề tài khóa luận này tôi muốn giới thiệu phần mềm ứng dụng hỗ trợ dân phượttrên Android Nội dung của khóa luận sẽ tập trung trình bày những đặc điểm cơ bản củakiến trúc MVC, mô hình kiến trúc hướng dịch vụ (SOA–Service Oriented Architectural),tính ưu việt trong ứng dụng “We Go”, và các bước tiến hành sử dụng ứng dụng
Từ khóa: MVC, SOA
Trang 5LỜI CAM ĐOAN
Tôi xin cam đoan rằng mọi kết quả trình bày trong khóa luận đều do tôi thực hiệndưới sự hướng dẫn của ThS.Vũ Quang Dũng
Tất cả các tham khảo nghiên cứu liên quan đều được nêu rõ nguồn gốc một cách
rõ ràng từ danh mục tài liệu tham khảo trong khóa luận Khóa luận không sao chép tàiliệu, công trình nghiên cứu từ người khác mà không chỉ rõ về mặt tài liệu tham khảo
Các thống kê, các kết quả trình bày trong khóa luận đều được lấy từ thực nghiệmkhi chạy chương trình Nếu tôi sai tôi hoàn toàn chịu trách nhiệm theo quy định củatrường Đại học Công Nghệ - Đại học quốc gia Hà Nội
Hà Nội, ngày 17 tháng 4 năm 2016
Sinh viên
Khuất Thanh Sơn
Trang 6MỤC LỤC
3.3 Mô hình MVC trong ứng dụng Mạng xã hội du lịch Wego trên Android 26
Trang 7Chương 5: Kết quả thực nghiệm 48
Trang 8DANH SÁCH KÍ HIỆU, CHỮ VIẾT TẮT
1 SOA Service Oriented Architectural Là mô hình kiến trúc hướng dịch vụ
phần chính: Model, View, Controlelr
Là một API có thể được sử dụng bởiJavascript, VBScript,… hoặc bất cứmột một ngôn ngữ kịch bản trình duyệtweb nào khác để chuyển và thao tác dữliệu XML đến và đi từ một máy chủweb sử dụng phương thức HTTP
4 JSON JavaScript Object Noattion
Là 1 định dạng hoán vị dữ liệu nhanh.Chúng dễ dàng cho chúng ta đọc vàviết Dễ dàng cho thiết bị phân tích vàphát sinh
Trang 9DANH SÁCH HÌNH
Hình 2.1: Mô tả hoạt động MVC 14
Hình 2.2: Mô tả cách hoạt động của Server với ngôn ngữ PHP 19
Hình 3.1: Sơ đồ chức năng của ứng dụng 22
Hình 3.2: Kiến trúc ứng dụng 24
Hình 3.3: Mối quan hệ trong mô hình MVC 26
Hình 3.4: Giao diện đăng nhập 26
Hình 3.5: Một đoạn code xml của giao diện login 27
Hình 3.6 : Mô tả lớp User 27
Hình 3.7: Mô tả lớp Tour 28
Listing 1: Cài đặt controler lớp EditProfileActivity 28
Hình 3.8: Mô hình kiến trúc SOA 30
Hình 4.1: Biểu đồ ca sử dụng của ứng dụng 31
Hình 4.2: Cấu trúc cơ sở dữ liệu 44
Hình 4.3 : Giao tiếp của Webservices 45
Hình 4.4: AccessToken 46
Hình 4.5 : Database trước khi bấm vào Login via Facebook: 47
Hình 4.6 : Database sau khi login 47 Y
Trang 10Chương 1: Mở đầu
1.1 Đặt vấn đề
Hiện nay nhu cầu mong muốn giao lưu kết bạn càng ngày càng cao đặc biệt vớinhững người có chung sở thích và đặc biệt hơn nữa là chung sở thích đi phượt
“Phượt” – Chắc hẳn hiện nay không ai là không nghe nhiều tới từ ngữ phổ biến này
DU LỊCH BỤI hay còn gọi là "PHƯỢT" là bạn tự chọn phương tiện cho mình, đi bất
cứ đâu mà bạn muốn và có thể đi một mình hay đi một nhóm người
Hầu hết các dân phượt tham gia phượt đôi khi không có kế hoạch, không biếtmình đi đâu và không biết mình đi đường nào, đơn giản là họ muốn khám phá, muốnthử sức và muốn tìm tòi những thứ mình chưa biết Điều này một mặt khá tốt, tuynhiên việc đi không nắm rõ lộ trình cũng sẽ gây nguy hiểm rất nhiều
Hiện nay cũng đã xuất hiện một vài ứng dụng trên android hỗ trợ để giảm thiểurủi do cho dân phượt như: Google maps, GPS Status & Toolbox, Smart Compass,Smart Measure, My Track,… Với mong muốn tạo một ứng dụng trên android kết hợpviệc du lịch và mạng xã hội, chúng tôi nghiên cứu và phát triển một phần mềm có tênWeGo
Trong khóa luận này tôi xây dựng một phần mềm trên android nhằm phục vụ mụcđích của những người thích đi phượt hay đi du lịch Với ứng dụng, mọi người có thểtham gia hay tạo một tour về thời gian, địa điểm, tự xây dựng lộ trình đi của mình,đánh dấu các điểm đã đi qua, theo dõi thành viên trong nhóm tránh lạc nhau……Ứng dụng này có chức năng đơn giản nhưng đã được xây dựng một cách kháhoàn thiện, từ quá trình xử lý dữ liệu trên server, liên kết dữ liệu giữa server và client,
về giao diện và cả tính năng mở rộng,… Giúp người dùng có thể đơn giản khi sửdụng, từ đó giúp cho người dùng, đặc biệt là dân phượt tham gia các chuyến đi tốthơn
1.2 Xác định yêu cầu trong chương trình thực nghiệm
Đề tài khóa luận “Mạng xã hội du lịch dựa trên vị trí, địa điểm” của tôi nằm trong dự
án phát triển của công ty Samsung liên kết trực tiếp với trường ĐH Công nghệ ĐHQGHN, nhóm phát triển dự án có hai thành viên là Khuất Thanh Sơn (K57CB) vàNgô Quang Đại (K57CC) Theo yêu cầu và mục đích cụ thể, hai thành viên trong
Trang 11-nhóm nghiên cứu đề tài phân chia rõ ràng công việc, và khóa luận của tôi có thamkhảo khóa luận tốt nghiệp “Xây dựng mạng xã hội địa điểm cho du lịch (Locationbase social network for travelling) ” của bạn Ngô Quang Đại, tuy nhiên dựa trên yêucầu của riêng từng thành viên nên trong khóa luận của tôi sẽ có trình bày có khác sovới khóa luận của bạn Đại
Bài toán có thể được tóm tắt đơn giản như sau:
Yêu cầu 1: Nghiên cứu về android và kiến trúc MVC trong android:
Tìm hiểu về kiến trúc MVC (Model – View – Controler) và áp dụng vào ứngdụng
Xây dựng ứng dụng theo đúng cấu trúc MVC, đầy đủ các tính năng cơ bản vàtính năng mở rộng
Yêu cầu 2: Tìm hiểu Google map API và ứng dụng:
Đưa vị trí của người dùng hay nhóm người dùng vào map
Cập nhật vị trí của những người xung quanh
Marker lại những vị trí địa điểm đã đi qua, và lưu lại thông tin lên server.Như vậy trong khóa luận này, chúng tôi đưa phương pháp xây dựng một ứng dụngchạy trên nền tảng Android đáp ứng được vấn đề đã nêu ở trên
1.3 Mục đích ý nghĩa của đề tài
Đề tài giúp hoàn thiện các kĩ năng liên quan tới lập trình java và lập trìnhAndroid, hiểu thêm về mô hình MVC, áp dụng vào bài toán thực tế Đề tài còn giúphiểu thêm về GoogleMap API, hiểu và áp dụng vào việc xác định vị trí, tính toánhướng đi và lội trình, ứng dụng vào bài toán Bên cạnh đó, đề tài giúp hiểu về việcmối quan hệ Client – Server, tạo cơ sở dữ liệu, củng cố các kiến thức liên quan tớiServer và lập trình PHP Đề tài giúp nâng cao kiến thức về thiết kế giao diện ngườidùng, quy trình và cách thức lập trình, nâng cao và úng dụng vào thực tế môn họcphân tích thiết kế
Đề tài đưa ra bài toán và cách thức cũng như quá trình thiết lập, hoàn thiện bàitoán, đưa ra một ứng dụng hoàn chỉnh hỗ trợ tốt nhất cho việc phục vụ mục đích củanhững người thích đi phượt hay đi du lịch
Tôi hi vọng rằng đề tài khóa luận này sẽ là một tài liệu tham khảo hữu ích nhấtcho mọi người sau này
Trang 121.4 Cấu trúc khóa luận
Các phần còn lại của khóa luận này có cấu trúc như sau:
Chương 2: Cơ sở lý thuyết và công nghệ - trình bày mô hình MVC, áp dụng
mô hình cấu trúc MVC vào phần mềm, trình bày dịch vụ GPS, GoogleMap API,Server, trình bày các thuật toán, so sánh và công nghệ sử dụng
Chương 3: Phân tích yêu cầu - chương này sẽ có các phân tích của ứng
dụng thực nghiệm như đặc tả yêu cầu, kiến trúc ứng dụng
Chương 4: Thiết kế và xây dựng ứng dụng – chương này sẽ có các thiết kế
của ứng dụng thực nghiệm như: thiết kế ca sử dụng, cơ sở dữ liệu và các biểu đồthiết kế
Chương 5: Kết quả thực nghiệm – Kết quả demo bao gồm đánh giá và so
sánh
Kết luận và định hướng phát triển - tóm lược kết quả mà khóa luận đạt
được, những điểm hạn chế, đặc biệt là đưa ra định hướng phát triển nhằm đưa ứngdụng trở thành một phần mềm được ứng dụng rộng rãi
Trang 13Chương 2: Cơ sở lý thuyết và công nghệ
Để có thể giải quyết vấn đề đặt ra, tôi xây dựng ứng dụng dựa trên những cơ sở lýthuyết và công nghệ sau đây
2.1 Ngôn ngữ lập trình Java
Java là một ngôn ngữ lập trình hướng đối tượng (OOP) và dựa trên các lớp
(class) Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mãnguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biêndịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtimeenvironment) chạy Có thể mô tả về ngôn ngữ lập trình Java theo [1]:
Hướng đối tượng:
Tất cả mọi thứ đều là đối tượng (object) Tất cả thông tin và mã đều có thểgán thuộc tính(properties) và hành động (actions) Lập trình hướng đối tượng(Object-Oriented Programming) gọi thuộc tính với tên biến địa phương (instancevariables) và gọi hành động là hàm (method) Cách tiếp cận hướng đối tượng cóthể thấy rõ ở đoạn mã dưới đây, khi áp dụng một hành động lên một con số:
10.times { puts “University of Engineering and Technology”}
Ưu điểm:
Dễ học
Mã nguồn mở
Thư viện phong phú
Hướng đối tượng
Dễ dàng để mở rộng
Ít mã hóa, ít lỗi
Trang 142.2 Ngôn ngữ lập trình Java trong lập trình Android
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho
các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tínhbảng Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tàichính từ Google và sau này được chính Google mua lại vào năm 2005 Android ramắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: mộthiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnhcác tiêu chuẩn mở cho các thiết bị di động
Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phépApache Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viếtcác ứng dụng để mở rộng chức năng của thiết bị, bằng một loại ngôn ngữ lậptrình Java có sửa đổi Vào tháng 10 năm 2012, có khoảng 700.000 ứng dụng trênAndroid, và số lượt tải ứng dụng từ Google Play, cửa hàng ứng dụng chính củaAndroid, ước tính khoảng 25 tỷ lượt
Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java Sự ramắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minhthiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễnthông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai.Phát triển Úng dụng trên Mobile nên phát triển trên hệ điều hành Android nhờnhững ưu điểm vượt trội của hệ điều hành Android mang lại, theo [2]:
Tính năng mở: Android được xây dựng để cho phép các nhà phát triển để tạo
ra các ứng dụng di động hấp dẫn tận dụng tất cả một chiếc điện thoại đã cungcấp Nó được xây dựng để được thực sự mở Hơn nữa, nó sử dụng một máy ảotuỳ chỉnh được thiết kế để tối ưu hóa bộ nhớ và tài nguyên phần cứng trongmột môi trường di động Android là mã nguồn mở, nó có thể được liberally mởrộng Nền tảng này sẽ tiếp tục tiến triển như cộng đồng nhà phát triển công việccùng nhau để xây dựng các ứng dụng di động sáng tạo
Tốc độ nhanh và phát triển ứng dụng dễ dàng: Android cung cấp truy cập
đến một loạt các thư viện công cụ hữu ích và có thể được sử dụng để xây dựngcác ứng dụng phong phú Ngoài ra, Android bao gồm một tập hợp đầy đủ công
cụ đã được xây dựng từ mặt đất lên cùng với việc cung cấp nền tảng phát triển,với năng suất cao và cái nhìn sâu vào các ứng dụng của họ
Trang 15 Java chính nó là một sự lựa chọn tuyệt vời trong lập trình android: Java
kết hợp một số đặc điểm của ngôn ngữ động, nhưng nó cũng kết hợp các giảipháp tuyệt vời từ ngôn ngữ tĩnh Nhờ mô hình hướng đối tượng của nó, Java làmột ngôn ngữ hoàn hảo để có thể thực hiện thay vì viết rất nhiều mã
Mã nguồn mở: Framework và thư viện đều là mã nguồn mở Mọi dự án thực
hiện trên Rauls đều không liên quan đến chi phí bản quyền nào
Linh động: Sau khi chạy ứng dụng, có thể chỉnh sửa nó một cách dễ dàng.
Thêm các tính năng mới, thay đổi chuẩn dữ liệu và các thay đổi khác được thựchiện rát nhanh
Một số ứng dụng tốt nhất trên android theo [3]:
Beautiful Widgets : Với Beautiful Widgets, bạn có thể tùy chỉnh màn hình chủ
Android theo ý thích Beautiful Widgets cung cấp hơn 1.000 hình nền, cách bốtrí và các widget để hiển thị đồng hồ, thông tin thời tiết, thời lượng pin…
Clean Master: Clean Master cung cấp một số cung cụ hữu ích để “dọn dẹp”
thiết bị Bạn có thể dùng Clean Master để loại bỏ những thư mục này CleanMaster giúp bạn giải phóng bộ nhớ, xóa bộ nhớ cache…
Trang 162.3 Mô hình MVC trong java
Lập trình java trên Android sử dụng mô hình Model- View – Controller(MVC) Model – View – Controller (MVC) là một mẫu thiết kế nhằm mục tiêu chiatách phần Giao diện và Code để dễ quản lý, phát triển và bảo trì MVC chia ứng dụngphần mềm ra làm 3 phần có tương tác với nhau là Model(Dữ liệu), View(Giao diện),Controller( Code điều khiển tương tác giữa Model và View cũng như nghiệp vụ(Business))
Ví dụ: Mô hình MVC trong android hình mô tả [4]:
Hình 2.1: Mô tả hoạt động MVCTrong đó:
Model là lớp chứa thông tin đối tượng (Dữ liệu), tương tác với Database Chịu
trách nhiệm chính trong mô hình hóa đối tượng
View là giao diện của ứng dụng tương tác trực tiếp với người dùng.
Controller nhận yêu cầu từ người dùng và sử dụng Model và View để xử lý và
trả kết quả cho người dùng
2.4 Dịch vụ GPS, Google Map API
GPS :
Theo [5] GPS (Global Positioning System) - Hệ thống định vị toàn cầu - là hệ
thống xác định vị trí dựa trên vị trí của các vệ tinh nhân tạo Trong cùng một thời
Trang 17điểm, ở một vị trí trên mặt đất nếu xác định được khoảng cách đến ba vệ tinh (tốithiểu) thì sẽ tính được toạ độ của vị trí đó.
GPS được thiết kế và quản lý bởi Bộ Quốc phòng Hoa Kỳ, nhưng chính phủHoa Kỳ cho phép mọi người sử dụng nó miễn phí, bất kể quốc tịch từ năm 1980,GPS hoạt động trong mọi điều kiện thời tiết, mọi nơi trên Trái Đất, 24 giờ một ngày
Không mất phí thuê bao hoặc mất tiền trả cho việc thiết lập sử dụng GPS.
GPS là hệ dẫn đường dựa trên một mạng lưới 24 quả vệ tinh được đặt trên quỹđạo không gian, hoạt động dựa trên các trạm phát tín hiệu vô tuyến điện Được biếtnhiều nhất là các hệ thống có tên gọi LORAN - hoạt động ở giải tần 90-100 kHz chủyếu dùng cho hàng hải, hay TACAN - dùng cho quân đội Mỹ và biến thể với độchính xác thấp VOR/DME - VHF dùng cho hàng không dân dụng
- Sự hoạt động của GPS
Các vệ tinh GPS bay vòng quanh Trái Đất hai lần trong một ngày theo mộtquỹ đạo rất chính xác và phát tín hiệu có thông tin xuống Trái Đất Các máy thuGPS nhận thông tin này và bằng phép tính lượng giác tính được chính xác vị trí củangười dùng Về bản chất máy thu GPS so sánh thời gian tín hiệu được phát đi từ vệtinh với thời gian nhận được chúng Sai lệch về thời gian cho biết máy thu GPS ởcách vệ tinh bao xa Rồi với nhiều quãng cách đo được tới nhiều vệ tinh máy thu
có thể tính được vị trí của người dùng và hiển thị lên bản đồ điện tử của máy
Máy thu GPS phải khoá được với tín hiệu của ít nhất ba quả vệ tinh để tính ra
vị trí hai chiều (kinh độ và vĩ độ) và để theo dõi được chuyển động Với bốn haynhiều hơn số quả vệ tinh trong tầm nhìn thì máy thu có thể tính được vị trí ba chiều(kinh độ, vĩ độ và độ cao) Một khi vị trí người dùng đã tính được thì máy thu GPS
có thể tính các thông tin khác, như tốc độ, hướng chuyển động, bám sát di chuyển,khoảng hành trình, quãng cách tới điểm đến, thời gian Mặt Trời mọc, lặn và nhiềuthứ khác nữa
- Độ chính xác của GPS
Các máy thu GPS ngày nay cực kì chính xác, nhờ vào thiết kế nhiều kênh hoạtđộng song song của chúng Các máy thu 12 kênh song song (của Garmin) nhanhchóng khoá vào các quả vệ tinh khi mới bật lên và chúng duy trì chắc chắn liên hệnày, thậm chí trong tán lá rậm rạp hoặc thành phố với các toà nhà cao tầng Tìnhtrạng nhất định của khí quyển và các nguồn gây sai số khác có thể ảnh hưởng tới độchính xác của máy thu GPS Các máy thu GPS có độ chính xác trung bình trong vòng
15 mét
Trang 18Các máy thu mới hơn với khả năng WAAS có thể tăng độ chính xác trungbình tới dưới 3 mét Không cần thêm thiết bị hay mất phí để có được lợi điểm củaWAAS Người dùng cũng có thể có độ chính xác tốt hơn với GPS Vi sai
(Differential GPS, DGPS) sửa lỗi các tín hiệu GPS để có độ chính xác trong khoảng
3 đến 5 mét Cục Phòng vệ Bờ biển Mỹ vận hành dịch vụ sửa lỗi này Hệ thống baogồm một mạng các đài thu tín hiệu GPS và phát tín hiệu đã sửa lỗi bằng các máyphát hiệu Để thu được tín hiệu đã sửa lỗi, người dùng phải có máy thu tín hiệu vi saibao gồm cả ăn-ten để dùng với máy thu GPS của họ
- Hệ thống vệ tinh GPS
24 quả vệ tinh làm nên vùng không
gian GPS trên quỹ đạo 12 nghìn dặm cách
mặt đất Chúng chuyển động ổn định, hai
vòng quỹ đạo trong khoảng thời gian gần 24
giờ Các vệ tinh này chuyển động với vận
tốc 7 nghìn dặm một giờ
Các vệ tinh được nuôi bằng năng
lượng Mặt Trời Chúng có các nguồn pin
dự phòng để duy trì hoạt động khi chạy
khuất vào vùng không có ánh sáng Mặt
Trời Các tên lửa nhỏ gắn ở mỗi quả vệ
tinh giữ chúng bay đúng quỹ đạo đã định
Dưới đây là một số thông tin đáng chú ý về các vệ tinh GPS (còn gọi làNAVSTAR, tên gọi chính thức của Bộ Quốc phòng Mỹ cho GPS):
Vệ tinh GPS đầu tiên được phóng năm 1978.
Hoàn chỉnh đầy đủ 24 vệ tinh vào năm 1994.
Mỗi vệ tinh được làm để hoạt động tối đa là 10 năm.
Vệ tinh GPS có trọng lượng khoảng 1500kg và dài khoảng 5m với các tấm năng lượng Mặt Trời mở (có độ rộng 7m²).
Công suất phát bằng hoặc dưới 50 watts.
- Tín hiệu GPS
Các vệ tinh GPS phát hai tín hiệu vô tuyến công suất thấp giải L1 và L2 (Giải L
là phần sóng cực ngắn của phổ điện từ trải rộng từ 0,39 tới 1,55 GHz) GPS dân sựdùng tần số L1 1575,42 MHz trong giải UHF Tín hiệu truyền trực thị, có nghĩa là
Trang 19chúng sẽ xuyên qua mây, thuỷ tinh và nhựa nhưng không qua phần lớn các đốitượng cứng như núi và nhà.
Tín hiệu GPS chứa ba mẩu thông tin khác nhau - mã giả ngẫu nhiên, dữ liệuthiên văn và dữ liệu lịch Mã giả ngẫu nhiên đơn giản chỉ là mã định danh để xácđịnh được quả vệ tinh nào là phát thông tin nào Có thể nhìn số hiệu của các quả
vệ tinh trên trang vệ tinh của máy thu Garmin để biết nó nhận được tín hiệu của quảnào
Dữ liệu thiên văn cho máy thu GPS biết quả vệ tinh ở đâu trên quỹ đạo ở mỗi thờiđiểm trong ngày Mỗi quả vệ tinh phát dữ liệu thiên văn chỉ ra thông tin quỹ đạo cho
vệ tinh đó và mỗi vệ tinh khác trong hệ thống
Dữ liệu lịch được phát đều đặn bởi mỗi quả vệ tinh, chứa thông tin quan trọng vềtrạng thái của vệ tinh (lành mạnh hay không), ngày giờ hiện tại Phần này của tín hiệu
là cốt lõi để phát hiện ra vị trí
Google Map API
Theo [7] Google Map là một dịch vụ ứng dụng vào công nghệ bản đồ trựctuyến trên web miễn phí được cung cấp bởi Google, hỗ trợ nhiều dịch vụ khác củaGoogle đặc biệt là dò đường và chỉ đường; hiển thị bản đồ đường sá, các tuyến đườngtối ưu cho từng loại phương tiện, cách bắt xe và chuyển tuyến cho các loại phươngtiện công cộng (xe bus, xe khách .), và những địa điểm (kinh doanh, trường học,bệnh viện, cây ATM ) trong khu vực cũng như khắp nơi trên thế giới
Map API là một phương thức cho phép 1 website B sử dụng dịch vụ bản đồcủa website A (gọi là Map API) và nhúng vào website của mình (site B) Site A ởđây là google map, site B là các website cá nhân hoặc tổ chức muốn sử dụng dịch vụcủa google (zoom, đánh dấu trên bản đồ…)
Các ứng dụng xây dựng trên bản đồ được nhúng vào trang web cá nhân thôngqua các thẻ javascripts do vậy việc sử dụng API google rất dễ dàng Google Map API
đã được nâng cấp lên phiên bản v3 không chỉ hỗ trợ cho các máy để bàn truyền thống
mà cho cả các thiết bị di động, các ứng dụng nhanh hơn và nhiều hơn
Các dịch vụ hoàn toàn miễn phí với việc xây dựng một ứng dụng nhỏ Bạn cầntrả phí nếu đó là việc sử dụng cho mục đích kinh doanh, doanh nghiệp
Một số ứng dụng của Google Map API:
Trang 20- Đánh dấu các địa điểm trên bản đồ kèm theo thông tin cho địa điểm đó :khu vui chơi giải trí, nhà hàng khách sạn, cây ATM, bệnh viện, trườnghọc,… bất cứ địa điểm nào bạn muốn
- Chỉ dẫn đường đến các địa điểm cần tìm(đường tối ưu và nhiều optionkhác),chỉ dẫn đường giao thông công cộng, có thể là các địa điểm cungcấp như trên Ở đây sử dụng các service google cung cấp
- Khoanh vùng khu vực: các trung tâm kinh tế, khu đô thị, khu ô nhiễm…
- Tình trạng giao thông các khu vực… từ đó đưa ra các giải pháp
2.5 Server
2.6.1 Lập trình PHP
Theo [8] PHP - viết tắt của "Hypertext Preprocessor", là một ngôn ngữ lậptrình kịch bản được chạy ở phía server nhằm sinh ra mã html trên client PHP đã trảiqua rất nhiều phiên bản và được tối ưu hóa cho các ứng dụng web, với cách viết mã
rõ rãng, tốc độ nhanh, dễ học nên PHP đã trở thành một ngôn ngữ lập trình web rấtphổ biến và được ưa chuộng
PHP chạy trên môi trường Webserver và lưu trữ dữ liệu thông qua hệ quản trị
cơ sở dữ liệu nên PHP thường đi kèm với Apache, MySQL và hệ điều hành Linux(LAMP)
- Apache là một phần mềm web server có nhiệm vụ tiếp nhận request từ trìnhduyệt người dùng sau đó chuyển giao cho PHP xử lý và gửi trả lại cho trìnhduyệt
- MySQL cũng tương tự như các hệ quản trị cơ sở dữ liệu khác (Postgress,Oracle, SQL server ) đóng vai trò là nơi lưu trữ và truy vấn dữ liệu
- Linux: Hệ điều hành mã nguồn mở được sử dụng rất rộng rãi cho cácwebserver.Thông thường các phiên bản được sử dụng nhiều nhất làRedHat Enterprise Linux, Ubuntu
Hiện nay PHP đã phát triển tới phiên bản PHP 5.0 và bản 6.0 đã có bản dùngthử Phiên bản PHP 6 được kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP ở phiênbản hiện tại, ví dụ: hỗ trợ namespace (hiện tại các nhà phát triển vẫn chưa công bố rõràng về vấn đề này); hỗ trợ Unicode; sử dụng PDO làm API chuẩn cho việc truy cập
cơ sở dữ liệu, các API cũ sẽ bị đưa ra thành thư viện PECL
Trang 21Khi người sử dụng gọi trang PHP, Web Server sẽ triệu gọi PHP Engine đểthông dịch dịch trang PHP và trả kết quả cho người dùng như hình:
Hình 2.2: Mô tả cách hoạt động của Server với ngôn ngữ PHP
Cụ thể chúng ta sẽ thấy như sau:
- Client gửi tới server một yêu cầu (request) tại tập tin php trên server
- Server sẽ không gửi trang web với nội dung của tập tin php ngay cho client,server biến đổi trang php thành HTML hoặc định dạng dữ liệu mà client cóthể đọc được
- Gửi tới client kết quả mà client yêu cầu
Việc lập trình PHP cũng rất dễ dàng và chúng ta có thể sử dụng các IDE sau:Netbeans, Eclipse, Zend Studio, PHP Storm để đẩy nhanh quá trình phát triển và hạnchế lỗi xảy ra trong quá trình lập trình
2.6.2 Hệ quản trị cơ sở dữ liệu MySQL
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới vàđược các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng Vì
Trang 22MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạtđộng trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cậpCSDL trên internet MySQL miễn phí hoàn toàn có thể tải về MySQL từ trang chủ.
Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệđiều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, NovellNetWare, SGI Irix, Solaris, SunOS,
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệuquan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL)
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác,nó
làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,
Theo [9] nếu bạn đang tìm kiếm một hệ thống quản lý cơ sở dữ liệu miễn phí hay
là không đắt tiền, một vài thứ có sẵn để bạn chọn như: MySQL, mSQL, Postgres Khibạn so sánh MySQL với các hệ thống cơ sở dữ liệu khác, hãy nghĩ về những gì quantrọng nhất đối với bạn Sự thực thi, sự hỗ trợ, các đặc tính, các điều kiện và các giớihạn của bản quyền, giá cả của tất cả các nhân tố để có thể thực hiện Với những lí do
đó, MySQL có nhiều đặc điểm cuốn hút:
Tốc độ: MySQL rất nhanh Những nhà phát triển cho rằng MySQL là cơ sở dữliệu nhanh nhất mà bạn có thể có
Dễ sử dụng: MySQL tuy có tính năng cao nhưng thực sự là một hệ thống cơ sở
dữ liệu rất đơn giản và ít phức tạp khi cài đặt và quản trị hơn các hệ thống lớn
Giá thành: MySQL là miễn phí cho hầu hết các việc sử dụng trong một tổ chức
Hỗ trợ ngôn ngữ truy vấn: MySQL hiểu SQL, là ngôn ngữ của sự chọn lựa chotất cả các hệ thống cơ sở dữ liệu hiện đại Bạn cũng có thể truy cập MySQLbằng cách sử dụng các ứng dụng mà hỗ trợ ODBC (Open DatabaseConnectivity -một giao thức giao tiếp cơ sở dữ liệu được phát triển bởiMicrosoft)
Trang 23 Năng lực: Nhiều client có thể truy cập đến server trong cùng một thời gian Cácclient có thể sử dụng nhiều cơ sở dữ liệu một cách đồng thời Bạn có thể truycập MySQL tương tác với sử dụng một vài giao diện để bạn có thể đưa vào cáctruy vấn và xem các kết quả: các dòng yêu cầu của khách hàng, các trình duyệtWeb…
Kết nối và bảo mật: MySQL được nối mạng một cách đầy đủ, các cơ sở dữ liệu
có thể được truy cập từ bất kỳ nơi nào trên Internet do đó bạn có thể chia sẽ dữliệu của bạn với bất kỳ ai, bất kỳ nơi nào Nhưng MySQL kiểm soát quyền truycập cho nên người mà không nên nhìn thấy dữ liệu của bạn thì không thể nhìnđược
Tính linh động: MySQL chạy trên nhiều hệ thống UNIX cũng như không phảiUNIX chẳng hạn như Windows hay OS/2 MySQL chạy được các với mọiphần cứng từ các máy PC ở nhà cho đến các máy server
Sự phân phối rộng: MySQL rất dễ dàng đạt được, chỉ cần sử dụng trình duyệtweb của bạn Nếu bạn không hiểu làm thế nào mà nó làm việc hay tò mò vềthuật toán, bạn có thể lấy mã nguồn và tìm tòi nó
Sự hỗ trợ: Bạn có thể tìm thấy các tài nguyên có sẵn mà MySQL hỗ trợ Cộng đồng MySQL rất có trách nhiệm Họ trả lời các câu hỏi trên mailing list thườngchỉ trong vài phút Khi lỗi được phát hiện, các nhà phát triển sẽ đưa ra cách khắc phục trong vài ngày, thậm chí có khi trong vài giờ và cách khắc phục đó
sẽ ngay lập tức có sẵn trên Internet
Trang 24Chương 3: Phân tích yêu cầu
3.1 Đặc tả yêu cầu
Ứng dụng được chia thành 2 phần chính: phía client và server
Về phía client: ƯD cung cấp cho các khách du lịch đi du lịch, phượt các tiện ích,giúp việc kiểm soát các thành viên, lộ trình di chuyển, quản lý các tour du lịch dễ dànghơn, nhanh chóng tiện lợi mà ít tốn công sức
Chức năng chính của Ứng dụng:
- Đăng ký thành viên
- Đăng nhập/ đăng xuất
- Hiển thị thông tin của thành viên
- Tạo tour du lịch, tham gia vào các tour
- Bộ lọc tour du lịch theo các tiêu chí
- List member
- Xác định vị trí theo GPS
Sơ đồ chức năng của ứng dụng:
Hình 3.1: Sơ đồ chức năng của ứng dụng
Trang 253.1.1 Đặc tả yêu cầu chức năng
Chức năng Đăng nhập, đăng xuất/đăng kí:
Đăng ký tài khoản trên ứng dụng cần cung cấp:
Hình thức thanh toán chi phí (tài khoản nếu có tài khoản online)
Sau đó sẽ phải xác thực qua email hoặc SĐT
Đăng nhập thành công, sẽ hiển thị trang chủ của ƯD
Sliding Menu của ƯD sẽ gồm các chức năng:
Home: màn hình trang chủ gồm hai cách hiển thị cho ND lựa chọn:[10]
Map: Hiển thị vị trí của ND trên bản đồ, bên dưới là list các tour để ND cóthể theo dõi Khi ND click vào tour, bản đồ sẽ hiển thị hành trình mà tour
đó sẽ đi cùng 1-2 thông tin của tour trên bản đồ, để xem thông tin chi tiết vềtour, có thể nhấn và giữ vào tour đó
List: Hiển thị list tất cả các tour sắp diễn ra và đang diễn ra, có bộ lọc cáctour đó, nếu muốn xem thông tin chi tiết có thể click vào tour đó
Khi click xem thông tin tour, sẽ gồm 2 tab: tab thứ nhất chứa thông tin cụ thể vềtour như thời gian, địa điểm, danh sách thành viên, kinh phí, phương tiện tab thứ haihiển thị quãng đường di chuyển của tour trên map
Profile: sẽ cung cấp chi tiết thông tin về tài khoản, bao gồm: ảnh avatar , Họ tên,
ngày sinh, địa chỉ, số điện thoại, tài khoản thanh toán, level (điểm) hiện tại
MyTour: chứa tất cả các tour đang, sắp diễn ra mà ND đã tạo hoặc đã tham gia.
History: hiển thị các tour mà tài khoản đó đã tạo hoặc đã tham gia cùng với số
điểm sau khi đi tour
Trang 26 Logout: đăng xuất khỏi ứng dụng.
3.1.2 Đặc tả yêu cầu phi chức năng
Tính dễ dùng : Giao diện sử dụng thân thiện, bố cục ứng dụng rõ ràng
Độ tin cậy : Ứng dụng hoạt động đúng theo các chức năng yêu cầu
Tính sẵn sàng : Ứng dụng hoạt động ổn định, các thao tác thực hiện chính xác
Yêu cầu về hiệu năng sử dụng : Hiển thị thông tin tốt, tránh giật lác, đơ máy Thờigian phản hồi của ứng dụng nhanh
3.2 Kiến trúc ứng dụng Mạng xã hội du lịch WeGo
Hình 3.2: Kiến trúc ứng dụng
Trang 27Layout(View) Cung cấp giao diện người dùng, giúp người
dùng có cái nhìn trực quan và dễ dàng tương tácvới ứng dụng
Model (Model) Xử lý các thao tác liên quan tới database
Bảng1: Giải thích các thành phần trong kiến trúc ứng dụng
Trang 283.3 Mô hình MVC trong ứng dụng Mạng xã hội du lịch Wego
Trang 29Hình 3.5: Một đoạn xml của giao diện login
3.3.2 Cài đặt phần model
Phần model bao gồm 3 lớp như sau:
của tour: tên, ngày xuất phát, địa điểm đến thời gian, thông tin yêu cầu củatour,…
User: lưu lại thông tin toàn bộ của người sử dụng: profile, history, các tourtham gia, các thông tin khác,…
Hình 3.6 : Mô tả lớp User
User