Khóa luận Nghiên cứu lập trình cho các thiết bị di động áp dụng cho bài toán hướng dẫn du lịch

ĐẠI HỌC QUỐC GIA HÀ NỘI  
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ  
Lê Xuân Chính  
NGHIÊN CỨU LẬP TRÌNH CHO CÁC THIẾT BỊ DI  
ĐỘNG ÁP DỤNG CHO BÀI TOÁN HƯỚNG DẪN DU  
LỊCH  
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY  
Ngành: Mạng và truyền thông máy tính  
HÀ NỘI - 2010  
ĐẠI HỌC QUỐC GIA HÀ NỘI  
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ  
Lê Xuân Chính  
NGHIÊN CỨU LẬP TRÌNH CHO CÁC THIẾT BỊ DI  
ĐỘNG ÁP DỤNG CHO BÀI TOÁN HƯỚNG DẪN DU  
LỊCH  
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY  
Ngành: Mạng và truyền thông máy tính  
Cán bộ hướng dẫn: ThS Nguyễn Việt Anh  
HÀ NỘI - 2010  
Tóm Tắt  
Việc hướng dẫn du lịch ngày nay hết sức đa dạng, chúng ta có thể được hướng  
dẫn thông qua internet, hướng dẫn viên, sách báo…Nhưng tất cả các cách trên đều có  
một hạn chế đó là tính độc lập, như internet thì chúng ta luôn phải cần một chiếc máy  
tính kết nối mạng, còn hướng dẫn viên thì ta luôn phải đi theo sát họ…Vì vậy việc  
hướng dẫn du lịch qua mobile là một giải pháp tốt. Ứng dụng “Hướng dẫn du lịch qua  
mobile theo ngữ cảnh” được viết lên nhằm mục đích hướng dẫn khách tham quan thu  
được thông tin một cách chính xác nhất về địa điểm mà họ quan tâm. Ứng dụng tổ  
chức dữ liệu dưới dạng cây, tùy vào ngữ cảnh mà người dùng đưa vào sẽ quyết định độ  
chi tiết của thông tin trả v.  
Sau hơn 5 tháng nghiên cứu dưới sự hướng dẫn của thầy ThS Nguyễn Việt Anh  
và sự giúp đỡ của các bạn trong nhóm khóa luận. Bước đầu khóa luận đã thu được  
những kết quả nhất định.  
- Áp dụng xử lý dữ liệu theo ngữ cảnh vào bài toán du lịch.  
- Tìm hiểu về J2ME, Webservice.  
- Xây dựng thành công chương trình “Hướng dẫn du lịch qua mobile theo ngữ  
cảnh”. Ứng dụng đã đáp ứng được những chức năng cần thiết nhất trong việc  
hướng dẫn du lịch qua mobile theo ngữ cảnh.  
MỤC LỤC  
Lời cảm ơn!  
Sau hơn năm tháng tìm hiểu và thực hiện, luận văn “Nghiên cứu lập trình cho các  
thiết bị di động áp dụng cho bài toán hướng dẫn du lịch” đã cơ bản hoàn thành. Để đạt  
được kết quả này, em đã nỗ lực hết sức và đồng thời cũng nhận được rất nhiều sự quan  
tâm, giúp đỡ, ủng hộ của thầy cô, bạn bè và gia đình.  
Điều đầu tiên, em xin gửi lời cảm ơn chân thành đến bộ môn Mạng và Truyền  
thông máy tính, Khoa Công nghệ thông tin, Trường Đại học Công Nghệ, Đại học  
Quốc Gia Hà Nội và các thầy cô đặc biệt là ThS Nguyễn Việt Anh đã tận tình giúp đỡ,  
hướng dẫn em hoàn thành luận văn.  
Mình rất cảm ơn các bạn bè trong khoa, đặc biệt là nhóm làm cùng khóa luận và  
cộng đồng Java Việt Nam đã luôn bên cạnh, giúp đỡ và đóng góp ý kiến trong suốt quá  
trình làm luận văn.  
Và con xin chân thành cảm ơn đến gia đình đã luôn động viên và tạo điều kiện  
thuận lợi nhất để con học tập và hoàn thành luận văn.  
Luận văn đã hoàn thành và có được kết quả nhất định, tuy nhiện vẫn không thể  
tránh khỏi những sai sót. Rất mong sự cảm thông và đóng góp ý kiến nhiệt tình từ thầy  
cô và các bạn.  
Hà Nội, tháng 5 năm 2010  
Lê Xuân Chính  
Lời nói đầu  
Mạng điện thoại di động xuất hiện tại Việt Nam từ đầu những năm 1990, và theo  
thời gian số lượng nhà cung cấp dịch vụ và số lượng thuê bao tăng lên hàng ngày. Giờ  
đây chiếc điện thoại di động không chỉ đơn thuần là gọi, nhắn tin và nghe mà nó còn là  
một thiết bị giải trí đa phương tiện, tra cứu thông tin rất tiện lợi... Việc xây dựng các  
ứng dụng trên điện thoại đi động là một lĩnh vực mới, hứa hẹn nhiều thú vị và là một  
xu thế tất yếu hiện nay. Các dịch vụ giá trị gia tăng trên điện thoại di động có thể nói là  
một mảnh đất màu mỡ cho các doanh nghiệp cung cấp dịch vụ di động.  
Ngày nay có hai hướng phát triển ứng dụng trên thiết bị di động chính là sử dụng  
ngôn ngữ C++ trên nền hệ điều hành Symbian và J2ME. Các ứng dụng viết trên nền  
Symbian có ưu thế truy cập trực tiếp các tài nguyên của điện thoại di động cũng như  
hỗ trợ hệ thống tập tin, thư mục…Nhưng việc phát triển trên nền Symbian tương đối  
phức tạp và dung lượng ứng dụng khá lớn. Có thể nói J2ME là một đối thủ của  
Symbian API, J2ME có ưu điểm là nhỏ gọn, tiện dụng, hỗ trợ hầu hết các dòng điện  
thoại hiện nay, kể cả điện thoại sử dụng hệ điều hành Symbian. J2ME không chỉ là  
ngôn ngữ dùng để viết cho các ứng dụng di động, mà nó còn có thể lập trình cho các  
thiết bị gia dụng, thẻ tín dụng điện tử, và các ứng dụng thông minh khác.  
Rất khó để so sánh các dòng ngôn ngữ lập trình. Vì mỗi ngôn ngữ đều có thế  
mạnh riêng của nó. Dựa trên tiêu trí tính phổ biến và thích hợp với điều kiện hiện thời,  
tôi đã chọn J2ME là ngôn ngữ để xây dựng ứng dụng. Với sự phát triển mạnh của  
mạng di động và ngày nay vấn đề vphần cứng đã được cải thiện một cách đáng kể về  
tốc độ xử lý và dung lượng bộ nhớ. Sự kiện đáng chú ý gần đây Việt Nam đã có một  
số đơn vcung cấp dịch vụ 3G. 3G, hay 3-G, (viết tắt của third-generation technology)  
công nghệ truyền thông thế hệ thứ ba, cho phép truyền cả dữ liệu thoại và dữ liệu  
ngoài thoại (tải dữ liệu, gửi email, tin nhắn nhanh, hình ảnh...). Với những thế mạnh  
vượt trội đó, 3G sẽ hứa hẹn là một mảnh đất cho các lập trình viên thỏa mãn đam mê  
lập trình trên các thiết bị di động. Và tiến tới hầu như tất cả các ứng dụng trên desktop  
sẽ có mặt trên mobile.  
Dựa trên nền tảng ngôn ngữ J2ME, tôi đã xây dựng ứng dụng “hướng dẫn du lịch  
qua mobile theo ngữ cảnh”. Với một chiếc máy tính việc tra cứu thông tin du lịch là  
việc cực kì đơn giản, chỉ bằng một cú click để truy cập http://google.com sau vài giây  
thì bạn sẽ nhận được hàng triệu kết quả để tham khảo. Ngày nay chiếc điện thoại di  
động với những tính năng mạnh mẽ đi cùng, các chức năng dần tiến tới như desktop  
1
 
