1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu hệ điều hành android và xây dựng ứng dụng tìm kiếm máy rút tiền atm

52 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu hệ điều hành Android và xây dựng ứng dụng tìm kiếm máy rút tiền ATM
Tác giả Lê Thị Thu Trang
Người hướng dẫn PTS. Nguyễn Văn A
Trường học Trường Cao Đẳng Công Nghệ Thông Tin Hữu Nghị Việt – Hàn
Chuyên ngành Lập trình
Thể loại Đồ án
Định dạng
Số trang 52
Dung lượng 2,41 MB
File đính kèm xây dựng ứng dụng tìm kiếm máy rút tiền ATM.rar (2 MB)

Cấu trúc

  • Chương 1. CHƯƠNG MỞ ĐẦU (7)
    • 1.1. Phát biểu bài toán (7)
    • 1.2. Mục tiêu và nhiệm vụ (7)
      • 1.2.1. Mục tiêu (7)
      • 1.2.2. Nhiệm vụ (8)
    • 1.3. Đối tƣợng nghiên cứu và phạm vi hệ thống (8)
      • 1.3.1. Đối tượng nghiên cứu (8)
      • 1.3.2. Phạm vi hệ thống (8)
    • 1.4. Ý nghĩa thực tiễn của ứng dụng (8)
  • Chương 2. CƠ SỞ LÝ THUYẾT (9)
    • 2.1. Giới thiệu hệ điều hành Android (9)
      • 2.1.1. Khái niệm hệ điều hành Android (9)
      • 2.1.2. Đặc điểm của hệ điều hành Android (9)
      • 2.1.3. Kiến trúc của hệ điều hành Android (10)
      • 2.1.4. Các thành phần cơ bản của hệ điều hành Android (11)
      • 2.1.5. Android Emulator (13)
    • 2.2. Lập trình trên hệ điều hành Android (14)
      • 2.2.1. Ngôn ngữ JAVA (14)
      • 2.2.2. Tổng quan ngôn ngữ XML (16)
      • 2.2.3. Tổng quan ngôn ngữ JSON (16)
      • 2.2.4. Tổng quan ngôn ngữ PHP (17)
      • 2.2.5. Các dịch vụ của google để lập trình MapView (18)
  • Chương 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG (20)
    • 3.1. Yêu cầu hệ thống (20)
      • 3.1.1. Yêu cầu chức năng (20)
      • 3.1.2. Yêu cầu phi chức năng (20)
      • 3.1.3. Yêu cầu hệ thống (20)
    • 3.2. Phân tích thiết kế hệ thống (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 (25)
      • 3.2.4. Mô hình hóa hành vi (33)
      • 3.2.5. Thiết kế chi tiết biểu đồ lớp (36)
      • 3.2.6. Thiết kế kiến trúc vật lý (37)
  • 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 giao diện của web service (38)
      • 4.1.2. Xây dựng chức năng xử lý của web service (40)
      • 4.1.3. Truyền dữ liệu qua các Activity (42)
      • 4.1.4. Hiển thị Bản đồ (43)
      • 4.1.5. Đọc dữ liệu từ file JSON (45)
    • 4.2. Giao diện ứng dụng (46)

Nội dung

Công việc kinh doanh buôn bán đã xuất hiện từ rất lâu, trãi qua mọi giai đoạn lịch sử nó mang hình thức đặc thù riêng. Trước kia, khi các công cụ hổ trợ công việc mua bán chưa phát triển mạnh, thì người kinh doanh mua bán chỉ diễn ra dưới hình thức mua bán trực tiếp. Từ khi khoa học công nghệ phát triển, nó đã tạo ra phát triển các loại hình thức mua bán mới, điển hình là mua bán trực tuyến. Hình thức mua bán trực tuyến hổ trợ đắc lực cho người kinh doanh tiếp xúc với được nhiều khách hàng, còn khách hàng thì công việc mua bán được diễn ra nhanh chóng, thuận lợi, tiết kiệm được thời gian, … Hiện nay, Thương mại điện tử (TMĐT) đang được nhiều quốc gia quan tâm, coi là một trong những động lực phát triển chủ yếu của nền kinh tế. TMĐT đem lại những lợi ích tiềm tàng, giúp doanh nghiệp thu được thông tin phong phú về thị trường và đối tác, giảm phí tiếp thị và giao dịch, tạo dựng và củng cố quan hệ bạn hàng

CHƯƠNG MỞ ĐẦU

Phát biểu bài toán

Ngày nay các thiết bị số cầm tay nhƣ điện thoại di động, điện thoại thông minh, máy tính bảng có rất nhiều trên thị trường Với giá thành ngày càng rẻ và các lợi ích đem lại, các thiết bị đó ngày càng đƣợc sử dụng nhiều và phổ biến Một nền tảng đƣợc sử dụng trong các thiết bị đó là hệ điều hành thông minh Android của Google Do vậy đi cùng việc phát triển và sử dụng các thiết bị phần cứng một cách hiệu quả thì việc phát triển các ứng dụng phần mềm chạy trên nền Android càng lúc càng tăng cao

Các thiết bị di động ngày càng mạnh mẽ với khả năng xử lí các tác vụ mà chúng ta khó có thể tưởng tượng trước đây vài năm Những chiếc điện thoại thời trang và tiện dụng với những tính năng về phần cứng nhƣ GPS, gia tốc kế và màn hình cảm ứng là một nền tảng hấp dẫn cho các ứng dụng di động đột phá Trong khi việc phát triển nền tảng di động hiện nay chủ yếu xây dựng trên các hệ điều hành độc quyền, hạn chế các ứng dụng của bên thứ ba, sự ra đời của Android đã mang lại một giải pháp mở Không bị hạn chế, các lập trình viên Android tự do viết các ứng dụng tận dụng tối đa sự phát triển mạnh mẽ của phần cứng cho điện thoại di động Android nhanh chóng trở thành hệ điều hành thu hút nhiều lập trình viên và chiếm một thị phần lớn trong thị trường di động

Việc sử dụng các thiết bị số ngoài khả năng hỗ trợ con người trong công việc, giải trí mà còn giúp con người tiết kiệm thời gian hơn vào nhiều công việc thực tiễn trong đời sống hằng ngày Hiện nay một hình thức lưu giữ tiền khá phổ biến trong cuộc sống đó là thẻ rút tiền ATM, nó được dùng để chi trả lương cho nhiều nhân viên của các công ty, doanh nghiệp, hay dùng để gởi tiền cho sinh viên ở xa nhà Vì vậy việc tìm kiếm các địa điểm để sử dụng thẻ là điều khá hữu dụng trong cuộc sống, khi mà trong một số trường hợp chúng ta rất khó có thể xác định cột thẻ trong hàng ngàn địa điểm trong thành phố hay các khu vực khác.

Mục tiêu và nhiệm vụ

 Tìm hiểu đƣợc các công nghệ lập trình cần thiết trên nền Android để hoàn thành đƣợc ứng dụng có thể tìm kiếm nhanh và chính xác vị trí máy ATM

 Hiểu về nguyên lý hoạt động của Android, các thành phần của hệ thống cũng nhƣ của một ứng dụng thực thi trên nền android

 Tìm hiểu và áp dụng đƣợc các công nghệ lập trình trên nền Android nhƣ ngôn ngữ JAVA, tương tác với các tài nguyên của hệ thống (GPS, Internet, TouchScreen), sử dụng các dịch vụ của Google nhƣ Google Map, Google Places API…

 Tìm hiểu xây dựng một cơ sở dữ liệu bằng MySql Xây dựng một web service để quản lý và cập nhật thông tin cho ứng dụng

 Đọc các tài liệu liên quan về bộ thƣ viện lập trình trên nền Android Tìm hiểu các dịch vụ liên quan đến ứng dụng.

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

 Ngôn ngữ lập trình JAVA, XML, PHP

 Hệ cơ sở dữ liệu MySQL

 Công cụ Android SDK Eclipse

 Hệ điều hành và tài nguyên hệ thống Android

 Các dịch vụ của Google nhƣ Google Map, Google Places API…

 Đề tài chỉ dừng lại ở khuôn khổ tìm kiếm địa chỉ đặt các trạm ATM theo tỉnh thành phố ở Việt Nam Ứng dụng đƣợc viết trên nền hệ điều hành Android, Web Service đƣợc đƣợc viết bằng PHP và dùng CSDL MySQL.

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

 Chương trình có thể áp dụng vào cuộc sống hàng ngày để tìm kiếm máy ATM trên toàn quốc khi có nhu cầu mà đến cả những người có ít kiến thức về công nghệ có thể sử dụng.

CƠ SỞ LÝ THUYẾT

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

2.1.1 Khái niệm hệ điều hành Android

Android là hệ điều hành trên các thiết bị số di động nhƣ smartphone và tablet (và hiện nay là cả trên một số đầu phát HD, HD Player) phát triển bởi Google và dựa trên nền tảng Linux Trước đây, Android được phát triển bởi công ty liên hợp Android Vào năm 2005, Google đã mua lại Android nằm trong chiến lược tiến vào thị trường di động Google muốn Android trở thành nền tảng “mở” và miễn phí Do vậy hầu hết mã nguồn của Android đƣợc phát hành theo giấy phép mã nguồn mở Apache nên bất cứ ai muốn sử dụng Android có thể download toàn bộ mã nguồn Hơn nữa các nhà sản xuất phần cứng có thể thêm các thành phần mở rộng độc quyền của hãng để tạo ra các sản phẩm khác nhau Chính mô hình phát triển đơn giản này khiến Android trở nên rất hấp dẫn Android có một cộng đồng những nhà phát triển rất lớn viết các ứng dụng cho hệ điều hành của mình

Hiện tại có khoảng hơn 250,000 ứng dụng cho Android OS và vào khoảng hơn 375,000 ứng dụng đã đƣợc đệ trình, điều này khiến Android trở thành hệ điều hành di động có môi trường phát triển lớn thứ 2 Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java Sự ra mắ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 minh thiế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ễn thô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 Google công bố hầu hết các mã nguồn của Android theo bản cấp phép Apache Hệ điều hành Android bao gồm 12 triệu dòng mã; 3 triệu dòng XML, 2.8 triệu dòng mã C, 2.1 triệu mã Java và 1.75 triệu dòng mã C++

2.1.2 Đặc điểm của hệ điều hành Android

 Aplication framework: cho phép tái sử dụng và thay thế các thành phần

 Davik virtual machine: tối ưu các yêu cầu bộ nhớ cần thiết cho việc phát triển các ứng dụng trên thiết bị di động

 Intergrated browser: dựa trên mã nguồn mở webkit động

 Optimized graphics: hỗ trợ thư viện đồ họa 2D, 3D dựa trên các đặc điểm kỹ thuật OpenGL ES 1,0 (phần cứng tăng tốc tùy chọn)

 SQLite: lưu trữ cấu trúc dữ liệu

 Media Support: hỗ trợ các định dạng âm thanh, video, hình ảnh phổ biến

(MPEG4, H.264, MP3, AAC, ARM, JPG, PNG, GIF)

 GSM Telephony (phụ thuộc phần cứng)

 Bluetooth, EDGE, 3G, WIFI (phụ thuộc phần cứng)

 Camera, GPS, compass, and accelronment:bao gồm thiết bị giả lập (Emutor) công cụ debugging Công cụ cho bộ nhớ và Plugin cho Eclipse IDE

2.1.3 Kiến trúc của hệ điều hành Android

Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành Android Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây

 Applications: Android đƣợc tích hợp sẵn một số ứng dụng cần thiết cơ bản nhƣ: contacts, browser, camera, Phone.… Tất cả các ứng dụng chạy trên hệ điều hành Android đều đƣợc viết bằng Java

 Application framework: Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo Nhà phát triển đƣợc tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập, các dịch vụ chạy nền, thiết lập hệ thống báo động, thêm các thông báo để các thanh trạng thái, và nhiều, nhiều hơn nữa

 Library: Android bao gồm một bộ thƣ viện C/C++, đƣợc sử dụng bởi các thành phần khác nhau của hệ thống Android Những khả năng tiếp xúc với các nhà phát triển thông qua các khuôn khổ ứng dụng Android Ví dụ một số thƣ viện nhƣ “System C library, Media Libraries, Surface Manager,LibWebCore, SQLite…”

 Android Runtime: Android bao gồm một tập hợp các thƣ viện cơ bản cung cấp hầu hết các chức năng có sẵn trong các thƣ viện lõi của ngôn ngữ lập trình Java Tất cả các ứng dụng Android đều chạy trong tiến trình riêng Máy ảo Dalvik đã đƣợc viết để cho một thiết bị có thể chạy nhiều máy ảo hiệu quả Các VM Dalvik thực thi các tập tin thực thi Dalvik (dex) Định dạng đƣợc tối ƣu hóa cho bộ nhớ tối thiểu VM là dựa trên register-based, và chạy các lớp đã đƣợc biên dịch bởi một trình biên dịch Java để chuyển đổi thành các định dạng dex Các VM Dalvik dựa vào nhân Linux cho các chức năng cơ bản nhƣ luồng và quản lý bộ nhớ thấp

 Linux kernel: Android dựa trên Linux phiên bản 2.6 cho hệ thống dịch vụ cốt lõi nhƣ security, memory management, process management, network stack, and driver model Kernel Linux hoạt động nhƣ một lớp trừu tƣợng hóa giữa phần cứng và phần còn lại của phần mềm stack

2.1.4 Các thành phần cơ bản của hệ điều hành Android

 Ứng dụng Android bao gồm nhiều thành phần liên kết với nhau đƣợc giới hạn trong kiến trúc ứng dụng Kiến trúc ứng dụng mô tả chi tiết mỗi thành phần và sự tương tác giữa các thành phần này cũng như siêu dữ liệu về yêu cầu phần cứng

 Các thành phần sau đây tạo nên một ứng dụng Android:

 Activity: là lớp thể hiện ứng dụng Mỗi màn hình trong ứng dụng là một mở rộng của lớp Activity Các Activity sử dụng các View tạo thành giao diện đồ họa tương tác người dùng để thể hiện thông tin và phản hồi hành động của người dùng

 Service: là thành phần chạy ẩn, cập nhật nguồn dữ liệu và thể hiện các

Activity, kích hoạt các Notification Các Service thường thực hiện các xử lí thông thường như tiếp tục Activity sau khi các Activity này không hoạt động hoặc hiển thị

 Content Provider: là thành phần lưu trữ dữ liệu chia sẻ Content

Provider quản lí và chia sẻ cơ sở dữ liệu của ứng dụng Chúng đƣợc coi nhƣ là phương tiện chia sẻ dữ liệu giữa các ứng dụng

 Intent: là cấu trúc truyền thông điệp giữa các ứng dụng Chúng ta có thể sử dụng Intent để truyền một thông tin tới toàn hệ thống hay tới Activity hay

Service định trước để thực thi một hoạt động Hệ thống sau đó sẽ xác định đối tƣợng nào sẽ thực hiện các hoạt động phù hợp

 Broadcast Receiver: là nơi nhận các Intent Chúng ta có thể tự tạo một

Broadcast Receiver để ứng dụng có thể nhận đƣợc các Intent phù hợp với bộ lọc đặt trước Broadcast Receiver tự động bắt đầu khi ứng dụng phản hồi với Intent nhận được và biến ứng dụng trở thành hướng sự kiện một cách hoàn hảo

 Widget: thành phần trực quan của ứng dụng có thể thêm vào màn hình chính Là một dạng Broadcast Receiver, Widget cho phép người dùng tạo ra các ứng dụng động, tương tác được nhúng ngay trên màn hình chính

 Notification: là thành phần thông báo cho người dùng Hộp thoại thông báo cho người dùng mà không gián đoạn các Activity hiện thời Đây là kĩ thuật thông báo cho người dùng nằm trong một Service hay một Broadcast Receiver Ví dụ như khi nhận được một tin nhắn hay cuộc gọi đến có thể thông báo cho người dùng bằng nhấp nháy đèn hay bằng âm thanh…

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

 Tổng quan ngôn ngữ JAVA

 Java là một ngôn ngữ lập trình dạng lập trình hướng đối tượng (OOP) 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ên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy Bằng cách này, Java thường chạy chậm hơn những ngôn ngữ lập trình thông dịch khác nhƣ C++, Python, Perl, PHP, C#

 Trình biên dịch thường phải tốn nhiều thời gian để xây dựng nên rất đắt, vì vậy để mỗi loại CPU có một trình biên dịch riêng là rất tốn kém Do đó nhu cầu thực tế đòi hỏi một ngôn ngữ chạy nhanh, gọn, hiệu quả và độc lập thiết bị tức là có thể chạy trên nhiều loại CPU khác nhau, dưới các môi trường khác nhau “Oak” đã ra đời và vào năm 1995 đƣợc đổi tên thành Java

 Một số tính chất ngôn ngữ JAVA

 Cú pháp Java đƣợc vay mƣợn nhiều từ C C++ nhƣng có cú pháp hướng đối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn Do đó việc viết một chương trình bằng Java dễ hơn, đơn giản hơn, đỡ tốn công sửa lỗi hơn Dùng bộ thƣ viện chuẩn KFC, nhiều đoạn code Java chỉ mất vài dòng trong khi C phải mất cả trang giấy

 Đơn giản: Những người thiết kế mong muốn phát triển một ngôn ngữ dễ học và quen thuộc với đa số người lập trình Do vậy Java loại bỏ các đặc trưng phức tạp của C và C++

 Hướng đối tượng: Java là ngôn ngữ lập trình thuần hướng đối tượng, mọi chương trình viết trên Java đều phải được xây dựng trên các đối tượng Nếu trong

C/C++ ta có thể tạo ra các hàm (chương trình con không gắn với đối tượng nào) thì trong Java ta chỉ có thể tạo ra các phương thức (chương trình con gắn liền với một lớp cụ thể) Trong Java không cho phép các đối tƣợng có tính năng đa kế thừa mà đƣợc thay thế bằng các giao diện (interface)

 Độc lập phần cứng và hệ điều hành: Đối với các ngôn ngữ lập trình truyền thống như C/C++, phương pháp biên dịch được thực hiện như sau

Hình 2.2 Cách biên dịch chương trình truyền thống

Hình 2.3 Cơ chế biên dịch của JAVA

 Java là ngôn ngữ yêu cầu chặt chẽ về kiểu dữ liệu

 Kiểu dữ liệu phải khai báo tường minh

 Java không sử dụng con trỏ và các phép toán con trỏ

 Java kiểm tra tất cả các truy nhập đến mảng, chuỗi khi thực thi để đảm bảo rằng các truy nhập đó không ra ngoài giới hạn kích thước

 Tự động giải phóng bộ nhớ

 Cơ chế bẫy lỗi của Java giúp đơn giản hóa quá trình xử lý lỗi và hồi phục sau lỗi

 Bảo mật: Java cung cấp một môi trường quản lý thực thi chương trình với nhiều mức để kiểm soát tính an toàn:

 Phân tán: Java đƣợc thiết kế để hỗ trợ các ứng dụng chạy trên mạng bằng các lớp mạng (java.net) Hơn nữa, Java hỗ trợ nhiều nền chạy khác nhau nên chúng đƣợc sử dụng rộng rãi nhƣ là công cụ phát triển trên Internet - nơi sử dụng nhiều nền khác nhau

 Đa luồng: Chương trình Java cung cấp giải pháp đa luồng (Multithreading) để thực thi các công việc đồng thời Chúng cũng cung cấp giải pháp đồng bộ giữa các luồng Đặc tính hỗ trợ đa luồng này cho phép xây dựng các ứng dụng trên mạng chạy hiệu quả

 Linh động: Java đƣợc thiết kế nhƣ một ngôn ngữ động để đáp ứng cho những môi trường mở Các chương trình Java chứa rất nhiều thông tin thực thi nhằm kiểm soát và truy nhập đối tƣợng lúc chạy Điều này cho phép khả năng liên kết mã động

2.2.2 Tổng quan ngôn ngữ XML

 XML, hoặc Extensible Markup Language (ngôn ngữ đánh dấu mở rộng), là một ngôn ngữ đánh dấu mà bạn có thể sử dụng để tạo ra thẻ riêng của mình Nó đƣợc tạo nên bởi Liên minh mạng toàn cầu, nhằm khắc phục những hạn chế của HTML - ngôn ngữ đánh dấu siêu văn bản, là cơ sở của mọi trang Web Giống nhƣ HTML, XML cũng đƣợc dựa trên SGML – Standard Generalized Markup Language Mặc dù SGML đƣợc sử dụng trong ngành công nghiệp xuất bản trong nhiều thập kỷ, nhƣng sự phức tạp của nó đều khiến những ai từng sử dụng nó mà không có cách nào khác phải thấy mệt mỏi

2.2.3 Tổng quan ngôn ngữ JSON

 JSON (JavaScript Object Noattion) là một chuẩn để định dạng dữ liệu Rất dễ dàng để đọc, viết và phân tích Nó dựa trên cơ sở tập hợp của ngôn ngữ JavaScript, tiêu chuẩn ECMA-262 phiên bản 3 – tháng 12 năm 1999 Khi sử dụng JSON không cần phải có các bước phân tích phức tạp như đối với XML Mà có thể truy vấn trực tiếp giá trị theo tên (khóa) đƣợc định nghĩa trong JSON Đứng về mặt tốc độ của các ứng dụng di động đây là một ƣu điểm rất lớn

 JSON đƣợc xây dựng trên 2 cấu trúc:

 Là tập hợp của các cặp tên và giá trị name-value

 Là 1 tập hợp các giá trị đã đƣợc sắp xếp

 Các đặc điểm của JSON:

 JSON là văn bản trơn (không có định dạng màu sắc, cỡ chữ,…)

 JSON là "tự mô tả" (người dùng có thể hiểu được)

 JSON là phân cấp (có cấu trúc cây)

 JSON có thể đƣợc phân tích cú pháp (parse) bởi JavaScript

 Dữ liệu JSON có thể đƣợc truyền đi bằng AJAX

 Không có thẻ kết thúc

 Nhanh hơn để đọc và ghi

 Không dùng các từ reserve

2.2.4 Tổng quan ngôn ngữ PHP

 Tóm tắt sơ lƣợc về PHP

 PHP đƣợc phát triển từ một sản phẩm có tên là PHP/FI PHP/FI do Rasmus Lerdorf tạo ra năm 1995 Rasmus đã quyết định công bố mã nguồn của PHP/FI cho mọi người xem, sử dụng cũng như sửa các lỗi có trong nó đồng thời cải tiến mã nguồn

 Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C PHP/FI 2.0 đƣợc chính thức công bố vào tháng 11 năm 1997

 PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi với các phiên bản PHP mà chúng ta đƣợc biết ngày nay Nó đã đƣợc Andi Gutmans và Zeev Suraski tạo ra năm 1997 PHP 3.0 đã chính thức đƣợc công bố vào tháng 6 năm 1998, sau thời gian 9 tháng đƣợc cộng đồng kiểm nghiệm

 PHP 4.0 đã chính thức đƣợc công bố vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra đời Ngoài tốc độ xử lý đƣợc cải thiện rất nhiều, PHP 4.0 đem đến các tính năng chủ yếu khác gồm có sự hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làm việc HTTP, tạo bộ đệm thông tin đầu ra, nhiều cách xử lý thông tin người sử dụng nhập vào bảo mật hơn và cung cấp một vài các cấu trúc ngôn ngữ mới

 PHP 5 bản chính thức đã ra mắt ngày 13 tháng 7 năm 2004 sau một chuỗi khá dài các bản kiểm tra thử bao gồm Beta 4, RC1, RC2, RC3 Mặc dù coi đây là phiên bản sản xuất đầu tiên nhƣng PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác thực HTTP

PHÂN TÍCH THIẾT KẾ HỆ THỐNG

Yêu cầu hệ thống

 Tìm kiếm theo các tiêu chí

 Xem các ATM trong danh sách yêu thích

 Xem ATM trên bản đồ Google Map

 Xem thông tin tài khoản, cập nhật thông tin tài khoản

 Thêm, sửa, xóa danh sách ngân hàng

 Thêm, sửa, xóa danh sách tình thành

 Thêm, sửa, xóa danh sách quận huyện

 Thêm, sửa, xóa danh sách địa điểm ATM

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

 Chương trình thực hiện chính xác kết quả với sai số nhỏ và cơ sở dữ liệu lớn

 Chương trình ổn định, chính xác và có độ an toàn cao

 Gọn nhẹ, tốn ít tài nguyên hệ thống

 Hạn chế đến mức thấp nhất những sai sót có thể xảy ra trong quá trình sử dụng

 Sử dụng hệ thống dữ liệu hợp lí

 Giao diện thân thiện, dễ sử dụng

 Sử dụng hệ điều hành Android phiên bản mới hơn 2.3

 Có kết nối Internet và hỗ trợ GPS để sử dụng chức năng xem các ATM ở gần, vẽ đường và tính khoảng cách.

Phân tích thiết kế hệ thống

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

 Người sử dụng: Là người trực tiếp sử dụng phần mềm để tìm kiếm các máy ATM hay góp ý cho người phát triển

 Người quản lý: Là người quản lý sử dụng giao diện web service để xem, cập nhật, xóa danh sách ngân hàng, danh sách địa điểm, danh sách tỉnh thành…

 Xác định các trường hợp sử dụng

 Tìm kiếm theo các tiêu chí

 Xem các ATM trong danh sách yêu thích

 Xem ATM trên bản đồ Google Map

 Xem thông tin tài khoản, cập nhật thông tin tài khoản

 Thêm, sửa, xóa danh sách ngân hàng

 Thêm, sửa, xóa danh sách tình thành

 Thêm, sửa, xóa danh sách quận huyện

 Thêm, sửa, xóa danh sách địa điểm ATM

 Đặc tả các trường hợp sử dụng

 Tác nhân: Người sử dụng, người quản lý

 Mô tả: Bắt đầu phiên làm việc người sử dụng sẽ mở ứng dụng để tìm kiếm, người quản lý sử dụng web service để xem, sửa, xóa các thông tin danh mục

 Tác nhân: Người sử dụng

 Mô tả: Kết thúc phiên làm của việc người sử dụng, người quản lý sẽ đóng chương trình

 Tác nhân: Người sử dụng

 Mô tả: Người sử dụng vào form đăng nhập, nhập thông tin tài khoản và mật khẩu để đăng nhập

 Tác nhân: Người sử dụng

 Mô tả: Người sử dụng vào form đăng ký, nhập thông tin họ tên, tài khoản và mật khẩu để đăng ký

 Tìm kiếm theo tiêu chí của người sử dụng

 Tác nhân: Người sử dụng

 Mô tả: Người sử dụng vào form tìm kiếm chọn ngân hàng, chọn tỉnh thành và quận huyện cần xem Sau khi click vào tìm kiếm chương trình sẽ hiển thị danh sách các ATM có trên danh sách người dùng cần tìm Người dùng có thể thêm địa điểm vào danh sách yêu thích, chia sẽ địa điểm lên facebook hoặc chọn xem địa điểm ATM đó trên Google

 Xem các ATM trên bản đồ

 Tác nhân: Người sử dụng

 Mô tả: Chương trình sẽ hiển thị toàn bộ danh sách ATM lên trên bản đồ Google map để người sử dụng có thể tìm những ATM mà mình thích

 Cập nhật thông tin tài khoản

 Tác nhân: Người sử dụng

 Mô tả: Người sử dụng vào form thông tin tài khoản để chỉnh sửa các thông tin của mình sau đó lưu lại

 Xem các ATM ở trong danh sách yêu thích

 Tác nhân: Người sử dụng

 Mô tả: Tương tự tìm kiếm, chức năng xem ATM trong danh mục yêu thích sẽ cho người sử dụng lọc các ngân hàng cần xem Chương trình sẽ hiện thị danh sách các ATM trong danh sách yêu thích Người dùng có thể bỏ địa điểm khỏi danh sách yêu thích, chia sẽ địa điểm lên facebook hoặc chọn xem địa điểm ATM đó trên Google Map, vẽ đường đi từ địa điểm người dùng đến địa điểm ATM đã chọn

 Tác nhân:Ngưởi sử dụng

 Mô tả: Người sử dụng vào form góp ý điền tiêu đề, nội dung góp ý vào form, sau khi người dùng gửi đi góp ý thì góp ý sẽ được đưa vào web server của người phát triển

 Tác nhân: Người quản lý

 Mô tả: Người quản lý vào giao diện web xem các góp ý mà người sử dụng đã gửi

 Cập nhật danh sách ngân hàng

 Tác nhân: Người quản lý

 Mô tả: Cập nhật danh sách các ngân hàng vào hệ thống

 Cập nhật danh sách tỉnh thành

 Tác nhân: Người quản lý

 Mô tả: Cập nhật danh sách các tỉnh thành vào hệ thống

 Cập nhật danh sách quận huyện

 Tác nhân: Người quản lý

 Mô tả: Cập nhật danh sách các quận huyện vào hệ thống

 Cập nhật danh sách địa điểm

 Tác nhân: Người quản lý

 Mô tả: Cập nhật danh sách các địa điểm máy ATM vào hệ thống

 Biểu đồ trường hợp sử dụng

 Biểu đồ trường hợp sử dụng tổng quát

Hình 3.1 Biểu đồ trường hợp sử dụng tổng quát

 Biểu đồ trường hợp sử dụng cập nhật danh sách ngân hàng

Hình 3.2 Biểu đồ trường hợp sử dụng cập nhật danh sách ngân hàng

 Biểu đồ trường hợp sử dụng cập nhật danh sách tỉnh thành

Hình 3.3 Biểu đồ trường hợp sử dụng cập nhật danh sách tỉnh thành

 Biểu đồ trường hợp sử dụng cập nhật danh sách quận huyện

Hình 3.4 Biểu đồ trường hợp sử dụng cập nhật danh sách quận huyện

 Biểu đồ trường hợp sử dụng cập nhật danh sách địa điểm

Hình 3.5 Biểu đồ trường hợp sử dụng cập nhật danh sách địa điểm

 Biểu đồ trường hợp sử dụng cập nhật danh sách người dùng

Hình 3.6 Biểu đồ trường hợp sử dụng cập nhật danh sách người dùng

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

 Tinhthanh (Tỉnh thành): là lớp lưu thông tin tỉnh thành

 Quanhuyen (Quận huyện): là lớp lưu thông tin các quận huyện

 Nganhang (Ngân Hàng): là lớp lưu thông tin của các ngân hàng

 Diadiem (Địa điểm): là lớp lưu thông tin địa điểm các ATM

 User (Tài khoản): là lớp lưu thông tin các tài khoản của người dùng

 Lienhe (Liên hệ): là lớp lưu thông tin liên hệ của các thành viên

 Yeuthich (Yêu thích): là lớp lưu thông tin yêu thích của các thành viên

 Lienhediadiem (Danh sách địa điểm góp ý): là lớp lưu thông tin danh sách địa điểm của người sử dụng gửi góp ý

 Lớp biên là lớp nằm trên đường biên của hệ thống với phần thế giới còn lại Nó có thể là biểu mẫu, báo cáo hoặc giao diện

 Hệ thống gồm các lớp biên sau:

 Lớp điều khiển là lớp làm nhiệm vụ điều khiển mọi hoạt động của các lớp khác Tương ứng với mỗi Use Case có thể có một lớp điều khiển làm nhiệm vụ gửi thông điệp cho các lớp liên quan

 Hệ thống gồm các lớp điều khiển sau

Hình 3.8 Các lớp điều khiển

 Các lớp thực thể ở mức phân tích

 Hệ thống gồm các lớp thực thể sau

Hình 3.9 Các lớp thực thể ở mức phân tích

3.2.3 Mô hình hóa tương tác đối tượng

 Trình tự khởi động hệ thống

Hình 3.10 Biểu đồ trình tự khởi động hệ thống

 Trình tự đóng hệ thống

Hình 3.11 Biểu đồ trình tự đóng hệ thống

Hình 3.12 Biểu đồ trình tự tìm kiếm

 Trình tự xem người dùng đăng ký tài khoản

Hình 3.13 Biểu đồ trình tự người dùng đăng ký tài khoản

Hình 3.14 Biểu đồ trình tự đăng nhập

Hình 3.15 Biểu đồ trình tự góp ý

 Trình tự xem ATM trên bản đồ

Hình 3.16 Biểu đồ trình tự xem ATM trên bản đồ

 Trình tự thêm danh sách địa điểm

Hình 3.17 Biểu đồ trình tự thêm danh sách địa điểm

 Trình tự sửa danh sách địa điểm

Hình 3.18 Biểu đồ trình tự sửa danh sách địa điểm

 Trình tự xóa danh sách địa điểm

Hình 3.19 Biểu đồ trình tự xóa danh sách địa điểm

 Biểu đồ cộng tác khởi động hệ thống

Hình 3.20 Biểu đồ cộng tác khởi động hệ thống

 Biểu đồ cộng tác đóng hệ thống

Hình 3.21 Biểu đồ cộng tác đóng hệ thống

 Biểu đồ cộng tác tìm kiếm

Hình 3.22 Biểu đồ cộng tác tìm kiếm

 Biểu đồ cộng tác đăng ký

Hình 3.23 Biểu đồ cộng tác đăng ký

 Biểu đồ cộng tác đăng nhập

Hình 3.24 Biểu đồ cộng tác đăng nhập

 Biểu đồ cộng tác góp ý

Hình 3.25 Biểu đồ cộng tác góp ý

 Biểu đồ cộng tác thêm địa điểm

Hình 3.26 Biểu đồ cộng tác thêm địa điểm

 Biểu đồ cộng tác sửa địa điểm

Hình 3.27 Biểu đồ cộng tác sửa địa điểm

 Biểu đồ cộng tác xóa địa điểm

Hình 3.28 Biểu đồ cộng tác xóa địa điểm

 Biểu đồ cộng tác xem ATM trên bản đồ

Hình 3.29 Biểu đồ cộng tác xem ATM trên bản đồ

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

 Biểu đồ trạng thái mở hệ thống

Hình 3.30 Biểu đồ trạng thái mở hệ thống

 Biểu đồ trạng thái tìm kiếm

Hình 3.31 Biểu đồ trạng thái tìm kiếm

 Biểu đồ trạng thái gửi góp ý

Hình 3.32 Biểu đồ trạng thái gửi góp ý

 Biểu đồ trạng thái xem ATM trong danh sách yêu thích

Hình 3.33 Biểu đồ trạng thái xem ATM trong danh sách yêu thích

 Biểu đồ hoạt động mở hệ thống

Hình 3.34 Biểu đồ hoạt động mở hệ thống

 Biểu đồ hoạt động đóng hệ thống

Hình 3.35 Biểu đồ hoạt động đóng hệ thống

 Biểu đồ hoạt động cập nhật danh sách ngân hàng

Hình 3.36 Biểu đồ hoạt động cập nhật danh sách ngân hàng

 Biểu đồ hoạt động tìm kiếm

Hình 3.37 Biểu đồ hoạt động tìm kiếm

Nhap thong tin tim kiem

 Biểu đồ hoạt động gửi góp ý

Hình 3.38 Biểu đồ hoạt động gửi góp ý

3.2.5 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 3.39 Chi tiết biểu đồ lớp

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

Hình 3.40 Biểu đồ thành phần

Hình 3.41 Biểu đồ triển khai

 Web server: Máy chủ chứa cơ sỡ dữ liệu và web service

 Thiết bị Android: Thiết bị sử dụng hệ điều hành android

 Google Web: Máy chủ dịch vụ web của google.

XÂY DỰNG ỨNG DỤNG

Demo chương trình

4.1.1 Xây dựng giao diện của web service

 Giao diện chính của web service

Hình 4.1 Giao diện chính của web service

 Giao diện danh sách địa điểm ATM

Hình 4.2 Giao diện danh sách địa điểm ATM

 Giao diện thêm tài khoản

Hình 4.3 Giao diện thêm tài khoản

 Giao diện xóa tài khoản

Hình 4.4 Giao diện xóa tài khoản

4.1.2 Xây dựng chức năng xử lý của web service

 Các chức năng xử lý của web service dùng chung một cách thức hoạt động là từ ứng dụng gửi các điều kiện lên web service, web service nhận các giá trị của ứng dụng gửi lên, tạo câu truy vấn, truy xuất vào CSDL và trả về kết quả cho ứng dụng

Bắt đầu Nhận các giá trị gửi đi

PHP C ontrol Xuất kết quả

Hình 4.5 Quá trình xử lý của web service

 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ị $_POST 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 POST thông qua phương thức add(String name, String value), khi ứng dụng gửi các biến này lên web service sẽ có nhiệm vụ nhận dữ liệu, truy xuất vào CSDL và trả về kết quả, sau khi có kết quả từ web service trả về ứng dụng sẽ đọc và phân tích dữ liệu đó để hiển thị lên ứng dụng

 Ví dụ về hàm login trong ứng dụng public JSONObject login(String user, String pass) {

List params = new ArrayList(); params.add(new BasicNameValuePair("getuser", "login")); params.add(new BasicNameValuePair("user", user)); params.add(new BasicNameValuePair("pass", pass));

JSONObject json = jsonParser.getJSONFromUrl(getuser, params, "POST"); return json;

 Sau khi lấy được user và pass từ textview của người dùng nhập vào ta sẽ gọi hàm login

JSONObject json = function.login(user, pass);

 Khi gọi hàm này thì dữ liệu sẽ truyền lên web service, web service sẽ nhận các biến getuser, user, pass thông qua phương thức $_POST if(isset( $_POST[‘ getuser ’] ) && $_POST[‘ getuser ’] == „login‟){

 Tiếp đến web service có nhiệm vụ nhận các yêu cầu đó tạo truy vấn vào CSDL sau đó xuất dữ liệu ra kiểu JSON bằng lệnh json_encode($data) if(isset($_POST['getuser']) && $_POST['getuser'] == 'login'){

$sql = mysql_query("SELECT * FROM tb_user WHERE user='".$user."' AND pass='".$pass."'"); if(mysql_num_rows($sql) == 1){

$info = mysql_fetch_array($sql); if($info['status'] == 'false'){

$trave['msg'] = 'Tài khoản bị khóa Liện hệ Y!M: abit04c'; echo json_encode($trave);

$trave['dreg'] = date("d/m/Y", $info['ngaydangky']);

$trave['quyen'] = $info['quyen']; echo json_encode($trave);

$trave['msg'] = 'Thông tin đăng nhập không chính xác!'; echo json_encode($trave);

 Sau khi có dữ liệu trả về ứng dụng sẽ phân tích dữ liệu trả về và hiển thị kết quả lên ứng dụng if (json.getInt(KEY_SUCCESS) == 1) {

String s_userid = json.getString("userid");

String s_user = json.getString("user");

String s_name = json.getString("fullname");

String s_priv = json.getString("quyen");

String s_pass = json.getString("pass");

String s_dreg = json.getString("dreg");

String s_stt = json.getString("stt"); session.createLoginSession(s_userid, s_user, s_name, s_priv, s_pass, s_dreg, s_stt); } else { function.showAlertDialog(Login.this, "Lổi", json.getString(KEY_MSG).toString(), false);

 Ở đây sau khi nhận được dữ liệu trả về ứng dụng sẽ tạo session để lưu phiên làm việc của người đã đăng nhập

4.1.3 Truyền dữ liệu qua các Activity

 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 4.6 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 4.7 Cấu trúc một 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”

 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

G ửi truy vấn với API Key tới G oogle WebServies

Kiểm tra Map API Key

Hình 4.8 Quá trình lấy dữ liệu từ Google Map

 Thêm MapAPI key vào layout của form: android:apiKey="00WmoYsET3okvAu1sHp2AgUQnta7VpXxs_oQyag"

 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 4.9 Quá trình sử dụng tài nguyên hệ thống

 Đánh dấu vào vị trí của 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ĩ độ)

Bắt đầu Đưa vị trí cần đánh dấu

ItemizedO verlay Đánh dấu lên MapView Kết thúc

Hình 4.10 Quá trình đánh dấu trên bản đồ

 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);

4.1.5 Đọc dữ liệu từ file JSON

 Như đã đề cập khi trước khi truy vấn vào hệ thống web services của ứng dụng kết quả mà ta nhận đƣợc đó là một file 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 4.11 Mô hình xác định mảng giá trị trong JSON

JSONArray place = json_place.getJSONArray(KEY_PLACE);

 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()

 Cuối cùng là lấy dữ liệu thông qua phương thức getString(“tên_thẻ”)

String tendiadiem = c.getString(KEY_A_PLACE);

Giao diện ứng dụng

 Giao điện chính của chương trình

Hình 4.12 Giao diện chính của chương trình

Hình 4.13 Giao diện tìm kiếm

 Giao diện kết quả tìm kiếm

Hình 4.14 Giao diện kết quả tìm kiếm

 Giao diện tính đánh dấu địa điểm và tính vẽ đường

Hình 4.15 Giao diện tính đánh dấu địa điểm và tính vẽ đường

 Giao diện góp ý và giao diện thông tin tài khoản

Hình 4.16 Giao diện góp ý và giao diện thông tin tài khoản

 Giao diện đăng ký và đăng nhập

Hình 4.17 Giao diện đăng ký và đăng nhập

 Giao diện xem địa điểm yêu thích

Hình 4.18 Giao diện xem địa điểm yêu thích

 Giao diện xem ATM trên bản đồ

Hình 4.19 Giao diện xem ATM trên bản đồ

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

 Kết luận: Chương trình được nghiên cứu và thực hiện trong thời gian ngắn nên kết quả đạt được chưa như ý 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 đề chính là tìm kiếm máy ATM trong một phạm vi nhất định, giao diện chương trình dể sử dụng Tuy nhiên bên cạnh đó còn một số hạn chế như: dữ liệu chƣa đúng với thực tế, các thiết bị phần cứng chƣa đáp ứng, chức năng vẽ đường chưa hoàn thiện

 Hướng phát triển: Giải quyết triệt để các vấn đề còn tồn tại ở trên Mở rộng phạm vi tìm kiếm, cập nhật lại cơ sở dữ liệu một cách chính xác nhất

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ê 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/2012

[6] Jeff Friesen Learn Java for Android Development, 2009

[7] Wallace Jackson Android Apps for Absolute Beginners, 2011

Ngày đăng: 07/03/2024, 22:13

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w