Xây dựng lớp

Một phần của tài liệu Xây dựng ứng dụng từ điển và trắc nghiệm trên android (Trang 50 - 75)

5.3.2.1. Lớp dữ liệu: Các lớp này dùng để tạo đối tượng, lưu trữ và xử

lý dữ liệu.

Hình 5.4. Các lớp dữ liệu

* Lớp ThanHocTinLy: Lớp này dùng để lưu trữ một đối tượng là một từ. Một từ bao gồm các thuộc tính: tên từ, phát âm, nghĩa từ, chi tiết từ và những từ lên hệ.

* Lớp DBLoader: Lớp này dùng để khởi tạo cơ sở dữ liệu từ một file SQLite có sẵn, sau đó trả về danh sách các đối tượng từ.

* Lớp DBController: Lớp này dùng để lấy danh sách và xử lý những từ mà người dùng đánh dấu lưu lại. Có thể sử dụng 2 phương thức là insert() và delete() để thêm và xóa một từ khỏi SQLite.

5.3.2.1. Lớp xử lý giao diện: Các lớp này dùng để xử lý các view và

control trên giao diện người dùng. Các lớp này thường phải được liên kết với một layout, các activity được khởi chạy nhờ phương thức onCreate().

Hình. Các lớp xử lý giao diện

* Lớp SplashScreen: Lớp này khởi chạy activity của màn hình giới thiệu mỗi khi ứng dụng được chạy lên. Sau đó, activity này sẽ tự tắt trong vòng 2 giây.

* Lớp MainActivity: Đây là activity chính của ứng dụng. Lớp này sẽ quản lý việc xử lý dữ liệu cho các listview và các tab trên activity.

* Lớp SingleItemView: Lớp này dùng để hiển thị chi tiết của từ mỗi khi người dùng chọn một từ nào đó từ lớp MainActivity. Lớp này cũng quản lý việc lưu trữ các từ vào cơ sở dữ liệu.

* Lớp ListViewAdapter: Lớp này dùng để xử lý giao diện của từng Item trong điều khiển ListView của lớp MainActivity.

5.3.3. Lập trình các chức năng chính 5.3.3.1. Thiết lập các tab

Các tab này có chức năng chứa nội dung khác nhau của ứng dụng. Có 3 nội dung chính mà ứng dụng này cần quản lý đó là: 1 tab để chứa danh sách các từ cần tra, 1 tan để chứa các từ đã lưu và 1 tab để tải một trang web tra từ trực tuyến.

Trong lớp MainActivity, sử dụng hàm sau để thiết lập các tab:

Hình 5.5. Các thành phần giao diện của tab

5.3.3.2. Chức năng lọc từ

Khi người dùng nhập dữ liệu từ bàn phím thì danh sách từ sẽ được lọc. Các từ trong danh sách sẽ là những từ được bắt đầu với chuỗi kí tự được nhập từ bán phím. Nếu chuỗi kí tự rỗng thì sẽ tải hết danh sách từ. Công việc lọc từ này được thực hiện trong lớp ListViewAdapter.

5.3.4. Màn hình giao diện ứng dụng

Hình 5.6. Giao diện màn hình giới thiệu

Hình 5.7. Giao diện màn hình chính

Hình 5.8. Giao diện màn hình xem chi tiết từ

Hình 5.9. Giao diện màn hình tra từ trực tuyến

5.4. Kết luận

5.4.1. Kết quả đạt được

 Ứng dụng từ điển đã được hoàn thiện với giao diện đơn giản, dễ sử dụng, phù hợp với nhu cầu của người dùng mọi lúc mọi nơi.

 Ứng dụng hoàn thiện các nhu cầu cơ bản của người dùng như tra từ bằng cách nhập từ bàn phím, đánh dấu từ, hiển thị từ, tra cứu trực tuyến.

