1. Trang chủ
  2. » Công Nghệ Thông Tin

Đồ an chuyên đề phát triển ứng dụng di động quản lý nhân viên

57 640 4

Đ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

Định dạng
Số trang 57
Dung lượng 2,09 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ngày nay, công nghệ thông tin là một ngành khoa học phát triển rất mạnh. Song song với các ngành khoa học khác, công nghệ thông tin đã và đang mang lại cho cuộc sống của chúng ta rất nhiều thành tựu to lớn. Công nghệ thông tin đang được ứng dụng rộng rãi trong nhiều lĩnh vực như học tập giải trí cũng như trong công việc. Cùng với đó là sự phát triển không ngừng của các loại thiết bị thông minh như máy tính hay smastphone. Việc sử dụng một chiếc điện thoại thông minh để ứng dụng vào công việc và học đang càng ngày càng phổ biến hơn. Chiếc điện thoại là một thiết bị thông minh không thể tách rời với những con người hiện đại. Chính vì thế mà việc dùng điện thoại hỗ trợ một phần với máy tính để có thể phục vụ cho các công việc của con người là xu hướng của xã hội hiện đại.

Trang 1

HỮU NGHỊ VIỆT - HÀN

KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN CHUYỀN ĐỀ NGÀNH: LẬP TRÌNH MÁY TÍNH

Đề tài:

PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG

QUẢN LÝ NHÂN VIÊN

Sinh viên thực hiện : Nguyễn Hùng Bản

Giảng viên hướng dẫn: Trần Văn Đạị

Đà Nẵng, tháng 6 năm 2016

Trang 3

LỜI MỞ ĐẦU

Ngày nay, công nghệ thông tin là một ngành khoa học phát triển rất mạnh Songsong với các ngành khoa học khác, công nghệ thông tin đã và đang mang lại cho cuộcsống của chúng ta rất nhiều thành tựu to lớn Công nghệ thông tin đang được ứng dụngrộng rãi trong nhiều lĩnh vực như học tập giải trí cũng như trong công việc Cùng với

đó là sự phát triển không ngừng của các loại thiết bị thông minh như máy tính haysmastphone

Việc sử dụng một chiếc điện thoại thông minh để ứng dụng vào công việc và họcđang càng ngày càng phổ biến hơn

Chiếc điện thoại là một thiết bị thông minh không thể tách rời với những conngười hiện đại Chính vì thế mà việc dùng điện thoại hỗ trợ một phần với máy tính để

có thể phục vụ cho các công việc của con người là xu hướng của xã hội hiện đại

Ứng dụng di động đang được rất nhiều người phát triển và đang khai thác thêmnhiều ứng dụng vào mọi lĩnh vực, để tạo ra nhiều ứng dụng hữu ích cho việc học tậpgiải trí cũng như là công việc

Được sự hướng dẫn của giảng viên Trần Văn Đại em xin làm đồ án chuyên đềnày với đề tài “Phát triển ứng dụng di động quản lý nhân viên” để có thể góp phầngiúp người quản lý có thể thuận tiện hơn trong việc quản lý nhân viên và phòng bancủa họ

Em xin gửi lời cảm ơn đến GVHD của em là thầy Trần Văn Đại Cảm ơn thầy đãtạo điều kiện tốt nhất để em hoàn thành đồ án này

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

Ngày nay, điện thoại di động đã trở thành vật bất ly thân của con người Mộtchiếc điện thoại thông minh có thể chứa đầy đủ các chức năng để phục vụ cho các nhucầu cần thiết của con người

Việc phát triển một ứng dụng Quản lý nhân viên để giúp cho người dùng có thể

dễ dàng thực hiện các nhu cầu quản lý nhân viên của họ cũng là nhu cầu thiết yếu vì

họ có thể quản lý nhân viên trong khi họ ở mọi nơi mọi lúc

Phát triển ứng dụng di động để người quản lý có thể dễ dàng làm việc hơn vàgiảm chi phí thời gian trong công việc

Với những lý do trên, được sự hướng dẫn của thầy giáo Trần Văn Đại em đãchọn đề tài “Phát triển ứng dụng di động Quản lý nhân viên”

Trang 4

2 Mục tiêu và phạm vi nghiên cứu

Tiếp tục cố gắn là tiếp thu thêm nhiều ý tưởng mới để ứng dụng ngày càng hoànthiện hơn

Phạm vi nghiên cứu

Xây dựng ứng dụng quản lý nhân viên với những yêu cầu:

Thân thiện và dễ dàng với người sử dụng

Tốc độ xử lý và thao tác phải nhanh

Giao diện phù hợp với người dùng

Trang 5

MỤC LỤC

LỜI MỞ ĐẦU i

MỤC LỤC iii

DANH MỤC HÌNH ẢNH v

CHƯƠNG 1: SƠ SỞ LÝ THUYẾT 1

1.1 Tổng quan về hệ điều hành Android 1

1.1.1 Khái niệm Android 1

1.1.2 Kiến trúc Android 2

1.1.2.1 Application 2

1.1.2.2 Application Framework 2

1.1.2.3 Libraries 3

1.1.2.4 Android Runtime 3