chỉ là vấn đề thời gian, ứng dụng “hướng dẫn du lịch qua mobile theo ngữ cảnh” được  
viết nên nhằm trợ giúp các khách du lịch trong việc tìm kiếm và tra cứu thông tin địa  
, điểm đặc biệt ở chương trình là tính mềm dẻo vdữ liệu trả v, không có gì buồn  
chán hơn khi ta đọc đi đọc lại một lượng thông tin cố định, mà không có sự thay đổi  
theo thời gian. Ứng dụng của tôi đã giải quyết được vn đề này, tùy vào thông tin truy  
vấn của người dùng mà dữ liệu trả vsẽ khác nhau, có thể nói đây là sự thông minh  
của chương trình. Với sự phát triển vtốc độ của mạng di động, dung lượng của dữ  
liệu không còn là vấn đề quan trọng nữa, vì vậy nội dung của ứng dụng sẽ thêm phong  
phú và đa dạng.  
Chương trình bước đầu đã hoàn thành, dữ liệu lúc này đơn giản chỉ là chữ và  
hình ảnh, nhưng cũng đủ để truyền tải hết thông tin tới người dùng. Nhận thấy 3G đã  
có mặt tại Việt Nam, vì vậy hướng phát triển tương lai của chương trình là tích hợp  
thêm video, cụ thể ở đây là ứng dụng sử dụng công nghệ Video Streaming, hiện còn  
rất mới, đây là hướng đi hứa hẹn nhiều thành công.  
Tuy đã đầu tư khá nhiều thời gian và công sức vào luận văn, nhưng không thể  
tránh khỏi những sai sót, tôi rất mong nhận được những đóng góp và phản hồi từ thầy  
cô và các bạn! Xin chân thành cảm ơn!  
Lê Xuân Chính  
2
Mục tiêu của đề tài  
- Tìm hiểu ngôn ngữ lập trình J2ME.  
- Tìm hiểu Web service.  
- Tìm hiểu vể “xử lý dữ liệu theo ngữ cảnh”.  
- Xây dựng ứng dụng demo “Hướng dẫn du lịch qua mobile theo ngữ cảnh”.  
Chương 1. Xử lý dữ liệu theo ngữ cảnh trên mobile  
1.1. Gii thiệu  
Những khách du lịch bụi thường phải dựa vào bản đồ hoặc dựa vào những biển  
hiệu trên đường đi để tự khám phá một thành phố lạ lẫm. Họ cần có một người hướng  
dẫn viên giúp họ tới những nơi mà họ muốn, cho họ thông tin về bất cứ những gì mà  
họ tìm thấy thậm chí là đảm bảo đưa họ trở vđúng giờ. Đây là mục tiêu chính của  
Dynamic Tour Guide - Hướng dẫn viên du lịch di động(DTG). DTG là một thiết bị di  
động cho phép cá nhân hóa những thông tin về tour du lịch. Nó chọn những địa điểm  
thu hút khách du lịch, lên lịch cho một tour thăm quan cá nhân, cung cấp những thông  
tin vđường đi trong suốt quá trình du lịch và những thông tin về môi trường. Những  
thông tin phản hồi thông minh này dựa trên tất cả những phân tích về bối cảnh hiện tại  
để hỗ trợ cho khách du lịch bất cứ lúc nào.  
1.2. Hạn chế của hướng dẫn du lịch thông thường  
Khách du lịch luôn cần có những thông tin chi tiết vđịa điểm mình tham quan  
dụ như: bảo tàng có những giờ mở cửa khác nhau hoặc có thể có những giờ mở cửa  
thêm. Ví dụ vào những dịp cuối tuần, mùa hè thì những cửa hàng luôn kín chỗ, còn  
vào khoảng tháng 11 thì luôn đóng cửa. Nếu không nắm bắt được những thông tin này,  
khách du lịch sẽ không có được những chuẩn bị cần thiết, vì vậy chỉ còn cách đi theo  
những biển hiệu, chỉ dẫn trên bản đồ hay đường đi. Những hướng dẫn viên du lịch  
thường chỉ hướng dẫn cho cả đoàn khách, họ đi theo những tour đã định sẵn và chỉ  
tham quan những điểm chính, trong khi có những địa điểm thú vlại không được tham  
quan, mặc dù chỉ cách những điểm chính rất gần.  
tưởng nhất là có một thiết bị giống như hướng dẫn viên du lịch, luôn thường  
trực, am hiểu những địa danh và hiểu được sở thích cá nhân của khách du lịch, quản lý  
được vthời gian, biết được tình hình hiện tại, đưa ra một tour du lịch cá nhân, và có  
thể cất gn trong túi áo. Đây là mục tiêu của DTG. Mục đích ở đây là lập ra một tour  
3
       