5.4.2. Hướng phát triển

 Tiếp tục hoàn thiện ứng dụng cả về chức năng và giao diện.

 Tích hợp nhiều bộ từ điển khác để ứng dụng phong phú hơn.

CHƯƠNG VI. XÂY DỰNG ỨNG DỤNG TRẮC NGHIỆM

6.1. Tổng quan về đề tài

6.1.1. Xác định yêu cầu bài toán

Hiện nay, thi trắc nghiệm là một lĩnh vực thiết yếu để đánh giá kiến thức khách quan dành cho các bạn học sinh, sinh viên. Những ứng dụng trắc nghiệm trên Android bắt đầu ra đời nhưng chưa thực sự nhiều và hiệu quả. Những ứng dụng đó chỉ gói gọn một hay một vài bộ đề thi có sẵn nên chưa tạo được sự đa dạng và phong phú cho ứng dụng. Nhất là đối với các bạn sinh viên khoa Công Nghệ Thông Tin của trường rất cần một ứng dụng nào đó để hỗ trợ các bạn trong việc học và thi thử các môn trắc nghiệm của khoa. Vì thế ứng dụng này được xây dựng lên để phục vụ cho mục đích đó.

Với ứng dụng này, người dùng có thể thi trắc nghiệm với nhiều bộ đề của các môn khác nhau, kèm theo đó là sự tiện ích khi tự mình thiết lập số câu hỏi và thời gian thi thử. Giao diện thân thiện, bắt mắt giúp người dùng không bị nhàm chán khi thi. Sau khi thi sẽ nhận được kết quả ngay lập tức và kết quả sẽ được lưu lại cho đến lần thi sau đó. Những bộ đề trong ứng dụng được lưu trữ và tải trực tiếp thông qua mạng Internet.

6.1.2. Mục đích nghiên cứu

 Nghiên cứu và ứng dụng những công nghệ mới của Android vào việc xây dựng một ứng dụng từ thi trắc nghiệm.

 Xây dựng ứng dụng trắc nghiệm thuận tiện, dễ nâng cấp, dễ sử dụng; nâng cao được kiến thức và hỗ trợ công việc học tập của sinh viên khoa; có thể thi thử mọi lúc, mọi nơi.

6.2. Phân tích thiết kế hệ thống

6.2.1. Đặc tả chức năng

STT Use Case Mô tả Actor

1 Quản lý bộ đề

Các bộ đề thi được người dùng cập nhật thông qua mạng Internet hoặc có thể xóa bộ đề thi nếu không sử dụng.

Người dùng

2 Cấu hình thi thử

Với tính năng này, người người có thể chọn lựa số câu hỏi và thời gian thi thử đã được cấu hình định mức sẵn trước đó.

3 Thi thử Người dùng thi thử với số câu hỏi và thời gian đã thiết lập trước đó.

4 Xem và lưu kết

quả thi Xem và lưu kết quả sau khi thi xong.

5 Tạo bộ đề Sử dụng công cụ Editor để tạo bộ đề

Quản trị

6 Thêm bộ đề Thêm một bộ đề mới vào ứng dụng

6.2.2. Biểu đồ Use Case

Hình 6.1. Biểu đồ Use Case của ứng dụng trắc nghiệm

6.2.3. Biểu đồ trình tự

Hình 6.2. Biểu đồ trình tự thi thử

Hình 6.3. Biểu đồ trình tự xóa

Hình 6.4. Biểu đồ trình tự Reciever nhận bộ đề

6.3. Xây dựng ứng dụng

6.3.1. Thiết kế cơ sở dữ liệu

Ứng dụng sử dụng 2 cách thức để lưu trữ cơ sở dữ liệu đó là SQLite và Microsoft Excel. Cụ thể như sau:

 Bảng subject: Bảng này dùng để lưu trữ thông tin của các bộ đề thi, bao gồm các trường dữ liệu như tên bộ đề, người đăng, nguồn lưu trữ, số câu hỏi, định mức câu hỏi, định mức thời gian. Bảng này được lưu trữ trong SQLite và được tạo ra khi ứng dụng khởi chạy lần đầu.

 Dữ liệu bộ đề: Danh sách tất cả các câu hỏi được lưu trữ trong một bảng tính của Microsoft Excel. Tên trường không được quy định cụ thể nhưng được

