BÁO CÁO BÀI TẬP LỚN MÔN HỌC LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

31 2 0
BÁO CÁO BÀI TẬP LỚN MÔN HỌC LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN

-  -

BÁO CÁO BÀI TẬP LỚN

MÔN HỌC: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Giảng viên: Nguyễn Mạnh Sơn

Trang 2

4 Phương pháp - ngôn ngữ - công cụ 29

5 Giới thiệu kết quả 29

6 Các tài liệu tham khảo: 31

Trang 3

1 Giới thiệu

- Sản phẩm: App đọc truyện tranh

- Nếu bạn là một đam mê manga, comic nhưng lại cảm thấy quá bất tiện khi phải mang theo quá nhiều sách đi khắp nơi thì không thể bỏ qua được những ứng dụng thần kì như ứng dụng của nhóm mình

- Với giao diện dễ nhìn và dễ sử dụng, ứng dụng này không chỉ là nơi để tận hưởng thế giới của những câu chuyện tranh hấp dẫn mà còn là điểm đến lý tưởng để khám phá và tìm kiếm những bộ truyện mới và phổ biến từ nhiều thể loại khác nhau

2 Khảo sát

- Qua tìm hiểu ban đầu, nhận thấy đây là một sản phẩm không quá khó và nhóm bọn em có thể hoàn thành được

- Ý tưởng để thực hiện dự án xuất phát từ những ứng dụng ebook, truyện tranh hàng đầu hiện nay như Noveltoon, Weeboo, POPS,

- Khảo sát trải nghiệm của người dùng:

+ Giao diện ứng dụng được thiết kế tối giản, thân thiện và dễ sử dụng, có thể sử dụng chỉ với một vài thao tác đơn giản do đó phù hợp với mọi lứa tuổi

+ Có thể dễ dàng tìm kiếm và theo dõi các bộ truyện yêu thích

Trang 4

+ Sự đa dạng về thể loại truyện tranh bao gồm trinh thám, hài hước, phiêu lưu, và được cập nhật thường xuyên

3 Các module chính

a Layout

- Layout chứa các giao diện của ứng dụng XML là một ngôn ngữ đánh dấu linh hoạt, có thể mở rộng dễ dàng, dễ đọc và dễ hiểu XML được dùng để mô tả dữ liệu dưới dạng text do đó khá phù hợp cho việc thiết kế

- Ví dụ giao diện của một bộ truyện sẽ được thiết kế như sau:

Trang 5

b database

- DatabaseAppDocTruyen được thiết kế để tương tác với cơ sở dữ liệu SQLite chứa thông tin về tài khoản và mật khẩu của người dùng

- DatabaseAppDocTruyen được kế thừa từ SQLiteOpenHelper hỗ trợ một số chức năng như: tạo bảng tài khoản và chèn dữ liệu mẫu, truy vấn dữ liệu từ bảng tài khoản, thêm một tài khoản mới vào cơ sở dữ liệu

Trang 6

- Hàm OnCreat() được gọi khi cơ sở dữ liệu được tạo, nó chứa các câu lệnh SQL để tạo bảng Hàm getData() truy vấn và trả về một đối tượng ‘Cursor’, là một con trỏ dữ liệu cho phép bạn duyệt qua hàng kết quả Hàm AddTaiKhoan() sử dụng getWritableDatabase() để có thể ghi vào cơ sở dữ liệu, ContentValues() để chứa các giá trị cần thêm vào bảng và gọi phương thức insert() để thêm dữ liệu vào bảng

Trang 7

c model

- Class TaiKhoan được dùng để định nghĩa cách thức đăng nhập vào ứng dụng bao gồm tài khoản và mật khẩu Các phương thức get và set được dùng để thiết lập giá trị và thiết lập giá trị cho đối tượng trong trường hợp cần thiết

d object

- 2 Class ChapTruyen và TruyenTranh được dùng để định nghĩa một bộ truyện và 1 chap(tập) truyện

Trang 8

- Class ChapTruyen và TruyenTranh cũng sẽ có những hàm get và set giống TaiKhoan Khác biệt ở chỗ chúng sẽ có thêm phương thức khởi tạo đối tượng từ một JSON, điều này giúp chuyển đổi dữ liệu từ định dạng JSON sang đối tượng Java Và tại sao lại là JSON, chúng em xin được giải thích ở những phần sau

Trang 10

e adapter

- Class ChapTruyenAdapter và TruyenTranhAdapter kế thừa từ ArrayAdapter được sử dụng để gắn kết dữ liệu danh sách chap truyện và danh sách truyện tranh theo layout đã được thiết kế sẵn bên trên vào một giao diện ListView hoặc GridView