1.1.2.5 Linux Kernel 4

1.1.3 Phát triển ứng dụng trên Android 5

1.1.3.1 Ngôn ngữ lập trình 5

1.1.3.2 Môi trường lập trình cho Android 5

1.1.3.2 Cơ sở dữ liệu cơ bản trong Android (SQLite) 16

CHƯƠNG 2 : PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG CỦA ỨNG DỤNG QUẢN LÝ NHÂN VIÊN 19

2.1 Xác định các tác nhân 19

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

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

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

2.4.1 Xác định các lớp đối tượng 22

2.4.3 Biểu đồ lớp điều khiển 24

2.4.4 Biểu đồ lớp thực thể 24

2.5 Biểu đồ tình tự 25

2.5.1 Biểu đồ trình tự đăng nhập 25

2.5.2 Biểu đồ trình tự đăng ký 25

2.5.3 Biểu đồ trình tự thay đổi thông tin tài khoản 26

2.5.4 Biểu đồ trình tự cập nhật phòng ban 27

2.5.5 Biểu đồ trình tự cập nhật nhân viên nhân viên 28

Trang 6

2.5.6 Biểu đồ trình tự tìm kiếm: 30

2.5.7 Biểu đồ cộng tác 31

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

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

2.5.7.3 Biểu đồ cộng tác thay đổi thông tin tài khoản 32

2.5.2.4 Biểu đồ cộng tác cập nhật phòng ban 32

2.5.7.4 Biểu đồ cộng tác cập nhật nhân viên nhân viên 34

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

2.5.3 Mô hình hóa hành vi xử lý 36

2.5.3.1 Biểu đồ trạng thái đăng nhập 36

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

2.5.4 Biểu đồ hoạt động 37

2.5.5 Biểu đồ lớp chi tiết 39

CHƯƠNG 3: THIẾT KẾ ỨNG DỤNG QUẢN LÝ NHÂN VIÊN 40

3.1 Thiết kế 40

3.2 Chạy ứng dụng 40

3.2.1 Màn hình đăng nhập 40

3.2.2 Màn hình đăng ký 41

3.2.3 Màn hình quản lý phòng ban 42

3.2.4 Màn hình chi tiết phòng ban 43

3.2.5 Màn hình quản lý nhân viên 44

3.2.6 Màn hình chi tiết nhân viên 45

3.2.7 Màn hình thay đổi thông tin tài khoản 46

3.2.8 Màn hình tìm kiếm 47

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

TÀI LIỆU THAM KHẢO 49

Trang 7

DANH MỤC HÌNH ẢNH

Hình 1.1 Kiến trúc Android 2

Hình 1.2 Mô hình hợp tác giữa máy ảo Dalvik và Navite code 4

Hình 1.3 Cấu trúc thư mục và file của một dự án phần mềm Android trên Eclipse 6

Hình 1.4 Lược đồ vòng đời của 1 activity 11

Hình 1.5 Sử dụng Intent để trao đổi thông tin giữa hai chương trình 12

Hình 1.6 Lược đồ vòng đời của một service 15

Hình 2.1 Biểu đồ trường hợp sử dụng 20

Hình 2.2 Biểu đồ cập nhật phòng ban 21

Hình 2.3 Biểu đồ cập nhật nhân viên 21

Hình 2.4 Biểu đồ thay đổi TT tài khoản 22

Hình 2.5 Biểu đồ tìm kiếm 22

Hình 2.6 Biểu đồ lớp biên 23

Hình 2.7 Biểu đồ lớp điều khiển 24

Hình 2.8 Biểu đồ lớp thực thể.Mô hình hóa tương tác 24

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

Hình 2.10 Biểu đồ trình tự đăng ký 25

Hình 2.11 Biểu đồ thay đổi TT tài khoản 26

Hình 2.12 Biểu đồ trình tự thêm phòng ban 27

Hình 2.13 Biểu đồ trình tự sửa phòng ban 27

Hình 2.14 Biểu đồ trình tự xóa phòng ban 28

Hình 2.15 Biểu đồ trình tự thêm nhân viên 28

Hình 2.16 Biểu đồ trình tự sửa nhân viên 29

Hình 2.17 Biểu đồ trình tự thêm nhân viên 29

Hình 2.18 Biểu đồ trình tự tìm kiếm phòng ban 30

Hình 2.19 Biểu đồ trình tự tìm kiếm nhân viên 30

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

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

Hình 2.22 Biểu đồ cộng tác thay đổi TT tài khoản 32

Hình 2.23 Biểu đồ cộng tác thêm phòng ban 32

Hình 2.24 Biểu đồ cộng tác sửa phòng ban 33

Hình 2.25 Biểu đồ cộng tác xóa phòng ban 33

Trang 8

Hình 2.26 Biểu đồ cộng tác thêm nhân viên 34

Hình 2.27 Biểu đồ cộng tác sửa nhân viên 34

Hình 2.28 Biểu đồ cộng tác xóa nhân viên 35

Hình 2.29 Biểu đồ cộng tác tìm kiếm phòng ban 35

Hình 2.30 Biểu đồ cộng tác tìm kiếm nhân viên 36

Hình 2.31 Biểu đồ trạng thái đăng nhập 36

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