hiểu ngầm theo thứ tự từng cột. Mỗi dòng sẽ tương ứng với thông tin của từng câu hỏi như nội dung câu hỏi, câu trả lời a, b, c, d, e, h, đáp án, tên file hình ảnh nếu có. Mỗi bộ đề đều có một file cơ sở dữ liệu tên là database.ct. Cấu trúc các bảng như sau:

STT Tên trường Loại Kiểu dữ liệu Chú thích

1 id Khóa chính INTEGER Mã của từ

2 title TEXT Tên bộ đề

3 author TEXT Người đăng

4 src TEXT Nguồn lưu trữ

5 mques INTEGER Số câu hỏi

6 lques TEXT Định mức câu hỏi

7 ltime TEXT Định mức thời gian

Bảng. Cấu trúc bảng subject

STT Tên cột Kiểu dữ liệu Chú thích

1 A INTEGER Mã của câu hỏi

2 B TEXT Nội dung câu hỏi

3 C TEXT Câu trả lời A

4 D TEXT Câu trả lời B

5 E TEXT Câu trả lời C

6 F TEXT Câu trả lời D

7 G TEXT Câu trả lời E

8 H TEXT Câu trả lời H

9 I TEXT Đáp án

10 J TEXT Tên file hình

6.3.2. Xây dựng lớp

5.3.2.2. Lớp dữ liệu: Các lớp này dùng để tạo đối tượng, lưu trữ và xử

lý dữ liệu.

* Lớp DBController: Lớp này dùng để lấy danh sách và xử lý các bộ đề hiển thị trên màn hình chính.

* Lớp ActionController: Lớp này lưu trữ các thao tác đối với file và folder như sao chép/xóa file, tạo/xóa thư mục, giải nén và một số thao tác khác.

* Lớp Subject: Lớp lưu trữ một đối tượng Subject là thông tin một bộ đề thi bao gồm: tên bộ đề, người đăng, nguồn lưu trữ, số câu hỏi của bộ đề, định mức câu hỏi, định mức thời gian.

* Lớp Question: Lớp lưu trữ một đối tượng Question là thông tin một câu hỏi trong một bộ đề thi bao gồm: câu hỏi, câu trả lời a, b, c, d, e, h, đáp án, tên file hình nếu có.

5.3.2.2. Lớp xử lý giao diện: Các lớp này dùng để xử lý các view và

control trên giao diện người dùng. Các lớp này thường phải được liên kết với một layout, các activity được khởi chạy nhờ phương thức onCreate().

Hình 6.6. Các lớp xử lý giao diện

* Lớp SplashScreen: Lớp này khởi chạy activity của màn hình giới thiệu mỗi khi ứng dụng được chạy lên. Sau đó, activity này sẽ tự tắt trong vòng 2 giây.

* Lớp Controller: Đây là activity dùng để thiết lập số câu hỏi và thời gian trước khi thi.

* Lớp MainActivity: Đây là lớp giao diện màn hình chính của ứng dụng. Lớp này chứa danh sách các bộ đề thi và người dùng có thể tải hoặc xóa bộ đề ngay tại đây.

* Lớp Exam: Lớp này dùng để xử lý giao diện thi thử. Lớp này sẽ tải các câu hỏi từ bộ đề và đếm thời gian cho người dùng thi thử.

* Lớp ExamResult: Lớp này dùng để hiển thị kết quả thi và lưu kết quả sau khi thi.

* Lớp ListViewAdapter: Lớp này dùng để xử lý giao diện của từng Item trong điều khiển ListView của lớp MainActivity.

