1. Trang chủ
  2. » Giáo Dục - Đào Tạo

KHÓA LUẬN TỐT NGHIỆP XÂY DỰNG ỨNG DỤNG CHIA SẺ VÀ TRAO ĐỔI SÁCH

118 30 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 118
Dung lượng 11,22 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- Nhận xét/ Đánh giá: Bất kỳ người dùng nào cũng có thể để lại đánh giá và nhận xét sách trên nhiều tiêu chí, giúp những người dùng khác chọn được cuốn sách phù hợp sở thích.. Đối tượng

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

NGUYỄN HỒNG PHÚC

KHÓA LUẬN TỐT NGHIỆP

XÂY DỰNG ỨNG DỤNG CHIA SẺ VÀ TRAO ĐỔI SÁCH

Building an app to share and exchange books

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

TP HỒ CHÍ MINH, 2020

Trang 2

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

NGUYỄN HỒNG PHÚC – 16520951

KHÓA LUẬN TỐT NGHIỆP

XÂY DỰNG ỨNG DỤNG CHIA SẺ VÀ TRAO ĐỔI SÁCH

Building an app to share and exchange books

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN Ths LÊ THANH TRỌNG

TP HỒ CHÍ MINH, 2020

Trang 3

THÔNG TIN HỘI ĐỒNG CHẤM KHÓA LUẬN TỐT NGHIỆP

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số

……… ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin

1 – Chủ tịch

2 – Thư ký

3 – Ủy viên

4 – Ủy viên

Trang 4

ĐHQG TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc Lập - Tự Do - Hạnh Phúc

TP HCM, ngày… tháng… năm 2020

NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP

(CỦA CÁN BỘ HƯỚNG DẪN)

Tên khóa luận:

XÂY DỰNG ỨNG DỤNG CHIA SẺ VÀ TRAO ĐỔI SÁCH

Nguyễn Hồng Phúc 16520951 Ths Lê Thanh Trọng

Đánh giá Khóa luận

1 Về cuốn báo cáo:

Số trang 97 _ Số chương 5

Số bảng số liệu 23 _ Số hình vẽ 51 _

Số tài liệu tham khảo 18 _ Sản phẩm 1

Một số nhận xét về hình thức cuốn báo cáo:

2 Về nội dung nghiên cứu:

3 Về chương trình ứng dụng:

Trang 5

4 Về thái độ làm việc của sinh viên:

Đánh giá chung:Khóa luận đạt/không đạt yêu cầu của một khóa luận tốt nghiệp kỹ

sư/ cử nhân, xếp loại Giỏi/ Khá/ Trung bình

Điểm từng sinh viên:

Nguyễn Hồng Phúc:……… /10

Người nhận xét (Ký tên và ghi rõ họ tên)

Trang 6

ĐHQG TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc Lập - Tự Do - Hạnh Phúc

TP HCM, ngày… tháng… năm 2020

NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP

(CỦA CÁN BỘ PHẢN BIỆN)

Tên khóa luận:

XÂY DỰNG ỨNG DỤNG CHIA SẺ VÀ TRAO ĐỔI SÁCH

Nguyễn Hồng Phúc 16520951 *Name of lecturer*

Đánh giá Khóa luận

5 Về cuốn báo cáo:

Số trang 97 _ Số chương 5

Số bảng số liệu 23 _ Số hình vẽ 51 _

Số tài liệu tham khảo 18 _ Sản phẩm 1

Một số nhận xét về hình thức cuốn báo cáo:

6 Về nội dung nghiên cứu:

7 Về chương trình ứng dụng:

Trang 7

8 Về thái độ làm việc của sinh viên:

Đánh giá chung:Khóa luận đạt/không đạt yêu cầu của một khóa luận tốt nghiệp kỹ

sư/ cử nhân, xếp loại Giỏi/ Khá/ Trung bình

Điểm từng sinh viên:

Nguyễn Hồng Phúc:……… /10

Người nhận xét (Ký tên và ghi rõ họ tên)

Trang 8

LỜI CẢM ƠN

Khoá luận tốt nghiệp với đề tài “Xây dựng ứng dụng chia sẻ và trao đổi sách” là minh chứng cho quá trình cố gắng không ngừng trong việc tìm tòi, học hỏi trong suốt hơn 4 năm học tập tại trường Đại học Công nghệ Thông tin Thể hiện khả năng của bản thân trong việc áp dụng kiến thức chuyên môn vào giải

quyết bài toán thực tế

Trong quá trình thực hiện khoá luận, em đã nhận được sự hướng dẫn tận tình từ quý thầy cô, sự giúp đỡ và hỗ trợ từ gia đình cũng như bạn bè Một cách đặc biệt, em xin được gửi lời cảm ơn chân thành đến:

Các thầy cô trường Đại học Công nghệ Thông Tin nói chung và các thầy cô trong Khoa Công nghệ Phần mềm nói riêng đã tận tình truyền đạt kiến thức tới em trong những năm học tập tại trường Đó là tài sản quý báu đã giúp em hoàn thành khoá luận và cũng là hành trang cho con đường sự nghiệp của bản thân sau này

Em xin được gửi lời cảm ơn sâu sắc tới Ths Lê Thanh Trọng, người đã trực tiếp hướng dẫn, chỉ bảo, giúp đỡ em những lúc khó khăn, đưa ra những lời khuyên bổ ích

để khoá luận được hoàn thành đúng tiến độ và đáp ứng các yêu cầu đề ra ban đầu Cảm ơn giảng viên phản biện và các thầy cô trong hội đồng chấm luận văn với những lời khuyên, góp ý quý báu và bổ ích Từ đó bài luận văn của em được trở nên hoàn thiện hơn

