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

ĐỒ ÁN CƠ SỞ 3 ĐỀ TÀI: APP TRẮC NGHIỆM TIẾNG ANH

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 (612.52 KB, 23 trang )

ĐẠI HỌC ĐÀ NẴNG

KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

ĐỒ ÁN CƠ SỞ 3
ĐỀ TÀI: APP TRẮC NGHIỆM TIẾNG ANH

Sinh viên thực hiện : NGUYỄN HÙNG
Giảng viên hướng dẫn : TS. NGUYỄN ANH TUẤN
Lớp
: 18CE

Đà nẵng, tháng 8 năm 2020


ĐẠI HỌC ĐÀ NẴNG

KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

ĐỒ ÁN CƠ SỞ 3
ĐỀ TÀI: APP TRẮC NGHIỆM TIẾNG ANH

Đà nẵng, tháng 8, năm 2020


MỞ ĐẦU

Trong những năm gần đây, nền tảng công nghệ thơng tin phát triển mạnh mẽ cùng với
đó là sự ra đời của các thiết bị di động như máy tính bảng, điện thoại, smartphone…
ngày càng được ưa chuộng và sử dụng nhiều hơn. Các ứng dụng giờ đây không chỉ chạy
được trên máy tính mà cịn chạy được trên cả thiết bị có hệ điều hành nữa. Và việc xây


dựng các ứng dụng cho những thiết bị trên cũng được người ta quan tâm nhiều hơn. Các
ứng dụng dựa trên nền tảng là hệ điều hành cho thiết bị di động ngày càng đa dạng và
phong phú hơn, đáp ứng được ngày càng nhiều các yêu cầu thực tế của người dùng. Mỗi
thiết bị như thế đều chứa trong nó một hệ điều hành có khả năng chạy được ứng dụng
như một máy tính. Có thể nói hệ điều hành là nền tảng còn các ứng dụng sẽ làm phong
phú hơn cho nền tảng đó. Android OS là hệ điều hành trên điện thoại di động được phát
triển bởi Google và dựa trên nền tảng Linux. Việc xây dựng ứng dụng cho điện thoại di
động chạy hệ điều hành Android hiện nay đang rất mới và rất phát triển ở Việt Nam
Với sự hấp dẫn của các ứng dụng trong Android cùng với bản tính tị mị thích khám phá
cái mới và sự khuyến khích của bạn bè và cô giáo hướng dẫn. Chúng em đã quyết định
thực hiện đồ án “Xây dựng ứng dụng trắc nghiệm tiếng anh trên nền hệ điều hành
Android”. Nội dung đồ án của em gồm 4 chương

3


LỜI CẢM ƠN

Trong thời gian làm đồ án, em đã nhận được nhiều sự giúp đỡ, đóng góp ý kiến
và chỉ bảo nhiệt tình của thầy cơ và bạn bè.
Chúng em xin gửi lời cảm ơn chân thành đến thấy Nguyễn Anh Tuấn, người đã
tận tình hướng dẫn, chỉ bảo chúng em trong suốt quá trình làm đồ án.
Chúng em cũng xin chân thành cảm ơn các thầy cô giáo trong Khoa CNTT-TT
nói chung, các thầy cơ trong bộ mơn lập trình di động nói riêng đã dạy dỗ cho em
kiến thức về các môn đại cương cũng như các mơn chun ngành, giúp chúng em
có được cơ sở lí thuyết vững vàng và tạo điều kiện giúp đỡ chúng em trong suốt
quá trình học tập.
Cuối cùng, chúng em xin chân thành cảm ơn thầy và bạn bè đã luôn tạo điều kiện,
quan tâm, giúp đỡ, động viên chúng em trong suốt quá trình làm đồ án.


(Mẫu)

NHẬN XÉT
(Của giảng viên hướng dẫn)
(Bold, size 16, xếp sau trang nhận xét của cơ quan thực tập)

size 13.......................................................................................................................
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
………………………………………………………

4