Hình 2.33 Biểu đồ hoạt động cập nhật TT tài khoản 37

Hình 2.34 Biểu đồ hoạt động cập nhật phòng ban 37

Hình 2.35 Biểu đồ hoạt động cập nhật nhân viên 38

Hình 2.36 Biểu đồ lớp chi tiết 39

Hình 3.1 Màn hình đăng nhập 40

Hình 3.2 Màn hình đăng ký 41

Hình 3.3 Màn hình quản lý phòng ban 42

Hình 3.4 Màn hình chi tiết phòng ban 43

Hình 3.5 Màn hình quản lý nhân viên 44

Hình 3.6 Màn hình chi tiết nhân viên 45

Hình 3.7 Màn hình thay đổi thông tin tài khoản 46

Hình 3.8 Màn hình tìm kiếm 47

Trang 9

CHƯƠNG 1: SƠ SỞ LÝ THUYẾT

1.1 Tổng quan về hệ điều hành Android

1.1.1 Khái niệm Android

Android là hệ điều hành điện thoại mã nguồn mở miễn phí do Google phát triểndựa trên nền tảng Linux Bất kì một hãng sản xuất phần cứng nào cũng đều có thể tự

do sử dụng hệ điều hành Android cho thiết bị của mình, miễn là các thiết bị phải đápứng được các tiêu chuẩn cơ bản do Google đặt ra Các nhà sản xuất có thể tự do thayđổi phiên bản Android trên máy của mình một cách tự do mà không cần xin phép haytrả bất kỳ một khoản phí nào nhưng phải đảm bảo tính tương thích ngược của phiênbản chế riêng đó Android là nền tàng cho thiết bị di động bao gồm một hệ điều hànhmidware và một số ứng dụng chủ đạo Bộ công cụ Android SDK cung cấp các công cụ

và bộ thư viện các hàm API cần thiết để phát triển ứng dụng cho nền tảng Android sửdụng ngôn ngữ lập trình Java

Những tính năng mà nền tảng Android hỗ trợ :

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

có trong Android

 Dalvik virtual machine : máy ảo Java được tối ưu hóa cho thiết bị di động

 Intergrated browser : trình duyệt web tích hợp được xây dựng dựa trên webkitengine

 Optimized graphics : hỗ trợ bộ thư viện 2D và 3D dựa vào đặc tả OpenGL ES1.0

 SQLite : cơ sở dữ liệu dùng để lưu trữ dữ liệu có cấu trúc

 Hỗ trợ các định dạng phổ biến như MPEG4, H.264, MP3, AAC, ARM, JPG,PNG, GIF

 Hộ trợ thoại trên nền tảng GSM

 Bluetooth,EDGE,3G và wifi

 Camera,GPS,la bàn và cảm biến

 Bộ công cụ phát triển ứng dụng mạnh mẽ

Trang 10

1.1.2 Kiến trúc Android

Mô hình thể hiện kiến trúc của hệ điều hành Android:

Hình 1.1 Kiến trúc Android 1.1.2.1 Application.

Hệ điều hành Android tích hợp sẳn một số ứng dụng cơ bản như email client,SMS, lịch điện tử, bản đồ, trình duyệt web, sổ liên lạc và một số ứng dụng khác Ngoài

ra tầng này cũng chính là tầng chứa các ứng dụng được phát triển bằng ngôn ngữ Java

1.1.2.2 Application Framework.

Tầng này của hệ điều hành Android cung cấp một nền tảng phát triển ứng dụng

mở qua đó cho phép nhà phát triển ứng dụng có khả năng tạo ra các ứng dụng vô cùngsáng tạo và phong phú Các nhà phát triển ứng dụng được tự do sử dụng các tính năngcao cấp của thiết bị phần cứng như: thông tin định vị địa lý, khả năng chạy dịch vụdưới nền, thiết lập đồng hồ báo thức, thêm notification vào status bar của màn hìnhthiết bị… Người phát triển ứng dụng được phép sử dụng đầy đủ bộ API được dùngtrong các ứng dụng tích hợp sẳn của Android Kiến trúc ứng dụng của Android đượcthiết kế nhằm mục đích đơn giản hóa việc tái sử dụng các component Qua đó bất kìứng dụng nào cũng có thể công bố các tính năng mà nó muốn chia sẻ cho các ứng

Trang 11

dụng khác (VD: Ứng dụng email có muốn các ứng dụng khác có thể sử dụng tính nănggởi mail của nó) Phương pháp tương tự cho phép các thành phần có thể được thay thếbởi người sử dụng Tầng này bao gồm một tập các services và thành phần sau:

 Một tập phong phú và có thể mở rộng bao gồm các đối tượng View được dùng

để xây dựng ứng dụng như: list, grid, text box, button và thậm chí là một trình duyệtweb có thể nhúng vào ứng dụng

 Content Provider: Cho phép các ứng dụng có thể truy xuất dữ liệu từ các ứngdụng khác hoặc chia sẽ dữ liệu của chúng

 Resource Manager: Cung cấp khả năng truy xuất các tài nguyên non-code nhưhình ảnh hoặc file layout

 Notification Manager: Cung cấp khả năng hiển thị custom alert trên thanhstatus bar

 Activity Manager: Giúp quản lý vòng đời của một ứng dụng