Lời cuối cùng, em xin dành lời cảm ơn gửi tới gia đình, anh chị, bạn bè đã luôn bên cạnh để động viên và đóng góp ý kiến trong quá trình hoàn thành khoá luận này

Thành phố Hồ Chí Minh, tháng 01 năm 2020

Sinh viên Nguyễn Hồng Phúc

Trang 9

ĐHQG TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc Lập - Tự Do - Hạnh Phúc

ĐỀ CƯƠNG CHI TIẾT

TÊN ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG CHIA SẺ VÀ TRAO ĐỔI SÁCH

Cán bộ hướng dẫn: Ths Lê Thanh Trọng

Thời gian thực hiện: Từ ngày 07/09/2020 đến ngày 02/01/2021

Sinh viên thực hiện:

Trang 10

- Thảo luận: Chia sẻ, bàn luận và thể hiện cảm xúc ngay tức thì về bài học/ trích dẫn trong một thể loại sách bất kỳ

- Nhận xét/ Đánh giá: Bất kỳ người dùng nào cũng có thể để lại đánh giá và nhận xét sách trên nhiều tiêu chí, giúp những người dùng khác chọn được cuốn sách phù hợp sở thích

- Trao đổi sách: Tìm kiếm, trao đổi sách giấy

- Mượn sách: Yêu cầu mượn sách giấy trên kho sách chung (kho sách chứa tất cả cuốn sách của người dùng ở trạng thái “sẵn sàng cho mượn”) tới chủ sở hữu

- Quản lý tủ sách: Thêm mới, cập nhật tình trạng và trạng thái sách Thêm các bài học rút ra từ những cuốn sách trong tủ

- Thông báo: Luôn nhận được thông báo kể cả khi không mở ứng dụng

- Khởi tạo tài khoản: Không cần đăng ký, tích hợp với mạng xã hội Facebook

Đối tượng sử dụng:

Là những người sử dụng thiết bị di động (iOS) có một trong các nhu cầu:

- Người có sở thích đọc và chia sẻ về sách

- Người có nhu cầu tìm kiếm sách phù hợp để đọc

- Người sở hữu sách muốn lan toả tri thức bằng cách cho mượn sách

Phương pháp thực hiện:

- Tìm hiểu và đánh giá các giải pháp đã có

- Đề xuất, cải thiện các tính năng cần thiết

- Áp dụng mô hình thác nước vào xây dựng ứng dụng

Kết quả mong đợi:

- Hiểu rõ các framework liên quan (Vapor, Websocket, Combine, SwiftUI, …)

để có thể ứng dụng vào xây dựng ứng dụng chia sẻ và trao đổi sách

- Hoàn thành ứng dụng chạy trên nền tảng iOS với đầy đủ các yêu cầu chức năng

đề ra

- Ứng dụng có độ hoàn thiện cao, có khả năng đưa vào thực tiễn

Trang 11

Kế hoạch thực hiện:

Khoá luận được thực hiện trong 15 tuần, thời gian và mô tả nội dung công việc được thể hiện ở bảng bên dưới:

Phân tích yêu cầu, nghiên cứu kỹ

Thiết kế hệ thống

(10/2020)

- Thiết kế kiến trúc phần mềm

- Thiết kế cấu trúc dữ liệu

- Thiết kế giao diện bằng công cụ Figma

- Tạo đặc tả phần mềm (sơ đồ use case, sơ

đồ tuần tự) Hiện thực các mô-đun và kiểm thử

Trang 13

MỤC LỤC

TÓM TẮT KHÓA LUẬN 1

Chương 1 MỞ ĐẦU 2

1.1 Giới thiệu đề tài 2

1.2 Lý do chọn đề tài 3

Chương 2 TỔNG QUAN ĐỀ TÀI 5

2.1 Mục tiêu 5

2.2 Phạm vi 5

2.3 Phương pháp thực hiện 6

2.4 Ý nghĩa thực tiễn 6

2.5 Kết quả dự kiến 6

Chương 3 CƠ SỞ LÝ THUYẾT 7

3.1 Khảo sát hiện trạng 7

3.1.1 Các ứng dụng liên quan 8

3.1.1.1 Ứng dụng GAT 8

3.1.1.2 Ứng dụng Goodreads 9

3.1.2 Đánh giá hiện trạng và hướng giải quyết 10

3.1.2.1 Đánh giá hiện trạng 10

3.1.2.2 Hướng giải quyết 11

3.2 Công nghệ sử dụng 12

3.2.1 Vapor 12

3.2.2 SwiftUI 13

3.2.3 Combine 15

Trang 14

3.2.4 WebSocket 18

3.2.5 Apple Push Notification service 20

3.2.6 PostgreSQL 24

3.2.7 Bcrypt 26

3.2.8 Alamofire 29

3.2.9 Amazon Web Services – S3 29

3.2.10 Heroku 30

3.2.11 SMTP 31

Chương 4 XÂY DỰNG ỨNG DỤNG CHIA SẺ VÀ TRAO ĐỔI SÁCH 34

4.1 Phân tích yêu cầu hệ thống 34

4.1.1 Phân tích yêu cầu chức năng 34

4.1.1.1 Yêu cầu lưu trữ 34

4.1.1.2 Yêu cầu về tính năng 34

4.1.2 Phân tích yêu cầu phi chức năng 35

4.1.3 Phân tích yêu cầu người dùng 35

4.1.3.1 Mô hình use case toàn hệ thống 36

4.1.3.2 Danh sách các Actors 37

4.1.3.3 Danh sách các Use case 37

4.2 Phân tích thiết kế hệ thống 40

4.2.1 Thiết kế xử lý 40

4.2.1.1 Lược đồ tuần tự thao tác đăng ký 41

4.2.1.2 Lược đồ tuần tự thao tác đăng nhập 42

4.2.1.3 Lược đồ tuần tự thao tác khôi phục mật khẩu 44