du lịch, giống như một chuyên viên hướng dẫn viên du lịch sẽ làm khi sau khi biết  
được những thông tin về khách du lịch. Điều này hoàn toàn có thể thực hiện được bằng  
việc áp dụng công nghệ mới là kết hợp sự nhận thức về ngữ nghĩa và ngữ cnh của  
máy tính.  
1.3. Hướng dẫn du lịch theo ngữ cảnh  
Một khách du lịch luôn muốn khám phá ngay địa điểm họ sắp tới. Họ có một hồ  
vsở thích, điểm xuất phát và kết thúc và một khoảng thời gian cho tour du lịch.  
Những thông tin này cần được nạp vào hệ thống. Ngữ cảnh ở đây là tất cả những thông  
tin hiện thời về một địa điểm nhất định, một khoảng thời gian nhất định. Thách thức  
đặt ra là phải đưa ra một tour tối ưu dựa trên những thông tin cá nhân và ngữ cảnh.  
Trong suốt quá trình tham quan, khách du lịch có thể được hướng dẫn để đi tới tổ hợp  
các tòa nhà, địa điểm cần đến(Tour Building Block TBB).  
Khi khách du lịch bắt đầu chuyến du lịch, DTG có thể đo được tốc độ di chuyển  
cp nhật những thông tin này để có thể tính toán, sắp xếp lại tour du lịch. Ngay khi  
khách du lịch tới một TBB, DTG có thể đưa ra thông tin giới thiệu phù hợp với hoàn  
cảnh hiện tại. Một số khách du lịch có thể quyết định khám phá TBB bằng cách nhiều  
cách, ví dụ như đi bộ, hoặc xem lướt qua… Trong trường hợp này, những thông tin  
thêm phù hợp cũng sẽ được cung cấp. Ngay khi khách du lịch rời khỏi TBB, DTG sẽ  
ngừng cung cấp thông tin về TBB này và nạp lại quá trình điều hướng, có thể sang  
TBB tiếp theo. Trong trường hợp du khách dừng chân lại lâu hơn dự kiến ban đầu thì  
thời gian còn lại phải được tính toán lại.  
Trên đường tới TBB tiếp theo, du khách có thể sẽ bị phân tán bởi một điểm  
tham quan khác hoặc đơn giản là 1 cửa hàng. Lúc này DTG sẽ tạm dừng những gợi ý  
điều hướng và cung cấp những thông tin về bối cảnh hin tại nếu có thể. Trong trường  
hợp này, DTG sẽ phải chờ cho tới khi du khách rời khỏi điểm hiện tại và tính toán lại  
thời gian.  
1.4. Các chương trình liên quan  
Tour Guides từ lâu đã trở thành 1 chủ đề rất quan trọng trong hoạt động nghiên  
cứu. Cũng có nhiều chương trình được viết lên nhằm mục đích hướng dẫn theo ngữ  
cảnh, các chương trình đều có đặc điểm riêng của nó nhưng đều có những hạn chế nhất  
định, chỉ phục vụ cho những yêu cầu đặc biệt. Những dự án quan trọng sau đây cũng  
xử lý những vấn đề tương tự DTG.  
4
   