* Lớp QuestionAdapter: Lớp này dùng để xử lý giao diện của từng câu hỏi được hiển thị trong lớp Exam. Giao diện này gồm 7 khung, 1 khung câu hỏi và 6 khung dành cho đáp án. Hình ảnh nếu có cũng sẽ được hiển thị trong khung câu hỏi. * Lớp HorizontalPaper: Đây là lớp mở rộng của ViewGroup. Lớp này có chức năng giúp người dùng chuyển đổi qua lại giữa từng câu hỏi một cách mượt mà như lật một trang giấy.

6.3.3. Lập trình các chức năng chính 6.3.2.1. Các điều khiển cần thiết

Copy file

Xóa một thư mục có chứa nội dung

Xóa một file

6.3.2.2. Tải một file từ server

6.3.2.3. Đọc dữ liệu từ Microsoft Excel

Để truy xuất dữ liệu từ Microsoft Excel, ta cần phải tích hợp thêm thư viện Apache POI. Thư viện Java này giúp người dùng có thể tương tác với Microsoft Documents. Tải về tại:

https://poi.apache.org/download.html

Sau khi tải về, ta tích hợp file poi-xxx.jar vào Android Studio. Sau khi hoàn tất, ta có thể sử dụng các đối tượng HSSFWorkbook, HSSFSheet,… đểu dyệt

dữ liệu trong Microsoft Excel.

6.3.2.4. Tạo số câu hỏi ngẫu nhiên từ bộ đề

6.3.2.5. Reciever Broadcast

Chức năng này giúp đồng bộ cơ sở dữ liệu từ MySQL khi người quản trị thêm một bộ đề mới với SQLite của ứng dụng thông qua JSON. Chức năng này cũng giúp ứng dụng nhận thông báo mỗi khi người quản trị thêm một bộ đề mới hoặc người dùng chưa cập nhật thông tin bộ đề mới.

Trình tự hoạt động của Receiver Broadcast: xem hình 6.4.

Để thực hiện chức năng này, ta cần chuẩn bị các thành phần sau:

MySQL chứa một bảng để chứa thông tin khi người dùng thêm bộ đề mới.  Web App (PHP language): gồm một file config.php để cấu hình web, một

file database.php để chứa các phương thức mở kết nối với MySQL, một file

getCount.php để đếm các bộ đề trong MySQL, một file getData.php để lấy

thông tin của tất cả các bộ đề trong MySQL.

 Về ứng dụng, trước hết ta cần tích hợp thư viện Android Asynchronous Http Client để sử dụng các đối tượng liên quan đến http:

http://loopj.com/android-async-http/

 Lớp BCReceiver để tìm kiếm cập nhật từ MySQL thông qua thông qua trang

getCount.php. Lớp MyService sẽ được kích hoạt khi lớp BCReceiver cập nhật

được bộ đề mới. Lớp syncData trong MainActivity sẽ có nhiệm vụ thông qua trang getData.php để lấy tất cả các thông tin từ MySQL và thêm vào SQLite khi người dùng nhấn nút Refresh trên menu.

6.3.4. Giao diện ứng dụng

Hình 6.4. Giao diện giới thiệu khi mở ứng dụng

Hình 6.9. Giao diện kết quả Hình 6.6. Giao diện thiết lập đề thi Hình 6.7. Giao diện thi thử

Hình 6.8. Giao diện khi xem đáp án

6.4. Kết luận

6.4.1. Kết quả đạt được

 Ứng dụng trắc nghiệm đã được hoàn thiện với giao diện đơn giản, dễ sử dụng, phù hợp với nhu cầu của người dùng mọi lúc mọi nơi.

 Ứng dụng hoàn thiện các nhu cầu cơ bản của người dùng như quản lý bộ đề, thiết lập số câu hỏi và thời gian đề thi, chức năng chọn nhiều câu trả lời cho một câu hỏi, xem và lưu kết quả sau khi thi.

 Hỗ trợ các bộ đề mẫu căn bản như: Trắc nghiệm xe máy, xe ôtô, trắc nghiệm Gmath, trắc nghiệm IQ.

 Ngoài ra, ứng dụng còn kèm theo một số công cụ để tạo bộ đề và upload bộ đề đã được tạo lên server để người dùng ứng dụng cập nhật bộ đề mới.