4.2.1.4 Lược đồ tuần tự thao tác cập nhật thông tin cá nhân 46

Trang 15

4.2.1.5 Lược đồ tuần tự thao tác thêm đầu sách 47

4.2.1.6 Lược đồ tuần tự cho thao tác thêm sách vào tủ 48

4.2.1.7 Lược đồ tuần tự cho thao tác quản lý lịch sử trao đổi sách 50

4.2.1.8 Lược đồ tuần tự cho thao tác thêm mới ghi chú 52

4.2.1.9 Lược đồ tuần tự cho thao tác cập nhật sách người dùng 53

4.2.1.10 Lược đồ tuần tự cho thao tác đánh giá sách 54

4.2.1.11 Lược đồ tuần tự cho thao tác trao đổi sách 55

4.2.1.12 Lược đồ tuần tự cho thao tác mượn sách 59

4.2.1.13 Lược đồ tuần tự cho thao tác nhắn tin 62

4.2.1.14 Lược đồ tuần tự cho thao tác tạo bài viết 63

4.2.1.15 Lược đồ tuần tự cho thao tác bình luận 65

4.2.2 Thiết kế cơ sở dữ liệu 66

4.2.2.1 Lược đồ cơ sở dữ liệu 66

4.2.2.2 Mô tả các bảng dữ liệu 67

4.2.3 Thiết kế kiến trúc hệ thống 78

4.2.3.1 Kiến trúc tổng thể 78

4.2.3.2 Kiến trúc ứng dụng di động 79

4.2.4 Thiết kế giao diện 80

4.2.4.1 Danh sách màn hình 80

4.2.4.2 Giao diện một số màn hình của ứng dụng 83

4.3 Triển khai hệ thống 89

4.3.1 Máy chủ 89

4.3.2 Ứng dụng di động 91

Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 92

Trang 16

5.1 Kết quả đạt được 92

5.2 Thuận lợi và khó khăn 93

5.2.1 Thuận lợi 93

5.2.2 Khó khăn 93

5.3 Hướng phát triển 94

TÀI LIỆU THAM KHẢO 95

Trang 17

DANH MỤC HÌNH

Hình 3.1: Buổi chia sẻ sách tại KTX Khu B do Đội hỗ trợ sinh viên nội trú tổ chức 7

Hình 3.2: Logo ứng dụng GAT 8

Hình 3.3: Logo ứng dụng Goodreads 9

Hình 3.4: Logo Vapor Framework 12

Hình 3.5: Logo SwiftUI Framework 13

Hình 3.6: Triển khai mã nguồn hiệu ứng trái tim bằng SwiftUI 14

Hình 3.7: Nút hiển thị Toggle trên macOS và iOS 15

Hình 3.8: Sơ đồ mô tả hoạt động của Combine Framework 17

Hình 3.9: Mô tả cách hoạt động của WebSocket 18

Hình 3.10: Mô tả các thành phần trong mỗi Frame gửi đi bởi WebSocket 19

Hình 3.11: Logo Apple Push Notications service 20

Hình 3.12: Các chứng chỉ cần thiết để tạo thông báo đẩy 21

Hình 3.13: Lược đồ tuần tự cho thao tác nhận token của thiết bị 22

Hình 3.14: Lược đồ tuần tự cho quá trình tạo thông báo đẩy 23

Hình 3.15: Logo PostgreSQL 24

Hình 3.16: Minh hoạ bộ dữ liệu được lưu trong bảng của PostgreSQL 24

Hình 3.17: Tốc độ băm của 1 số thuật toán phổ biến 27

Hình 3.18: Mã giải thuật toán băm Bcrypt 28

Hình 3.19: Kết qủa cuối cùng của quá trình băm 28

Hình 3.20: Logo Amazone Web Services 29

Hình 3.21: Logo nền tảng đám mây Heroku 30

Hình 3.22: Quá trình truyền nhận thư bằng SMTP và POP/IMAP 32

Hình 3.23 Ví dụ về tương tác SMTP 33

Hình 4.1: Lược đồ Use case hệ thống 36

Hình 4.2: Lược đồ tuần tự cho thao tác đăng ký 41

Hình 4.3: Lược đồ tuần tự cho thao tác đăng nhập 42

Hình 4.4: Lược đồ tuần tự cho thao tác đăng nhập với Facebook 43

Hình 4.5: Lược đồ tuần tự cho thao tác khôi phục mật khẩu 44

Trang 18

Hình 4.6: Lược đồ tuần tự cho thao tác cập nhật thông tin cá nhân 46

Hình 4.7: Lược đồ tuần tự cho thao tác thêm đầu sách 47

Hình 4.8: Lược đồ tuần tự cho thao tác thêm sách vào tủ 48

Hình 4.9: Lược đồ tuần tự cho thao tác quản lý lịch sử trao đổi sách 50

Hình 4.10: Lược đồ tuần tự cho thao tác thêm mới ghi chú 52

Hình 4.11: Lược đồ tuần tự cho thao tác cập nhật sách người dùng 53

Hình 4.12: Lược đồ tuần tự cho thao tác đánh giá sách 54

Hình 4.13: Lược đồ tuần tự cho thao tác tạo nhu cầu đổi sách 55

Hình 4.14: Lược đồ tuần tự cho thao tác yêu cầu trao đổi sách 56

Hình 4.15: Lược đồ tuần tự cho thao tác phản hồi trao đổi sách 58

Hình 4.16: Lược đồ tuần tự cho thao tác yêu cầu mượn sách 59

Hình 4.17: Lược đồ tuần tự cho thao tác phản hồi mượn sách 60

Hình 4.18: Lược đồ tuần tự cho thao tác nhắn tin 62

Hình 4.19: Lược đồ tuần tự cho thao tác tạo bài viết 63

