Đồ án Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

MỤC LỤC

LỜI CẢM ƠN i

MỤC LỤC ii

DANH MỤC CÁC TỪ VIẾT TẮT iv

DANH MỤC CÁC HÌNH VẼ v

CHƯƠNG 1 – CHƯƠNG MỞ ĐẦU 1

1.1. Lý do chọn đề tài 1

1.2. Mục tiêu và nhiệm vụ 1

1.3. Đối tượng nghiên cứu và phạm vi hệ thống 2

1.4. Phương pháp nghiên cứu 2

1.5. Ý nghĩa thực tiễn của ứng dụng 2

CHƯƠNG 2 – CƠ SỞ LÝ THUYẾT 3

2.1. Giới thiệu hệ điều hành Android 3

2.1.1. Tổng quan cấu trúc của Android 3

2.1.2. Sơ lược các phiên bản Android 4

2.1.3. Các thành phần cơ bản của ứng dụng Android 5

2.2. Lập trình trên hệ điều hành Android 9

2.2.1. Ngôn ngữ JAVA 9

2.2.2. Ngôn ngữ JSON 12

2.2.3. Ngôn ngữ XML 12

2.2.4. Ngôn ngữ PHP 13

2.2.5. Các dịch vụ của google với lập trình MapView 14

2.3. Máy ảo Dalvik và Android SDK 16

2.3.1. Máy ảo Dalvik 16

2.3.2. Android SDK 17

2.3.3. Android Emulator 18

CHƯƠNG 3 – PHÂN TÍCH THIẾT KẾ HỆ THỐNG 19

3.1. Mô tả về hệ thống 19

3.1.1. Yêu cầu chức năng 19

3.1.2. Yêu cầu phi chức năng 19

3.1.3. Yêu cầu hệ thống 20

3.2. Phân tích thiết kế 20

3.2.1. Mô hình hóa yêu cầu 20

3.2.2. Mô hình hóa khái niệm 24

3.2.3. Mô hình hóa tương tác 26

3.2.4. Mô hình hóa hành vi 31

3.2.5. Thiết kế chi tiết biểu đồ lớp 35

3.2.6. Thiết kế kiến trúc vật lý 36

CHƯƠNG 4 – XÂY DỰNG ỨNG DỤNG 38

4.1. Demo chương trình 38

4.1.1. Xây dựng chức năng cập nhật dữ liệu của Web Services 38

4.1.2. Xây dựng chức năng xử lý của Web Services 38

4.1.3. Truyền dữ liệu qua các form 39

4.1.4. Hiển thị MapView 41

4.1.5. Sử dụng tài nguyên GPS và Internet của hệ thống 41

4.1.6. Đánh dấu vị trí trên MapView 42

4.1.7. Truy vấn và lấy dữ liệu từ hệ thống Services của Google 43

4.1.8. Đọc dữ liệu từ file JSON 43

4.2. Giao diện ứng dụng 44

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 48

DANH MỤC TÀI LIỆU THAM KHẢO 49

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 50

 

 

