LỜI CÁM ƠN
Sau chặng đường 5 năm học tập và rèn luyện dưới mái trường Đại học
Công nghệ thông tin và truyền thông Thái Nguyên, được sự chỉ bảo tận tình của
các thầy cô, và sự giúp đỡ từ bạn bè, cùng những nỗ lực của bản thân, em thấy
mình đã dần nâng cao được những kiến thức, kĩ năng, những kinh nghiệm sống
cho bản thân. Em sẽ tiếp tục cố gắng phấn đấu dùng những điều đã được dạy và
tích lũy vận dụng vào thực tế để trở thành một người có ích cho xã hội.
Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến trường Đại học Công
nghệ thông tin và truyền thông Thái Nguyên đã tạo mọi điều kiện thuận lợi cho
phép em hoàn thành đồ án này.
Với lòng biết ơn sâu sắc nhất, em xin gửi lời cám ơn chân thành đến các
thầy- cô giáo trong bộ môn Mạng máy tính và truyền thông - khoa Công nghệ
thông tin – trường Đại học Công nghệ thông tin và truyền thông Thái Nguyên đã
cùng với tri thức và tâm huyết của mình truyền đạt vốn kiến thức quý báu cho em,
tận tình giúp đỡ và động viên em trong suốt thời gian thực hiện đồ án tốt nghiệp.
Đặc biệt em xin bày tỏ lòng biết ơn sâu sắc đến cô giáo Ths.Nguyễn Thị
Duyên đã tận tình chỉ bảo, giúp đỡ em trong quá trình học tập và nghiên cứu.
Và sau cùng em xin gửi lời cảm ơn đến gia đình, bạn bè những người luôn
bên cạnh động viên và giúp đỡ em trong thời gian em thực hiện đề tài.
Trong phạm vi khả năng cho phép, em đã cố gắng để hoàn thành đề tài một
cách tốt nhất. Song, với kiến thức còn có hạn, chắc chắn sẽ không tránh khỏi
những thiếu sót. Em kính mong nhận được sự thông cảm và đóng góp ý kiến tích
cực từ phía các thầy cô và các bạn.
Em xin chân thành cám ơn!
Sinh viên thực hiện
Nguyễn Thị Hồng
1
2
1.1.3 Cấu trúc của một project Adroid ......................................................... 15
1.1.4 Các thành phần cơ bản của ứng dụng Android ................................... 17
1.1.5 Web Service ........................................................................................ 25
1.2. Tổng quan về phân tích thế kế hướng đối tượng UML ............................ 28
1.2.1 Giới thiệu chung về UML ................................................................... 28
1.2.2 Các đặc điểm cơ bản của hệ thống hướng đối tượng .......................... 28
1.2.3 Ưu nhược điểm của phân tích thiết kế hướng đối tượng..................... 29
1.3. Ứng dụng mô hình UML trong thiết kế ứng dụng Android .................... 30
CHƯƠNG 2:KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG .............. 32
2.1. Khảo sát thực tế ........................................................................................ 32
2.1.1 Khảo sát phần mềm ngoài thị trường ................................................. 32
2.1.2 Khảo sát hiện trạng thực tế tại trường Đại học CNTT&TT ................ 35
2.1.3 Khảo sát nhu cầu đặt sân bóng đá của người dùng ........................... 37
2.1.4 Áp dụng thực tế .................................................................................. 38
2.2. Phân tích hệ thống .................................................................................... 39
2.2.1 Phạm vi của chương trình.................................................................... 39
2.2.2 Các tác nhân và Use Case.................................................................... 39
2.2.3 Biểu đồ UseCase tổng quát ................................................................ 40
4
2.2.4 Đặc tả cho từng Usecase ..................................................................... 40
2.2.5 Biểu đồ lớp .......................................................................................... 54
2.2.6 Thiết kế cơ sở dữ liệu .......................................................................... 54
CHƯƠNG 3: XÂY DỰNG DEMO CHƯƠNG TRÌNH..................................... 57
3.1. Thiết kế giao diện chương trình................................................................ 57
3.2. Xây dựng chương trình ............................................................................. 58
3.2.1 Sơ đồ kiến trúc của hệ thống ............................................................... 58
3.2.2 Xây dựng Web Server cho ứng dụng ................................................. 60
3.2.3 Xây dựng ứng dụng trên Android ...................................................... 64
Hình 2.16 Biểu đồ hoạt động xem bảng giá....................................................... 47
Hình 2.17 Biểu đồ trình tự xem sơ đồ sân ......................................................... 48
Hình 2.18 Biểu đồ trình tự xem sơ đồ sân ......................................................... 48
Hình 2.19 Biểu đồ trình tự chức năng đặt sân.................................................... 49
Hình 2.20 Biểu đồ hoạt động đặt sân ................................................................. 50
6
Hình 2.21 Biểu đồ trình tự chức năng hủy sân................................................... 51
Hình 2.22 Biểu đồ trình tự chức năng đăng nhập của Admin............................ 52
Hình 2.23 Biểu đồ trình tự chức năng quản lí sân đã đặt................................... 53
Hình 2.24 Biểu đồ trình tự hủy sân của admin................................................... 54
Hình 2.25 Biểu đồ lớp ........................................................................................ 54
Hình 2.26 Bảng cơ sở dữ liệu............................................................................. 55
Hình 2.27 Bảng thiết kế cơ sở dữ liệu................................................................ 56
Hình 3.1 Sơ đồ bố trí giao diện chương trình ..................................................... 57
Hình 3.2 Sơ đồ kiến trúc của hệ thống................................................................ 58
Hình 3.3 Giao diện trang host free đã đăng kí .................................................... 62
Hình 3.4 Cấu trúc file API viết code đọc dữ liệu từ MySQL ............................. 62
Hình 3.5 Giao diện chính ứng dụng ................................................................... 64
Hình 3.6 Cấu trúc file controllers........................................................................ 65
Hình 3.7 Cấu trúc file models ............................................................................. 66
Hình 3.8 Cấu trúc file views ............................................................................... 67
Hình 3.9 Cấu trúc dữ liệu trả về.......................................................................... 67
Hình 3.10 Giao diện của khách hàng .................................................................. 68
Hình 3.11 Giao diện đăng nhập ứng dụng .......................................................... 69
Hình 3.12 Giao diện ứng dụng sau khi đăng nhập.............................................. 70
Hình 3.13 Giao diện lịch đặt sân của ứng dụng .................................................. 71
Hình 3.14 Giao diện chọn loại sân ...................................................................... 72
Hình 3.15 Form xác nhận thông tin đặt sân ........................................................ 73
android, kỹ năng lập trình android, cũng như quy trình xây dựng phần mềm, thông
qua đó xây dựng và cài đặt ứng dụng đặt sân bóng đá trên di động nền tảng
android phục vụ người dùng.
8
Nội dung, phạm vi thực hiện
Tìm hiểu về nền tảng android và lập trình android.
Tìm hiểu và khảo sát nhu cầu thực tế để thu thập thông tin, tài liệu…lấy
cơ sở để thiết kế phần mềm.
Xây dựng, cài đặt ứng dụng đặt sân bóng đá trên điện thoại di động nền
tảng android.
Phương pháp thực hiện
Thông qua tài liệu, thông tin thu thập trên mạng internet.
Thông qua trao đổi với giáo viên hướng dẫn và thầy cô trong trường.
- Thông qua trao đổi, học tập cùng bạn bè và những người có kinh nghiệm
Cấu trúc nội dung đề tài
Đề tài gồm 3 chương chính:
Chương 1: Cơ sở lý thuyết
Chương 2: Khảo sát và phân tích thiết kế hệ thống
Chương 3: Xây dựng demo chương trình.
9
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Tổng quan về hệ điều hành Android.
1.1.1 Android và lịch sử phát triển của Android
Android là một hệ điều hành di động dựa trên nền tảng linux phiên bản 2.6
dành cho các dòng điện thoại SmartPhone. Đầu tiên được ra đời bởi công ty liên
điện thoại được sản xuất ra đều được tích hợp hàng loạt dịch vụ của Google. Từ
đó hãng có thể kiếm bội, chủ yếu là từ các nguồn quảng cáo trên các dịch vụ đó.
Một số hãng sản xuất điện thoại có sử dụng hệ điều hành Android tiêu biểu:
HTC với các dòng Desire HD, Evo 4G, DROID ERIS, Desire Z, Hero,
Desire, Tattoo, Wildfire, Droid Incredible, Legend, Magic, Google Nexus One,
Dream, Aria, Paradise
LG với các dòng GT540 Optimus, Optimus Chic E720, Optimus
One
P500, GW620, Optimus Z, Optimus Q, KH5200 Andro-1, GW880,
C710Aloha
MOTOROLA với các dòng MILESTONE 2, BACKFLIP, Droid
XTreme, MT710 ZHILING, MILESTONE, XT720 MOTOROI, A1680, XT80
ZHISHANG, DEFY, CHARM, XT806...
SAMSUNG với các dòng máy I9000 Galaxy S, Galaxy Tab, Epic
4G, i5510, I5500 Galaxy 5, I7500 Galaxy, I5800 Galaxy 3, M110S Galaxy
S, I6500U Galaxy, Galaxy Q, I5700 Galaxy Spica, I8520 Galaxy Beam, I909
Galaxy S
SONY : XPERIA X10, XPERIA X10 mini, XPERIA X8
ACER với các dòng máy beTouch T500, Liquid E, Stream,
Liquid, beTouch E110, beTouch E130, beTouch E400, beTouch E120, Liquid
Metal.
Ngoài ra còn nhiều hãng điện thoại vừa và nhỏ khác nữa cũng sử dụng hệ
điều hành android trong sản phẩm của mình.
11
Kiến trúc của hệ điều hành Android
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.Các thư viện này sẽ được các lập
trình viên phát triển ứng dụng Android thông qua tầng Android Framework. Có thể
kể đến một vài thư viện quen thuộc như:
android.app - Cung cấp truy cập đến các mô hình ứng dụng và là nền tảng
của tất cả các ứng dụng Android.
android.content - Tạo điều kiện truy cập nội dung, publishing và
messaging giữa các ứng dụng và các thành phần ứng dụng.
android.database - Được sử dụng để truy cập dữ liệu được công bố bởi
các nhà cung cấp nội dung và bao gồm các lớp quản lý cơ sở dữ liệu SQLite.
android.graphics - Một bản vẽ đồ họa 2D API cấp thấp bao gồm cả màu
sắc, điểm, các bộ lọc, hình chữ nhật và bức tranh sơn dầu.
13
android.hardware - Trình bày một API cung cấp quyền truy cập vào
phần cứng như gia tốc và cảm biến ánh sáng.
android.opengl - Một giao diện Java với đồ họa OpenGL ES dựng hình
3D API.
android.os - Cung cấp các ứng dụng với quyền truy cập vào các dịch vụ
hệ điều hành chuẩn bao gồm tin nhắn, các dịch vụ hệ thống và quá trình liên lạc.
android.media - Cung cấp các lớp để cho phép phát âm thanh và video.
android.net - Một tập các API cung cấp quyền truy cập vào các mạng
stack. Bao gồm android.net.wifi, cung cấp truy cập không dây đến ngăn xếp của
thiết bị.
android.text - Được sử dụng để thao tác văn bản trên màn hình điện
thoại.
android.util - Một tập các lớp tiện ích cho công việc biểu diễn chuỗi,
chuyển đổi số lượng, xử lý XML, ngày tháng, thời gian.
android.view - Các khối xây dựng cơ bản của giao diện người dùng của
Thư mục gen (viết tắt của Generated Java File):
Nơi chứa các file tự động phát sinh, hay chính là các file .java tạo ra bởi
ADT plug-in, như là file R.java hoặc các giao diện tạo ra từ file AIDL. 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 ngoà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 xoá một file hình ảnh
thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xoá.
Có thể nói file R.java hoàn toà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:
publicstaticfinalclass drawable {
publicstaticfinalintabc_ab_bottom_solid_dark_holo=0x7f020000;
publicstaticfinalintabc_ab_bottom_solid_light_holo=0x7f020001;
publicstaticfinalintabc_ab_share_pack_holo_light=0x7f020005;
publicstaticfinalintabc_ab_solid_dark_holo=0x7f020006;
publicstaticfinalintabc_ab_solid_light_holo=0x7f020007;
publicstaticfinalintabc_ab_stacked_solid_dark_holo=0x7f020008;
publicstaticfinalintabc_ab_stacked_solid_light_holo=0x7f020009;
publicstaticfinalintabc_ab_transparent_light_holo=0x7f02000d;
16
Thư mục res (viết tắt của resource-tài nguyên):
Nơi chứa các resource dùng trong ứng dụng. Chẳng hạn như file hình ảnh,
file layout, các chuỗi (string)…
Các thư mục con của res bao gồm:
package="com.example.tea"
android:versionCode="1"
android:name = “string”: thuộc tính này để đặt tên cho ứng dụng
android. Tên này sẽ 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.
Permission
Bao gồm các thuộc tính chỉ định quyền truy suấ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 suất sau:
<uses-permission android:name=”android.permission.VIBRATE”/>
SDK version
Thẻ xác định phiên bản SDK được khai báo như sau:
<uses-sdk android: minSdkVersion=”8”/>
bộ màn hình.
Activity Group: là một nhóm các Activity nhúng trong một Activity
khác.
Full screen Activity: là Activity phủ kín toàn bộ màn hình. Đây là loại
Activity thường được sử dụng phổ biến nhất.
Một ứng dụng chứa rất nhiều Activity liên kết với nhau và hoạt động giữa
các Activity chính, được khởi động đầu tiên khi ứng dụng chúng ta chạy. Nó sẽ ở
trạng thái focus và sẽ được đưa vào ngăn xếp. Từ Activity 1, chúng ta khởi động
Activity 2, lúc này Activity 2 sẽ ở trạng thái focus và sẽ được đưa vào ngăn xếp.
Từ Activity 2, chúng ta khởi động Activity 3, bây giờ tới Activity 3 nhận focus và
được đưa vào ngăn xếp.
20
Bây giờ, nếu như bạn nhấn nút Back trên thiết bị, Activity 3 sẽ bị đẩy ra
trước tiên. Lúc này Activity 2 sẽ dành được focus và hiển thị giao diện tương tác
với người dùng. Nếu bạn tiếp tục bấm nút Back thì Activity 1 sẽ dành được focus
và giao diện hiển thị sẽ là Activity 1. Nếu bạn tiếp tục nhấn nút Back nữa thì
Activity 1 sẽ xóa khỏi Stack và lúc này ngăn xếp rỗng và về màn hình HOME của
thiết bị Android.
b. Vòng đời của 1 Activity
Không giống như các ứng dụng thông thường được khởi tạo ở hàm main.
Hệ thống Android sẽ được bắt đầu thực hiện một Activity tương ứng với từng
trạng thái vòng đời của nó. Vòng đời của một Activity sẽ diễn ra từ lúc khởi động
cho đến khi kết thúc vòng đời của nó. Phần này sẽ giới thiệu cho bạn đọc một cái
nhìn tổng quát về các phương thức quan trong trong vòng đời của một Activity.
Android cung cấp một số sự kiện để quản lý các trạng thái vòng đời của Activity
như sau:
Khi một Activity bị paused hoặc stopped, trạng thái của một Activity vẫn sẽ
được giữ lại. Điều này là đúng vì mỗi đối tượng Activity vẫn còn được giữ lại
trong bộ nhớ khi nó bị paused hoặc stopped. Tất cả các thông tin về Activity cũng
như trạng thái của nó vẫn còn tồn tại trong. Vì vậy, bất cứ thay đổi nào của người
dùng đối với Activity vẫn được giữ lại khi nó trở lại trạng thái hoạt động hoặc chế
độ resume.
Intents
Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một
Activity. Là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiều
Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc
khác nhau. Intent chính là người đưa thư, giúp chúng ta triệu gọi cũng như truyền
các dữ liệu cần thiết để thực hiện một Activity từ một Activity khác. Điều này
cũng giống như việc di chuyển giữa các Form trong lập trình Windows Form.
23
Trong hình vẽ trên Activity B chỉ trả về kết quả khi cần thiết. Ví dụ: giả sử
Activity A nhắc người dùng chọn ảnh profile, Activity B liệt kê các ảnh trong
SDCard và cho phép người dùng chọn ảnh. Khi đó cặp “code + result” là cần thiết
và có thể là “0:null” tức là hủy chọn hoặc “1:ảnh 20”tức chọn ảnh 20.
Services
Các dịch vụ (services) chạy nền và không có bất kỳ thành phần giao diện
nào. Chúng có thể thực hiện các hành động tương tự như các hoạt động, nhưng mà
không có bất kỳ giao diện người dùng nào. Dịch vụ là hữu ích với các hành động
(actions) khi mà người dùng cùng một lúc muốn thực hiện trên màn hình nhiều
actions. Chẳng hạn như vừa nghe nhạc vừa nhắn tin, …
Một Service có thể sử dụng theo 2 cách:
+ Nó có thể được bắt đầu và được phép hoạt động cho đến khi một người
nào đó dùng nó lại hoặc nó tự ngắt. Ở chế độ này, nó được bắt đầu bằng cách gọi
Context.startService() và dừng bằng lệnh Context.stopService(). Nó có thể tự động