Tb_keyword bảng chứa chỉ mục tiêu đề của chức năng tìm kiếm

Một phần của tài liệu Xây dựng ứng dụng du lịch Danang Travel trên Samsung Smart TV. (Trang 56 - 83)

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 48

VI.2. Quan hệ thực thể

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 49

CHƢƠNG 3. THUẬT TỐN ÁP DỤNG

I. TÌM ĐƢỜNG

Nghiên cứu thuật tốn tìm đƣờng đi ngắn nhất trong chức năng tìm đƣờng. Ta đặt ra bài tốn tìm đƣờng đƣờng đi ngắn nhất từ một đỉnh đến các đỉnh cịn lại. Bài tốn này cịn đƣợc gọi là bài tốn tìm đƣờng ngắn nhất từ gốc duy nhất.

Các dạng của bài tốn:

 Tìm đƣờng đi ngắn nhất đến đỉnh duy nhất.

 Tìm đƣờng đƣờng đi ngắn nhất từ các đỉnh cho trƣớc.  Tìm đƣờng đi ngắn nhát cho mọi cặp đỉnh.

I.1 Thuật toán Dijkstra

Giả thiết là các cạnh (cung) (l(u) ≥ 0). Giả sử G có n đính đánh số thứ tự từ 1 tới n. Bài tốn đặt ra là tìm đƣờng đi ngắn nhất từ đỉnh 1 đến các đỉnh còn lại trong đồ thị.