Hình 4.20: Lược đồ tuần tự cho thao tác bình luận bài viết 65

Hình 4.21: Lược đồ cơ sở dữ liệu 66

Hình 4.22: Kiến trúc tổng thệ hệ thống 78

Hình 4.23: Kiến trúc ứng dụng di động 79

Hình 4.24: Màn hình tạo bài viết 83

Hình 4.25: Màn hình hiển thị bài viết 83

Hình 4.26: Màn hình hiển thị chi tiết bài viết 83

Hình 4.27: Màn hình sách được yêu thích nhất 83

Hình 4.28: Màn hình các cuốn sách đang chờ trao đổi 84

Hình 4.29: Màn hình danh sách người dùng có sẵn sách cho mượn 84

Hình 4.30: Màn hình gửi yêu cầu mượn sách 84

Hình 4.31: Màn hình tạo sách chờ trao đổi 84

Hình 4.32: Màn hình kết quả đổi sách 85

Hình 4.33: Màn hình lịch sử mượn và trao đổi sách 85

Hình 4.34: Màn hình trang cá nhân 85

Trang 19

Hình 4.35: Màn hình tủ sách cá nhân 85

Hình 4.36: Màn hình chi tiết cuốn sách cá nhân 86

Hình 4.37: Màn hình thông báo hoạt động 86

Hình 4.38: Màn hình cài đặt tài khoản 86

Hình 4.39: Màn hình cập nhật vị trí hiện tại 86

Hình 4.40: Màn hình yêu cầu truy cập vị trí 87

Hình 4.41: Màn hình danh sách cuộc trò chuyện 87

Hình 4.42: Màn hình đăng nhập lần đầu 87

Hình 4.43: Màn hình nhắn tin 87

Hình 4.44: Màn hình đánh giá sách 88

Hình 4.45: Màn hình tạo yêu cầu đổi sách 88

Hình 4.46: Màn hình chi tiết đầu sách 88

Hình 4.47: Màn hình chấp nhận yêu cầu mượn sách 88

Hình 4.48: Màn hình xem yêu cầu mượn sách 89

Hình 4.49: Quá trình triển khai ứng dụng lên nền tảng đám mây 90

Hình 4.50: Thông tin máy chủ đã triển khai 90

Hình 4.51: Thông tin cơ sở dữ liệu đã triển khai 91

Trang 20

DANH MỤC BẢNG

Bảng 3.1 Bảng giới hạn kích thước của dữ liệu trong PostgreSQL 26

Bảng 4.1: Danh sách actor trong hệ thống 37

Bảng 4.2: Danh sách các Use case trong hệ thống 40

Bảng 4.3: Danh sách thuộc tính của bảng Account 67

Bảng 4.4: Danh sách thuộc tính của bảng User 68

Bảng 4.5: Danh sách thuộc tính của bảng Book 68

Bảng 4.6: Danh sách thuộc tính của bảng Post 69

Bảng 4.7: Danh sách thuộc tính của bảng NotyfyType 69

Bảng 4.8: Danh sách thuộc tính của bảng Notify 70

Bảng 4.9: Danh sách thuộc tính của bảng Reaction 70

Bảng 4.10: Danh sách thuộc tính của bảng Devices 71

Bảng 4.11: Danh sách thuộc tính của bảng Category 71

Bảng 4.12: Danh sách thuộc tính của bảng PostComment 71

Bảng 4.13: Danh sách thuộc tính của bảng Setting 72

Bảng 4.14: Danh sách thuộc tính của bảng Chat 72

Bảng 4.15: Danh sách thuộc tính của bảng Message 73

Bảng 4.16: Danh sách thuộc tính của bảng MessageType 73

Bảng 4.17: Danh sách thuộc tính của bảng UserFollow 74

Bảng 4.18: Danh sách thuộc tính của bảng BookReview 74

Bảng 4.19: Danh sách thuộc tính của bảng UserCategory 75

Bảng 4.20: Danh sách thuộc tính của bảng BorrowBook 75

Bảng 4.21: Danh sách thuộc tính của bảng ExchangeBook 76

Bảng 4.22: Danh sách thuộc tính của bảng UserBook 77

Bảng 4.23: Danh sách thuộc tính của bảng Note 77

Trang 21

DANH MỤC TỪ VIẾT TẮT

1 STT Số thứ tự Số thứ tự trong bảng

2 UI User Interface Là những gì chúng ta nhìn thấy và

giao tiếp với ứng dụng

3 API

Application Programming Interface

Giao diện lập trình ứng dụng Sử dụng để truy cập 1 số phương thức của hệ thống, từ đó có thể trao đổi

6 REST Representational State

Transfer

Một kiểu kiến trúc lập trình, định nghĩa các quy tắc để thiết kế web service

Trang 22

- Tìm hiểu các công nghệ mới, phù hợp để áp dụng vào phát triển hệ thống

- Phân tích, thiết kế hệ thống, thiết kế cơ sở dữ liệu và giao diện ứng dụng

- Phát triển ứng dụng hoàn chỉnh chạy trên nền tảng iOS

- Triển khai máy chủ lên nền tảng đám mây Heroku

- Trình bày báo cáo, đưa ra kết luận và hướng phát triển cho ứng dụng chia sẻ

và trao đổi sách

Trang 23

2

Chương 1 MỞ ĐẦU

1.1 Giới thiệu đề tài

Sách chứa đựng nguồn kiến thức vô cùng lớn của nhân loại Những bài học, kinh nghiệm của người đi trước, những nghiên cứu, phát minh được lưu lại đã giúp tác động trực tiếp theo hướng tích cực đến cuộc sống của con người Sách giúp ta kết nối với thế giới bên ngoài, tiếp cận các kiến thức mới của xã hội, thúc đẩy khả năng sáng tạo, nâng cao dân trí và tu dưỡng nhân cách

