Tải bản đầy đủ (.doc) (57 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.12 MB, 57 trang )

TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN
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

Lớp

: CCLT07A

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

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


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
2



PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

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. 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.
Ứng dụng di động đang được rất nhiều người phát triển và đang khai thác thêm
nhiề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ập
giả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ần
giú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 ban
củ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ột
chiế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 nhu
cầ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”.
SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
i


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

2. Mục tiêu và phạm vi nghiên cứu
• Mục tiêu
Yêu cầu chung cho ứng dụng quản lý nhân viên là phải nhanh, chính xác, đầy đủ,
giao diện phù hợp và dễ dàng sử dụng.
Xây dựng một ứng dụng có các chức năng cập nhật các thơng tin về phịng ban,
nhân viên, xem chi tiết về nhân viên, xuất ra dữ liệu… Hỗ trợ tối đa cho người dùng
một cách tốt nhất.
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 hồn
thiệ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.

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
ii


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN


MỤC LỤC
LỜI MỞ ĐẦU...............................................................................................................i
MỤC LỤC................................................................................................................... iii
DANH MỤC HÌNH ẢNH...........................................................................................vi
CHƯƠNG 1: SƠ SỞ LÝ THUYẾT............................................................................1
1.1Tổng quan về hệ điều hành Android.................................................................1
1.1.1Khái niệm Android...........................................................................................1
1.1.2Kiế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.3Phá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
Xác định các tác nhân............................................................................................19
Xác định các trường hợp sử dụng.........................................................................19
Biểu đồ trường hợp sử dụng..................................................................................20
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
Biểu đồ tình tự........................................................................................................25
SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
iii



PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

5.1.1Biểu đồ trình tự đăng nhập.............................................................................25
5.1.2Biểu đồ trình tự đăng ký.................................................................................25
5.1.3Biểu đồ trình tự thay đổi thơng tin tài khoản.................................................26
5.1.4Biểu đồ trình tự cập nhật phịng ban..............................................................27
5.1.5Biểu đồ trình tự cập nhật nhân viên nhân viên...............................................28
5.1.6Biểu đồ trình tự tìm kiếm:..............................................................................30
5.1.7Biể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
5.2.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
5.2.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.2Chạ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

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
iv


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

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

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
v


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

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
SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
vi


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

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
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

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
vii


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

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ển
dự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 hay
trả 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ên
bả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ành
midware 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 webkit
engine.
• Optimized graphics : hỗ trợ bộ thư viện 2D và 3D dựa vào đặc tả OpenGL ES
1.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ẽ.

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
1


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

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. Ngồ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ùng
sá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ăng
cao 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ình
thiết bị… Người phát triển ứng dụng được phép sử dụng đầy đủ bộ API được dùng
trong các ứng dụng tích hợp sẳn của Android. Kiến trúc ứng dụng của Android được
thiế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
SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
2


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

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ăng
gở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ệt
web 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 ứng
dụ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 ngun 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 thanh
status 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ệt
củ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 ES
1.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ầ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. Mọi ứng
dụ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
SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
3


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

ả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ổ

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 đích
là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 khi
thực thi, bất kì ứng dụng Android nào cũng được convert thành file thực thi với định
dạng nén Dalvik Executable (.dex). Định dạng này được thiết kế để phù hợp với các
thiế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, network
stack, driver model. Bộ nhân này làm nhiệm vụ như một lớp trung gian kết nối phần
cứ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 Programming
Interface). Java Native Interface: là một bộ framework cho phép mã lệnh viết bằng
Java 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ằng
native 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 ảo
Dalvik 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ựa
trê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 ứng
dụ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ợ. Tuy
nhiê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 ứng
SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
4


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN


dụng khi quyết định sử dụng các bộ thư viện này.
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ên
Android đượ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 ảo
Dalvik để 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 Android
ngà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ình
giả 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 Google
phá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ện
mớ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ệu
SQLite của Android.
• DroidDraw: Giúp thiết kế file XML giao diện ứng dụng.
SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
5


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

• Balsamiq Mockups và AdobeFireworks: Giúp nhanh chóng phác thảo ý
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.

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
6


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

Stt
1

Thư mục, Tập tin và mô tả
Src: Thư mục này chứa các tập tin nguồn đ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ởi
trì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ên
trong 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ó đi .apk – được tạo ra
bởi ADT trong q trình build. Ngồi ra, thư mục bin cũng chứa những tập tin
khá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ân
giả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 đặt
trong thư mục root và cho biết những thành phần có trong ứng dụng của: các
activities, 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=" />package="com.commonsware.android.search">
...
</manifest>

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
7


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

Khi tạo file manifest, điều quan trọng nhất là phải cung cấp thuộc tính của
package, tức tên của Java package dùng làm cơ sở cho ứng dụng của ta. Sau khi đã đặt
tên package, sau này khi cần ghi tên lớp trong file manifest, ta có thể rút ngắn, chẳng
hạ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ác
nhau).

• permission: chỉ định các quyền mà các activities hay services yêu cầu các ứng
dụ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ện
quan trọng (chẳng hạn khởi động activities) nhằm phục vụ việc ghi chú
(logging) và tra số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ư
service tra bản đồ,...)
• uses-sdk: có thể có hoặc khơng, chỉ ra phiên bản củaAndroid mà ứng dụng
này yêu cầu.
• Application: định nghĩa phần trung tâm của ứng dụng của file manifest.

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
8


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