Guide: Là một hướng dẫn viên du lịch di động - sử dụng hệ thống định vtheo  
từng ô thay vì GPS. Khách du lịch có thể chọn địa điểm tham quan theo phân loại  
trong chuyến du lịch. Đường đi đã được tính trước. Thứ tự tham quan có thể  
được thay đổi phụ thuộc vào thời gian. Sở thích cá nhân hay thông tin vngữ  
cảnh được cung cấp sẵn.  
DTG sẽ lên lịch một tour dựa theo hồ sơ cá nhân của khách du lịch. Khái niệm  
về hướng dẫn du lịch theo ngữ cảnh cũng được đề cập nhưng DTG xử lý vấn đề  
này tốt hơn.  
Cyberguide: Là 1 trong những hướng dẫn viên du lịch đầu tiên. Nó làm việc với  
sự trợ giúp của GPS và tia hồng ngoại để nhận biết những thông tin ngữ cảnh  
như vị trí của người dùng và sự điều hướng. Tour không được định trước, nhưng  
người dùng vẫn có thể nhận thông tin về bất cứ thứ gì, bất cứ địa điểm nào mà họ  
nhìn thấy. Yêu cầu về 1 đường dẫn tới những địa điểm ưa thích cũng có thể được  
đáp ứng. Bên cạnh đó, nó cũng cho phép tạo nhật ký vtoàn bộ tour. Khác biệt  
chính là sự tính toán trước vtoàn bộ tour du lịch dựa trên những sở thích của  
khách du lịch trong hệ thống DTG.  
Dự án Crumpet: Cho phép 1 thiết bị di động tìm ra một địa điểm nhất định, thể  
hiện nó trên bản đồ và tính toán 1 đường tới địa điểm đó. Địa điểm tham quan  
được tìm thấy trên bản đồ và người dùng phải quyết định xem có đủ thời gian  
hay có nên tham quan không.  
Phần mềm phát triển bởi eNarro: Cung cấp những tour định sẵn, giới thiệu những  
địa điểm nổi tiếng ở những thành phố lớn trên thế giới. Khách du lịch cần có 1  
chiếc PDA và 1 thiết bị đặc biệt dành cho những tour đặc biệt. Họ cũng cần có 1  
phần mềm điều hướng, hướng dẫn họ đến 1 địa điểm khác. Những thông tin  
hướng dẫn sau đó sẽ được truyền tải tới người dùng nhờ vào thiết bị nghe nhìn  
đặc biệt.  
Người dùng chỉ có thể chọn những tour được định sẵn – phù hợp với mục đích  
quảng bá.  
Những tour du lịch đã được định sẵn không phải là mục tiêu của DTG, cái mà nó  
hướng đến là tạo ra một tour du lịch mang tính cá nhân hóa trong thời gian thực. Bên  
cạnh đó, nó cũng chú trọng đến những bối cảnh thực tại như thời gian đóng/mở cửa  
5
bằng cách luôn cập nhật thông tin qua web service. Những thách thức mà DTG cần  
giải quyết là:  
Thu thập những thông tin vsở thích cá nhân của khách du lịch để tạo 1  
hồ sơ hoàn chỉnh.  
Xếp hạng của TBBs(danh sách các địa điểm mà ta sẽ thăm) bằng cách  
kết hợp ngữ nghĩa.  
Đưa ra 1 tour du lịch trong thời gian sớm nhất có thể.  
Nhận biết ngữ cảnh, môi trường.  
Giám sát tour và điều hướng tour phù hợp.  
1.5. Cấu trúc DTG  
Mỗi địa điểm, giống như một thành phần có thể có của TBB, chúng là mô hình  
ngữ nghĩa của một nhà cung cấp nội dung sử dụng Authoring tool DTG. Mỗi TBB sẽ  
có một WS(Web Service) riêng của nó. Một dịch vụ được cung cấp giống như là nhà  
hàng thì sẽ nằm trong hệ thống các các địa điểm nhà hàng và được quản lý bởi một  
WS. WS sẽ cung cấp các mô hình ngữ nghĩa, các thông tin hiện thời như là giờ mở  
cửa, đóng cửa, hình thức giao dịch của cửa hàng… Các WS ca các TBB sẽ được đăng  
ký tại UDDI(Universal Description, Discovery, and Integration). Máy chủ DTG sẽ  
thực hiện thuật toán phù hợp theo ngữ nghĩa để xếp hạng các điểm tham quan cho một  
khách du lịch cụ thể.  
Các thiết bị di động sẽ xác định được vị trí của nó, nếu ở trong thành phố thì sẽ  
thông qua một hệ thống định vtoàn cầu GPS hoặc bên trong các tòa nhà như là bảo  
tàng thì sẽ thông qua mạng WLAN, lưới hồng ngoại hoặc RFIDs.  
6
 
Hình 1.1: Phát hiện đựa trên ngữ cảnh, môi trường  
Sau khi đã chọn được một điểm du lịch, thì phần mềm định vị sẽ mô phỏng các  
tour du lịch trên bản đồ, và hướng dẫn khách du lịch qua các tín hiệu âm thanh. DTG  
sẽ luôn theo dõi hành trình của các tour du lịch bằng cách thay đổi theo ngữ cảnh. Ví  
dụ như du khách thay đổi tốc độ di chuyển, đến một mức nào đó thì sẽ kích hoạt một  
tính toán nào đó để đảm bảo đến được điểm mong muốn trong thời gian đã được định  
sẵn.  
1.6. Xác định ngữ cảnh  
Bất kỳ một tính năng đặc trưng của một thực thể đều bị chi phối bởi ngữ cảnh  
của nó. Ngữ cảnh này sẽ được chia ra làm các dạng khác nhau:  
1. Ngữ cảnh cá nhân: Ngữ cảnh cá nhân bao gồm những thông tin cá nhân. Nó  
được xác định bởi các yếu tố tĩnh như tên, sở thích, thói quen như là tốc độ đi  
bộ, màu sắc…  
2. Ngữ cảnh địa điểm: Ngữ cảnh địa điểm bao gồm các thông tin về môi trường,  
như là độ dài các con đường, số lượng các vtrí thực tế trên một con đường,  
thời tiết tại đó…  
3. Hỗ trợ khám phá: Ngữ cảnh dịch vụ là miêu tả các dịch vụ có sẵn.  
Hệ thống nhận thức ngữ cảnh có khả năng thích ứng được với các chức năng vì  
nó có khả năng lọc ra các thông tin theo ngữ cảnh. Đây được gọi là trí thông minh  
thích ứng với môi trường xung quanh. Ngữ cảnh cá nhân được ánh xạ đến ngữ cảnh  
dịch vụ với từng địa điểm một. DTG sẽ làm việc bằng cách phát hiện các vtrí gần vị  
7
 