doc57 trang | Chuyên mục: Android | Chia sẻ: dkS00TYs | Lượt xem: 5034 | Lượt tải: 1download
Tóm tắt nội dung Đồ án Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
c Tìm kiếm bằng services ứng dụng.
Hình 33: Biểu đồ cộng tác Tìm kiếm bằng services ứng dụng
Biểu đồ cộng tác Tìm kiếm bằng google services.
Hình 34: Biểu đồ cộng tác Tìm kiếm bằng google services
Biểu đồ cộng tác Gửi góp ý.
Hình 35: Biểu đồ cộng tác Gửi góp ý
Mô hình hóa hành vi
Biểu đồ trạng thái
Biểu đồ trạng thái Mở hệ thống.
Hình 36: Biểu đồ trạng thái Mở hệ thống
Biểu đồ trạng thái Tìm kiếm.
Hình 37: Biểu đồ trạng thái Tìm kiếm
Biểu đồ trạng thái Gửi góp ý.
Hình 38: Biểu đồ trạng thái Gửi góp ý
Biểu đồ hoạt động
Biểu đồ hoạt động Mở hệ thống.
Hình 39: Biểu đồ hoạt động Mở hệ thống
Biểu đồ hoạt động Đóng hệ thống.
Hình 40: Biểu đồ hoạt động Đóng hệ thống
Biểu đồ hoạt động Cập nhật DM Ngân hàng.
Hình 41: Biểu đồ hoạt động Cập nhật DM Ngân hàng
Biểu đồ hoạt động Cập nhật DM Tỉnh thành.
Hình 42: Biểu đồ hoạt động Cập nhật DM Tỉnh thành
Biểu đồ hoạt động Cập nhật DM Quận huyện.
Hình 43: Biểu đồ hoạt động Cập nhật DM Quận huyện
Biểu đồ hoạt động Cập nhật DS Địa điểm.
Hình 44: Biểu đồ hoạt động Cập nhật DS Địa điểm
Biểu đồ hoạt động Tìm kiếm.
Hình 45: Biểu đồ hoạt động Tìm kiếm
Biểu đồ hoạt động Gửi góp ý.
Hình 46: Biểu đồ hoạt động Gửi góp ý
Thiết kế chi tiết biểu đồ lớp
Từ biểu đồ lớp mức phân tích, kết hợp với các biểu đồ trình tự, cộng tác, trạng thái và hoạt động. Biều đồ lớp mức thiết kế được phát triển như sau:
Hình 47: Biểu đồ lớp mức chi tiết
Thiết kế kiến trúc vật lý
Biểu đồ thành phần
Hệ thống được thiết kệ dựa theo mô hình client-server trong đó:
Phía client là ứng dụng được triển khai trên các thiết bị chạy hệ điều hành Android. Gửi các truy vấn lấy dữ liệu tới web server chạy các services của ứng dụng.
Phía server là ứng dụng được triển khai với ngôn ngữ PHP và cơ sở dữ liệu MySQL. Gồm các xử lý gửi dữ liệu được yêu cầu của máy client.
Hình 48: Biểu đồ thành phần
Biểu đồ triển khai
Hình 49: Biểu đồ triển khai
Google Web Services: Máy chủ dịch vụ của Google
Application Web Services: Máy chủ dịch vụ của ứng dụng. Triển khai dịch vụ trên máy chủ Linux, sử dụng ngôn ngữ PHP và CSDL MySQL.
Client Ung Dung: Thiết bị sử dụng ứng dụng tìm kiếm, triển khai trên hệ điều hành Android.
CHƯƠNG 4 – XÂY DỰNG ỨNG DỤNG
Demo chương trình
Xây dựng chức năng cập nhật dữ liệu của Web Services
Các chức năng cập nhật dữ liệu của service được xây dựng khá đơn giản với việc tạo ra các form nhập liệu phù hợp và chèn dữ liệu vào trong CSDL.
Hình 50: Demo minh họa cập nhật dữ liệu
Xây dựng chức năng xử lý của Web Services
Có 3 chức năng xử lý chính của web services là trả về các kết quả truy vấn về danh sách các ngân hàng, tỉnh thành, quận huyện và địa điểm các máy ATM. Đều sử dụng chung một cách thức hoạt động là từ ứng dụng gửi các truy vấn có điều kiện, services xử lý rồi trả về kết quả tương ứng.
Hình 51: Quá trình xử lý của Web Services
Như đã thấy việc gửi các giá trị truy vấn lên web service của ứng dụng thông qua các giá trị $_REQUEST từ ứng dụng Android. Để làm được điều đó phía ứng dụng phải sử dụng một đối tượng có kiểu BasicNameValuePair để tạo ra các biến REQUEST thông qua phương thức add(“tên_biến_request”, “giá_trị”).
	nameValuePairs.add(new BasicNameValuePair("tieude",noidung));
Sau khi khai báo các biến $_REQUEST thì tiến hành xác định URL truy vấn và gán các biến NameValuePair cho URL đó rồi tiến hành thực thi.
HttpPost httppost = new HttpPost("");
httppost.setEntity(newUrlEncodedFormEntity(nameValuePairs)); httpclient.execute(httppost);
Tiếp đến ở phía service, php có nhiệm vụ nhận các yêu cầu đó sau đó tạo truy vấn (select) vào cơ sở dữ liệu, lấy ra dữ liệu phù hợp với truy vấn rồi tiến hành xuất kết quả. Dữ liệu đầu ra được php xử lý thành dạng ngôn ngữ JSON đã đề cập.
$kq = mysql_query($sql);
while($post = mysql_fetch_assoc($kq)) 
	$posts[] = array('node_list_district'=>$post);