I.1.1. Ký hiệu:  = số phần tử chƣa chọn:  [ ] { ( ) ( ) ( )  Pr(p) = đỉnh trƣớc đỉnh p theo đƣờng đi ngắn nhất từ gốc đến đỉnh p.  d = khoảng các ngắn nhất từ gốc đến các đỉnh còn lịa trong dồ thị Quy ƣớc cho các đỉnh khơng có đƣờng đi từ gốc đến nó.

 Mark = Tập đỉnh đã đánh dấu, định nghĩa nhƣ sau:

Mark[i] {

I.1.2. Thực hiện

Khởi tạo: Xuất phả từ đỉnh 1; = n -1 ;

Pr = [1,1,1,…1]

D = a[1,j], j= 1..2( Dòng đầu của ma trận kề A) Mark = [1,0..0]

Ở mỗi bƣớc lặp: Chọn đỉnh đánh dấu là đỉnh có độ dài ngắn nhất trong những

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 50

 d[k] = Min {d[i] : Mark[i]= 0 } ;  Mark[k]=1.

 Cập nhật lại d[j], Pr[j] với những đỉnh j chƣa đánh dấu (Mark[j]=0) theo công thức:

o d[j] = d[k] + a[k,j] nếu d[j] > d[k] +a[k,j]. o Pr[j] = k.

 Nếu tất cả mọi đỉnh đã đƣợc chọn, nghĩa là = 0. Dừng, nếu không quay lại bƣớc 2.

I.1.3. Thủ tục Dijkstra

// giả sử đã nhập ma trận chiều dài l theo ma trận kề A // Gán ban đầu cho d, Pr, Mark,

For (int j= 1; j≤ n ; j++) { d[j] = a(1,j) ; pr[j]=1 ; Mark[j] = 0;}

Mark[1] =1 ; n0 = n-1 ; WHILE (n0 > 0)

{d[k] = Min {d[j] : Mark[j]= 0 } ;

// Cập nhật lại , d vào Pr, Mark Mark[k] =1 ; n0 = n0 - 1 ;

For (int j= 1; j≤ n ; j++) if (Mark [j] = 0) && (d[k]+ a[k,j] < d[j])

{ d[j] = d[k] +a[k,j] ; pr[j]=k} }

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 51

I.1.4. Ví dụ

Hình 19. Đồ thị có hƣớng, có trọng số

Ta có ma trận kề A

 Gá ầu: cho Mark, d, Pr: Mark = [1, 0, 0, 0, 0, 0] d = [0, 10, 3, , 6, ] Pr = [1,1, 1, 1, 1, 1]  B c 1. Ch nh . C p nh t Mark, d, Pr : Mark = [1, 0,1, 0, 0, 0] d = [0, 7,3, , 5, ] Pr = [1, 3, 1, 1, 3, 1]  B c 2. Đ nh hiện thờ l . Ch nh . C p nh t Mark, d, Pr : Mark = [1, 0,1, 0, 1, 0] d = [0, 5,3, , 5, 6]

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 52 Pr = [1, 5, 1, 1, 3, 5]  B c 3. Đ nh hiện thờ l . Ch nh . C p nh t Mark, d, Pr : Mark = [1, 1, 1, 0, 1, 0] d = [0, 5,3, , 5, 6] Pr = [1, 5, 1, 1, 3, 5]  B c 4. Đ nh hiện thờ l . Ch nh . C p nh t Mark, d, Pr : Mark = [1, 1, 1, 0, 1, 1] d = [0, 5,3, , 5, 6] Pr = [1, 5, 1, 1, 3, 5]

Thuật tốn kết thúc vì đỉnh , ta có d[ ] = Min {d[j] : Mark[j] = 0}= d[ ] = . Từ thuật tốn, ta có kết quả sau:

d = [0, 5,3, , 5, 6] Pr = [1, 5, 1, 1, 3, 5]  Đ ờ ắn nhất từ n : → → → v ộ l 5  Đ ờ ắn nhất từ n : → v ộ l 3  Đ ờ ắn nhất từ n : → → v ộ l 5  Đ ờ ắn nhất từ n : → → v ộ l 6  K ô ờ ắn nhất từ nh → (d[ ] = ) vì ơ ờng n i từ →

II. XÂY DỰNG THUẬT TOÁN ĐIỀU KHIỂN REMOTE

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 53

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 54

Hình 21. Lƣu đồ thuật toán điều khiển menu di chuyển xuống

Hàm điều khiên remote di chuyển xuống (viết bằng javaScript)

Function moveDown(liMenuLength){

if ($(“#menu” + current).hasClass(“highlight”)) { $(“#menu” +current).removeClass(“highlight”); }

// check position of menu > liMenuLength I = liMenuLength;

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 55 if (current == I – 1 ){ current = 0; } else { current = current + 1; } $("#menu" + current).addClass("highlight"); Phân tích:

 Đầu vào là biến current chứa class highlight

 Đầu ra là vị trí của biến current đƣợc di chuyển đến

 Đầu tiên ta kiểm tra id menu nào có chứa class highlight

 Nếu current = Tổng độ dài của menu - 1 thì current = 0;

 Nếu current != 0 thì sau mỗi lần gọi thì current = current + 1;

II.2. Điều khiển remote di chuyển lên ở danh mục

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 56

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 57

Hàm điều khiên remote di chuyển lên (viết bằng javaScript)

Function moveLeft(liMenuLength){

if ($("#menu" + current).hasClass("highlight")) { $("#menu" +current).removeClass("highlight"); }

// check position of menu > liMenuLength if (current == 0){ current = (liMenuLength - 1); } else { current = current - 1; } $("#menu" + current).addClass("highlight"); Phân tích:

● Đầu vào là biến current chứa class highlight

● Đầu ra là vị trí của biến current đƣợc di chuyển đến ● Đầu tiên ta kiểm tra id menu nào có chứa class highlight ● Nếu current = 0 thì current = Tổng độ dài của menu - 1; ● Nếu current != 0 thì sau mỗi lần gọi thì current = current – 1;

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 58

II.3. Điều khiển remote di chuyển qua phải ở danh mục chi tiết

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 59

Hình 25. Lƣu đồ thuật tốn điều khiển menu di chuyển qua phải chi tiết

Hàm điều khiển remote di chuyển qua phải (viết bằng javaScript)

Function moveRight(liMenuLength){ if ($("#menu" + current).hasClass("highlight")) { $("#menu" +current).removeClass("highlight"); } if (current == 0){ current = (liMenuLength - 1); }

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 60 else { current = current + 1; } $("#menu" + current).addClass("highlight"); Phân tích:

● Đầu vào là biến current chứa class highlight

● Đầu ra là vị trí của biến current đƣợc di chuyển đến ● Đầu tiên ta kiểm tra id menu nào có chứa class highlight ● Nếu current = Tổng độ dài của menu - 1 thì current = 0 ; ● Nếu current != 0 thì sau mỗi lần gọi thì current = current + 1;

II.4. Điều khiển remote di chuyển qua trái ở danh mục chi tiết

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 61

Hình 27. Lƣu đồ điều khiển remote di chuyển qua trái ở danh mục chi tiết

Hàm điều khiển remote di chuyển qua trái (viết bằng javaScript)

Function moveLeft(liMenuLength){

if ($("#menu" + current).hasClass("highlight")) { $("#menu" +current).removeClass("highlight"); }

// check position of menu > liMenuLength if (current == 0){

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 62 } else { current = current - 1; } $("#menu" + current).addClass("highlight"); Phân tích:

● Đầu vào là biến current chứa class highlight

● Đầu ra là vị trí của biến current đƣợc di chuyển đến ● Đầu tiên ta kiểm tra id menu nào có chứa class highlight ● Nếu current = 0 thì current = Tổng độ dài của menu - 1; ● Nếu current != 0 thì sau mỗi lần gọi thì current = current – 1;

II.5. Điều khiển remote di chuyển lên ở danh mục chi tiết

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 63

Hình 29. Lƣu đồ điều khiển remote di chuyển lên ở danh mục chi tiết

Hàm điều khiển remote di chuyển lên (viết bằng javaScript)

Function moveUp(liMenuLength){

if ($("#menu" + current).hasClass("highlight")) { $("#menu" +current).removeClass("highlight"); }

// check position of menu > liMenuLength if (current == 0){

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 64 current = (liMenuLength - 1); } else { current = current - 2; } $("#menu" + current).addClass("highlight"); Phân tích:

· Đầu vào là biến current chứa class highlight

· Đầu ra là vị trí của biến current đƣợc di chuyển đến · Đầu tiên ta kiểm tra id menu nào có chứa class highlight · Nếu current = 0 thì current = Tổng độ dài của menu - 1; · Nếu current != 0 thì sau mỗi lần gọi thì current = current – 2;

II.6. Điều khiển remote di chuyển xuống ở danh mục chi tiết

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 65

Hình 31. Lƣu đồ điều khiển remote di chuyển xuống ở danh mục chi tiết

Hàm điều khiên remote di chuyển xuống (viết bằng javaScript)

Function moveDown(liMenuLength){

if ($("#menu" + current).hasClass("highlight")) { $("#menu" +current).removeClass("highlight"); }

// check position of menu > liMenuLength if (current == 0){

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 66 current = (liMenuLength - 1); } else { current = current + 2; } $("#menu" + current).addClass("highlight"); Phân tích:

● Đầu vào là biến current chứa class highlight

● Đầu ra là vị trí của biến current đƣợc di chuyển đến ● Đầu tiên ta kiểm tra id menu nào có chứa class highlight ● Nếu current = Tổng độ dài của menu - 1 thì current = 0; ● Nếu current != 0 thì sau mỗi lần gọi thì current = current + 2;

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 67

CHƢƠNG 4. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ

Chƣơng này trình bài kết quả thực hiện đƣợc.

I. KẾT QUẢ ĐẠT ĐƢỢC

Sau khi phân tích thiết kế hệ thống, cơ sở dữ liệu thì tơi đã hồn thành xong 4 chức năng chính của ứng dụng gồm có chức năng giới thiệu, tour, địa điểm và tìm kiếm.

Hình 32. Giao diện của chƣơng trình

I.1. Chức năng giới thiệu

Chức năng này tập trung giới thiệu về các địa điểm tham quan, sự kiện diễn ra hằng năm, các quán ăn nhà hàng nổi tiếng, các món đặc sản, những cây cầu nổi tiếng. Với hình ảnh sinh động, sắc nét, nội dung mô tả lý thú chi tiết sẽ đem lại cho ngƣời dùng khoảng khắc trải nghiệm thú vị cùng với chiếc tivi tại ngay gia đình của mình, hoặc là khám phá địa điểm khi đang đi du lịch với chiếc điện thoại thông minh trên tay.

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 68

Hình 33. Giao diện chức năng giới thiệu trên Samsung Smart TV

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 69

I.2. Chức năng tour

o Cung cấp các tour mẫu

Phần này sẽ cũng cấp cho ngƣời dùng một loạt các tour mẫu và những thơng tin chi tiết về tour, các hình ảnh về địa điểm du lịch để ngƣời dùng có thể tìm hiểu và lựa chọn tour du lịch cho mình.Ngồi ra ở chức năng tour ngƣời dùng có thể thực hiện lƣu tour mà mình u thích, có thể xóa tour mà ngƣời dùng đã lƣu.

o Lƣu tour yêu thích

Sau khi tham khảo các tour mẫu, nếu nhƣ chọn đƣợc tour u thích cho mình thì ngƣời dùng có thể lƣu lại bằng cách bấm vào nút lƣu tour, khi đó tour sẽ đƣợc lƣu vào mục tour yêu thích của từng ngƣời dùng.

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 70

o Xóa tour đã lƣu

Nếu muốn xóa tour đã lƣu ta có thể xóa tour bằng 2 cách

● Xóa trực tiếp trong tour mẫu

● Xóa ở mục tour u thích

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 71

I.3. Địa điểm

Chức năng địa điểmgồm có hai phần chính: hiển thị địa điểm và tìm đƣờng:

 Hiển thị địa điểm

 Các địa điểm đƣợc hiển thị lên bản đồ theo nhóm

I.3.1. Chức năng hiển thị địa điểm lên bản đồ

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 72

I.3.2. Chức năng tìm đƣờng

Hình 38. Giao diện chức năng tìm đƣờng trên Samsung Smart TV

I.4. Tìm kiếm

Sử dụng Fulltext Search của MySQL để tiến hành xây dựng chức năng tìm kiếm nhƣ sau:

Chúng ta tạo bảng dùng lệnh Fulltext của MySQL để chỉ định những trƣờng mà chúng ta đánh dấu chỉ mục cho việc tìm kiếm:

create table tb_keyWord (

id int auto_increment not null, title varchar(200),

content TEXT,

fulltext(title, content) ) ENGINE=MyISAM;

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 73

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 74

II. ĐÁNH GIÁ

Ứng dụng Danang Travel Ứng dụng trên thị trƣờng

Đặc điểm

- Dùng đƣợc trên:

Samsung Smart Tivi

- Thích hợp cho nhiều loại ngƣời dùng, phục vụ cho một ngƣời hoặc một nhóm ngƣời có nhu cầu đi du lịch

- Chỉ dùng đƣợc trên một vài loại

thiết bị cố định, khơng có màn hình to rõ nhƣ Tivi

Phân tích

- Có nhiều chức năng, mang tính

tƣơng tác ngƣời dùng.

- Giới thiệu chi tiết về từng địa danh, sự kiện.

- Đa số mang tính chất hiển thị

khơng tƣơng tác nhiều với ngƣời sử dụng.

- Mang tính khái quát về từng thành phố.

Một phần của tài liệu Xây dựng ứng dụng du lịch Danang Travel trên Samsung Smart TV. (Trang 56 - 83)

Tải bản đầy đủ (PDF)

(85 trang)