trí hiện tại và yêu cầu các thông tin sẵn có, và đánh giá chúng theo sở thích cá nhân và  
tạo ra một tour du lịch trong một khoản thời gian giới hạn. DTG sẽ phụ thuộc vào các  
ngữ cảnh sau đây:  
Khong thời gian sẵn có, các tour du lịch sẽ khác nhau về độ dài.  
Vị trí hiện tại, điểm bắt đầu và điểm cuối là khác nhau.  
Thời gian hiện tại(ngày hoặc mùa) . Ví dụ như thời gian đóng mở cửa  
của các nhà hàng hoặc triển lãm.  
Sở thích cá nhân. Các điểm thăm quan lựa chọn sẽ được thay đổi cho phù  
hợp. Ngoài ra các DTG sẽ luôn giám sát các tour du lịch, bất kỳ sự thay  
đổi vtốc dộ di chuyển thì DTG sẽ điều chỉnh thích hợp để du khách đến  
được nơi đúng giờ.  
Tc dộ di chuyển và thời gian cho một tour sẽ đưa ra các chú ý về vấn đề  
thời gian.  
Hướng đi của du khách tại vtrí hiện tại có thể được thể hiện bằng các  
hình ảnh trực quan trên màn hình điện thoại, và các thông tin phù hợp về  
vị trí đó.  
1.7. Kết luận  
DTG sử dụng công nghệ tiên tiến để tạo ra các tour du lịch theo ngữ cảnh. Độc  
lập với vị trí và thời gian, xác định thông tin cần thiết bằng cách xác định và truy vấn  
đến các web service có sẵn. Nó hỗ trợ khách du lịch bằng cách đưa ra các dướng dẫn  
chuyển hướng và cung cấp thông tin đúng lúc, đúng chỗ. Bất kỳ ảnh hưởng nào, hay  
quyết định tự phát của khách du lịch sẽ được phản hồi vserver.  
8
 
Chương 2. Ứng dụng “hướng dẫn du lịch qua  
mobile theo ngữ cảnh”  
Mấy năm gần đây việc phát triển các ứng dụng trên điện thoại di động đã trở lên  
phổ biến. Sự gia tăng về dung lượng bộ nhớ và tốc độ xử lý trên điện thoại đi động cho  
phép ta phát triển các ứng dụng mà trước kia tưởng chừng như chỉ có thể phát triển  
trên desktop. Và sự ra đời của các ngôn ngữ lập trình cho điện thoại càng làm việc  
phát triển ứng dụng trên di động thêm dễ dàng và thú v.  
Hướng dẫn du lịch qua sách báo, hướng dẫn viên, hay internet đã quá quen thuộc  
với mọi người. Mỗi phương thức đều có ưu khuyết điểm riêng nhưng tựu chung lại  
chúng đều thiếu tính độc lập cao, ví dụ muốn tìm hiểu du lịch qua internet thì ta phải  
cần một chiếc máy tính để bàn khá là cồng kềnh, hướng dẫn viên thì ta phải luôn đi  
theo họ... Vì vậy phát triển ứng dụng hướng dẫn du lịch trên mobile là hết sức hợp lý  
thích hợp trong thời điểm này, ứng dụng có thể khai thác triệt để các tính năng của  
điện thoại di động như là tính độc lập, tức là người sử dụng luôn có thể mang theo máy  
di động bên mình, vthông tin hiển thị trên mobile về cơ bản chính là thông tin hiển  
thị trên máy tính để bàn. Ứng dụng mà chỉ dùng để hiển thị thông tin trên di động thay  
vì hiển thị trên desktop thì về cơ bản không có gì là đáng chú ý lắm. Điểm mấu chốt ở  
đây là sự thông minh của ứng dụng, tức là từ truy vấn của người sử dụng thì thông tin  
trả vlà khác nhau qua mỗi lần truy vấn, và tùy thuộc vào đối tượng truy vấn mà  
thông tin trả vcũng khác nhau.  
Một ứng dụng điện thoại thông minh, đặc biệt là ứng dụng hướng dẫn du lịch  
trên điện thoại thì có thể coi như là một người bạn đồng hành và hướng dẫn viên du  
lịch nhiệt tình, cần là có. Xuất phát từ ý tưởng đó, ứng dụng “hướng dẫn du lịch qua  
mobile theo ngữ cảnh” đã ra đời, với mục đích tra cứu thông tin du lịch mọi chỗ mọi  
lúc.  
2.1. Ngữ cảnh của chương trình  
Đây là ứng dụng hướng dẫn du lịch qua mobile theo ngữ cảnh. Vì vậy sự thông  
minh của chương trình phụ thuộc rất nhiều vào lượng ngữ cảnh mà người dùng đưa  
vào. Ngữ cảnh càng nhiều thì thông tin sẽ được trả vtheo nhiều lớp, điều này sẽ giúp  
khách du lịch có được một hướng dẫn thích hợp nhất. Như ở chương một thì “ngữ  
9
   
cảnh là tất cả những thông tin hiện thời về một địa điểm nhất định, một khoảng thời  
gian nhất định”, các ngữ cảnh mà tôi đưa vào chương trình là:  
Thời gian: Một ngữ cảnh hết sức quan trọng, nó là ngữ cảnh chính của chương  
trình. Đi du lịch thì vấn đề là hết sức quan trọng và thời gian cũng là một ngữ  
cảnh luôn thay đổi, vì vậy việc thích ứng với sự thay đổi vthời gian để đưa ra  
một tour du lịch thích ứng là cần thiết.  
Font: Đối tượng du lịch là rất da dạng trẻ, già… Ngoài chất lượng của thông tin  
hướng dẫn thì vấn đề hiển thị cũng rất quan trọng, góp phần quan trọng vào sự  
thân thiện của chương trình với người dùng. Không có gì khó chịu hơn là khi ta  
mắt kém mà nhìn vào màn hình với những dòng chữ nhỏ, hay màn hình hiển thị  
tương đối nhỏ mà chữ thì to choáng hết màn hình.  
Profile: Đây là thông tin vngười sử dụng, được lưu trong cơ sở dữ liệu trên  
server. Để sử dụng chương trình thì người dùng phải đăng nhập vào hệ thống,  
trong đó những thông tin được lưu trữ như là tên, tuổi, giới tính…Những yếu tố  
này cũng là một thành phần ngữ cảnh của chương trình.  
2.2. Mô hình kết nối  
10  
 