- Adapter sẽ đóng vai trò như một ‘chiếc khuôn bánh’ và dữ liệu của chap truyện hoặc bộ truyện sẽ như ‘nguyên liệu’ thay vì phải thiết kế riêng từng layout cho từng truyện, chap truyện Ngoài ra Adapter còn đảm bảo dữ liệu được hiển thị đúng cách và được cập nhật nhanh chóng khi có thay đổi

Trang 12

- Ngoài ra trong class TruyenTranhAdapter còn có một phương thức sortTruyen(String s) Phương thức này chính là xương sống của thanh tìm kiếm sortTruyen được sử dụng để sắp xếp danh sách truyện theo tên truyện dựa trên chuỗi s được nhập vào, nếu truyện đó chứa chuỗi s thì nó sẽ được đẩy lên đầu danh sách

f intefaces

- LayAnhVe, LayChapVe và LayTruyenVe là các interface được thiết kế để định nghĩa các phương thức mà một lớp khác cần triển khai

Trang 13

- Cả 3 interface đều chứa phương thức start() khi bắt đầu quá trình lấy dữ liệu, end() khi kết thúc quá trình lấy dữ liệu và fail() khi quá trình lấy dữ liệu gặp lỗi

g api

- ApiLayAnh, ApiLayChap, ApiLayTruyen là các class được xây dựng nhằm thực hiện API call để lấy danh sách truyện tranh từ một nguồn dữ liệu và sau đó thông báo kết quả qua các interface tương ứng đã được liệt kê ở bên trên

Trang 14

- 3 class đều chứa phương thức doInBackground() sẽ được thực hiện trong background thread và được sử dụng để tương tác với API mà không đóng kết nối giao diện của người dùng Trong phương thức đó, chúng em sử dụng một thư viện mở rộng có tên OkHttp để gửi một yêu cầu HTTP đến URL được bọn em dựng sẵn để lấy dữ liệu từ nguồn cung cấp API

Trang 15

- Các class chỉ khác nhau về URL và inteface Các URL dẫn đến một trang web chứa dữ liệu JSON tương ứng với mỗi API Ví dụ với ApiLayTruyen JSON sẽ chứa nhiều đối tượng truyện tranh bao gồm các thuộc tính id, linkAvt, ten Chap và tenTruyen Chúng em quyết định sử dụng JSON bởi vì tính ngắn gọn, đơn giản và có thể dễ dàng đọc được, bất kể ngôn ngữ lập trình được sử dụng là gì, chúng vẫn có thể ánh xạ sang các miền đối tượng

Trang 17

h activities

- Tất cả các class trên sẽ phụ trách tiếp nhận tương tác của người dùng và xử lý sự kiện

+ DangKy được kế thừa từ AppCompatACtivity:

Class DangKy sẽ làm việc với Database như chúng em đã trình bày ở phần b Nó bao gồm các phương thức:

CreateTaiKhoan() – tạo tài khoản

Trang 18

checkAccountName() – kiểm tra xem tên tài khoản tồn tại hay chưa

checkStrongPassWord() – kiểm tra mật khẩu đủ mạnh hay chưa

confirmPassWord() – xác nhận mật khẩu

Trang 19

AnhXa() – ánh xạ các thành phần layout được thế kế trong xml ở phần a sang các biến trong mã nguồn Java

onCreat() – thiết lập EventListener cho các Button Ngoài lời gọi đến những phương thức kiểm tra ở bên trên onCreat() còn có thêm chức năng hiển thị hoặc ẩn mật khẩu khi người dùng kích vào Button tương ứng

Trang 21

Ngoài phương thức AnhXa() như trên, DangNhap chủ yếu được thiết kế để xử lý sự kiện khi người dùng tương tác

Bật/tắt hiển thị mật khẩu

Chuyển sang màn hình đăng kí

Trang 22

Xử lí sự kiện khi người dùng bấm vào nút đăng nhập, một vài sự kiện được thiết lập như: kiểm tra người dùng nhập đầy đủ thông tin hay chưa, kiểm tra tài khoản mật khẩu

Phương thức AnhXa() của DangNhap

+ MainActivity kế thừa từ AppCompatActivity và triển khai inteface LayTruyenVe MainActivity sẽ là giao diện chính của ứng dụng và phản hồi sự kiện khi người dùng tương tác với nó

Trang 23

MainActivity bao gồm các phương thức:

init(): khởi tạo một Adapter như đã trình bày ở phần e để thiết lập GridView ArrayList dùng để lưu trữ dữ liệu các bộ truyện anhXa(): Ánh xạ các thành phần giao diện để liên kết các đối tượng View trong Layout XML với biến tương ứng trong mã nguồn Java

start() và end(): Là hai phương thức của Interface

LayTruyenVe start() được gọi khi bắt đầu thực hiện API call để hiển thị một thông báo chào mừng và end() được gọi khi API call đã được thực hiện xong Dữ liệu JSON được lưu vào ArrayList đã được tạo ở init() sau đó truyền vào

TruyenTranhAdapter để hiển thị ra dưới dạng một GridView

Trang 24

setClick() sẽ xử lí khi người dùng tương tác với giao diện TextWatcher được sử dụng để theo dõi sự thay đổi trong ô tìm kiếm Mỗi khi có sự thay đổi, danh sách truyện sẽ được sắp xếp và cập nhật thông qua sortTruyen() của

TruyenTranhAdapter

setOnItemClickListener sẽ theo dõi khi người dùng click vào một mục trong GridView, thông tin về truyện được đóng gói và chuyển sang cho ChapActivity để hiển thị các chương của truyện

Trang 25

Chuyển về màn hình đăng nhập khi người dùng bấm nút đăng xuất

Phương thức fail() của Interface không được sử dụng và

update() có chức năng cập nhật lại danh sách truyện ở màn hình chính khi có thay đổi trong cơ sở dữ liệu

+ ChapActivity kế thừa từ AppCompatActivity và triển khai interface LayChapVe ChapActivity liên quan đến danh sách các chap sau khi người dùng click vào một bộ truyện tranh cụ thể

Trang 26

ChapActivity bao gồm các phương thức:

init(): tải về dữ liệu các chap của bộ truyện người dùng đã chọn Bundle ở đây được dùng để truyền thông tin giữa

MainActivity và ChapActivity

anhXa(): tương tự phương thức anhXa() của các Activity khác

setUp(): thiết lập thông tin cơ bản của ChapActivity như tên truyện và hiển thị hình ảnh của bìa truyện

setClick(): thực thi sự kiện khi người dùng bấm vào một chap Một Intent mới sẽ được tạo ra để mở DocTruyenActivity, nơi nội dung của chap được hiển thị

Trang 27

3 phương thức này triển khai từ interface LayChapVe start() được gọi khi quá trình lấy danh sách chương bắt đầu, có tác dụng hiển thị thông báo cho người dùng biết dữ liệu đang được lấy về end() được gọi khi quá trình lấy kết thúc Dữ liệu JSON được lưu vào ArrayList đã tạo ở init() sau đó truyền truyền vào

ChapTruyenAdapter để hiển thị ra dưới dạng một ListView Phương thức fail() được bỏ trống

+ DocTruyenActivity kế thừa từ AppCompatActivity và triển khai interface LayAnhVe DocTruyenActivity sẽ hiển thị ảnh truyện của chap mà người dùng đã chọn trong ChapActivity và nhận tín hiệu khi người dùng chuyển trang khi đọc

Trang 28

DocTruyenActivity gồm các phương thức:

init(): truyền dữ liệu giữa ChapActivity và

DocTruyenActivity về tương tác trước đó của người dùng anhXa(): tương tự phương thức anhXa() của các Activity khác

right() gọi đến docTheoTrang để chuyển sang trang tiếp theo ngược lại với left()

Trang 29

docTheoTrang(): được dùng để chuyển tiếp trang theo biến i cụ thể là 1 ở right() và -1 ở left() và đảm bảo trang đang đọc không nhỏ hơn một và lớn hơn tổng số trang

soPage.setText() có nhiệm vụ hiển thị thứ tự trang đang đọc trên giao diện Glide sẽ tải hình ảnh của trang truyện hiện tại và

+ Một số thư viện mở rộng như: OkHttp, Glide, + SQLite: cơ sở dữ liệu

5 Giới thiệu kết quả

Trang 30

- Màn hình đăng nhập/đăng kí:

- Giao diện chính:

Trang 31

- Màn hình đọc truyện:

6 Các tài liệu tham khảo:

- Series lập trình: https://www.youtube.com/watch?v=XCapTM64ye8&t=3s - Android Studio turtorial: https://www.youtube.com/watch?v=kMI2jy-WlGM - JSON và Web API: https://www.youtube.com/watch?v=ux9huPhQOII

- How To Connect Android Studio With SQL Server Database: https://www.youtube.com/watch?v=dYt763QgaTg

Ngày đăng: 23/04/2024, 22:57

Tài liệu cùng người dùng

Tài liệu liên quan