NHẬN XÉT
(Của giảng viên hướng dẫn)

………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………

………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………

5


MỤC LỤC
CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG..........................................17
KẾT LUẬN........................................................................................................23

6


CHƯƠNG 1: TỔNG QUAN ANDROID
1.1 Hệ điều hành Android
Android là một nền tảng mã nguồn mở toàn diện được thiết kế cho các thiết bị
di động. Nó là sự liên minh giữa ông lớn Google và Open Handset Alliance là
các tập đoàn sản xuất thiết bị cầm tay nổi tiếng như Intel, SamSung,Toshiba….
Với mục tiêu là “tăng tốc việc đổi mới trong di động và cung cấp chongười
tiêu dùng nhiều tiện ích phong phú, ít tốn kém.” Và Android chính là cơngcụ
để làm điều đó
Android là một nền tảng tồn diện điều này có nghĩa là nó là một tập hợp các
phần mềm hoàn chỉnh cho thiết bị di động. Đối với các nhà phát triển Android
cung cấp các công cụ và các khung cơ bản cho việc phát triển các ứngdụng

một cách nhanh chóng và dễ dàng. Thư viện Android SDK là tất cả những gì
mà cần dùng để bắt đầu phát triển với android; ngay cả khi không có một điện
thoại thật sự. Cịn đối với người sử dụng, Android làm việc một cách chính
xáctrên bề mặt màn hình của điện thoại. Thêm vào đó người sử dụng cũng có
thể tùychỉnh điện thoại theo cách riêng của họ. Đối với các nhà sản xuất
Android là giải pháp hoàn chỉnh để chạy trên các thiết bị của họ. Khác với một
số trình điềukhiển phần cứng cụ thể, Android cung cấp mọi thứ để thiết bị của
họ làm việc.
Android là một nền tảng mã nguồn mở, toàn bộ ngăn xếp từ các module cấp
thấp của Linux đến tất cả các thư viện gốc và từ các ứng dụng khung cho đến
các ứng dụng hoàn chỉnh là hoàn toàn mở. Hơn thế nữa Android còn được
chứngnhận là hệ điều hành thân thiện với người sử dụng. Nó được cấp giấy
phép bởi Apache/MIT (giấy phép chứng nhận mã nguồn mở thân thiện) nó có
thể được mở rộng và phát triển với nhiều mục đích khác nhau mà khơng cần
phải để ý đến bản quyền hay giấy phép sử dụng. Điều này đồng nghĩa với việc
bạn có thể xem tồn bộ mã nguồn của nền tảng, có thể thêm bất kỳ những thiết
kế bí mật của bạn và khơng đưa lại cộng đồng nếu không muốn.
Giống như bất kỳ phần mềm nào, Android được cải thiện theo thời gian, điều
này được phản ánh trong một số phiên bản của nó. Các phiên bản thay đổi theo
thời gian bởi vì các bản vá lỗi hoặc bản cải tiến hiệu suất.

1.2 Kiến trúc của Android
1.2.1 Tầng hạt nhân Linux (Linux Kernel Layer)
7


Hệ điều hành android được phát trển dựa trên hạt nhân linux, cụ thể là hạt nhân
linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này. Tất cả mọi
hoạt động của điện thoại muốn thi hành được thì đều được thực hiện ở mức
cấp thấp ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp

với phần cứng (driver model), thực hiện bảo mật (security), quản lý
tiến trình(process). 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 ngăn xếp các phần mềm.
Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux đã được
nâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm
tay như hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu
cần kết nối mạng khơng dây...
Tầng này có các thành phần chủ yếu :
- Display Driver : Điều khiển việc hiển thị lên màn hình cũng như thu
nhận những điều khiển của người dùng lên màn hình (di chuyển,
cảm ứng...)
- Camera Driver : Điều kiển hoạt động của camera, nhận luồng dữ liệu từ
camera trả về.
- Bluetooth Driver : Điều khiển thiết bị phát và thu sóng Bluetooth. USB driver : Quản lý hoạt động của các cổng giao tiếp USB.
- Keypad driver : Điều khiển bàn phím
- Wifi Driver : Chịu trách nhiệm về việc thu phát sóng wifi
- Audio Driver : điều khiển các bộ thu phát âm thanh, giải mã các tính
hiệu dạng audio thành tín hiệu số và ngược lại.
- Binder IPC Driver : Chịu trách nhiệm về việc kết nối và liên lạc với
mạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng
truyền thông được thực hiện.
- M-System Driver : Quản lý việc đọc ghi... lên các thiết bị nhớ như thẻ
SD, flash.
- Power Madagement : Giám sát việc tiêu thụ điện năng.
1.2.2 Tầng Library và Android Runtime

8


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ựcthi
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ựavào nhân Linux cho các hức năng cơ bản như luồng và quản lý bộ
nhớ thấp.
Tầng này có 2 thành phần là phần Libraríe và Android Runtime:
a. Phần Libraries: phần này có nhiều thư viện được viết bằng C/C++để các
phần mềm có thể sử dụng, các thư viện đó được tập hợp thành một số nhóm
như:
- Thư viện hệ thống (System C library) : thư viện dựa trên chuẩn C, được sử
dụng chỉ bởi hệ điều hành.
- Thư viện Media (Media Libraries) : Có nhiều codec để hỗ trợ việc phát và
ghi các loại định dạng âm thanh, hình ảnh,video thơng dụng.
- Thư viện web (LibWebCore) : Đây là thành phần để xem nội dung trên web,
được sử dụng để xây dựng phần mềm duyệt web (Android Browse) cũng như
để các ứng dụng khác có thể nhúng vào. Nó cực kỳ mạnh, hỗ trợ được nhiều
công nghệ mạnh mẽ như HTML5, JavaScript, CSS, DOM,AJAX..
- Thư viện SQLite : Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng.
b. Phần Android runtime: phần này chứa các thư viện mà một chương trình
viết bằng ngơn ngữ Java có thể hoạt động. Phần này có 2 bộ phận tương tự
như mơ hình chạy Java trên máy tính thường. Thứ nhất là các thư viện lõi
(Core Library) , chứa các lớp như JAVA IO,Collections, File Access. Thứ hai là
một máy ảo java (DalvikVirtual Machine). Tại đây các ứng dụng viết bằng
Java được chạy trên máy ảo Dalvik thay thế cho máy ảo Java VM của Sun.

1.2.3 Tầng Application Framework


9


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.
Giới thiệu một số thành phần của tầng này :
- Activity Manager : Quản lý các chu kỳ sống của một ứng dụng cũng như
cung cấp công cụ điều khiển các Activity.
- Telephony Manager : Cung cấp công cụ để thực hiện việc liên lạc như gọi
điện thoại.
- XMPP Service : Cung cấp công cụ để liên lạc trong thời gian thực.
- Location Manager : Cho phép xác định vị trí của điện thoại thoại dựa vào hệ
thống định vị toàn cầu GPS và GoogleMaps.
- Window Manager : Quản lý việc xây dựng và hiển thị cácgiao diện người
dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng.
- Notification Manager : Quản lý việc hiển thị các thơng báo (như báo có tin
nhắn, có e-mail mới..)
- Resource Manager : Quản lý tài nguyên tĩnh của các ứng dụng bao gồm các
file hình ảnh, âm thanh, layout, string. (Những thành phần không được viết bởi
ngôn ngữ lập trình).
- 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 đó.

1.2.4 Tầng ứng dụng (Application)