Hình 2.1: Mô hình kết nối  
• Ứng dụng viết trên điện thoại di động sử dụng ngôn ngữ J2ME.  
• Web server sử dụng JSP.  
• Cơ sở dữ liệu sử dụng MySQL.  
Ứng dụng viết trên điện thoại đóng vai trò là 1 client giao tiếp với server thông  
gia GPRS được cài đặt trên điện thoại thông qua giao thức HTTP. Dựa vào các  
request/response từ phía client thì server sẽ truy vấn đến cơ sở dữ liệu MySQL thông  
qua các store procedures.  
Khi người dùng chạy ứng dụng trên, và tiến hành đăng nhập vào chương trình,  
khi người dùng có một thao tác bất kỳ trên ứng dụng và gửi 1 request đến server dưới  
dạng gói tin, gói tin sẽ được gửi dưới dạng sóng GPRS đến trạm điện thoại, tại đây sẽ  
có thiết bị chuyển các gói tin dạng sóng GPRS sang dạng tín hiệu truyền trong đường  
truyền hữu tuyến Internet. Lúc này nhà cung cấp dịch vụ di động đóng vai trò như là  
một gateway, làm trung gian liên lạc cho thiết bị di động và webserver.  
Gói tin được được máy di động gửi đến webserver là những gói tin HTTP  
request, và thiết bị di động sẽ nhận được các HTTP response từ webserver. Các gói tin  
HTTP request và HTTP response này sẽ chứa bên trong các thông điệp SOAP request  
và SOAP response tương ứng. Các thông điệp SOAP sẽ chứa các operation dùng để xử  
kết nối đến cơ sở dữ liệu tạo thành mô hình truy cập hàm từ xa RPC(Remote  
Procedure Call). Các gói tin HTTP response sẽ đến nhà cung cấp mạng di động,  
chuyển thành tín hiệu GPRS và vđến client.  
Yêu cầu duy nhất trên điện thoại di động để giao tiếp được với server là diện  
thoại phải hỗ trợ GPRS và có thư vin JSR 172. Thư viện JSR 172 có chức năng tạo ra  
các thông điệp SOAP và phân tích nội dung các thông điệp này. Nếu không có thư  
viện này thì điện thoại không thể giao tiếp được với server.  
2.3. Thiết kế cơ sở dữ liệu  
2.3.1. Các bảng dữ liệu của chương trình  
user_name(id, password, name, age, sex).  
info(infoID, label, image, content, brotherID, childID).  
log(id, date, route, font, time, level).  
2.3.2. Chi tiết các bảng  
11  
     
User_name: Bảng chứa thông tin về người dùng.  
.
Tên  
id  
Kiểu  
varchar  
Nội dung  
Thuộc tính  
Mã đăng nhập chương trình của người Khóa chính  
dùng  
password  
varchar  
Mật khẩu dùng để đăng nhập chương  
trình  
name  
age  
varchar  
int  
Họ tên đầy đủ của người dùng  
Tuổi của người dùng  
Sex  
int  
Giới tính của người dùng(1=Nam,  
0=Nữ)  
Hình 2.2: Bảng user_name  
Info: Bảng chứa thông tin về tất cả các địa điểm, địa danh có trong cơ sở dữ liệu.  
Tên  
Kiểu  
Nội dung  
Thuộc tính  
infoID  
label  
image  
varchar  
varchar  
blog  
Kí hiu mã thông tin  
Khóa chính  
Tiêu đề của địa danh, địa điểm đó  
Ảnh đại diện của địa danh, địa điểm  
đó  
content  
mediumtext Nội dung thông tin của địa danh, địa  
điểm đó  
brotherID  
childID  
varchar  
varchar  
Mã thông tin vđịa điểm cùng mức  
Mã thông tin vđịa điểm con  
Khóa ngoài  
Khóa ngoài  
Hình 2.3: Bảng info  
Log: bảng chứa profile của người dùng.  
Tên  
id  
Kiểu  
varchar  
Nội dung  
Thuộc tính  
Mã đăng nhập chương trình của người Khóa chính  
dùng  
date  
varchar  
varchar  
Ngày tháng của lần đăng nhập gần  
nhất  
Dấu vết lộ trình tham quan người  
route  
dùng  
font  
time  
varchar  
int  
Font chca người dùng lựa chọn  
Thời gian mà người dùng có thể thăm Khóa ngoài  
quan  
level  
int  
Mức độ đưa ra thông tin theo ngữ Khóa ngoài  
cảnh  
Hình 2.4: Bảng log  
12  
2.4. Mô hình dữ liệu  
Hình 2.5: Mô hình dữ liệu  
Các operator của Web service truy vấn đến cơ sở dữ liệu:  
checkLogin(String id, String password): kiểm tra việc đăng nhập.  
getAgeOfUser(String id): lấy vtuổi của người dùng.  
getNameOfUser(String id): lấy về họ tên của người dùng.  
getSexOfUser(String id): lấy về giới tính của người dùng 0=Nữ, 1=Nam.  
getDateVisited(String id): trả vngày tháng thăm quan.  
updateDateVisited(String sdate, String id): cập nhập ngày tháng thăm  
quan của người dùng.  
getFont(String id): trả vfont chữ mà người dùng lựa chọn  
updateFont(String id, String font): cập nhập lại font chữ mà người dùng  
vừa mới lựa chọn.  
13  
 