Năm 2014, hưởng ứng Ngày Sách và Bản quyền Thế giới, Thủ tướng Chính phủ đã ban hành quyết định 284/QĐ – TTg lấy ngày 21/4 hằng năm là Ngày Sách Việt

Nam nhằm:

1 Khuyến khích và phát triển phong trào đọc sách trong cộng đồng, nâng cao nhận thức của nhân dân về ý nghĩa to lớn và tầm quan trọng của việc đọc sách đối với việc nâng cao kiến thức và kỹ năng, phát triển tư duy, giáo dục

và rèn luyện nhân cách con người

2 Tôn vinh giá trị của sách, khẳng định vai trò, vị trí, tầm quan trọng của sách trong đời sống xã hội; tôn vinh người đọc và những người tham gia sưu tầm, sáng tác, xuất bản, in, phát hành, lưu giữ, quảng bá sách

3 Nâng cao trách nhiệm của các cấp, các ngành, các cơ quan chức năng và các tổ chức xã hội đối với việc xây dựng và phát triển văn hóa đọc Việt Nam

Qua đó ta thấy được sự quan tâm của nhà nước về việc đọc sách, và tất cả mọi ngời đều có trách nhiệm để góp phần hoàn thành mục tiêu chung, đẩy mạnh xây dựng xã hội học tập

Trang 24

3

Theo một khảo sát1 gần đây, dữ liệu thu được cho thấy việc đọc sách việc đọc sách của người Việt Nam còn vô cùng khiêm tốn Dữ liệu thể hiện bao gồm 30% số người đọc sách thường xuyên, 44% thỉnh thoảng đọc sách và 26% không đọc sách Đồng thời thời lượng đọc sách mỗi tuần của người Việt Nam chưa tới 1 giờ, thuộc nhóm có thời lượng đọc sách thấp nhất của các nước được khảo sát

Vì vậy, để góp phần khích lệ tinh thần, hình thành hói quen đọc sách của mọi người

và kết nối những người có cùng sở thích đọc sách, đề tài khoá luận đã được lên ý tưởng và thực hiện

1.2 Lý do chọn đề tài

Có những cuốn sách đọc mãi không chán, cứ đọc hết lần này tới lần khác Mỗi lần mở sách ra đọc chúng ta lại học thêm được điều gì mới mẻ Nhưng cũng có những cuốn sách ta chỉ đọc 1 lần rồi đặt lên tủ sách mà không còn đọc tới lần thứ 2, nổi bật nhất là các cuốn sách giáo trình và sách truyện Việc để những cuốn sách nằm yên trên kệ sẽ rất lãng phí vì ngoài kia, rất nhiều người yêu sách nhưng không đủ tiền mua hay đang tìm kiếm những cuốn sách đã ngừng xuất bản Hiện nay cũng đã có vài phương pháp được triển khai, điển hình là trao đổi sách qua các nhóm trên mạng xã hội Facebook Tuy nhiên, việc đăng tải và trao đổi trên nền tảng không được thiết kế phù hợp với trao đổi sách khiến các bài tìm kiếm, trao đổi dễ bị trôi và chìm vào quên lãng Người đọc cũng khó khăn để quản lý những cuốn sách đã mượn/cho mượn của bản thân

Cùng với đó, việc tìm kiếm được cuốn sách hay và phù hợp với bản thân là bước đầu tiên và cũng là bước vô cùng quan trọng khi bắt đầu hành trình khám phá một cuốn sách mới Vậy làm thế nào để lựa chọn đúng sách giữa hàng ngàn đầu sách được xuất bản mỗi tháng? Một sự lựa chọn nhanh chóng là ta có thể xem đánh giá trên cửa hàng sách trực tuyến, gợi ý của mạng xã hội Goodreads, … Nhưng tất cả

1 Tham khảo từ: https://thanhnien.vn/thoi-su/26-nguoi-viet-nam-hoan-toan-khong-doc-sach-1072672.html

Trang 25

4

những nguồn gợi ý kể trên đều có đánh giá chung với số sao nhất định Mọi thứ sẽ tuyệt vời hơn nếu ta có đánh giá chi tiết về các tiêu chí khác nhau và chọn ra cuốn mà tiêu chí mình quan tâm được nhiều bình chọn nhất

Từ những thực trạng, vấn đề được nêu trên, em đã lên ý tưởng về một hệ thống kết nối và phục vụ những nhu cầu thường nhật dành cho những người yêu sách

Trong quá trình hình thành ý tưởng, em cũng đã tham khảo và tìm hiểu các hệ thống đã giải quyết các vấn đề nêu ra Kết quả là nhận thấy chưa có hệ thống nào phù hợp, giải quyết đầy đủ Tuy nhiên, nhờ tham khảo các hệ thống khác mà em rút ra được những kinh nghiệm hữu ích và quyết định tạo ra ứng dụng chia sẻ và trao đổi sách

Trang 26

- Trao đổi sách: Tìm kiếm, trao đổi sách giấy

- Mượn sách: Yêu cầu mượn sách giấy trên kho sách chung (kho sách chứa tất

cả cuốn sách của người dùng ở trạng thái “sẵn sàng cho mượn”) tới chủ sở hữu

- Quản lý tủ sách: Thêm mới, cập nhật tình trạng và trạng thái sách Thêm các bài học rút ra từ những cuốn sách trong tủ

- Thông báo: Luôn nhận được thông báo kể cả khi không mở ứng dụng

- Khởi tạo tài khoản: Sử dụng email đăng ký và tích hợp đăng nhập với mạng

xã hội Facebook

Trang 27

6

2.3 Phương pháp thực hiện

- Tìm hiểu và đánh giá các giải pháp đã có

- Đề xuất, cải thiện các tính năng cần thiết