10


Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng như:
- Các ứng dụng cơ bản, được cài đặt đi liền với hệ điều hành là gọi
điện(phone), quản lý danh bạ (Contacts), duyệt web (Browser),nhắn tin (SMS),
lịch làm việc (Calendar), đọc e-mail (Email-Client), bản đồ (Map), quay phim
chụp ảnh (camera)...
- Các ứng dụng được cài thêm như các phần mềm chứng khốn (Stock), các trị
chơi (Game), từ điển...
Các ứng dụng có các đặc điểm là:
- Viết bằng Java, phần mở rộng là apk.
- Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine được
dựng lên để phục vụ cho nó. Nó có thể là một Active Program: Chương trình
có giao diện với người sử dụng hoặc là một background: chương trình chạy
nền hay là dịch vụ.
- Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời
điểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi ứng
dụng thì có duy nhất một thực thể (instance) được phép chạy mà thơi. Điều đó
có tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn.
- Các ứng dụng được gán số ID của người sử dụng nhằn phân định quyền hạn
khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống.
- Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di động

khác, android cho phép một ứng dụng của bên thứ ba được phép chạy nền. Các
ứng dụng đó chỉ có một hạn chế nhỏ đó là nó khơng được phép sử dung q
5~10% cơng suất CPU, điều đó nhằm để tránh độc quyền trong việc sử dụng
CPU. - Ứng dụng không có điểm vào cố định, khơng có phương thức main để
bắt đầu.
- Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời
điểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi ứng
dụng thì có duy nhất một thực thể (instance) được phép chạy mà thơi. Điều đó
có tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn. Các ứng dụng được gán số ID của người sử dụng nhằn phân định quyền hạn
khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống.- Android là một hệ
điều hành có tính mở, khác với nhiều hệ điều hành di động khác, android cho
phép một ứng dụng của bên thứ ba được phép chạy nền. Các ứng dụng đó chỉ
có một hạn chế nhỏ đó là nó khơng được phép sử dung q 5~10% cơng suất
CPU, điều đó nhằn để tránh độc quyền trong việc sử dụng CPU. - Ứng dụng
khơng có điểm vào cố định, khơng có phương thức main để bắt đầu.

1.3 Các khối chính cấu thành nên ứng dụng Android
1.3.1 Activity
11


Lớp Activity là thành phần quan trọng nhất của ứng dụng Android, cách mà
chúng hoạt động tạo thành nền tảng cơ bản của mơ hình lập trình ứng dụng.
Android khởi chạy một ứng dụng thơng thường bằng kích hoạt một Activity
tương ứng với vịng đời cụ thể của nó trong q trình hoạt động.
Vịng đời một Activity:
Để tạo một Activity thì bạn phải tạo ra một lớp kế thừa lớp Activity, sau đó
triển khai tối thiểu phương thức onCreate(Bundle savedInstanceState), sau đó
tùy ngữ cảnh mà khi Activity hoạt động vịng đời của nó diễn ra như sau:
-


onCreate(Bundle savedInstanceState): Được gọi khi hoạt động mới được

tạo, tại đây khởi tạo các biến, nạp giao diện layout ..., phương thức này cũng
nhận dữ liệu lưu lại trạng thái hoạt động trước đó (với mục đích để phục hồi savedInstanceState). Sau sự kiện này bao giờ cũng gọi ngay lập tức onStart().
-

onStart(): Được gọi ngay trước khi Activity hiển thị trên màn hình.

-

onResume(): Được gọi ngay khi Activity bắt đầu có thể tương tác với

người dùng, và Activity nằm trên cùng trong danh sách các Activity của hệ
thống. Sau phương thức này là các chức năng của Activity hoạt động dựa trên
tương tác của người dùng ..., cho đến khi có một nguyên nhân nào đó mà
phương thức OnPause được gọi.
-

onPause(): Được gọi khi hệ thống sắp kích hoạt một Activity khác, nếu

bạn quá tải phương thức này, thường để lưu lại dự liệu thật nhanh để hệ thống
cịn kích hoạt Activity khác. Ngay sau phương thức này nó sẽ gọi - -

onResume() nếu Activity được kích hoạt lại ngay, hoặc gọi OnStop() nếu

Activity bị ẩn đi.
-

onStop(): Được gọi khi nó bị ẩn đi. Sau phương thức này, Activity có thể