1.1.2.3 Libraries.

System C library: một thể hiện được xây dựng từ BSD của bộ thư viện hệ thống

C chuẩn (libc), được điều chỉnh để tối ưu hóa cho các thiết bị chạy trên nền Linux

 Media libraries: Bộ thư viện hổ trợ trình diễn và ghi các định dạng âm thanh vàhình ảnh phổ biến

 Surface manager: Quản lý hiển thị nội dung 2D và 3D

 LibWebCore: Một web browser engine hiện đại được sử dụng trong trình duyệtcủa Android lần trong trình duyệt nhúng web view được sử dụng trong ứng dụng

 SGL: Engine hổ trợ đồ họa 2D

 3D libraries: Một thể hiện được xây dựng dựa trên các APIs của OpenGL ES1.0 Những thư viện này sử dụng các tăng tốc 3D bằng phần cứng lẫn phần mềm để tối

ưu hóa hiển thị 3D

 FreeType: Bitmap and vector font rendering

 SQLite: Một DBMS nhỏ gọn và mạnh mẽ

1.1.2.4 Android Runtime.

Hệ điều hành Android tích hợp sẳn một tập hợp các thư viện cốt lõi cung cấp hầuhế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 Mọi ứngdụng của Android chạy trên một tiến trình của riêng nó cùng với một thể hiện của máy

ảo Dalvik Máy ảo Dalvik thực tế là một biến thể của máy ảo Java được sửa đổi, bổ

Trang 12

sung các công nghệ đặc trưng của thiết bị di động Nó được xây dựng với mục đíchlàm cho các thiết bị di động có thể chạy nhiều máy ảo một cách hiệu quả Trước khithực thi, bất kì ứng dụng Android nào cũng được convert thành file thực thi với địnhdạng nén Dalvik Executable (.dex) Định dạng này được thiết kế để phù hợp với cácthiết bị hạn chế về bộ nhớ cũng như tốc độ xử lý Ngoài ra máy ảo Dalvik sử dụng bộnhân Linux để cung cấp các tính năng như thread, low-level memory management.

1.1.2.5 Linux Kernel.

Hệ điều hành Android được xây dựng trên bộ nhân Linux 2.6 cho những dịch vụ

hệ thống cốt lõi như: security, memory management, process management, networkstack, driver model Bộ nhân này làm nhiệm vụ như một lớp trung gian kết nối phầncứng thiết bị và phần ứng dụng

Dưới đây là mô hinh hợp tác giữa máy ảo Dalvik và Navite code:

Hình 1.2 Mô hình hợp tác giữa máy ảo Dalvik và Navite code.

JNI: Java Native Interface (Tương tự khái niệm Application ProgrammingInterface) Java Native Interface: là một bộ framework cho phép mã lệnh viết bằngJava chạy trên máy ảo java có thể gọi hoặc được gọi bởi một ứng dụng viết bằngnative code (Ứng dụng được viết cho một phần cứng cụ thể và trên một hệ điều hành

cụ thể) hoặc những bộ thư viện viết bằng C, C++ hoặc Assembly

Bằng cách sử dụng JNI, Android cho phép các ứng dụng chạy trên máy ảoDalvik có thể sử dụng những phương thức được viết bằng các ngôn ngữ cấp thấp như:

C, C++, Assembly Qua đó các nhà phát triển ứng dụng có thể xây dựng ứng dụng dựatrên các bộ thư viện viết bằng C, C++, Assembly nhằm tăng tốc độ thực thi của ứngdụng hoặc sử dụng những tính năng mức thấp mà ngôn ngữ Java không hỗ trợ Tuynhiên người phát triển ứng dụng cần phải cân nhắc sự gia tăng độ phức tạp của ứngdụng khi quyết định sử dụng các bộ thư viện này

Trang 13

1.1.3 Phát triển ứng dụng trên Android.

1.1.3.1 Ngôn ngữ lập trình

Ngôn ngữ lập trình chính thức của Android là Java Mặc dù các ứng dụng trênAndroid được phát triển dựa trên nền tảng Java, nhưng Android không hỗ J2ME vàJ2SE, là hai ngôn ngữ lập trình phổ dụng cho các thiết bị di động

Dựa trên máy ảo Java của Sun, Google đã tinh chỉnh và phát triển nên máy ảoDalvik để biên dịch mã Java với tốc độ biên dịch nhanh hơn và nhẹ hơn

Google đã cập nhật các phiên bản của Android qua các phiên bản gần đây nhưAndroid 4.4.x Kitkat, Android 5.0 Lolipop hay mới đây nhất là 6.0 Masmalow vàAndroid N các phiên bản nhằm mục đích tới giao diện và tốc độ xử lý của Androidngày càng cải tiến hơn nữa

Bằng cách sử dụng các frameworks của hãng thứ ba (VD: PhoneGap,Titanium, ), các nhà lập trình web cũng có thể phát triển ứng dụng Android một cách

dễ dàng bằng các ngôn ngữ web phổ dụng như HTML, CSS, Javascript Tuy nhiên sốlượng các ứng dụng đi theo chiều hướng này chưa nhiều