6.4.2. Hướng phát triển

 Tiếp tục hoàn thiện ứng dụng cả về chức năng và giao diện.

 Thêm tính năng đăng nhập cho từng sinh viên và quản lý điểm trực tuyến.

TỔNG KẾT

Qua quá trình thực hiện đề tài viết ứng dụng trên hệ điều hành Android với sự hướng dẫn của thầy Nguyễn Xuân Nhựt, em đã cài đặt thành công ứng dụng từ điển và ứng dụng trắc nghiệm lên hệ điều hành Android, đã publish được ứng dụng lên Google Play và chạy thử trên nhiều thiết bị Android khác nhau.

Em cũng nắm được cơ sở lý thuyết để viết ứng dụng, có thêm kinh nghiệm trong việc áp dụng kiến thức đã học vào thực tế và học hỏi công nghệ mới. Ngoài ra, em còn được cơ hội đê nghiên cứu một công cụ viết ứng dụng vừa cho ra mắt phiên bản chính thức là Android Studio.

Đề tài sẽ tạo tiền đề cho việc nghiên cứu phát triển các ứng dụng sau này. Sản phẩm có thể đưa vào thực tế dễ dàng, qua đó thấy được tính thực tế của đề tài và mở đầu cho các hướng nghiên cứu sử dụng công nghệ mới cho sinh viên về sau.

TÀI LIỆU THAM KHẢO

[1] Professional Android Application Development – Reto Meier

[2]Ts Trương Thị Ngọc Phượng, “Lập trình Anroid “, Nhà xuất bản Thời Đại. [3] http://android.vn [4] http://developer.android.com [5] http://duythanhcse.wordpress.com [6] http://stackoverflow.com [7] http://congdongandroid.com [8] http://wikipedia.com DANH MỤC HÌNH ẢNH

Hình 1.1. Biểu tượng Android qua các thời kỳ Hình 1.2. Cấu trúc stack hệ thống Android

Hình 1.3. Các cấp độ API được hỗ trợ bởi mỗi phiên bản của nền tảng Android. Hình 2.1. Cấu trúc JDK

Hình 2.2. Thiết lập Environment Variables Hình 2.3. Máy ảo của Android Studio Hình 2.4. Màn hình Genymotion

Hình 2.5. Giao diện khi mở một project

Hình 2.6. Cấu trúc cây của một Project trong Android Stuido Hình 2.7. Khai báo Activity trong AndroidManifest

Hình 2.8. Vòng đời của một Activity Hình 2.9. Activity Stack

Hình 2.10. Tương tác giữa các Activity Hình 2.11. Vòng đời của một ứng dụng

Hình 2.12. Vòng đời chi tiết của một ứng dụng Hình 3.1. Cấu trúc một giao diện ứng dụng Android Hình 3.2. Ví dụ về FrameLayout

Hình 3.4 Ví dụ về RelativeLayout Hình 3.5. Ví dụ về AbsoluteLayout Hình 3.6. Ví dụ về ListView

Hình 3.7. Ví dụ về Tab Selector Hình 3.8. Ví dụ về Context Menu

Hình 4.1. Mô phỏng hoạt động của Intent Hình 4.2. Các thuộc tính của intent

Hình 4.3. Các action đã được định nghĩa sẵn trong Intent Hình 4.4. Chu kỳ sống của một Service

Một phần của tài liệu Xây dựng ứng dụng từ điển và trắc nghiệm trên android (Trang 50 - 75)

Tải bản đầy đủ (PDF)

(75 trang)