gọi onRestart() nếu nó được người dùng kích hoạt lại hoặc gọi onDestroy() để
hết thúc.
-

onDestroy(): gọi khi Activity bị hủy hồn tồn (ví dụ gọi finish(), hoặc

người dùng kill Activity).

1.3.2 Intents

12


Intent là một đối tượng message có thể sử dụng để request một hành động từ
một vài component trong ứng dụng.
Intent có 2 loại chính là Explicit Intent và Implicit Intent:
- Explicit Intent: Hiểu đơn giản explicit intents là intent xác định rõ và cụ thể
các thành phần tham gia hành động.
- Implicit Intent: Loại Intents này chỉ ra hành động cần được thực hiện (action)
và dữ liệu cho hành động đó (data). Khi bạn sử dụng implicit intent, hệ thống
Android sẽ tìm kiếm tất cả thành phần thích hợp để start bằng cách cách so
sánh nội dung của Intent đc gửi với các Intent filter đc khai báo trong ứng
dụng khác.
Nếu intent được gửi đó khớp với intent filter trong một component hoặc một
ứng dụng nào đó, thì ngay lập tức hệ thống sẽ khởi động thành phần đó và
cung cấp cho nó intent ban đầu đc gửi .
Nếu nhiều intent filter tương thích thì hệ thống sẽ hiển thị hộp thoại để người
dùng có thể chọn ứng dụng nào sẽ sử dụng.
Intent filter (bộ lọc intent) là một thẻ trong minifest nhằm xác định loại intent

mà thành phần chứa intent filter đó muốn nhận.
Cấu trúc của một Intent:
Một đối tượng intent sẽ mang theo thông tin mà hệ thống android cần để quyết
định thành phần nào sẽ được start. Và những thơng tin đó bao gồm :
Component Name, Action,Data,Category,Extra Flag.
Component name: Tên của component được start.
-

Action: Là một chuỗi xác định hành động chung để thực hiện (chẳng hạn như
xem hoặc chọn)

-

Data: Sử dụng một đối tượng Uri tham chiếu tới dữ liệu sẽ đc thực hiện một
hành động nào đó. Loại dữ liệu cung cấp thường được quyết định bởi action
của intent.

-

Category: Một chuỗi chứa thông tin bổ sung về loại thành phần sẽ xử lý
intent.Để nhận đc các intent khơng tường minh thì bắt buộc ứng dụng phải
khai báo category trong manifest.

-

Extra: Các cặp key-value mang thơng tin bổ sung cần thiết để hồn thành hành
động được yêu cầu.

-


Flag: Cờ được định nghĩa trong lớp Intent có chức năng như siêu dữ liệu cho
intent . Cờ có thể ra lệnh hệ thống Android về cách khởi chạy một hoạt động sẽ
thuộc về tác vụ nào, và cách xử lý sau khi nó được khởi chạy có thuộc về danh
sách hoạt động gần đây hay không.

1.3.3 Services

13


Service là một trong 4 component lớn của Android. Nó là một thành phần hết
sức quan trọng.
Một Service là một thành phần (component) có thể thực hiện các hoạt động lâu
dài trong background và nó khơng cung cấp một giao diện người dùng. Một
thành phần khác của ứng dụng có thể start nó, và nó tiếp tục chạy trong
background ngay cả khi người dùng chuyển sang ứng dụng khác. Ngoài ra một
thành phần có thể liên kết (bind) với một Service để tương tác với Service đó,
thậm chí là thực hiện truyền thơng liên tiến trình IPC (interprocess
communication - IPC bạn có thể hiểu là một hoạt động chia sẽ dữ liệu qua
nhiều tiến trình, thơng thường sử dụng giao thức truyền thơng và nó phải có
Client và Server). Ví dụ: một Service có thể thực hiện các giao dịch mạng,
chơi nhạc, ra vào file I/O hoặc tương tác với một content provider, tất cả đều từ
background.
Service được chia làm 3 loại khác nhau:
-