Cơ sở dữ liệu cơ bản để quản lý dữ liệu trong Android là SQLite

1.1.3.2 Môi trường lập trình cho Android.

Android SDK bao gồm các công cụ riêng lẻ như: debugger, các thư viện, trìnhgiả lập điện thoại Android, các tài liệu hỗ trợ và code mẫu Hiện Android cung cấp bộcông cụ này trên nhiều nền tảng hệ điều hành khác nhau (Windows, Linux, Mac, ),miễn là có sẵn Java Development Kit, Apache Ant và Python2.2 trở lên

Môi trường lập trình (IDE) chính thức của Android là Eclipse và được Googlephát triển riêng một công cụ hỗ trợ lập trình có tên là Android Studio với giao diệnmới và nhiều tích năng hơn để hỗ trợ tốt nhất cho việc lập trình Android

 Trong đồ án này em phát triển ứng dụng dựa trên công cụ Eclipse

Ứng dụng Android được đóng gói thành các file apk và đuợc lưu trong thư mục /data/app của hệ điều hành Android.Java Development Kit (JDK) 8.0

Một số công cụ hỗ trợ lập trình Android tiêu biểu:

 SQLite Manager: Là một addon của Firefox giúp quản lí cơ sở dữ liệuSQLite của Android

 DroidDraw: Giúp thiết kế file XML giao diện ứng dụng

 Balsamiq Mockups và AdobeFireworks: Giúp nhanh chóng phác thảo ý

Trang 14

tưởng và giao diện sơ bộ của ứng dụng.

 StarUML: Vẽ các lược đồ UML hỗ trợ phân tích thiết kế

 Các thành phần cơ bản của một project Android trên Eclipse:

Hình 1.3 Cấu trúc thư mục và file của một dự án phần mềm Android trên Eclipse.

Trang 15

Stt Thư mục, Tập tin và mô tả

1 Src: Thư mục này chứa các tập tin nguồn đuôi java Theo mặc định, nó chứa 1

tập tin nguồn MainActivity.java Trong tập tin này có chứa lớp Activity sẽ chạy

khi mở ứng dụng bằng cách chạm vào biểu tượng ứng dụng trên màn hình

2 Gen: Thư mục này chứa các tập tin nguồn đuôi R – một tập tin được tạo ra bởitrình biên dịch (compiler) Các tập tin này sẽ tham khảo tới toàn bộ tài nguyêntrong Project Bạn không nên chỉnh sửa chúng

3 Bin: Thư mục này chứa các tập tin là các gói Android có đuôi apk – được tạo rabởi ADT trong quá trình build Ngoài ra, thư mục bin cũng chứa những tập tinkhác cần thiết để chạy ứng dụng Android đang được lập trình trong Project này

4 res/drawable-hdpi: Thư mục này dành cho hình ảnh dành cho màn hình độ phângiải cao

5 res/layout: Thư mục này chứa các tập tin xác định giao diện của ứng dụng

6 res/values: Thư mục này chuawsc các tập tin XML, chứa tập hợp tài nguyên như

là các chuỗi, định nghĩa các màu

7 AndroidManifest.xml: là tập tin manifest diễn tả tính chất cơ bản của ứng dụng vàxác định các Component

Bảng 1.1 - Mô tả cấu trúc của một project Android trong eclipse.

 File AndroidManifest.xml

Là nền tảng của mọi ứng dụng Android, file AndroidManifest.xml được đặttrong thư mục root và cho biết những thành phần có trong ứng dụng của: cácactivities, các services, cũng như cách các thành phần ấy gắn bó với nhau

Mỗi file manifest đều bắt đầu với một thẻ manifest:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.commonsware.android.search">

</manifest>

Trang 16

Khi tạo file manifest, điều quan trọng nhất là phải cung cấp thuộc tính củapackage, tức tên của Java package dùng làm cơ sở cho ứng dụng của ta Sau khi đã đặttên package, sau này khi cần ghi tên lớp trong file manifest, ta có thể rút ngắn, chẳnghạn với lớp “com.yourapp.android.search.Someclass” ta chỉ cần ghi “.Someclass” làđủ.

Các thành phần manifest khác là :

 Uses-persmission: chỉ định các quyền mà ứng dụng của ta đuợc cấp để hoạtđộng trôi chảy (như đã nói, các ứng dụng Android nằm dưới nhiều lớp bảo mật khácnhau)

 permission: chỉ định các quyền mà các activities hay services yêu cầu các ứngdụng khác phải có mới được truy cập dữ liệu của ứng dụng của ta

 Instrumentation: chỉ định phần code cần được gọi khi xảy ra những sự kiệnquan trọng (chẳng hạn khởi động activities) nhằm phục vụ việc ghi chú