removeLog(String id): xóa tất cả những lộ trình mà chương trình lưu  
trong cơ sở dữ liệu.  
getLabel(String infoID): trả về một mảng chứa label của từng địa điểm  
getContent(String infoID): lấy ra thông tin về một địa điểm.  
getInfoID(String infoID): lấy ID của một thông tin.  
getChildID(String infoID): lấy ID của một địa điểm con.  
getFather(String infoID): trả vID của địa điểm cha  
getSize(String infoID): trả vsố lượng các địa danh ở một mức thông tin  
nào đó.  
2.5. Cài đặt thuật toán  
2.5.1. Các khái niệm cơ bản về cây  
Chúng ta có thể xác định khái niệm cây bằng hai cách: đệ quy và không đệ quy.  
Trước hết chúng ta đưa ra định nghĩa cây thông qua các khái niệm trong đồ thị định  
hướng. Một ví dụ điển hình vcây là tập hợp các thành viên trong một dòng họ với  
quan hệ cha-con. Trừ ông tổ của dòng họ này, mỗi một người trong dòng họ là con của  
một người cha nào đó trong dòng họ. Biểu diễn dòng họ dưới dạng định hướng: quan  
hệ cha-con được biểu diễn bởi các cung của đồ thị, nếu A là cha của B, thì trong đồ thi  
có cung đi từ đỉnh A tới đỉnh B. Xem xét các đặc điểm của đồ thị định hướng này,  
chúng ta có định nghĩa cây như sau:  
Cây là một đồ thị định hướng thỏa mãn các tính chất sau:  
Có một đỉnh đặc biệt gọi là gốc cây.  
Mỗi đỉnh C bất kỳ không phải là gốc, tồn tại duy nhất một đỉnh P có  
cung đi từ P đến C. Đỉnh P được gọi là cha của đỉnh C, và C là con của  
P.  
Có đường đi duy nhất từ gốc tới mỗi đỉnh của cây.  
14  
   
Hình 2.6  
Một số thuật ngữ hay dùng liên quan đến cây.  
Mở rộng của quan hệ cha-con. Là quan hệ tổ tiên-con cháu. Trong cây  
nếu có đường đi từ đỉnh A đến đỉnh B thì A được gọi là tổ tiên của B,  
hay B là con cháu của A. Chẳng hạn, gốc cây là tổ tiên của các đỉnh còn  
lại trong cây.  
Các đỉnh cùng cha được xem là anh em. Chẳng hạn. trong cây ở hình…  
các đỉnh B, C, D là anh em.  
Các đỉnh không có con được gọi là lá. Trong hình 2.6, các đỉnh lá là E, F,  
C, G. Một đỉnh không phải là lá thì được gọi là đỉnh trong.  
Một đỉnh bất kỳ A cùng với tất cả các con cháu của nó lập thành một cây  
gốc là A. Cây này được gọi là cây con của cây đã cho. Nếu đỉnh A là con  
của gốc, thì cây con gốc A được gọi là cây con của gốc.  
Độ cao của cây là số đỉnh nằm trên đường đi dài nhất từ gốc tới mt lá.  
Chẳng hạn, cây trong hình 2.6 có độ cao là 3. Dễ dàng thấy rằng, độ cao  
của cây là độ cao lớn nhất của cây con của gốc cộng thêm 1.  
Độ sâu ca đỉnh là độ dài đường đi từ gốc tới đỉnh đó. Chẳng hạn, trong  
hình 2.6, đỉnh G có độ sâu là 2.  
Cây là một cấu trúc dữ liệu phân cấp: các đỉnh của cây được phân thành các mức.  
Mức của mỗi đỉnh được xác định đệ quy như sau:  
Gốc ở mức 1.  
Mức của một đỉnh = mức của đỉnh cha +1.  
Như vậy, các đỉnh trong cùng một mức là đỉnh con của một đỉnh nào đó ở mức  
trên. Độ cao của cây chính là mức lớn nhất của cây. Ví dụ, cây trong hình 2.6 được  
15  
phân thành 3 mức: mức 1 chỉ gồm có gốc, mức 2 gồm các đỉnh A, B, C, D, mức 3 gồm  
các đỉnh E, F, G.  
2.5.2. Cài đặt cây  
Cây có thể cài đặt bởi các CTDL khác nhau. Chúng ta có thể sử dụng mảng để  
cài đặt cây. Song cách này không thuận tiện, ít được sử dụng. Sau đây, chúng ta trình  
bày hai phương pháp cài đặt cây thông dụng nhất.  
Phương pháp 1 (chỉ ra danh sách các đỉnh con của mỗi đỉnh). Với mỗi đỉnh của  
cây, ta sử dụng một con trỏ trỏ tới một đỉnh con của nó. Và như vậy, mỗi đỉnh của cây  
được biểu diễn bởi một cấu trúc gồm hai thành phần: một biến data lưu dữ liệu chứa  
trong đỉnh đó và một mảng child các con trỏ trỏ tới các đỉnh con. Giả sử, mỗi đỉnh chỉ  
có nhiều nhất K đỉnh con, khi đó ta có thể mô tả mỗi đỉnh bởi cấu trúc sau:  
const int K = 10;  
template <class Item>  
{
Item data;  
Node* child [K];  
};  
Chúng ta có thể truy cập tới một đỉnh bất kỳ trong cây bằng cách đi theo các con  
trỏ bắt đầu từ gốc cây. Vì vậy, ta cần có một con trỏ ngoài trỏ tới gốc cây, con trỏ root:  
Node <Item>* root;  
root  
A
B
C
D
G
E
F
Hình 2.7: Cài đặt cây bi mng con tr.  
16  
 
