Một ứng dụng mua bán đa nền tảng là một giải pháphiệu quả để giúp người dùng tiếp cận với những sản phẩm mà họ cần một cách dễ dàng và thuận tiện trên nhiều nền tảng khác nhau như websit
Trang 1Sinh viên thực hiện:
20520630 – Vũ Đức Mạnh
20520628 – Đinh Quang Mạnh
Trang 2Sinh viên thực hiện:
20520630 – Vũ Đức Mạnh
20520628 – Đinh Quang Mạnh
Trang 3Thành phố Hồ Chí Minh, tháng 09 năm 2023
ĐỀ CƯƠNG CHI TIẾTTÊN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG HỖ TRỢ MUA BÁN ĐA NỀN TẢNG CÓ TÍCH HỢP RECOMMENDER SYSTEM
Cán bộ hướng dẫn: ThS Nguyễn Công Hoan
Thời gian thực hiện: Từ ngày 05/09/2023 đến ngày 31/12/2023
Sinh viên thực hiện:
Hiện nay, thị trường mua bán qua internet đang phát triển rất mạnh Người dùng
có nhu cầu mua bán các sản phẩm trực tuyến ngày càng tăng, đặc biệt là với tìnhhình dịch bệnh hiện nay Một ứng dụng mua bán đa nền tảng là một giải pháphiệu quả để giúp người dùng tiếp cận với những sản phẩm mà họ cần một cách
dễ dàng và thuận tiện trên nhiều nền tảng khác nhau như website, ứng dụngtrên di động, hoặc trên các nền tảng mạng xã hội Vì vậy, nghiên cứu về Ứngdụng mua bán đa nền tảng là rất cần thiết và có tính ứng dụng cao trong thực tế.Điều này đảm bảo cho người dùng sẽ tiếp cận đến nhiều khách hàng hơn và nângcao khả năng bán hàng của họ Ngoài ra, ứng dụng mua bán đa nền tảng còn giúpcho người tiêu dùng dễ dàng tìm kiếm sản phẩm mà họ muốn mua trên nhiềunền tảng khác nhau, đồng thời giúp họ so sánh giá cả và chất lượng sản phẩm,gợi ý những sản phẩm liên quan mà khách hàng có thể thích Để giải quyết vấn
đề trên, nhóm em quyết định chọn đề tài Ứng dụng mua bán đa nền tảng, nhằmphát triển một ứng dụng cung cấp môi trường, cũng như một thị trường online
Trang 4để người dùng có thể trao đổi, mua bán các loại mặt hàng sản phẩm trên nềntảng di động IOS và Android.
Tương tác giữa người mua và người bán
Recommeder system gợi ý sản phẩm liên quan
Cung cấp giao diện thân thiện, tiện dụng, phù hợp với mọi đối tượng khách hàng.Cung cấp giao diện quản lý tài khoản nội bộ, đăng và chỉnh sửa tin tức, quản lýhỏi đáp, giải quyết thắc mắc dành cho nhân viên trung tâm, phân quyền theotừng vị trí
Cung cấp các thống kê, biểu đồ trực quan số liệu, từ đó đề xuất ra các mặt hàngđang được nhiều người quan tâm nhất
Phạm vi:
Đề tại xây dựng một ứng dụng cung cấp một số tính năng cơ bản về mua bánquần áo online với các phân quyền chính:
Về phía công ty:
Admin sẽ là người có quyền hạn cao nhất, quản lí dữ liệu và nhân viên khácManager là người quản lí dữ liệu phim, xuất chiếu, rạp …
Trang 5Censor là người kiểm duyệt các bài đăng từ khách hàng
Phân tính, đánh giá các ứng dụng tương tự
Khảo sát lấy ý kiến người dùng
Kết quả mong đợi:
Biết được quy trình xây dựng một ứng dụng cơ bản thông qua các công nghệ đã
đề ra
Biết được thủ tục thanh toán, quản lí hệ thống quản lí sản phẩm
Xây dựng được một ứng dụng mobile có ứng dụng recommender system
Ứng dụng có khả năng mở rộng trong tương lai
Trang 6LỜI CẢM ƠN
Đồ án với đề tài “XÂY DỰNG HỆ THỐNG HỖ TRỢ MUA BÁN ĐA NỀN TẢNG CÓTÍCH HỢP RECOMMENDER SYSTEM” là minh chứng cho quá trình cố gắng khôngngừng trong việc tìm tòi, học hỏi khi 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ếtbài toán thực tế
Trong quá trình thực hiện đồ án, em đã nhận được sự hướng dẫn tận tình từ thầy Mộtcá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à Thầy Nguyễn CôngHoan 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ạitrường Đó là tài sản quý báu đã giúp em hoàn thành đồ á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 Nguyễn Công Hoan, người đã trực tiếphướ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ác thành viên trong nhóm đã luôn nỗ lực phấn đấu, lắng nghe và luôn sẵn sàng hỗ trợ nhau trong suốt cả quá trình học tập và thực hiện đồ án Để đạt được kết quả như ngày hôm nay
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 đồ án này
Thành phố Hồ Chí Minh, tháng 12 năm 2023Sinh viên 1 Sinh viên 2
Vũ Đức Mạnh Đinh Quang Mạnh
Trang 7NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 8DANH MỤC HÌNH ẢNH
Hình 12 Sơ đồ phân rã chức năng nhân viên 34Hình 13 Sơ đồ phân rã chức năng customer 34
Hình 18 Sequence Diagram Cập nhật tài khoản 53
Hình 22 Sơ đồ liên kết các màn hình của khách hàng 57Hình 23 Sơ đồ liên kết các màn hình của khách hàng 57
Trang 10DANH MỤC BẢNG BIỂU
Bảng 6 Đặc tả use case đăng ký tài khoản 40
Bảng 8 Đặc tả use case cập nhật thông tin tài khoản 42Bảng 9 Đặc tả use case tìm kiếm sản phẩm 42Bảng 10 Đặc tả use case sản phẩm yêu thích 43Bảng 11 Đặc tả use case xem thông tin chi tiết sản phẩm 44Bảng 12 Đặc tả use case xóa sản phẩm trong giỏ hàng 45Bảng 13 Đặc tả use case xóa sản phẩm trong danh sách yêu thích 45Bảng 14 Đặc tả use case thêm sản phẩm muốn bán 46Bảng 15 Đặc tả use case xóa sản phẩm muốn bán 46
Bảng 18 Đặc tả use case thêm sản phẩm muốn bán 49
Trang 113.2 Yêu cầu tính năng
3.3 Phân tích yêu cầu chức năng
3.3.1 Admin
3.3.2 Nhân viên
3.3.3 Khách hàng
3.4 Phân tích yêu cầu phi chức năng
3.5 Phân tích yêu cầu người dùng
3.6 Sơ đồ Use case
3.6.1 Danh sách tác nhân
Trang 123.6.2 Danh sách Use case
3.6.3 Mô tả chi tiết Use case
3.7 Class Diagram
3.8 Sequence Diagram
3.8.1 Sequence Diagram Đăng nhập
3.8.2 Sequence Diagram Đăng ký
3.8.3 Sequence Diagram Cập nhật tài khoản3.8.4 Sequence Diagram Đặt hàng
3.8.5 Sequence Diagram Đăng bán
3.8.6 Sequence Diagram Thêm sản phẩmChương 4 THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG4.1 Sơ đồ liên kết màn hình
Trang 13Chương 5 CÀI ĐẶT VÀ KIỂM THỬ
5.1 Môi trường cài đặt và kiểm thử:
Trang 14Chương 1 GIỚI THIỆU TỔNG QUAN ĐỀ TÀI1.1 Lý do chọn đề tài
Hiện nay, thương mại điện tử đang ngày càng phát triển, và người mua hàng ngày càngtìm kiếm các nền tảng mua bán trực tuyến để mua sản phẩm và dịch vụ Việc phát triểnmột ứng dụng mua bán đa nền tảng có thể giúp chúng ta tận dụng cơ hội thị trường vàthu hút một số lượng lớn khách hàng tiềm năng Ngoài ra, người dùng truy cập Internetchủ yếu thông qua các thiết bị di động như điện thoại thông minh và máy tính bảng.Một ứng dụng mua bán đa nền tảng cho phép khách hàng truy cập và mua hàng từ bất
kỳ thiết bị di động nào, tạo ra trải nghiệm mua sắm thuận tiện và tiện ích Với một ứngdụng mua bán đa nền tảng, chúng ta có thể tiếp cận và phục vụ khách hàng trên nhiềunền tảng khác nhau, bao gồm các hệ điều hành di động (Android, iOS), trình duyệt web
và có thể mở rộng thậm chí đến các nền tảng điện tử khác như smart TV hoặc thiết bịđeo
Mặc khác, ứng dụng giúp tạo ra một trải nghiệm mua sắm nhất quán cho khách hàngtrên tất cả các nền tảng Điều này đảm bảo rằng khách hàng có thể truy cập vào các sảnphẩm và dịch vụ của bạn một cách dễ dàng và thuận tiện, không phụ thuộc vào thiết bịhoặc nền tảng mà họ đang sử dụng
Sử dụng một ứng dụng mua bán đa nền tảng có thể giúp mở rộng phạm vi kinh doanh
và tăng doanh số bán hàng Bằng cách tiếp cận các khách hàng trên nhiều nền tảng, ta
có thể thu hút đối tượng khách hàng mới và tạo ra một kênh bán hàng bổ sung để tăngdoanh thu và lợi nhuận
1.2 Mục tiêu
● Hoàn thiện thêm ứng dụng mobile với giao diện thân thiện, màu sắc hài hòa, bốcục hợp lí
Trang 15● Đáp ứng được các tính năng cần thiết với ngôn ngữ Javascript, công nghệ mớiReatcJS, ExpressJS và chuẩn bảo mật JWT
● Giúp khách hàng có thể xem thông tin sản phẩm, đánh giá sản phẩm cũng nhưthực hiện thao tác mua hàng, thanh toán
● Hỗ trợ việc tìm kiếm theo nhiều bộ lọc khác nhau
● Có hệ thống quản lý dữ liệu: quản lý sản phẩm, tài khoản, các đơn hàng đã đặt,thông tin cá nhân
● Hỗ trợ quản lý thống kê doanh thu, báo cáo
● Nghiên cứu, phát triển các thuật toán, giải pháp với ngôn ngữ Python, công nghệ
● Gợi ý khách hàng các sản phẩm tương tự với một sản phẩm cụ thể
● Đưa ra các sản phẩm mà khách hàng có thể thích dựa vào hành vi của các kháchhàng tương tự
● Đề xuất các sản phẩm liên quan dựa vào những sản phẩm đã yêu thích
1.3 Phạm vi
Phát triển hệ thống khuyến nghị tích hợp với quản lý với tính năng hỗ trợ khách hàng:
● Có loại tương tự với một sản phẩm cụ thể
● Các sản phẩm khách hàng có thể thích dựa vào hành vi của các khách hàng tươngtự
● Dựa vào những sản phẩm đang hot hiện nay
Trang 161.4 Đối tượng
● Người mua: Đây là nhóm người sử dụng chính của ứng dụng Người mua muốntìm kiếm và mua các sản phẩm hoặc dịch vụ trực tuyến một cách thuận tiện và dễdàng Họ muốn có trải nghiệm mua sắm trực tuyến tốt, tìm kiếm sản phẩm dễdàng, so sánh giá cả, đánh giá và đánh giá sản phẩm, và thực hiện thanh toán antoàn
● Người bán: Đối tượng này bao gồm các doanh nghiệp, cửa hàng, người bán lẻhoặc cá nhân muốn tiếp cận thị trường trực tuyến và bán hàng qua ứng dụng Họmuốn có một nền tảng để quảng bá, quản lý và bán sản phẩm hoặc dịch vụ củamình Người bán muốn có cơ hội tiếp cận đến một số lượng lớn khách hàng tiềmnăng, quản lý đơn hàng, cung cấp hỗ trợ sau bán hàng và tăng doanh thu
● Người quản lý hệ thống: Đối tượng này là nhóm người quản lý và điều hành ứngdụng mua bán đa nền tảng Họ có nhiệm vụ quản lý cơ sở dữ liệu, quản lý tàikhoản người dùng, theo dõi hoạt động giao dịch, đảm bảo an ninh và bảo mật dữliệu, cung cấp hỗ trợ kỹ thuật và đảm bảo sự ổn định và hiệu suất của hệ thống
1.5 Phương pháp thực hiện
● Tìm hiểu, phân tích quy trình xây dựng một website bằng các công nghệ đã đề ra
● Phân tính, đánh giá các ứng dụng tương tự
● Tìm hiểu tổng quan về Recommend System và các thuật toán liên quan
● Hiện thực hệ thống
1.6 Công nghệ sử dụng
● Front-end: ReactJS
Trang 17● Back-end: NodeJS, Python
● Database: Firebase
1.7 Kết quả mong đợi
● Biết được quy trình xây dựng một ứng dụng mobile cơ bản thông qua các côngnghệ đã đề ra
● Ứng dụng có khả năng mở rộng trong tương lai
● Có khả năng nghiên cứu, phân tích khi gặp một bài toán mới
Cả nhóm
lại Đồ án 1
- Tìm hiểu tổng quan về
Recommended System
- Xây dựng cơ sở dữliệu
Trang 18recommender systems
filtering recommender systems
Trang 19Amazon sử dụng nó để đề xuất sản phẩm cho khách hàng
Netflix sử dụng gợi ý phim cho người dùng
YouTube sử dụng nó để đề xuất các video và quyết định video sẽ phát tiếp theo trên chế
Trang 20Nhìn chung, hệ thống Recommender System có thể được chia thành 4 loại chính:
Simple Recommenders: Đưa ra các đề xuất tổng quát cho mọi người dùng, dựa trên mức
độ phổ biến và/hoặc thể loại phim Ý tưởng cơ bản đằng sau hệ thống này là những bộphim nổi tiếng hơn và được giới phê bình đánh giá cao hơn sẽ có xác suất được khán giảbình thường thích cao hơn
Content-based Recommenders: Đề xuất các mặt hàng/phim tương tự dựa trên một mặt
hàng/phim cụ thể Hệ thống này sử dụng siêu dữ liệu mục, chẳng hạn như thể loại, đạodiễn, mô tả, diễn viên, v.v cho phim, để đưa ra các đề xuất này Ý tưởng chung đằng saucác hệ thống giới thiệu này là nếu một người thích một mặt hàng cụ thể, họ cũng sẽthích một mặt hàng tương tự với nó Và để khuyến nghị điều đó, nó sẽ sử dụng siêu dữliệu mục trước đây của người dùng Một ví dụ điển hình có thể là YouTube, nơi dựa trênlịch sử của bạn, nó gợi ý cho bạn những video mới mà bạn có thể xem
Collaborative filtering Recommenders: Những hệ thống này được sử dụng rộng rãi và
chúng cố gắng dự đoán “ratings” hoặc “preference” mà người dùng sẽ đưa ra một mặthàng dựa trên xếp hạng trước đây và sở thích của những người dùng khác Bộ lọc cộngtác không yêu cầu siêu dữ liệu mục giống như các bộ lọc dựa trên nội dung của nó
Hybrid Recommenders: Hybrid Filtering là sự kết hợp của hai giải thuật Content-based
Filtering và Collaborative Filtering: Hybrid Filtering được sử dụng mềm dẻo khi hệ thốngCollaborative Filtering không có các hành vi (ratings), khi đó hệ thống sẽ sử dụngContent-based Filtering và ngược lại, khi Content-based Filtering không có các featurecần thiết trong việc đánh giá thì hệ thống sẽ sử dụng Collaborative Filtering để thay thế
Content-based Recommendation Systems
Đối với phương pháp content-based, hệ thống sẽ đánh giá các đặc tính của items đượcrecommended Nó sẽ gợi ý các item dựa trên hồ sơ (profiles) của người dùng hoặc dựavào nội dung, thuộc tính (attributes) của những item tương tự như item mà người dùng
đã chọn trong quá khứ Ví dụ: một người rất thích ăn cam, vậy thì hệ thống gợi ý một
Trang 21loại trái cây tương tự với cam, ở đây là bưởi để đề xuất Cách tiếp cận này yêu cầu việcsắp xếp các items vào từng nhóm hoặc đi tìm các đặc trưng của từng item.
Hình 2 Mô tả thuật toán
Neighborhood-based Collaborative Filtering
Ý tưởng cơ bản của Neighborhood-Based Collaborative Filtering là xác định mức độquan tâm của một user tới một item dựa trên các users khác gần giống với user này.Việc gần giống nhau giữa các users có thể được xác định thông qua mức độ quan tâmcủa các users này tới các items khác mà hệ thống đã biết Ví dụ, A, B đều thích phimCCC, tức đều rate bộ phim này 5 sao Ta đã biết A cũng thích một phim AAA, vậy nhiềukhả năng B cũng thích bộ phim này
Neighborhood-based Collaborative Filtering trả lời 2 câu hỏi:
Làm thế nào xác định được sự giống nhau giữa hai users?
Trang 22Khi đã xác định được các users gần giống nhau (similar users) rồi, làm thế nào dự đoánđược mức độ quan tâm của một user lên một item?
Việc xác định mức độ quan tâm của mỗi user tới một item dựa trên mức độ quan tâmcủa similar users tới item đó còn được gọi là User-user collaborative filtering Có mộthướng tiếp cận khác được cho là làm việc hiệu quả hơn là Item-item collaborativefiltering Trong hướng tiếp cận này, thay vì xác định user similarities, hệ thống sẽ xácđịnh item similarities Từ đó, hệ thống gợi ý những items gần giống với những items màuser có mức độ quan tâm cao
Thuật toán
Công việc quan trọng nhất phải làm trước tiên trong User-user Collaborative Filtering làphải xác định được sự giống nhau (similarity) giữa hai users Dữ liệu duy nhất chúng ta
có là Utility matrix Y, vậy nên sự giống nhau này phải được xác định dựa trên các cột
tương ứng với hai users trong ma trận này Xét ví dụ:
Hình 3 Ma trận dữ liệu
Một cách trực quan, hành vi của u 0 giống với u 1 hơn là u 2, u 3, u 4, u 5, u 6 Từ đó có thể
dự đoán rằng u 0 sẽ quan tâm tới i2 vì u 1 cũng quan tâm tới item này
Giả sử có các users từ u 0 đến u 6 và các items từ i 0 đến i 4 trong đó các số trong mỗi ô
vuông thể hiện số sao mà mỗi user đã rated cho item với giá trị cao hơn thể hiện mức độ
Trang 23quan tâm cao hơn Các dấu hỏi chấm là các giá trị mà hệ thống cần phải đi tìm Đặt mức
độ giống nhau của hai users ui, uj là ¿(ui, uj) Vì vậy, một similiarity function tốt cần đảm
bảo:
¿(u 0 ,u 1)>¿(u 0 , u i),∀ i>1
Để đo similarity giữa hai users, cách thường làm là xây dựng feature vector cho mỗi userrồi áp dụng một hàm có khả năng đo similarity giữa hai vectors đó Chú ý rằng việc xâydựng feature vector này khác với việc xây dựng item profiles như trong Content-basedRecommendation Systems Các vectors này được xây dựng trực tiếp dựa trên Utilitymatrix chứ không dùng dữ liệu ngoài như item profiles Với mỗi user, thông tin duy nhấtchúng ta biết là các ratings mà user đó đã thực hiện, tức cột tương ứng với user đótrong Utility matrix Tuy nhiên, khó khăn là các cột này thường có rất nhiều misingratings vì mỗi user thường chỉ rated một số lượng rất nhỏ các items Cách khắc phục làbằng cách nào đó, ta giúp hệ thống điền các giá trị này sao cho việc điền không làm ảnhhưởng nhiều tới sự giống nhau giữa hai vector Việc điền này chỉ phục vụ cho việc tínhsimilarity chứ không phải là suy luận ra giá trị cuối cùng
Vậy mỗi dấu ‘?’ nên được thay bởi giá trị nào để hạn chế việc sai lệch quá nhiều? Mộtlựa chọn có thể nghĩ tới là thay các dấu ‘?’ bằng giá trị ‘0’ Điều này không thực sự tốt vìgiá trị ‘0’ tương ứng với mức độ quan tâm thấp nhất Một giá trị an toàn hơn là 2.5 vì nó
là trung bình cộng của 0, mức thấp nhất, và 5, mức cao nhất Tuy nhiên, giá trị này cóhạn chế đối với những users dễ tính hoặc khó tính Với các users dễ tính, thích tươngứng với 5 sao, không thích có thể ít sao hơn, 3 sao chẳng hạn Việc chọn giá trị 2.5 sẽkhiến cho các items còn lại là quá negative đối với user đó Điều ngược lại xảy ra vớinhững user khó tính hơn khi chỉ cho 3 sao cho các items họ thích và ít sao hơn chonhững items họ không thích
Một giá trị khả dĩ hơn cho việc này là trung bình cộng của các ratings mà user tương ứng
đã thực hiện Việc này sẽ tránh được việc users quá khó tính hoặc dễ tính, tức lúc nàocũng có những items mà một user thích hơn so với những items khác
Trang 24Chuẩn hoá dữ liệu:
Giá trị cao tương ứng với các user dễ tính và ngược lại Khi đó, nếu tiếp tục trừ từ mỗirating đi giá trị này và thay các giá trị chưa biết bằng 0, ta sẽ được normalized utilitymatrix có thể thắc mắc tại sao bước chuẩn hoá này lại quan trọng, câu trả lời ở ngayđây:
Việc trừ đi trung bình cộng của mỗi cột khiến trong trong mỗi cột có những giá trị dương
và âm Những giá trị dương tương ứng với việc user thích item, những giá trị âm tươngứng với việc user không thích item Những giá trị bằng 0 tương ứng với việc chưa xácđịnh được liệu user có thích item hay không
Về mặt kỹ thuật, số chiều của utility matrix là rất lớn với hàng triệu users và items, nếulưu toàn bộ các giá trị này trong một ma trận thì khả năng cao là sẽ không đủ bộ nhớ.Quan sát thấy rằng vì số lượng ratings biết trước thường là một số rất nhỏ so với kíchthước của utility matrix, sẽ tốt hơn nếu chúng ta lưu ma trận này dưới dạng sparsematrix, tức chỉ lưu các giá trị khác không và vị trí của chúng Vì vậy, tốt hơn hết, các dấu
‘?’ nên được thay bằng giá trị ‘0’, tức chưa xác định liệu user có thích item hay không.Việc này không những tối ưu bộ nhớ mà việc tính toán similarity matrix sau này cũnghiệu quả hơn
Cosine similarity:
Đây là hàm được sử dụng nhiều nhất, và cũng quen thuộc với các nhất Nếu các khôngnhớ công thức tính coscos của góc giữa hai vector u 1,u 2 trong chương trình phổ thông,thì dưới đây là công thức:
cosin e similarity(u 1 ,u 2)=cos(u 1,u 2)= uT 1u 2
¿∨u 1∨¿2.∨¿u 2∨¿2Trong đó u 1,2 là vectors tương ứng với users 1, 2 đã được chuẩn hoá như ở trên.
Có một tin vui là python có hàm hỗ trợ tính toán hàm số này một cách hiệu quả
Trang 25Độ similarity của hai vector là 1 số trong đoạn [-1, 1] Giá trị bằng 1 thể hiện hai vector toàn toàn similar nhau Hàm số coscos của một góc bằng 1 nghĩa là góc giữa hai vector
bằng 0, tức một vector bằng tích của một số dương với vector còn lại Giá trị cos bằng -1
hể hiện hai vector này hoàn toàn trái ngược nhau Điều này cũng hợp lý, tức khi hành
vi của hai users là hoàn toàn ngược nhau thi similarity giữa hai vector đó là thấp nhất Rating prediction:
Công thức phổ biến được sử dụng để dự đoán rating của u cho i là:
❑yi , u=∑uj ∈ N (u ,i) yi ,ujsim(u , uj)
trong đó N (u , i) là tập hợp kk users trong neighborhood (tức có similarity cao nhất)
của uu mà đã rated i
Việc hệ thống quyết định recommend items nào cho mỗi user có thể được xác định bằng nhiều cách khác nhau Có thể sắp xếp unrated items theo thứ tự tự lớn đến bé của các predicted ratings, hoặc chỉ chọn các items có normalized predicted ratings dương - tương ứng với việc user này có nhiều khả năng thích hơn
Trang 26Sự ra đời của React Native đã giải quyết được bài toán về hiệu năng và sự phức tạp khitrước đó người ta phải dùng nhiều loại ngôn ngữ native cho mỗi nền tảng di động Chính
vì thế lập trình React Native sẽ giúp tiết kiệm được phần lớn thời gian và công sức khithiết kế và xây dựng nên một ứng dụng đa nền tảng Javascript phù hợp với rất nhiều nềntảng khác nhau
Trang 272.2.2 JavaScript
Hình 5 JavaScript
JavaScript là một ngôn ngữ lập trình thông dịch phía client (thông thường chạy trongtrình duyệt web) hoặc phía server (với Node.js) Nó được sử dụng rộng rãi để tạo ra cácứng dụng web động, tương tác và đáp ứng
Ban đầu, JavaScript được phát triển để thực hiện các tính toán đơn giản trên trang web vàcung cấp các hiệu ứng động Tuy nhiên, với sự phát triển của web, JavaScript đã trởthành một ngôn ngữ mạnh mẽ cho phép viết ứng dụng web phức tạp hơn
JavaScript có cú pháp dễ học và linh hoạt, cho phép lập trình viên tương tác với các phần
tử trong trang web, thay đổi nội dung, xử lý sự kiện và giao tiếp với máy chủ để trao đổi
dữ liệu
Với JavaScript, bạn có thể thực hiện các tác vụ như kiểm tra dữ liệu đầu vào, xử lý sựkiện người dùng, thay đổi nội dung trang web động, tạo hiệu ứng đồ họa, giao tiếp vớimáy chủ và nhiều hơn nữa
JavaScript cũng có nhiều thư viện và frameworks phổ biến như React, Angular và Vue.js,giúp phát triển ứng dụng web phức tạp một cách dễ dàng và hiệu quả
Trang 282.2.3 React Navigation
Hình 6 React Navigation
React Navigation là một thư viện điều hướng được phát triển cho ứng dụng React Native
Nó cung cấp các công cụ và thành phần để quản lý việc điều hướng và chuyển đổi giữacác màn hình trong ứng dụng
React Navigation hỗ trợ các loại điều hướng phổ biến như điều hướng xếp chồng (stacknavigation), điều hướng tab (tab navigation), và điều hướng ngăn xếp (drawernavigation) Nó cung cấp một cách đơn giản và linh hoạt để xác định các tuyến đường(routes) và quản lý trạng thái điều hướng trong ứng dụng
Thư viện này cho phép bạn tạo các màn hình (screens) và khung (containers) để chứachúng Bạn có thể định nghĩa các tuyến đường, đăng ký màn hình với tên duy nhất, và sửdụng các hàm điều hướng để chuyển đổi giữa các màn hình
React Navigation cung cấp cách điều hướng và chuyển đổi màn hình một cách trơn tru vàlinh hoạt Nó cũng cho phép bạn tùy chỉnh giao diện và hiệu ứng điều hướng của ứngdụng Thư viện này đã trở thành một lựa chọn phổ biến trong việc xây dựng ứng dụngReact Native và được cộng đồng hỗ trợ rộng rãi
Trang 292.2.4 Expo Go
Hình 7 Expo Go
Expo Go là một ứng dụng di động cho phép chạy và xem trước ứng dụng di động đượcphát triển bằng Expo trên thiết bị di động Expo là một nền tảng phát triển ứng dụng diđộng cung cấp một bộ công cụ và dịch vụ để xây dựng ứng dụng di động đa nền tảngbằng JavaScript và React Native
Khi phát triển một ứng dụng bằng Expo, bạn có thể sử dụng Expo Go để xem trước ứngdụng trên điện thoại di động của mình ngay trong quá trình phát triển Điều này cho phépkiểm tra và thử nghiệm các tính năng của ứng dụng trên thiết bị di động thực tế một cáchthuận tiện
Expo Go giúp rút ngắn thời gian phát triển và thử nghiệm ứng dụng di động, và cung cấpmột trải nghiệm tương tự như khi chạy ứng dụng trực tiếp trên điện thoại di động
Trang 302.2.5 Firebase
Hình 8 Firebase
Firebase là một nền tảng phát triển ứng dụng di động và web do Google cung cấp Nócung cấp một loạt các dịch vụ đám mây để giúp phát triển và quản lý ứng dụng, bao gồm
cơ sở dữ liệu thời gian thực, xác thực người dùng, lưu trữ tệp, phân tích, thông báo đẩy,
và nhiều hơn nữa
Trong mối quan hệ với React Native, Firebase cũng cung cấp một bộ công cụ và thư viện
hỗ trợ cho việc phát triển ứng dụng React Native Firebase SDK cho React Native giúpbạn tương tác với các dịch vụ của Firebase từ ứng dụng React Native của mình
Với Firebase và React Native, bạn có thể sử dụng các tính năng như lưu trữ dữ liệu trong
cơ sở dữ liệu thời gian thực (Realtime Database hoặc Firestore), xác thực người dùng(Firebase Authentication), lưu trữ và quản lý tệp tin (Firebase Storage), gửi thông báo đẩy(Firebase Cloud Messaging), phân tích ứng dụng (Firebase Analytics), và nhiều dịch vụkhác
Firebase cung cấp một cách dễ dàng để tích hợp các tính năng mạnh mẽ và quản lý cáckhía cạnh cơ sở hạ tầng của ứng dụng của bạn mà không cần lo lắng về việc triển khai vàvận hành hạ tầng phức tạp Điều này giúp bạn tập trung vào phát triển chức năng và trảinghiệm người dùng của ứng dụng của mình
Trang 312.2.6 Django
Hình 9 Django
Django là phần mềm bạn có thể sử dụng để phát triển các ứng dụng web một cách nhanh chóng và hiệu quả Hầu hết các ứng dụng web có một số chức năng phổ biến, như xác thực, truy xuất thông tin từ cơ sở dữ liệu và quản lý cookie Các nhà phát triển phải viết mã cho chức năng tương tự vào mọi ứng dụng web mà họ viết Django giúp họ làm việc dễ dàng hơn bằng cách nhóm các chức năng khác nhau thành một tập hợp lớn các mô-đun có thể tái sử dụng, được gọi là một khung ứng dụng web Các nhà phát triển
sử dụng khung web Django để sắp xếp và viết mã của họ hiệu quả hơn và giảm đáng kể thời gian phát triển web
Trang 322.2.7 Python
Hình 10 Python
Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, được tạo ra bởi Guido van Rossum Python có cú pháp đơn giản và dễ sử dụng, do đó nó trở thành một trong những ngôn ngữ lập trình nhập môn tốt nhất cho người mới bắt đầu
Python có cấu trúc dữ liệu cao cấp mạnh mẽ và cách tiếp cận đơn giản nhưng hiệu quả đối với lập trình hướng đối tượng Cú pháp lệnh của Python là điểm cộng vô cùng lớn vì
sự rõ ràng, dễ hiểu và linh động, làm cho nó nhanh chóng trở thành một ngôn ngữ lý tưởng để viết script và phát triển ứng dụng trong nhiều lĩnh vực, ở hầu hết các nền tảng
Trang 33Chương 3 PHÂN TÍCH BÀI TOÁN3.1 Nghiệp vụ
Trang 34Đăng bán sản phẩm x
3.2 Yêu cầu tính năng
Hệ thống chạy trên nền tảng mobile, có khả năng truy cập ở tất cả mọi vị trí, thời điểm cókết nối internet
Một vài yêu cầu mà hệ thống cần đáp ứng:
Chức năng truy vấn: Đáp ứng yêu cầu truy vấn của người dùng như tìm kiếm, xem danhsách sản phẩm theo chủ đề,
Chức năng cập nhật: Chức năng cập nhật luôn được thực hiện và giảm thiểu tối đa saisót của người dùng
Chức năng truy vấn nhanh: Gợi ý sản phẩm
Trang 353.3 Phân tích yêu cầu chức năng
3.3.1 Admin
Hình 11 Sơ đồ phân rã chức năng Admin
Trang 373.4 Phân tích yêu cầu phi chức năng
● Ứng dụng sử dụng tiếng Anh, hoạt động ổn định trên nền tảng mobile
● Để thu hút được người dùng hứng thú sử dụng, các thao tác trên ứng dụng phảithật đơn giản Giao diện thân thiện, hiển thị nhiều hình ảnh trực quan
● Dữ liệu sản phẩm được cập nhật liên tục, đảm bảo trải nghiệm người dùng
● Các thông tin của người dùng được bảo mật và bảo đảm chỉ có những người cóthẩm quyền mới có thể truy cập vào các tài nguyên cụ thể
3.5 Phân tích yêu cầu người dùng
Hệ thống sử dụng kết quả khảo sát, nghiên cứu hiện trạng để tiến hành phân tích yêu cầu
và chức năng của hệ thống, được biểu diễn bằng ngôn ngữ mô hình hoá (UML)
Trang 383.6 Sơ đồ Use case
Hình 14 Sơ đồ Use case
Trang 393.6.1 Danh sách tác nhân
1 Người dùng Người dùng, là người dùng khi không đăng nhập
2 Khách hàng Khách hàng, là người dùng có thể đăng nhập vào ứng
dụng và sử dụng các chức năng của ứng dụng
3 Admin Admin, là người quản lý ứng dụng, là người có quyền
quản lý sản phẩm, người dùng và hóa đơn
Bảng 3 Danh sách tác nhân
3.6.2 Danh sách Use case
1 Đăng nhập Dành cho Người dùng sở hữu tài khoản, đăng
nhập vào ứng dụng
2 Đăng ký Dành cho Người dùng khách, đăng ký tài
khoản mới
3 Quên mật khẩu Dành cho Người dùng sở hữu tài khoản, đặt
lại mật khẩu mới thông qua email
4 Đăng xuất Dành cho Người dùng sở hữu tài khoản, đăng
xuất khỏi ứng dụng
5 Cập nhật thông tin tài khoản Dành cho Người dùng sở hữu tài khoản, cập
nhật thông tin tài khoản cá nhân
6 Đổi mật khẩu Dành cho Người dùng sở hữu tài khoản, đổi
mật khẩu mới cho tài khoản cá nhân
7 Xem danh sách sản phẩm Xem danh sách các sản phẩm có trong cửa
hàng
8 Tìm kiếm sản phẩm Tìm kiếm sản phẩm có trong danh sách theo
tên
9 Xem thông tin chi tiết sản
phẩm Xem thông tin chi tiết sản phẩm
Trang 4010 Thêm sản phẩm vào giỏ hàng Thêm sản phẩm muốn mua vào giỏ hàng để
thanh toán
11 Quản lý giỏ hàng Quản lý danh sách sản phẩm đã thêm vô giỏ
hàng
12 Xóa sản phẩm trong giỏ hàng Xóa sản phẩm trong giỏ hàng
13 Sửa số lượng sản phẩm Tăng hoặc giảm số lượng sản phẩm muốn mua
14 Đặt hàng Khách hàng tiến hành thanh toán các sản
phẩm có trong giỏ
15 Quản lý danh sách yêu thích Quản lý danh sách sản phẩm yêu thích
16 Xóa sản phẩm trong danh
sách Xóa sản phẩm đã yêu thích trong danh sách
17 Xem sản phẩm được bán Xem các sản phẩm cũ đang được đăng bán
của người dùng khác
18 Quản lý sản phẩm bán Quản lý các sản phẩm người dùng đã đăng
bán
19 Thêm sản phẩm muốn bán Đăng sản phẩm mà người dùng muốn bán
20 Xóa sản phẩm muốn bán Xóa các sản phẩm người dùng đã đăng
21 Sửa sản phẩm muốn bán Sửa sản phẩm người dùng đã đăng bán
22 Thêm người dùng Dành cho admin, thêm người dùng sử dụng
ứng dụng
23 Xóa người dùng Dành cho admin, xóa người dùng
24 Thêm sản phẩm Dành cho admin, thêm sản phẩm vào cửa
hàng
25 Xóa sản phẩm Dành cho admin, xóa sản phẩm muốn xóa
26 Xóa hóa đơn Dành cho admin, xóa hóa đơn khách hàng đã
tạo
27 Sửa hóa đơn Dành cho admin, thay đổi trạng thái hóa đơn
Bảng 4 Danh sách Use case