- Tìm hiểu, ứng dụng các công nghệ mới, phù hợp

- Áp dụng mô hình thác nước vào xây dựng ứng dụng

2.4 Ý nghĩa thực tiễn

- Tạo môi trường kết nối người yêu sách, thúc đẩy tinh thần chia sẻ các bài học, góc nhìn về sách

- Giúp bạn đọc dễ dàng tìm kiếm sách phù hợp với bản thân

- Người dùng tiếc kiệm chi phí, tiếp cận được nhiều sách hơn nhờ việc mượn và đổi sách

- Dễ dàng quản lý các cuốn sách và các bài học được rút ra

- Nâng cao trách nhiệm sử dụng sách hiệu quả trong cộng đồng

Trang 28

Qua tìm hiểu, em nhận thấy đã có nhiều cá nhân, tổ chức đã và đang quan tâm đến việc đọc sách cũng như chia sẻ sách Buổi chia sẻ sách giúp mọi người có dịp chia sẻ suy nghĩ quan điểm riêng của mình Những trăn trở công việc, khúc mắc tư duy tìm được câu trả lời thông qua kiến thức vô giá có trong sách

Hình 3.1: Buổi chia sẻ sách tại KTX Khu B do Đội hỗ trợ sinh viên nội trú tổ chức2

2 Nguồn: https://www.facebook.com/doihtsvnt

Trang 29

8

Ở một số trường đại học, các ngày hội sách hằng năm cũng được tổ chức bởi các câu lạc bộ, đội nhóm Các bạn tình nguyện viêm tham gia thu gom sách từ các bạn sinh viên, đa số những sách nhận được là giáo trình, kỹ năng và tiếng anh Nhờ đó các bạn sinh viên có nhu cầu nhận sách miễn phí sẽ tới ngày hội, xếp hàng điểm danh và thoải mái lựa chọn các cuốn sách cho bản thân

Và ở ngay tại Trường Đại học Công nghệ Thông tin, khi bắt đầu một học kỳ mới, trên các nhóm Facebook của các khoá UIT K11, UITK12, …cũng luôn có những bài viết tìm kiếm sách, chia sẻ miễn phí và mượn sách, giúp các bạn sinh viên tiếc kiệm được một khoản chi phí đáng kể

Việc cho mượn sách không chỉ giúp mọi người về mặt tài chính, dễ dàng tiếp cận các đầu sách khác mà còn giúp tận dụng nguồn tài nguyên quý giá này trong cộng đồng

và phục vụ nhu cầu tìm kiếm những cuốn sách đã ngừng xuất bản

Ưu điểm:

3 Nguồn: https://gatbook.org/

Trang 30

9

- Hỗ trợ tương đối đầy đủ các chức năng cơ bản cho việc mượn sách

- Có sẵn trên nền tảng Android và iOS

- Có thể kết nối bạn bè nhờ chắc năng bạn bè xung quanh

- Được đánh giá rất cao về mặt ý tưởng trên App Store và Google Play

- Chỉ có thể đánh giá sách theo 1 tiêu chí

- Người dùng chỉ có thể để lại đánh giá trên các cuốn sách, không thể thảo luận trên các đánh giá đó

3.1.1.2 Ứng dụng Goodreads

Hình 3.3: Logo ứng dụng Goodreads4

“Goodreads là trang web lớn nhất cho những người đọc sách, chia sẻ và giới thiệu sách Sứ mệnh của trang hướng đến giúp mọi người tìm và chia sẻ những cuốn sách mà họ yêu thích Goodreads được thành lập từ tháng 1 năm 2007.”5

Ưu điểm:

- Hệ thống giới thiệu sách hữu ích dựa trên dữ liệu những cuốn sách đã đọc

- Dễ dàng quản lý cuốn sách của bản thân, đánh giá sao, thêm ngày đọc và viết đánh giá về cuốn sách bạn đã đọc

4 Nguồn: https://www.goodreads.com

5 Trích phần giới thiệu của ứng dụng: https://www.goodreads.com/about/us

Trang 31

- Có thể kết nối và đặt câu hỏi trực tiếp tới tác giả giúp người đọc hiểu thêm

ý nghĩa đằng sau các chi tiết trừu tượng

- Có 2 nền tảng để sử dụng: Web và ứng dụng di động

Hạn chế:

- Sách chỉ được đánh giá theo 1 tiêu chí duy nhất vì thế sẽ không thể hiện được chi tiết các khía cạnh mà sách thể hiện

- Nền tảng di động không được đầu tư nhiều, vì thế bị thiếu nhiều chức năng

so với phiên bản web (ví dụ điều chỉnh ngày đọc, ẩn tin, …)

- Có thể nói đây là ứng dụng tuyệt vời để tìm kiếm những cuốn sách phù hợp Tuy nhiên với hiện trạng được khảo sát trên, ứng dụng này chưa thể giải quyết vấn đề chia sẻ sách

3.1.2 Đánh giá hiện trạng và hướng giải quyết

3.1.2.1 Đánh giá hiện trạng

Sách lưu giữ nguồn kiến thức vô tận của nhân loại và ảnh hưởng tới cuộc sống mỗi người Ngày nay, nhờ hiểu đươc tầm quan trọng của sách mà mọi người càng trân trọng và nâng niu nó hơn Cùng nhờ đó, các chương trình chia sẻ và trao đổi sách cũng xuất hiện nhiều hơn, đã thúc đẩy và cổ vũ tinh thần đọc sách của mọi người

Trang 32

11

Tuy nhiên, cần nhìn nhận một cách khách quan rằng, các chương trình đang được tổ chức hoàn toàn một cách thủ công và đang bị hạn chế về mặt địa lý Việc này dẫn đến các tài nguyên sách trong cộng đồng chưa được tận dụng triệt