Foreground Service:
Một Foreground Service thực hiện một số thao tác mà người dùng chú ý, có
thể thấy rõ ràng. Ví dụ một ứng dụng nghe nhạc có thể chơi một bản nhạc và
control nó bằng Foreground Service. Một điều bắt buộc là Foreground Service

phải hiện thị một Notification. Foreground Service sẽ tiếp tục chạy ngay cả khi
người dùng không tương tác với ứng dụng.

-

Background Service:
Một Background Service sẽ thực hiện các hoạt động mà không được người
dùng chú ý trực tiếp. Ví dụ một ứng dụng sử dụng một service để thu gom bộ
nhớ chẳng hạn thì service là một Background Service, hoạt động mà người
dùng không cần thiết phải để ý.

-

Bound Service:
Một service được gọi là Bound khi một thành phần của ứng dụng ràng buộc
với nó bởi lời gọi bindService(). Một Bound Service cung cấp một giao diện
Client - Server cho phép các thành phần tương tác với nó: gửi yêu cầu, nhận
kết quả và thậm chí là IPC. Một Bound Service chỉ chạy miễn là có một thành
phần ràng buộc với nó. Có thể có nhiều thành phần ràng buộc với Bound
Service cùng lúc, nhưng khi tất cả tháo bỏ ràng buộc (unbound) thì nó sẽ
Destroy. Trước đây Service thường được chia là Started Service và Bound
Service.

1.3.4 SQLite
14


SQLite là một cơ sở dữ liệu SQL mã nguồn mở, nó lưu trữ dữ liệu vào một tập
tin văn bản trên một thiết bị. Nó mặc định đã được tích hợp trên thiết bị
Android. Để truy cập dữ liệu này, bạn không cần phải thiết lập bất kỳ loại kết

nối nào cho nó như JDBC, ODBC, … SQLite được Richard Hipp viết dưới
dạng thư viện bằng ngôn ngữ lập trình C.
SQLite có các ưu điểm sau:
-

Tin cậy: các hoạt động transaction (chuyển giao) nội trong cơ sở dữ liệu
được thực hiện trọn vẹn, không gây lỗi khi xảy ra sự cố phần cứng

-

Tuân theo chuẩn SQL92 (chỉ có một vài đặc điểm không hỗ trợ)

-

Không cần cài đặt cấu hình

-

Kích thước chương trình gọn nhẹ, với cấu hình đầy đủ chỉ không đầy 300
kB

-

Thực hiện các thao tác đơn giản nhanh hơn các hệ thống cơ sở dữ liệu
khách/chủ khác

-

Không cần phần mềm phụ trợ


-

Phần mềm tự do với mã nguồn mở, được chú thích rõ ràng

15


CHƯƠNG 2: TỔNG QUAN ĐỀ TÀI
2.1 Lý do chọn đề tài
- Cách đây khoảng 10 năm về trước, việc học tiếng anh vơ cùng khó khăn.
Muốn học tiếng anh bạn phải học tại lớp, mua một đống tài liệu để “gặm
nhấm”, và Internet lúc đó cũng khơng phổ biến như bây giờ.
- Ngày nay cùng với sự phát triển mạnh mẽ của Internet việc học tiếng anh trở
nên dễ dàng hơn. Khơng cịn phải cặm cụi hàng giờ trên thư viện bạn cũng có
thể học tiếng anh mọi lúc, mọi nơi nhờ vào các phần mềm học tiếng anh
- Nắm được điều đó, em đã tìm hiểu và xây dựng ứng dụng “QUIZ APP
TIẾNG ANH”.

2.2 Phương pháp, kết quả
 PHƯƠNG PHÁP : Tạo một ứng dụng có các chức năng cơ bản như sau :
- Trả lời câu hỏi trắc nghiệm.
- Chấm điểm.
- Đếm số câu hỏi.
- Thời gian giới hạn cho mỗi câu hỏi
- Tính điểm cao nhất sau mỗi lần kiểm tra.
 KẾT QUẢ : Tạo được cơ bản ứng dụng, ứng dụng hoạt động ổn định, dùng