(logging) và tra soát (monitoring)

 Uses-library: nhằm kết nối với các thành phần có sẵn của Android (như

Trang 17

Thành phần này cung cấp các thông tin sau:

- android:name : tên class hiện thực activity này

- android:label : tên activity

- intent-filter : Một thành phần con, chỉ ra dưới điều kiện nào thì activity này

Trang 18

Do gần như mọi activity đều tương tác với người dùng, lớp Activity đảm nhận việc tạo

ra một cửa sổ (window) để người lập trình đặt lên đó một giao diện UI vớisetContentView(View) Một activity có thể mang nhiều dạng khác nhau: Một cửa sổtoàn màn hình (full screen window), một cửa sổ floating (với windowsIsFloating) haynằm lồng bên trong 1 activity khác (với ActivityGroup) Có 2 phương thức mà gầnnhư mọi lớp con của Activity đều phải hiện thực:

 onCreate(Bundle) - Nơi khởi tạo activity Quan trọng hơn, đây chính ngườilập trình gọi setContentView(int) kèm theo layout để thể hiện UI của riêng mình.Đồng thời còn có findViewById(int) giúp gọi các widget (buttons, text boxes, labels, )

b Vòng đời của một Activity

Các activity được quản lí dưới dạng các activity stack - First-In-Last-Out:

Khi một activity mới được khởi tạo, nó sẽ được đưa lên trên cùng stack, cácactivity khác muốn chạy trên nền (foreground) trở lại thì cần phải chờ tới khi Activitymới này kết thúc

Một Activity có 4 trạng thái:

- Active hay Running: Khi một activity đang chạy trên màn hình

- Paused: Khi một activity vẫn đang chạy trên màn hình nhưng đang bị mộtactivity trong suốt (transparent) hay không chiếm toàn màn hình hiển thị phía trên

Tuy vẫn lưu trữ dữ liệu, nhưng các paused activity này sẽ bị hệ thống bắtchấm dứt khi đang thiếu bộ nhớ trầm trọng

- Stopped: Khi 1 activity bị che khuất hoàn toàn bởi 1 activity khác Tuy vẫn

Trang 19

lưu trữ dữ liệu, nhưng các stopped activity này sẽ thường xuyên bị hệ thống bắt chấmdứt để dành chỗ cho các tiến trình khác.

- Killed hay Shut down: Khi 1 activity đang paused hay stopped, hệ thống sẽxóa activity ấy ra khỏi bộ nhớ

Hình 1.4 Lược đồ vòng đời của 1 activity.

Dựa vào lược đồ trên, thấy được có 3 vòng lặp quan trọng sau:

- Vòng đời toàn diện (Entire Lifetime): Diễn ra từ lần gọi onCreate(Bundle) đầu

tiên và kéo dài tới lần gọi onDestroy() cuối cùng

- Vòng đời thấy được (Visible Lifetime):Diễn ra từ khi gọi onStart() và kéo dài

tới khi gọionStop() Ở vòng đời này, activity được hiển thị trên màn hình nhưng có thếkhông tương tác với người dùng ở trên nền Các phương thức onStart(0 và onStop() cóthể được gọi nhiều lần

- Vòng đời trên nền (Foreground Lifetime): Diễn ra từ khi gọi onResume() và

kéo dài tới khi gọi onPause() Ở vòng đời này, activity nằm trên mọi activity khác và

tương tác được với người dùng 1 activity có thể liên tục thay đổi giữa 2 trạng thái

Trang 20

paused và resumed, chẳng hạn khi thiết bị sleep hay 1 intent mới được đưa tới.

c Intent

Định nghĩa intent:

Khi Tim Berners phát minh ra giao thức Hypertext Transfer Protocol (HTTP),ông cũng đã phát minh ra một định dạng URLs chuẩn Định dạng này là một hệ thốngcác động từ đi kèm các địa chỉ Địa chỉ sẽ xác định nguồn tài nguyên như Web page,hình ảnh hay các server-side program Động từ sẽ xác định cần phải làm cái gì vớinguồn tài nguyên đó: GET để nhận dữ liệu về, POST để đưa dữ liệu cho nó để thực thimột công việc nào đó Khái niệm Intent cũng tương tự, Intent là một mô tả trừu tượngcủa một hành động được thực thi Nó đại diện cho một hành động đi kèm với một ngữcảnh xác định Với Intent thì có nhiều hành động và nhiều component (Một thể hiệncủa một class java dùng để thực thi các hành động được đặc tả trong Intent) dành choIntent của Android hơn là so với HTTP verbs (POST, GET) và nguồn tài nguyên (hìnhảnh, web page) của giao thức HTTP, tuy nhiên khái niệm vẫn tương tự nhau Intentđược sử dụng với phương thức startActivity() để mở một Activity, và dùng vớibroadcastIntent để gởi nó đến bất kì BroadcastReceiver liên quan nào, và dùng vớistartService(Intent), bindService(Intent, Service Connection, int ) để giao tiếp với cácService chạy dưới nền

Intent cung cấp một chức năng cho phép kết nối hai chương trình khác nhautrong quá trình thực thi (runtime) (Cung cấp khả năng cho phép hai chương trình khácnhau giao tiếp với nhau) Chức năng quan trọng và được sử dụng nhiều nhất của mộtIntent là mở một Activity, nơi mà nó có thểđược dùng như một vật kết nối các Activitylại với nhau (Truyền thông tin giữa hai Activity khác nhau)

Hình 1.5 Sử dụng Intent để trao đổi thông tin giữa hai chương trình

Trang 21

 Thành phần chính của Intent bao gồm:

- Action: Xác định hành động sẽ được thực thi, các hành động này có thể là:ACTION_VIEW, ACTION_EDIT, ACTION_MAIN…

- Data: Các dữ liệu được sử dụng để hành động (Action) thao tác trên nó, nhưbản ghi về một người nào đó trong cơ sở dữ liệu chứa các contact của thiết bị

- Type: Chỉ định 1 kiểudữ liệu chính xác (kiểu MIME) được mang bởi intent

- Thường thì type được suy ra từ chính dữ liệu Bằng cách thiết lập thuộc tínhtype, bạn có thể vô hiệu hóa sự phỏng đoán kiểu dữ liệu và chỉ định rỏ một kiểu chínhxác

- Component: Chỉ định rõ tên của lớp thành phần (Một thể hiện của một classjava dùng để thực thi các hành động được đặc tả trong Intent) sử dụng cho Intent Thông thường thì nó được xác định bằng cách tìm kiếm thông tin trong Intent (Cácthông tin như Action, data/type, và category) và nối chúng với các component (Mộtthể hiện của một Class java dùng để thực thi các hành động được đặc tả trong Intent)

có thể đáp ứng được các yêu cầu sử lý của Intent

- Extracts: là một đối tượng Bundle dùng để chứa các thông tin kèm theođược

- dùng để cung cấp thông tin cần thiết cho component Ví dụ: Nếu có mộtIntent đặc tả hành động send email thì những thông tin cần chứa trong đối tượngBundle là subject, body…

- Intent Resolution

Intent có 2 dạng chính sau:

+Explicit Intents: Xác định rỏ một component (Một thể hiện của một classjava dùng để thực thi các hành động được đặc tả trong Intent) (thông qua phương thứcsetComponent(ComponentName) hoặc setClass(Context, Class)) cung cấp lớp sẽ thựcthi các hành động được đặc tả trong Intent Thông thường thì những Intent này khôngchứa bất kỳ thông tin nào khác (như category, type) mà đơn giản chỉ là cách để ứngdụng mở các Activity khác bên trong một Activity

+ Implicit Intents: Không chỉ định một component nào cả, thay vào đó, chúng

sẽ chứa đủ thông tin để hệ thống có thể xác định component có sẵn nào là tốt nhất đểthực thi hiệu quả cho intent đó

Trang 22

d Service.

 Định nghĩa service:

Một service là một thành phần của ứng dụng, thể hiện mong muốn ứng dụng thựchiện các hành động trong khi không tương tác với người dùng hoặc cung cấp chứcnăng cho các ứng dụng khác sử dụng Nói một cách đơn giản, service là các tác vụ(task) chạy ngầm dưới hệ thống nhằm thực hiện một nhiệm vụ nào đó

Cũng như các đối tượng của ứng dụng khác, services chạy trên luồng (Thread)của tiến trình chính Có nghĩa là nếu service của bạn dự định chạy các hành vi cócường độ lớn hoặc các hành vi có thể gây nghẽn mạch, nó sẽ tự sinh ra luồng (Thread)của chính nó để làm thực hiện các tác vụ được đặc tả trong Service

Cần lưu ý:

Service không phải là một tiến trình độc lập Đối tượng Service không chạy trêntiến trình (process) của riêng nó (trừ khi có một yêu cầu đặt biệt), Service chạy trêntiến trình của chương trình

Service không phải là một luồng (thread)

- Service có chứa 2 đặc trưng cơ bản sau:

Là một chức năng để ứng dụng thông báo với hệ thống về việc mà nó muốn thựchiện ở phía dưới nền (ngay cả khi người dùng không tương tác trực tiếp tới ứng dụng).Điều này tương ứng với việc gọi phương thức Context.startservice(), nó sẽ yêu cầu hệthống lên lịch cho service để chạy cho đến khi bị chính service hay người nào đó dừng

nó lại

Là một chức năng cho phép ứng dụng để cung cấp các chức năng của nó cho cácứng dụng khác Điều đó tương ứng với việc gọi Context.bindService(), cho phép mộtlong-standing connection được tạo ra để service có thể tương tác với nó

Trang 23

 Vòng đời của một service:

Hình 1.6 Lược đồ vòng đời của một service.

Dựa theo hình trên, 1 service được bắt đầu bởi phương thức startService() làservice dùng để thực hiện các tác vụ ngầm dưới nền, service được bắt đầu bởi phươngthức bindService() là service được dùng để cung cấp các chức năng cho các chươngtrình khác

 BroadcastReceiver:

Là lớp nhận về các intents

- Có hai lớp broadcast quan trọng cần xét đến:

Broadcasts bình thường (Normal broadcasts): Được gửi bởicontext.sendBroadcast

tới các receivers hoàn toàn không theo 1 trật tự nào, dẫn tới đôi khi tồn tại cùng 1lúc nhiều receivers khác nhau Tuy nhanh nhưng không thể trao đổi kết quả nhận vềgiữa các receivers với nhau

Broadcasts có thứ tự (Ordered broadcasts) - Được gửi bởiContext.sendOrderedBroadcast() tới từng receiver một Như vậy, kết quả nhận về của

1 receiver có thể trở thành input của 1 receiver khác, hay có thể ngay lập tức dừngviệc

Trang 24

1.1.3.2 Cơ sở dữ liệu cơ bản trong Android (SQLite).

 Giới thiệu SQLite:

SQLite là hệ quản trị cơ sở dữ liệu quan hệ (Relational database managementsystem – RDBMS) SQLite có những điểm mạnh sau:

SQLite nổi tiếng là cơ sở dữ liệu cực kỳ đáng tin cậy và là sự lựa chọn cho nhiềuthiết bị điện tự bao gồm máy nghe nhạc MP3, Iphone, iPod về hệ thống cơ sở dữ liệu.Kích thước nhẹ và mạnh mẽ, SQLite khác với nhiều với nhiều cơ sở dữ liệu khácbằng cách sử dụng hướng tiếp cận mềm dẻo để định nghĩa cột Thay vì yêu cầu giá trịcủa cột phải phù hợp với 1 loại duy nhất, giá trị trong mỗi hàng cho mỗi cột Dẫn đến

là không có sự yêu cầu chặt chẽ nào cho giá trị của mỗi cột trong một hàng

Để có thể hiểu nhiều hơn và sâu hơn về SQLite, bao gồm cả điểm mạnh điểmyếu và hạn chế của nó, hãy truy cập vào website chính thức www.sqlite.com

 Cursors and Content Values

Đối tượng ContentValues được sử dụng để chèn 1 hàng mới vào trong bảng cơ

sở dữ liệu Mỗi đối tượng ContentValues biểu diễn một hàng và ánh xạ cột sang giá trịtương ứng

Truy vấn trong Android được trả về như các đối tượng con trỏ (Cursor object).Thay vì giải nén và trả về một bản sao của các giá trị kết quả, Cursors hoạt động nhưcon trỏ đến một tập hợp các dữ liệu cơ bản Cursor là một cách quản lý kiểm soát vị trícủa hàng trong kết quả trả về của một truy vấn cơ sở dữ liệu

Lớp Cursor bao gồm một số hàm để điều hướng kết quả truy vấn:

 moveToFirst : di chuyển con trỏ đến hàng đầu tiên trong kết quả truy vấn

 moveToNext : di chuyển con trỏ đến hàng tiếp theo

Trang 25

 moveToPrevious : di chuyển con trỏ đến hàng phía trước

 getCount : trả về số hàng trong tập kết quả

 getColumnIndexOrThrow : trả về chỉ số của cột với tên được chỉ định

 getColumnName : trả về tên cuả chỉ số cột được chỉ địn

 getColumnNames: Trả về mảng String của tất cả tên các cột in cursor hiệntại

 moveToPosition: di chuyển con trỏ đến hàng được chỉ địn

 getPosition: trả về vị trí hiện tại của con trỏ

Android cung cấp các cơ chế để quản lý các Cursor bên trong các Activities.Phương thức startManagingCursor được tích hợp vào vòng thời gian của Cursor bêntrong vòng thời gian của Activity Khi kết thúc Cursor thì sẽ tự động gọistopManagingCursor

- Thêm, sửa và xóa hàng:

Lớp SQLiteDatabase đã đưa các phương thức insert, delete và update và đượcđóng gói để thực thi các câu lệnh SQL được yêu cầu Tuy nhiên, phương thưcexecSQL cho phép bạn thực thi bất kỳ SQL hợp lệ nào vào trong bảng cơ sở dữ liệu

Để thêm hàng mới, sử dụng đối tượng ContentValues và phương thức put để đặtcác giá trị cho mỗi cột Ví dụ:

//Create a new row of values to insert

ContentValues newValues = new ContentValues();

// Assign values for each row

newValues.put(COLUMN_NAME, newValue);

[ Repeat for each column ]

// Insert the row into your table

myDatabase.insert(DATABASE_TABLE, null, newValues);

Cập nhật hàng

Tạo mới đối tượng ContentValues và sử dụng phưowng thức put để gán giá trịmới cho mỗi cột cần cập nhật Sau đó cập nhật lại đối tượng Cursor

// Define the updated row content

ContentValues updatedValues = new ContentValues();

// Assign values for each row

Trang 26

updatedValues.put(COLUMN_NAME, newValue);

[ Repeat for each column ]

String where = KEY_ID + “=” + rowId;

// Update the row with the specified index with the new values

myDatabase.update(DATABASE_TABLE, updatedValues, where, null);

Trang 27

CHƯƠNG 2 : PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG

CỦA ỨNG DỤNG QUẢN LÝ NHÂN VIÊN

2. Xác định các tác nhân

Người dùng: Là người điều hành hệ thống, đồng thời đảm bảo hệ thống hoạt

động thông suốt, có quyền bổ sung, thay đổi các thông tin và dữ liệu của ứng dụng

- Xem chi tiết phòng ban

- Thêm nhân viên

- Sửa thông tin nhân viên

- Xóa nhân viên

- Xem chi tiết nhân viên

Trang 28

người dùng cũng có quyền sửa xóa thông tin của phòng ban.

Ngày đăng: 13/06/2017, 11:04

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w