để, hoạt động trao đổi sách không được liên tục, tốn kém các chi phí phát sinh

và người mượn sách phải trải qua nhiều thủ tục, mất thời gian chờ để có được cuốn sách mong muốn

Rất nhiều ý tưởng đã được đưa ra và xuất hiện trên các cuộc thi đã được sự đánh giá rất cao từ cộng đồng Nhưng một trong số đó chỉ dừng lại ở ý tưởng, một số

đã được tiến hành một cách thủ công, cũng có một số đã tin học hoá và phục vụ nhu cầu của mọi người Nhưng với tiêu chuẩn khắt khe từ thị trường, những ứng dụng đó vẫn còn nhiều hạn chế cần cải thiện để hỗ trợ cộng đồng đọc sách một cách tốt hơn

3.1.2.2 Hướng giải quyết

Để hỗ trợ chia sẻ và trao đổi sách được tốt hơn, việc ứng dụng công nghệ thông tin vào quản lý sẽ giúp các thủ tục được diễn ra tự động ở nhiều bước, cắt giảm chi phí, giảm bớt sai sót và tạo ra sự tiện lợi cho mọi người

Tại Việt Nam, theo báo cáo6 “Thị trường điện thoại và ứng dụng di động Việt Nam 6 tháng đầunăm 2020” do Appota phát hành, tỉ lệ sử dụng điện thoại di động chiếm đến 70% tổng dân số tương dương 150 triệu thiết bị Trong đó tỉ lệ người sử dụng smartphone chiếm hơn 45% dân số và xếp hạng thứ 15 trên thế giới Vì vậy, xây dựng hế thống cho phép người dùng trao đổi sách trên nền tảng di động là sự lựa chọn phù hợp trong bối cảnh hiện tại

6 Tham khảo từ https://thanhnien.vn

Trang 33

12

Tận dụng các tài nguyên có sẵn, kế thừa những tính năng hữu ích của các ứng dụng đã ra đời trước đó cùng với đánh giá, bổ sung các tính năng mới Tận dụng tối đa khả năng của thiết bị và tối ưu hoá trải nghiệm người dùng

3.2 Công nghệ sử dụng

3.2.1 Vapor

Hình 3.4: Logo Vapor Framework7

Vapor là web framework mã nguồn mở được viết bằng ngôn ngữ Swift Nó được xây dựng dựa trên thư viện SwiftNIO của Apple, cung cấp 1 framework mạnh mẽ

và bất đồng bộ Vapor cho phép xây dựng back-end cho ứng dụng iOS, front-end websites và ứng dụng server độc lập chạy trên môi trường MacOS và Linux

Apple công bố mã nguồn mở Swift vào năm 2015 đã cho phép các nhà phát triễn

dễ dàng tạo ra các web framework với bằng ngôn ngữ Swift Qua đó, phiên bản đầu tiên của vapor đã được Tanner Nelson viết ra và tháng 1 năm 2016 Theo thời gian, vapor đã được sự ủng hộ và đóng góp nhiệt tình từ cộng đồng, trở thành server-side Swift framework trên Github Tới thời điểm hiện tại, Vapor đã phát hành 389 phiên bản và sẽ còn tiếp tục cập nhật thêm các tính năng mới ở những phiên bản tiếp theo

Đề tài sử dụng vapor phiên bản 4.0.0, được phát hành ngày 31 tháng 3 năm 2020

7 Nguồn: https://vapor.codes/

Trang 34

13

3.2.2 SwiftUI

Hình 3.5: Logo SwiftUI Framework8

Trong WWDC20199, Apple đã gây bất ngờ cho các nhà phát triển khi công bố một framework hoàn toàn mới – SwiftUI Đây là sự thay đổi lớn nhất trong hệ sinh thái của nhà phát triển Apple (bao gồm iOS, iPadOS, macOS, tvOS và watchOS) kể từ khi Swift ra mắt

Với UIKit được Apple cung cấp để phát triển giao diện trước đây, nhà phát triển luôn phải cân nhắc giữa việc sử dụng Storyboards hay xây dựng giao diện hoàn toàn bằng code Nhưng việc giới thiệu UI framework mới này, Apple cung cấp một cách mới sử dụng cú pháp lập trình mô tả giúp viết code dễ dàng hơn, ít dòng code hơn so với UIKit

SwiftUI cung cấp khả năng xem trước của giao diện hoàn chỉnh, mọi thay đổi trên code sẽ lập tức được thể hiện trên canvas Nó cũng có thể tự động tạo mã nguồn khi ta thêm UI component trực quan dựa trên kéo thả

8 Nguồn: https://developer.apple.com/xcode/swiftui

9 WWDC là viết tắt của Apple Wordwide Developers Conference, hội nghị được Apple tổ chức hằng năm nhằm giới thiệu các phần mềm mới và công nghệ để phát triển phần mềm

Trang 35

14

Hình 3.6: Triển khai mã nguồn hiệu ứng trái tim bằng SwiftUI10

Với SwiftUI, sẽ không còn khái niệm InterfaceBuilder và storyboards Nó được thay thế bởi trình soạn thảo code và preview canvas Bạn viết code lên trình soạn thảo, sau đó Xcode sẽ render giao diện theo thời gian thực và hiển thị lên canvas

Tương tự storynboards, View controller cũng không còn được sử dụng để làm khối

xử lý trung tâm để giao tiếp với View và Model Thay vào đó, việc giao tiếp và chia sẻ dữ liệu được thực hiện bởi một framework mới gọi là Combine

Apple cung cấp cho nhà phát triển một UI framework thống nhất để xây dựng cho tất cả các loại Apple devices Giao diện được viết cho iOS có thể dễ dàng chuyển sang sử dụng cho ứng dụng watchOS/ macOS Điều này được thực hiện nhờ vào phương pháp lập trình dạng mô tả