được đầy đủ các chức năng ứng dụng. Giao điện dễ nhìn, dễ sử dụng. Phân loại
rõ ràng các chức năng, đảm bảo nhu cầu cần thiết tối thiểu cho tất cả mọi
người.


2.3 Các công nghệ xây dựng ứng dụng
- Android SDK
- HTML
- JAVA
- SQLite

16


CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
3.1 Khảo sát và đặc tả yêu cầu
3.1.1 Giao diện chính.
- Ứng dụng không nên quá phức tạp.
- Dung lượng file không quá lớn.
- Thanh menu thật đơn giản.
- Font chữ đơn giản, dễ nhìn, màu sắc hài hịa.
- An tồn và bảo mật dữ liệu.
- Kiểm tra ứng dụng có tương thích với các thiết bị phổ biến hay không.
- Hiển thị được bộ đề
- Cho phép người dùng xem thông tin câu hỏi, đáp án, điểm số.
3.1.2 Chức năng chính.
Đây là một ứng dụng giúp người dùng kiểm tra, ôn tập khả năng tiếng anh của
mình.
Có các chứa năng sau:
-

Trả lời câu hỏi trắc nghiệm.
Chấm điểm.
Đếm số câu hỏi.
Thời gian giới hạn cho mỗi câu hỏi

Tính điểm cao nhất sau mỗi lần kiểm tra.

Hệ thống ứng dụng được mô tả như sau:
- Vào ứng dụng, bấm nút “BẮT ĐẦU” để bắt đầu làm bài trắc nghiệm
- Chọn đáp án và bấm nút “XÁC NHẬN”, ứng dụng sẽ hiện thị kết quả
ngay sau đó. Nếu đáp án đúng, điểm số sẽ tăng lên 1
- Thời gian giới hạn của mỗi câu hỏi là 30 giây, khi kết thúc đếm ngược mà
người dùng chưa chọn đáp án thì ứng dụng sẽ hiển thị kết quả và người
dùng không thể chọn đáp án nữa, buộc phải qua câu tiếp theo
- Sau khi trả lời hết tất cả các câu hỏi, ứng dụng sẽ tính điểm cao nhất người
dùng đạt được và hiển thị ở trang chủ

3.2 Thiết kế hệ thống ứng dụng
17


3.2.1 SQLite
- SQLite là phần mềm quản lý cơ sở dữ liệu tương tự Mysql, PostgreSQL…
Đặc điểm của SQLite là gọn, nhẹ, đơn giản. Chương trình gồm 1 file duy nhất
vỏn vẹn chưa đến 400kB, không cần cài đặt, không cần cấu hình hay khởi
động mà có thể sử dụng ngay. Dữ liệu Database cũng được lưu ở một file duy
nhất. Khơng có khái niệm user, password hay quyền hạn trong SQLite
Database.
- SQLite khơng thích hợp với hệ thống lớn nhưng ở quy mơ vừa tầm thì
SQLite phát huy uy lực và không hề yếu kém về mặt chức năng hay tốc độ.
Với các đặt điểm trên SQLite được sử dụng nhiều trong việc phát triển, thử
nghiệm … và là sự lựa chọn phù hợp cho những người bắt đầu học Database.
- SQLite Engine không là một Standalone Process giống như các cơ sở dữ liệu
khác, bạn có thể liên kết nó cách tĩnh hoặc một cách động tuỳ theo yêu cầu
ứng dụng của bạn. SQLite truy cập các file lưu giữ của nó một cách trực tiếp.


3.2.2 Thời gian giới hạn cho mỗi câu hỏi
- Để giới hạn thời gian cho mỗi câu hỏi, trong mỗi phần thì hê thống ấn định
cho mỗi câu hỏi là 30 giây. Ta sử dụng CountDownTimer.
18


- CountDownTimer là class cung cấp chức năng giúp người lập trình tạo bộ
đếm ngược trong Android.