Phương pháp 2 (chỉ ra con cả và em liền kề của mỗi đỉnh). Trong một cây, số  
đỉnh con của các đỉnh có thể rất khác nhau. Trong trường hợp đó, nếu sử dụng mảng  
con trỏ, sẽ lãng phí bộ nhớ. Thay vì sử dụng mảng con trỏ, ta chỉ sử dụng hai con trỏ:  
con trỏ firstChild trỏ tới đỉnh con cả và con trỏ nextSibling trỏ tới em liền kề. Mỗi đỉnh  
của cây được biểu diễn bởi cấu trúc sau:  
template <class Item>  
struct Node  
{
Item data;  
Node*; firstChild;  
Node* nextSibling;  
};  
Chúng ta cũng cần có một con trỏ ngoài root trỏ tới gốc cây như trong phương  
pháp 1. Với cách này, cây trong hình 5.13 được cài đặt bởi CTDL như trong hình 5.14  
Dễ dàng thấy rằng, xuất phát từ gốc đi theo con trỏ firstChild hoặc con trỏ nextSibling,  
ta có thể truy cập tới đỉnh bất kỳ trong cây. Ta có nhận xét rằng, các con trỏ  
nextSibling liên kết các đỉnh tạo thành một danh sách liên kết biểu diễn danh sách các  
đỉnh con của mỗi đỉnh.  
root  
A
B
E
C
F
D
G
Hình 2.8: Cài đặt cây sử dụng hai con trỏ.  
Cần chú ý rằng, trong một số trường hợp, để thuận tiện cho các xử lý, ta có thể  
đưa thêm vào cấu trúc Node một con trỏ parent trỏ tới đỉnh cha.  
17  
Do yêu cầu của bài toán đặt ra là xử lý dữ liệu theo ngữ cảnh, tùy vào ngữ cảnh  
mà người dùng đưa vào sẽ truy suất ra dữ liệu thích hợp. Dữ liệu ở đây là thông tin về  
từng địa danh và các địa điểm con của nó. Độ sâu của cây thông tin sẽ quyết định mức  
độ chi tiết của thông tin, vì vậy việc chọn phương pháp triển khai cây thứ 2 là khả thi.  
Hình 2.9: Ví dụ về một nhánh trong cây dữ liệu  
Trên đây ta ví dụ một nhánh thông tin trong cơ sở dữ liệu của chương trình. Ở  
đây “Lăng tẩm Huế ” là root của cây. Ta sẽ chọn “Lăng Tây Sơn” là nhánh để phát  
triển.  
Mũi tên màu xanh lam: là phương thức lấy vinfoID các địa điểm cùng  
mức.  
Mũi tên màu đỏ: là phương thức lấy về infoID địa điểm con.  
Mũi tên màu xanh lá cây: là phương thức lầy vinfoID của địa điểm cha.  
Cấu trúc một node.  
18  
Hình 2.10: Cu trúc mt node  
infoID: ID của thông tin một địa điểm.  
label: nhãn của thông tin.  
image: ảnh đại diện của địa điểm.  
content: nội dung thông tin về địa điểm đó.  
brotherID: ID thông tin vđịa điểm anh em cùng mức.  
childID: ID thông tin về địa điểm con.  
19  
2.6. Luồng xử lý dữ liệu của chương trình  
Hình 2.11: Luồng xử lý của chương trình  
Chương trình gồm 5 Displayable chính: loginScreen, welcome, help, list, form. Các  
Displayable này sẽ có nhiệm vụ hiển thị trực quan thông tin trên màn hình điện thoại,  
giúp cho việc giao tiếp giữa người dùng và máy dễ dàng hơn.  
2.6.1. LoginScreen  
Là một gói có sẵn trong thư viện của J2ME, có chức năng đưa ra một màn hình  
login trực quan cho người dùng, các thành phần của loginScreen là Username Filed,  
Password Field và Login Button  
20  
   
Hình 2.12: Màn hình đăng nhập  
2.6.2. Welcome  
Đây là một Displayable mà thể hiện của nó là dưới dạng form.Form này có  
nhiệm vụ hiển thị thông tin người dùng như là họ tên, tuổi và giới tính và thông tin về  
thời gian ghé thăm gần nhất. Form này có các item ChoiceGroup giúp người dùng thao  
tác với chương trình đưa ra các request như là kích cỡ Font, và thời gian ghé thăm của  
người dùng.  
21  
 
Hình 2.13: Màn hình Welcome  
Các command trong welcome:  
Remove Log command: Xóa hết tất cả file log, file mà lưu dấu vết đường  
đi của các lần ghé thăm của người dùng.  
OK command: Đưa người dùng đến màn hình List.  
Giúp Đỡ command: Đưa người dùng đến màn hình giúp đỡ Help  
Hình 2.14: Các command của màn hình Welcome  
2.6.3. List  
22  
 
Displayable dưới dạng list, màn hình hiển thị danh sách những địa danh có trong  
cơ sở sở dữ liệu, từ đây người dùng có thể sử dụng các command để thao tác với  
chương trình như là xem thông tin tham khảo vđịa danh đó hay là dùng command đi  
tiếp>>” để khám phá xem địa danh đó còn có các danh mục con.  
Hình 2.15: Màn hình danh sách các địa danh  
Các command trong List  
Thông tin command: Đây là command đưa người dùng đến màn hình  
hiển thị thông tin về địa danh mà ta đã chọn ở màn hình list.  
Đi tiếp>> command: Bản chất dữ liệu ở đây là dưới dạng cây thông tin,  
một địa danh sẽ coi như là một cây, nó sẽ chi làm các địa danh con. Tùy  
vào địa danh thì cây thông tin biểu diễn sẽ là nhiều nhánh con hay ít.  
Command này sẽ trỏ chính vmàn hình list, nhưng với dữ liệu hiển thị  
khác, vấn đề này ta sẽ nói rõ hơn trong phần sau.  
Back: quay lại màn hình welcome.  
23  
Hình 2.16: Màn hình command của màn hình list  
2.6.4. Form  
Displayable dưới dạng form có nhiệm vụ hiển thị thông tin dưới dạng text và  
hình ảnh.  
Hình 2.17: Màn hình hiện thị thông tin địa điểm  
Các command trong form  
Back command: quay lại màn hình List.  
24  
 

Tải về để xem bản đầy đủ

pdf 46 trang yennguyen 01/06/2025 60
Bạn đang xem 30 trang mẫu của tài liệu "Khóa luận Nghiên cứu lập trình cho các thiết bị di động áp dụng cho bài toán hướng dẫn du lịch", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfkhoa_luan_nghien_cuu_lap_trinh_cho_cac_thiet_bi_di_dong_ap_d.pdf