Ví dụ file AndroidManifest:
<manifest xmlns:android=" />package="com.commonsware.android">
android:name="android.permission.ACCESS_LOCATION" />
android:name="android.permission.ACCESS_GPS" />
android:name="android.permission.ACCESS_ASSISTED_GPS" />
android:name="android.permission.ACCESS_CELL_ID" />
<application>
...
</application>

</manifest>
Tất nhiên, phần quan trọng của 1 file manifest chính là thành phần application.
Mặc định, khi ta tạo 1 project Android mới, ta có sẵn 1 thành phần activity:
xmlns:android=" />package="com.commonsware.android.skeleton">
<application>
<activity android:name=".Now" android:label="Now">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
/>
</intent-filter>
</activity>
</application>
</manifest>
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
SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
9


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

được hiển thị.


Các thành phần cơ bản của một ứng dụng Android:


a. Activity.
Định nghĩa Activity.
Là thành phần tối quan trọng của bất kỳ một ứng dụng Android nào. Thuật ngữ
Activity chỉ một việc mà người dùng có thể thực hiện trong một ứng dụng Android.
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ới
setContentView(View). Một activity có thể mang nhiều dạng khác nhau: Một cửa sổ
tồn màn hình (full screen window), một cửa sổ floating (với windowsIsFloating) hay
nằm lồng bên trong 1 activity khác (với ActivityGroup). Có 2 phương thức mà gần
như 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ười
lậ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,..)
để dùng trong UI.
• onPause() - Nơi giải quyết sự kiện người dùng rời khỏi activity. Mọi dữ liệu
được người dùng tạo ra tới thời điểm này cần phải được lưu vào ContentProvider
Để có thể sử dụng Context.startActivity(), mọi lớp activity đều phải được khai
báo với tag <activity> trong file AndroidManifest.xml.
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ác
activity khác muốn chạy trên nền (foreground) trở lại thì cần phải chờ tới khi Activity
mớ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ột
activity trong suốt (transparent) hay khơng chiếm tồ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ắt
chấ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

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
10


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

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ấm
dứ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 tồ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
SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
11


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

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ống
cá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ới
nguồn tài nguyên đó: GET để nhận dữ liệu về, POST để đưa dữ liệu cho nó để thực thi
mộ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ượng
củ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ện
của một class java dùng để thực thi các hành động được đặc tả trong Intent) dành cho
Intent 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ới
broadcastIntent để gởi nó đến bất kì BroadcastReceiver liên quan nào, và dùng với
startService(Intent), bindService(Intent, Service Connection, int ) để giao tiếp với các
Service 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 nhau
trong quá trình thực thi (runtime) (Cung cấp khả năng cho phép hai chương trình khác
nhau 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ột
Intent 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 Activity
lạ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
SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
12


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN




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ính
type, bạn có thể vơ hiệu hóa sự phỏng đốn kiểu dữ liệu và chỉ định rỏ một kiểu chính
xác.
- Component: Chỉ định rõ tên của lớp thành phần (Một thể hiện của một class
java 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ác
thông tin như Action, data/type, và category) và nối chúng với các component (Một
thể 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ột
Intent đặc tả hành động send email thì những thông tin cần chứa trong đối tượng
Bundle 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 class
java dùng để thực thi các hành động được đặc tả trong Intent) (thông qua phương thức
setComponent(ComponentName) hoặc setClass(Context, Class)) cung cấp lớp sẽ thực
thi các hành động được đặc tả trong Intent. Thơng thường thì những Intent này khơng
chứa bất kỳ thông tin nào khác (như category, type) mà đơn giản chỉ là cách để ứng
dụ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 đó.

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
13


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

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ực
hiệ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ức
nă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ên
tiế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ên
tiế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ực

hiệ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ột
long-standing connection được tạo ra để service có thể tương tác với nó.

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
14


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN



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ương
thức bindService() là service được dùng để cung cấp các chức năng cho các chương
trì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ởi

context.sendBroadcast
tới các receivers hồn tồn khơng theo 1 trật tự nào, dẫn tới đôi khi tồn tại cùng 1
lú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



thứ

tự

(Ordered

broadcasts)


-

Được

gửi

bởi

Context.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ừng
việc.
SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
15


PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG QUẢN LÝ NHÂN VIÊN

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 management
system – RDBMS). SQLite có những điểm mạnh sau:


mã nguồn mở




tuân theo quy chuẩn về cơ sở dữ liệu



kích thước nhẹ



cấu trúc đơn tầng

Nó được cài đặt như một thư viện nhỏ gọn và là một phần trong bộ phần mềm
Android. Ngoài ra, SQLite cung cấp các chức năng như thông qua một thư viện chứ
không phải là một quá trình riêng biệt. Mỗi cơ sở dữ liệu sẽ trở thành một phần được
tích hợp trong ứng dụng. Điều này giúp làm giảm sự phụ thuộc vào bên ngồi, tối
thiểu độ trễ và đơn giản hóa các giao dịch và đồng bộ.
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ều
thiế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ác
bằ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ự 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ểm
yế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 số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

SVTH: Nguyễn Hùng Bản_Lớp: CCLT07A
16


×