….
….
header('Content-type: application/json');
echo json_encode(array('list_district'=>$posts));
Truyền dữ liệu qua các form
Trong android để truyền dữ liệu qua các form để sử dụng ta sử dụng 2 đối tượng đó là Intent và Bundle. Thay vì dùng các danh sách tham số/đối số truyền thống, trong Android thì việc trao đổi dữ liệu giữa các tiến trình được sử dụng cơ chế Intent.
Hình 52: Mô hình trao đổi dữ liệu giữa 2 Activity
Để trao đổi dữ liệu thì Intent thường mang theo một danh sách các đối số được đặt tên chứa dữ liệu (Bundle)
Hình 53: Cấu trúc 1 Intent
Cấu trúc Bundle là một cơ chế đơn giản để truyền dữ liệu, với mỗi biến bundle sử dụng một định dạng cặp (“name”, value). Với các cặp phương thức để truyền và lấy dữ liệu như “putXXX”, “getXXX”.
Bundle atm = new Bundle();
atm.putString(“diachi”, “512 Lê Văn Hiến”);
Intent Form_gui = new Intent(“Form_nhan”);
Form_gui.putExtras(atm);
StartActivity(“Form_nhan”);
…………
…………
Bundle atm_nhan = getIntent().getExtras();
String atm_add = atm_nhan.getString(“diachi”);
Hiển thị MapView
Lập trình android về mapView khá dễ dàng khi google cung cấp cho class MapActivity để đơn giản trong việc lập trình, để hiển thị một bản đồ trên ứng dụng, chúng ta chỉ cần lấy key MapAPI rồi đưa vào ứng dụng.
Hình 54: Quá trình lấy dữ liệu map từ Google
Thêm MapAPI key vào layout của form: 
 	android:apiKey="0rMwFsILEdg4813dweucAH5iRKJHGozQs8FFvzQ"
Sử dụng tài nguyên GPS và Internet của hệ thống
Việc sử dụng tài nguyên trong hệ thống Android được đề cập khá rõ khi lập trình, để tương tác được với các ứng dụng khác cũng như tài nguyên phần cứng, phải thêm các thẻ quyền (permission) vào file manifest của project.
Hình 55: Quá trình sử dụng tài nguyên hệ thống
Demo thêm quyền đề sử dụng tài nguyên:
Đánh dấu vị trí trên MapView
Để đánh dấu một vị trí nào đó bất kì ở trên map, sử dụng một class để định dạng vị trí đánh dấu được kế thừa từ class ItemizedOverlay trong thư viện android. Class object khá đầy đủ các phương thức để sử dụng. Class này hoạt động khi xác định được tọa độ của địa điểm cần đánh dấu (kinh độ và vĩ độ).
Hình 56: Quá trình đánh dấu vị trí trên MapView
Việc đưa vị trí cần đánh dấu được thực hiện bằng phương thức setLocation() trong ItemizedOverlay. Sau đó điểm đánh dấu sẽ được định dạng về đồ họa như trong cấu trúc của class ItemizedOverlay rồi được vẽ trên tọa độ MapView tương ứng. 	
marker=getResources().getDrawable(R.drawable.hinh_danh_dau);
myItemizedOverlay = new ItemizedOverlay(marker,this);
mapView.getOverlays().add(myItemizedOverlay);
myItemizedOverlay.addItem(location);
Truy vấn và lấy dữ liệu từ hệ thống Services của Google
Khi truy vấn vào hệ thống Google Places API kết quả mà ta nhận được đó là một file XML hoặc JSON dựa vào giá trị output trong câu truy vấn.
Hình 57: Quá trình Truy vấn và lấy dữ liệu từ hệ thống Services của Google
Cấu trúc URL truy vấn trong đó các thuộc tính tìm kiếm cần có đó là tọa độ nơi tìm kiếm và bán kính. Trong chương trình sẽ tạo một HttpClient để thực thi URL truy vấn và các đối tượng Response, Entity để lấy dữ liệu.
Đọc dữ liệu từ file JSON
Như đã đề cập khi trước khi truy vấn vào hệ thống Google Services và Web Services của ứng dụng kết quả mà ta nhận được đó là một file XML hoặc JSON dựa vào giá trị output trong câu truy vấn. Sau khi đã có dữ liệu dưới định dạng file JSON thì tiến hành tách các dữ liệu cần thiết. 
Cấu trúc file JSON xác định các mảng giá trị dựa vào một cặp thẻ đóng mở “[“ “]”. Vì thế để lấy dữ liệu thì khai báo một mảng JSONArray được định nghĩa sẵn và được gán dữ liệu thông qua phương thức getJSONArray().
Hình 58: Mô hình xác định mảng giá trị trong JSON
 	JSONArray array_atm = json.getJSONArray("từ_khóa_trước_cặp_thẻ");