- Nếu thời gian còn lại 10 giây, bộ đếm lùi sẽ chuyển sang màu đỏ để cảnh báo
người dùng.

19


3.2.3 Tính điểm sau mỗi câu hỏi
- Hệ thống sẽ kiểm tra so sánh đáp án người dùng chọn ở radio group với đáp
án ở bảng được tạo bằng SQLite.
- Nếu giống nhau, điểm số sẽ tăng lên 1 và sang câu tiếp theo
- Nếu khác nhau điểm số sẽ được giữ nguyên

3.2.4 Tính điểm cao nhất

- Nếu sau một lần kiểm tra, người dùng có điểm số cao hơn lần trước, điểm cao
nhất sẽ được cập nhật lại, còn khơng thì điểm sao nhất sẽ được giữ ngun

20



CHƯƠNG 4: THIẾT KẾ GIAO DIỆN ỨNG DỤNG
4.1 Giao diện trang chủ

- Sau khi hoàn thành tất cả các câu hỏi, hệ thống sẽ tính số điểm cao nhất đạt
được trong lần kiểm tra này để so sánh với lần kiểm tra trước, nếu cao hơn thì
sẽ hiển thị ở phần “Điểm cao nhất”
- Bấm nút “BẮT ĐẦU” để chuyển tới activity các câu hỏi trắc nghiệm

21


4.2 Giao diện trang trả lời câu hỏi

- “Số câu đúng” : hệ thống tính điểm, sau mỗi câu hỏi, nếu đúng sẽ tăng lên 1.
- Textview chưa câu hỏi được lấy dữ liệu từ bảng tạo bằng SQLite
- Radio group chưa các đáp án cũng được lấy dữ liệu từ bảng tạo bằng SQLite
- Button “XÁC NHẬN” để xác nhận đáp án đã chọn

22


KẾT LUẬN
 Kết quả đạt được của đề tài
Sau một thời gian tập trung triển khai đề tài, chúng em đã hoàn thành xây dựng
ứng dụng trắc nghiệm tiếng anh với giao diện, các thao tác sử dụng dễ dàng, thân
thiện với người dùng.
Sau khi hoàn thành xong được được ứng dụng, em có thêm những kỹ năng nền
tảng để xây dựng được một app bằng ngôn ngữ JAVA và SQLite, áp dụng các
kiến thức đã học vào việc phát triển ứng dụng Android. Bên cạnh đó, em cũng
được mở rộng thêm các kiến thức chuyên ngành mới nhờ việc tìm hiểu một số

kiến thức lập trình để áp dụng vào việc phát triển ứng dụng này. Nhờ vậy, kỹ
năng tự học và vận dụng các kỹ năng mới của em được nâng cao hơn.
Khi thực hiện và hoàn thành dự án, em cũng đã biết thêm được nhiều kinh
nghiệm quý giá khi xây dựng ứng dụng android nói riêng và phát triển phần
mềm. Những kỹ năng này sẽ nền tảng để giúp em nâng cao trình độ bản thân,
kinh nghiệm trong thực tế để có thể làm việc ngồi các doanh nghiệp sau này.
 Hạn chế của đề tài
Bên cạnh những kết quả khả quan đã đạt được, em nhận thấy còn tồn tại một số
hạn chế:
- Còn thiếu sót một số phần trong ứng dụng trắc nghiệm tiếng anh
- Tốc độ xử lý chưa cao , vẫn còn một số lỗi phát sinh khi vận hành hệ thống.
 Hướng phát triển của đề tài
Sau khi hoàn thành đề tài xây dựng được xây dựng ứng dụng trắc nghiệm tiếng
anh em sẽ tiếp tục nghiên cứu và phát triển website này nhằm hồn thành đầy đủ
các phần thiếu sót, tăng các tính năng và tối ưu hóa tốc độ xử lý để đem lại hiệu
quả cao hơn, phát triển để đưa ứng dụng vào ứng dụng thực tế.

23



×