Phần 1. MỞ ĐẦU
1. Lý do chọn đề tài
Do nhu cầu trao đổi thông tin ngày càng tăng và nhu cầu sử dụng sản phẩm cơng nghệ cao
nhiều tính năng, cấu hình cao, chất lượng tốt, kiểu dáng mẫu mã đẹp, phong phú nên nhà cung
cấp phải luôn luôn cải thiện, nâng cao những sản phẩm của mình. Do đó việc xây dựng các ứng
dụng cho điện thoại di động đang là một ngành công nghiệp mới đầy tiềm năng và hứa hẹn
nhiều sự phát triển vược bậc của ngành khoa học kĩ thuật.
Cùng với sự phát triển của thị trường điện thoại di động là sự phát triển mạnh mẽ của xu
hướng lập trình phần mềm ứng dụng cho các thiết bị di động. Phần mềm, ứng dụng cho điện
thoại hiện nay rất đa dạng và phong phú trên các hệ điều hành di động cũng phát triển mạnh mẽ
và đang thay đổi từng ngày. Các hệ điều hành J2ME, Android, IOS, Hybrid, Web based Mobile
Application đã rất phát triển trên thị trường truyền thông di động.
Với sự phát triển nhanh chóng của thị trường điện thoại di động và xu hướng lập trình phần
mềm ứng dụng di động, nhóm em xin chọn đề tài “Xây dựng ứng dụng quản lý nhân viên
trên hệ điều hành Android” để có thể đáp ứng được nhu cầu làm việc tiện ích nhanh chóng
cho các doanh nghiệp trong thời đại cơng nghệ.
2. Mục tiêu của đề tài
- Nghiên cứu ngôn ngữ lập trình Android .
-
Đảm bảo chương trình hiệu quả.
-
Chương trình chạy ổn định.
-
Giao diện thân thiện dễ sử dụng.
-
Tối ưu hóa các thao tác dư thừa, đơn giản cho người mới bắt đầu.
-
Hạn chế thấp nhất các sai sót có thể xảy ra trong quá trình sử dụng.
3. Đối tượng và phạm vi nghiên cứu
Đối tượng:
- Ứng dụng quản lý nhân viên trên hệ điều hành Android
Phạm vi nghiên cứu:
- Trên điện thoại Android.
4. Phương pháp nghiên cứu
- Tìm hiểu về cách viết và xây dựng ứng dụng cho Android
- Tìm hiểu sâu hơn bộ công cụ phát triển phần mềm Android .
Phần 2. NỘI DUNG NGHIÊN CỨU
CHƯƠNG 1: TỔNG QUAN VỀ ANDROID
Lịch sử Android
Ban đầu, Android là HĐH cho các thiết bị cầm tay dựa trên lõi Linux do công ty
Android Inc. (California, Mỹ) thiết kế. Cơng ty này sau đó được Google mua lại vào
năm 2005 và bắt đầu xây dựng Android Platform.
1.1.
Vào cuối năm 2007, Liên minh thiết bị cầm tay mã nguồn mở (Open Handset
Alliance) gồm các thành viên nổ i bậ t trong ngành viễn thông và thiết bị cầm tay như:
Broadcom Corporation, Google, HTC, Intel, LG, Marvell, Motorola, Samsung
Electronics, Asustek Computer Inc, Atheros Communications, Sony Ericsson,
Toshiba Corp, và Vodafone Group,… đã lên tiếng ủng hộ Android và xem Android là
HĐH mặc định cài sẳn trong các thiết bị xuất xưởng của mình.
Mục tiêu của Liên minh này là nhanh chóng đổi mới để đáp ứng tốt hơn cho nhu cầu
người tiêu dùng và kết quả đầu tiên của nó chính là nền tảng Android. Android được
thiết kế để phục vụ nhu cầu của các nhà sản xuất thiết, các nhà khai thác và các lập trình
viên thiết bị cầm tay.
Ở cả hai phiên bản 1.0 và 1.1 Android chưa hỗ trợ soft-keyboard mà đòi hỏi các
thiết bị phải sử dụng bàn phím vật lý. Android cố định vấn đề này bằng cách phát hành
SDK 1.5 vào tháng 4 năm 2009, cùng với một số tính năng khác. Chẳng hạn như nâng
cao khả năng ghi âm truyền thông, vật dụng, và các live folder.
Hiện nay Android đã có phiên bản Android 5.0.1 và những phiên bản mới hơn với
nhiều tính năng ưu việt.
Hình 1.1 Biểu tượng hệ điều hành Android
1.2. Nghiên cứu máy ảo Dalvik
Dalvik là máy ảo giúp các ứng dụng java chạy được trên các thiết bị động Android. Nó
chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik (dex). Định dạng phù
hợp cho các hệ thống mà thường bị hạn chế về bộ nhớ và tốc độ xử lý. Dalvik đã được thiết
kế và viết bởi Dan Bornstein, người đã đặt tên cho nó sau khi đến thăm một ngơi làng đánh
cá nhỏ có tên là Dalvík ở đảo Eyjafjưrður, nơi mà một số tổ tiên của ơng sinh sống. Từ góc
nhìn của một nhà phát triển, Dalvik trông giống như máy ảo Java (Java Virtual Machine)
nhưng thực tế thì hồn tồn khác. Khi nhà phát triển viết một ứng dụng dành cho Android,
anh ta thực hiện các đoạn mã trong môi trường Java. Sau đó, nó sẽ được biên dịch sang các
bytecode của Java, tuy nhiên để thực thi được ứng dụng này trên Android thì nhà phát triển
phải thực thi một cơng cụ có tên là dx. Đây là cơng cụ dùng để chuyển đổi bytecode sang
một dạng gọi là dex bytecode. "Dex" là từ viết tắt của "Dalvik executable" đóng vai trị như
cơ chế ảo thực thi các ứng dụng Android.
1.3. Kiến trúc của Android
Mơ hình sau thể hiện một cách tổng qt 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.
Hình 1.2 Kiến trúc của Android
1.3.1 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.
1.3.2 Android Runtime
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.
1.1.1. Android Runtime
Android bao gồm một tập hợp các thư viện cơ bản mà 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.
1.3.3 Libraries
Android bao gồm một tập hợp các thư viên C/C++ được sử dụng bởi nhiều thành phần
khác nhau trong hệ thống Android. Điều này được thể hiện thông qua nền tảng ứng dụng
Android. Một số các thư viện cơ bản được liệt kê dưới đây:
- System C library: Thư viện chuẩn C.
- Media Libraries: Dựa trên PacketVideo's OpenCORE; các thư viên hỗ trợ phát và
ghi của các định dạng audio và video phổ thông, cũng như các định dạng ảnh, bao gồm
MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
- Surface Manager: Quản lý việc truy xuất vào hệ thống hiển thị
- LibWebCore: Một trình duyệt web hiện đại mà có khả năng trên cả trình duyệt
Android và một trình web nhúng.
- SGL: Công cụ đồ họa 2D cơ bản
- 3D libraries: Một giao diện dựa trên OpenGL ES 1.0 APIs; các thư viện sử dụng
phần cứng 3D.
- FreeType: bitmap và vector font trình diễn.
- SQLite: Một cơ sở dữ liệu mạnh mẽ dành cho tất cả các ứng dụng Android.
1.3.4 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. Nhà phát
triển có thể truy cập vào các API cùng một khuôn khổ được sử dụng bởi các ứng dụng lõi. Các
kiến trúc ứng dụng được thiết kế để đơn giản hóa việc sử dụng lại các thành phần; bất kỳ ứng
dụng có thể xuất bản khả năng của mình và ứng dụng nào khác sau đó có thể sử dụng những
khả năng (có thể hạn chế bảo mật được thực thi bởi khuôn khổ). Cơ chế này cho phép các thành
phần tương tự sẽ được thay thế bởi người sử dụng.
Cơ bản tất cả các ứng dụng là một bộ các dịch vụ và các hệ thống, bao gồm:
- Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng để thiết kế phần
giao diện ứng dụng như: gridview, tableview, linearlayout,…
- Một “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 (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu giữa các ứng dụng đó.
- Một “Resource Manager” cung cấp truy xuất tới các tài nguyên không phải là mã
nguồn, chẳng hạn như: localized strings, graphics, and layout files.
- Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển thị các custom alerts
trong status bar.
1.3.5 Application
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.
1.4 Android Emulator
Android SDK và Plugin Eclipse được gọi là một Android Deverloper Tool (ADT). Các
Android coder sẽ cần phải sử dụng công cụ IDE (Integrated Development Enveronment) này để
phát triển, debugging và testing cho ứng dụng. Tuy nhiên, các coder cũng có thể khơng cần
phải sử dụng IDE mà thay vào đó là sử dụng command line để biên dịch và tất nhiên là vẫn có
Emulator như thường. Android Emulator được trang bị đầy đủ hầu hết các tính năng của một
thiết bị thật. Tuy nhiên, một số đã bị giới hạn như là kết nối qua cổng USB, camera và video,
nghe phone, nguồn điện giả lập và bluetooth. Android Emulator thực hiện các công việc thông
qua một bộ xử lý mã nguồn mở, công nghệ này được gọi là QEMU ( />được phát triển bởi Fabrice Bellard.
Hình 1.3 Android emulator
1.5 Các thành phần trong một Android Project
1.5.1 Thư mục src
Thư mục này là nơi chứa các file code Java của một Android Project
1.5.2 Thư mục res
Chứa các tài nguyên của ứng dụng gồm một số thành phần chính sau:
+ drawable: Chứa các hình ảnh phục vụ cho chương trình (bao gồm các thư mục như
drawable-hdpi, drawable-ldpi,… mỗi thư mục ứng với một độ phân giải của màn hình nhất
định khi ứng dụng được chạy ở màn hình nào nó sẽ tự tìm các tệp tương ứng trong thư mục đó)
+ layout: Chứa các file thiết kế giao diện dưới dạng xml
+ menu: Chứa các file thiết kế menu dưới dạng xml
+ raw: chứa các file phụ khác phục vụ cho việc cấu hình
+ values: Chứa các file lưu giá trị như cỡ chữ, mã màu,… (bao gồm các thư mục valueshdpi, values-ldpi,… cách hoạt động giống với thư mục drawable)
1.5.3 File R.JaVa
File R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file này được sử dụng để
quản lý các thuộc tính được khai báo trong file XML của ứng dụng và các tài nguyên hình ảnh.
Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào xảy ra làm thay
đổi các thuộc tính trong ứng dụng. Chẳng hạn như, bạn kéo và thả một file hình ảnh từ bên
ngồi vào project thì ngay lập tức thuộc tính đường dẫn đến file đó cũng sẽ được hình thành
trong file R.java hoặc xố một file hình ảnh thì đường dẫn tương ứng đến hình ảnh đó cũng tự
động bị xố. Có thể nói file R.java hồn tồn khơng cần phải đụng chạm gì đến trong cả quá
trình xây dựng ứng dụng.
Dưới đây là nội dung của một file R.java:
1.5.4 Androis Manifest.xml
Trong bất kì một project Android nào khi tạo ra đều có một file AndroidManifest.xml, file này
được dùng để định nghĩa các screen sử dụng, các permission cũng như các theme cho ứng
dụng. Đồng thời nó cũng chứa thông tin về
phiên bản SDK cũng như main activity sẽ chạy đầu tiên. File này được tự động sinh ra khi
tạo một Android project. Trong file manifest bao giờ cũng có 3 thành phần chính đó là:
application, permission và version.
Dưới đây là nội dung của một file AndroidManifest.xml
Application
Thẻ <application>, bên trong thẻ này chứa các thuộc tính được định nghĩa cho ứng dụng
Android như:
- android:icon = “drawable resource” - Ở đây đặt đường dẫn đến file icon của ứng
dụng khi cài đặt. VD: android:icon = “@drawable/icon”.
- android:name = “string” - thuộc tính này để đặt tên cho ứng dụng Android. Tên này
sẽ được hiển thị lên màn hình sau khi cài đặt ứng dụng.
- android:theme = “drawable theme” - thuộc tính này để đặt theme cho ứng dụng. Các
theme là các cách để hiển thị giao diện ứng dụng. Ngồi ra cịn nhiều thuộc tính khác…
Permission
Bao gồm các thuộc tính chỉ định quyền truy xuất và sử dụng tài nguyên của ứng dụng. Khi
cần sử dụng một loại tài nguyên nào đó thì trong file manifest của ứng dụng cần phải khai báo
các quyền truy xuất như sau:
SDK version
Thẻ xác định phiên bản SDK được khai báo như sau:
Ở đây chỉ ra phiên bản SDK nhỏ nhất mà ứng dụng hiện đang sử dụng.
1.5.5 Tập tin activity_main.xml
- Tiếp theo bạn double - click vào activity_main.xml, tập tin này cho phép người dùng
thiết kế giao diện của chương trình bằng cách trực quan hay viết code thơng qua việc chọn nút
Design hay Text.
- Trong màn hình trên, bạn thấy bên trong hàm onCreate có lệnh:
+ setContentView(R.Layout.activity_main) ==> thiết lập giao diện cho Activity. Với
activity_mainlấy từ R.java
+ findViewById(R.id.btnXinChao) ==> truy suấ t control là Button trên giao diện. với
btnXinChaolấy từ R.java
1.6 Ngơn ngữ lập trình sử dụng
Ngơn ngữ chính thức để phát triển Android là Java. Phần lớn Android được viết
bằng Java và các hàm API của nó được thiết kế để được gọi chủ yếu từ Java.
Ngơn ngữ lập trình Java ban đầu được phát triển bởi Sun Microsystems do James
Gosling khởi xướng và phát hành vào năm 1995 (Java 1.0 [J2SE]). Tính đến thời điểm
này (tháng 2/2015) phiên bản mới nhất của Java Standard Edition (JSE) là 8. Với ưu thế
về đa nền tảng (multi platform) Java càng lúc càng được ứng dụng rộng rãi trên nhiều
thiết bị từ máy tính đến mobile và nhiều thiết bị phần cứng khác...
Java là ngơn ngữ lập trình hướng đối tượng nên nó cũng có 4 đặc điểm chung của các
ngơn ngữ hướng đối tượng
Tính trừu tượng (Abstraction): là tiến trình xác định và nhóm các thuộc tính, các
hành động liên quan đến một thực thể đặc thù, xét trong mối tương quan với ứng
dụng đang phát triển.
Tính đa hình (Polymorphism): cho phép một phương thức có các tác động khác
nhau trên nhiều loại đối tượng khác nhau. Với tính đa hình, nếu cùng một phương
thức ứng dụng cho các đối tượng thuộc các lớp khác nhau thì nó đưa đến những
kết quả khác nhau. Bản chất của sự việc chính là phương thức này bao gồm cùng
một số lượng các tham số.
Tính kế thừa (Inheritance): Điều này cho phép các đối tượng chia sẻ hay mở
rộng các đặc tính sẵn có mà khơng phải tiến hành định nghĩa lại.
Tính đóng gói (Encapsulation): là tiến trình che giấu việc thực thi những chi tiết
của một đối tượng đối với người sử dụng đối tượng ấy.
Java được sử dụng để làm gì?
Viết ứng dụng web (J2EE): Java thường được sử dụng để xây dựng các hệ thống
web lớn đòi hỏi độ bảo mật cao, số lượng người dùng lớn như ngân hàng, phần
mềm quản lý bệnh viện, CRM, HRM.... Đối với các website nhỏ thơng thường rất
ít viết bằng Java.
Viết ứng dụng mobile (J2ME): Trước đây nền tảng J2ME thường được sử dụng để
viết game và app cho di động feature phone (file .jar) và giờ đây khi smartphone
Android lên ngôi Java lại tiếp tục được sử dụng để viết app và game cho nền tảng
Android (file .apk).
Viết ứng dụng desktop (J2SE): Các ứng dụng desktop viết bằng Java thật sự khơng
nhiều có thể kể đến một số phần mềm như JMeter hoặc Designer Vista. Lợi thế lớn
nhất của ứng dụng Java là bạn chỉ viết một lần và sau đó có thể đem chương trình
lên Windows, Linux hay Mac để chạy mà khơng cần phải viết lại. Tuy nhiên do
chạy trên JVM nên performance của ứng dụng thấp hơn một chút so với các ngơn
ngữ như C/C++, C#.
1.7 Cơng cụ lập trình Android Studio
Có nhiều cơng cụ để phát triển Android nhưng đến nay cơng cụ chính thức và mạnh mẽ
nhất là Android Studio. Đây là IDE (Mơi trường phát triển tích hợp) chính thức cho nền
tảng Android, được phát triển bởi Google và được sử dụng để tạo phần lớn các ứng dụng
mà bạn có thể sử dụng hàng ngày.
Android Studio lần đầu tiên được công bố tại hội nghị Google I/O vào năm 2013 và được
phát hành cho công chúng vào năm 2014 sau nhiều phiên bản beta khác nhau. Trước khi
được phát hành, các nhà phát triển Android thường sử dụng các công cụ như Eclipse IDE,
một IDE Java chung cũng hỗ trợ nhiều ngơn ngữ lập trình khác.
Cài đặt Android Studio bao gồm các nội dung: cài đặt JDK, cài đặt Android Studio và tạo
Android Virtual Device trên môi trường Windows
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH
2.1 Phân tích yêu cầu
2.1.1 Xác định các tác nhân
Vì phần mềm dùng trên android nên chỉ có một tác nhân là người dùng.
2.1.2 Xác định các trường hợp sử dụng (use case)
- Đăng nhập
- Đăng kí
- Khởi động ứng dụng
- Đóng ứng dụng
- Thêm nhân viên
- Sửa nhân viên
- Xoá nhân viên
- Danh sách nhân viên
2.1.2 Đặc tả các trường hợp sử dụng
Đăng nhập:
- Tác nhân: Người dùng
- Mô tả: Chức năng đăng nhập giúp người quản lí vào trang chủ sử dụng
Đăng kí
- Tác nhân: Người dùng
- Mơ tả: Chức năng đăng kí giúp người quản lí tạo mới tài khoản
Khởi động ứng dụng
- Tác nhân: Người dùng.
- Mơ tả: Khi bắt đầu sử dụng thì cần phải khởi động ứng dụng.
Đóng ứng dụng:
- Tác nhân: Người dùng.
- Mơ tả: Để đảm bảo an tồn thơng tin, dung lượng máy, tránh hao tổn pin khi kết
thúc ứng dụng, người dùng phải đóng ứng dụng.
Thêm nhân viên:
-Tác nhân: Người dùng.
-Mô tả: Người dùng sẽ thêm nhân viên ở đây.
Sửa nhân viên
-Tác nhân: Người dùng.
-Mơ tả: Có chức năng sửa thơng tin nhân viên khi bị nhập sai
Xóa nhân viên
-Tác nhân: Người dùng.
-Mơ tả: Có chức năng xóa nhân viên khơng cịn làm việc
Danh sách nhân viên
-Tác nhân: Người dùng.
-Mơ tả: Có chức năng xóa nhân viên khơng cịn làm việc
2.1.3 Biểu đồ use case
Hình 1.4 Biểu đồ trường hợp sử dụng
2.2 Phân tích các lớp đối tượng
Các lớp đối tượng của ứng dụng như sau:
-
DanhsachNhanVien: Lớp này hiển thị thông tin nhân viên
-
NguoiDung: Lớp này quản lý các thông tin
Hình 1.5 Biểu đồ lớp
2.3 Biểu đồ hoạt động
CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH
3.1. Tổng quan về App Quản Lý Nhân Viên
Giới thiệu ứng dụng
-
App Quản lý nhân viên giúp người dùng sử dụng được tiện lợi hơn thơng
qua di động của mình, tiết kiệm được thời gian , khi chỉ cần một chiếc
martphone.
Đặc điểm nổi bật
-
App quản lý nhân viên giao diện thân thiện, đơn giản, dễ sử dụng
3.2 Giao diện app Quản lý nhân viên
3.2.1 Giao diện chính
- Giao diện chính của chương trình
-
Giao diện đăng nhập