Cấu trúc các thẻ dữ liệu trong mảng là cấu trúc cây vì thế để truy cập đến các thẻ con trong mảng phải sử dụng phương thức getJSONObject().
	JSONObject c = array_atm.getJSONObject(“geometry”);
Cuối cùng là lấy dữ liệu thông qua phương thức getString(“tên_thẻ”).
	String atm_name = c.getString("name");
Giao diện ứng dụng
Giao diện chính của chương trình.
Hình 59: Giao diện chính của chương trình
Giao diện phần tìm kiếm từ web services của ứng dụng.
Hình 60: Giao diện phần tìm kiếm từ web services của ứng dụng
Giao diện phần kết quả trả về từ tìm kiếm.
Hình 61: Giao diện phần kết quả trả về từ tìm kiếm
Các tùy chọn khi click vào kết quả tìm kiếm.
Hình 62: Các tùy chọn khi click vào kết quả tìm kiếm
Tùy chọn tới vị trí hiện tại và vẽ đường.
Hình 63: Tùy chọn tới vị trí hiện tại và vẽ đường
Giao diện phần tìm kiếm trên MapView.
Hình 64: Giao diện phần tìm kiếm trên MapView
Hình 65: Quá trình hiển thị kết quả
Giao diện góp ý.
Hình 66: Giao diện góp ý
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Kết luận: Chương trình được thực hiện với thời gian ngắn nên chưa được thành công mỹ mãn và còn tồn tại một số khuyết điểm. Chương trình đã giải quyết được vấn đề tìm kiếm ATM thường ngày, việc tìm kiếm chưa thực sự được nhanh và giao diện chương trình dễ sử dụng. Bên cạnh đó vần còn tồn tại một vài khuyết điểm như khả năng đánh dấu vị trí trên bản đồ còn chưa chính xác với các thiết bị phần cứng chưa đáp ứng, cơ sở dữ liệu thu thập còn chưa chính xác hoàn toàn, kết quả tìm kiếm từ dịch vụ Google Places chưa đầy đủ so với thực tế. Vẽ đường chưa hoàn toàn tối ưu.
Hướng phát triển: Giải quyết triệt để những yếu điểm còn tồn tại và phát triển thêm các chức năng như hướng dẫn đường 3D. Mở rộng giải quyết những nhu cầu thường ngày như tìm kiếm trạm xăng, bến xe bus, nhà hàng, siêu thi, khách sạn, bệnh viện.
DANH MỤC TÀI LIỆU THAM KHẢO
[1]	Google INC. Android Developer Docs. (Online)
[2]	Google INC. Google Maps API Web Services. (Online)
[3]	Wikipedia. Android(Hệ điều hành) (Online)
[4] 	Wikipedia. Java (Ngôn ngữ lập trình) (Online)
[5]	ThS. Lê Tân. Giáo trình giảng dạy JAVA cơ bản. Trường CĐ CNTT Hữu Nghị Việt Hàn, 2010.
[6]	ThS. Lê Viết Trương. Giáo trình phân tích, thiết kế hướng đối tượng. Trường CĐ Công nghệ thông tin Hữu nghị Việt Hàn, 8/2011.
[7]	Jeff Friesen. Learn Java for Android Development, 2009.
[8]	Wallace Jackson. Android Apps for Absolute Beginners, 2011.
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

File đính kèm:

  • docĐồ án Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android.doc
  • zipCode.zip
  • zipSource Android.zip
  • zipThu vien.zip
  • docTóm tắt đồ án.doc
  • pptXây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android.ppt
Tài liệu liên quan