10 Nguồn: https://www.appcoda.com/learnswiftui

Trang 36

15

Hình 3.7: Nút hiển thị Toggle trên macOS và iOS11

Sau khi WWDC2020 được tổ chức, mặc dù nhiều UI component đã được bổ sung nhưng vẫn còn tương đối hạn chế, một số UI component sẽ phải tự viết lại dựa trên SwifUI và UIKit Để làm được điều này, ta sử dụng Representable Protocols mà Apple cung cấp Phiên bản SwiftUI được sử dụng là phiên bản 2.0, được giới thiệu vào ngày 22 tháng 6 năm 2020

3.2.3 Combine

Combine framework là một framework mới được Apple giới thiệu năm 2019, cung cấp declarative Swift API để xử lý giá trị qua thời gian (processing values over time) Gồm có 3 thành phần chính:

- Publisher: Những thứ có thể tạo ra các giá trị là các đối tượng có sẵn hoặc do người dùng tự định nghĩa

- Operators: Những thứ mà sẽ làm việc với các giá trị

- Subscribers: Nhứng thứ sẽ quan tâm, lắng nghe sự thay đổi của các giá trị đó

Publisher:

11 Nguồn: https://www.appcoda.com/learnswiftui/

Trang 37

16

Những đối tượng (objects) đáp ứng (conform) với Publisher sẽ chuyển giao một cách tuần tự các giá trị theo thời gian Protocols này liên kết với 2 kiểu dữ liệu: Output – kiểu dữ liệu mà nó sẽ tạo ra, và Failure – kiểu dữ liệu lỗi mà có thể nó sẽ gặp phải

Mỗi publisher có thể phát ra nhiều sự kiện:

- Một giá trị output của kiểu dữ liệu Output

có thể kết hợp nhiều operators để xử lý các bài toán phức tạp

Kết hợp các thành phần:

Trang 38

17

Hình 3.8: Sơ đồ mô tả hoạt động của Combine Framework12Một publisher bắt đầu chuyển giao dữ liệu (values) khi chúng ta gọi hàm subscribe(_:) lên nó Tại lúc này, publisher sẽ gửi subscription tới subscriber Subscriber có thể sử dụng subscription này để yêu cầu publisher gửi các values vô hạn hoặc hữu hạn Sau đó, publisher sẽ liên tục gửi các sự kiện (events) tới subscribers cho đến khi kết thúc hoặc gặp lỗi

Một minh hoạ đơn giản, có thể coi các publishers như các cảng sông ở thượng nguồn, nó sẽ tạo ra các con thuyền mang theo hàng hoá (values), trên đường trôi dạt về hạ nguồn sẽ đi qua các trạm kiểm soát (operators), hàng hoá được kiểm tra

và thay đổi cho phù hợp Khi đến hạ nguồn, người quản lý ở đó (subcribers) sẽ nhận được thông báo hàng hoá gửi đến đã thành công, yêu cầu kết thúc quá trình chuyển hàng Hoặc hàng hoá vẫn liên tục truyền đến, tuỳ vào trường hợp hàng hoá

đó là gì, trạng thái và tình trạng như thế nào mà có cách xử lý phù hợp Trong trường hợp chuyển hàng thất bại, người quản lý cũng sẽ nhận được thông báo và chuẩn bị sẵn các phương án xử lý

12 Nguồn: https://www.raywenderlich.com

Trang 39

18

3.2.4 WebSocket

WebSocket là một giao thức mạng cho phép giao tiếp 2 chiều giữa máy chủ và máy khách Không giống HTTP - giao thức sử dụng dạng request và response, WebSocket có thể gửi gói tin từ 1 trong 2 hướng tại bất cứ thời điểm nào

Hình 3.9: Mô tả cách hoạt động của WebSocket13Một kết nối WebSocket bắt đầu với quá trình bắt tay bắt đầu từ phía client Đầu tiên, client gửi một HTTP request chứa 2 headers đặc biệt: Upgrade: WebSocket

và Connection: Upgrade, cùng với các dữ liệu khác như authencation, …

Server ngay khi nhận được request sẽ phản hồi một mã trạng thái HTTP 101 Switching Protocols để cho client biết: Cả 2 đã sử dụng từng giao tiếp thông qua HTTP, nhưng trong lần tiếp theo sẽ sử dụng giao thức khác Cùng với mã HTTP

101, nó cũng kèm theo headers Upgrade: WebSocket và Connection: Upgrade Lúc này, quá trình bắt tay hoàn tất và kết nối WebSocket cũng sẵn sàng để sử dụng

WebSocket là một giao thức gửi theo khung (framed protocol), nếu dữ liệu (message) quá lớn, nó sẽ được chia thành các khối rời rạc (frame) để gửi đi Mỗi

13 Nguồn: https://www.raywenderlich.com

Trang 40

19

frame bao gồm frame type, độ dài payload và một phần dữ liệu Mô tả các thành phần trong 1 frame được biểu ở hình bên dưới

Hình 3.10: Mô tả các thành phần trong mỗi Frame gửi đi bởi WebSocket14

FIN: Đây là 1 bit thể hiện rằng nó có phải là frame cuối cùng hay vẫn còn những

frame khác đang được gửi phía sau

Opcode: Gồm 4 bits thể hiện loại dữ liệu được gửi là gì và cách để xử lý payload

data

MASK: Đây là 1 bit cho biết dữ liệu có được maskd Dữ liệu giữ clident-server

luôn phải được masked

Payload Length: Sử dụng 7, 23 hoặc 71 bits để nói lên độ lớn của payload data

theo đơn vị bit Phần này tương tự với Content-Length của HTTP header

14 Nguồn: https://tools.ietf.org

Ngày đăng: 05/09/2021, 20:51

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w