ĐẠ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 CAO VIỆT HÒA NGUYỄN VIỆT HOÀNG ĐỒ ÁN 1 ỨNG DỤNG PHÂN PHỐI BEAT BẢN QUYỀN Copyright Beat Distribution A.
GIỚI THIỆU CHUNG
Lý do chọn đề tài
Ngày nay với sự phát triển mạnh mẽ của lĩnh vực thương mại điện tử, cũng như sự phát triển của đất nước, người dân ngày càng gia tăng nhu cầu mua bán hàng hóa, đặc biệt là mua bán hàng hóa trực tuyến, nơi mà mọi giao dịch đều được thực hiện nhanh chóng và tiện lợi Tuy nhiên, đối với các mặt hàng sản phẩm kỹ thuật số, ở dạng số hóa, dữ liệu, thường khó giao dịch hơn Beat nhạc là một ví dụ cụ thể Năm bắt được tình hình và nhu cầu sử dụng nhạc nền bản quyền ngày một tăng và nhu cầu phân phối ở lĩnh vực này vẫn chưa có quá nhiều sự cạnh tranh, nhóm đã phát triển ứng dụng phân phối beat bản quyền dựa trên framework Flutter Để phù hợp với quy mô của môn đồ án 1, cũng như dễ dàng hơn trong việc tạo lập, giải quyết và áp dụng các bài toán, dự án sẽ được xây dựng trên nền tảng ứng dụng Android, lập trình bằng ngôn ngữ Dart của framework Flutter , đồng thời các csdl sẽ được truyền theo thời gian thực với Firebase Ứng dụng
Trực quan về phân phối
Tập trung vào 1 loại hình sản phẩm Các sản phẩm trên ứng dụng được thể hiện trực quan hơn
Chủ yếu quản trị về phân phối ở đa nền tảng là chính Không quá trực quan về sản phẩm Đa dạng sản phẩm Đồ án mang lại khả năng linh hoạt về sản phẩm, mọi ngành hàng loại hàng đều có thể biểu diễn trên ứng dụng với các đặc trưng riêng của mỗi sản phẩm
Các ứng dụng buôn bán nhỏ lẻ thường chỉ chuyên về một loại sản phẩm và cung câp các thuộc tính cố định, dẫn đến việc khó chuyển đổi ngành hàng loại hàng.
Điểm mới và khác biệt về chức năng của đề tài so với một số nền tảng phân phối âm nhạc hiện nay
tảng phân phối âm nhạc hiện nay
1.2.1 Điểm khác biệt của đề tài Ứng dụng
Trực quan về phân phối
Tập trung vào 1 loại hình sản phẩm Các sản phẩm trên ứng dụng được thể hiện trực quan hơn
Chủ yếu quản trị về phân phối ở đa nền tảng là chính Không quá trực quan về sản phẩm
Trực quan về sản phẩm Đồ án mang lại khả năng linh hoạt về sản phẩm, trực quan về thông tin sản phẩm
Trực quan về các loại hình phân phối, các nền tảng phân phối hơn là về sản phẩm
1.2.2 Điểm mới nổi bật của đề tài
− Việc trực quan về hàng hóa là điểm nổi bật của đề tài, mang lại khả năng chuyển đổi mở rộng lĩnh vực kinh doanh mà không cần phải thay đổi mã nguồn điều này mang lại lợi thế cho doanh nghiệp trong việc nhanh chóng nắm bắt được thị trường
Tính khác biệt, cải thiện về chức năng so với các app hiện nay
− Khảo sát qua các ứng dụng hiện nay nhóm nhận thấy có một số hạn chế trong việc quản lý giỏ hàng và thanh toán Giỏ hàng chỉ có thể chọn mua tất cả chứ không thể tùy chọn những sản phẩm muốn thanh toán và lưu lại các sản phẩm chưa thanh toán Điều này đã làm dẫn đến sự hạn chế đối với lựa chọn của người dùng đồng thời cũng làm gia tăng thêm thao tác người dùng, khiên UX trở nên rắc rối hơn Do đó X Studio có hỗ trợ thêm tính năng chọn lựa sản phẩm sẽ chọn để đi đến thanh toán và lưu lại các sản chưa chọn
− Một số ứng dụng ngày nay vẫn còn sử dụng phương pháp load tất cả tển một màn hình, điều này làm giảm đi hiệu suất sản phẩm, cũng như trải nghiệm người dùng Việc áp dụng Paging và lazy load của X Studio sẽ làm thời gian tải của dữ liệu đồng đều, không làm mất nhiều thời gian cho người dùng.
Phạm vi nghiên cứu
− Tìm hiểu và áp dụng các bài toán về xử lý đặt hàng, hay bài toán về sự đa dạng hàng hóa
− Xây dựng ứng dụng cung cấp dịch vụ mua bán trực tuyến đến mọi hình thức hay thể loại beat khác nhau
− X Studio gồm 2 phần, phần ứng dụng cho người mua và ứng dụng cho người phân phối Cả 2 được xậy dựng bằng Flutter và Firebase
− Triển khai, đánh giá độ chính xác của từng phương pháp dựa trên dữ liệu thử nghiệm Áp dụng hệ thống gợi ý sản phẩm vào ứng dụng để gợi ý sản phẩm cho người dùng.
Đối tượng nguyên cứu
− Các công nghệ: o Flutter, Dart o Firebase
− Các bài toán về xử lý đặt hàng, tăng hiệu suất, đa dạng hàng hóa sản phẩm
− Đối tượng trong phạm vi đề tài hướng đến: o Tất cả doanh nghiệp, công ty, có nhu cầu sử dụng hoặc kinh doanh các sản phẩm âm nhạc o Khách hàng (Người tiêu dùng).
Phương pháp nguyên cứu
− Tìm hiểu các phương pháp hiện có
− Tìm hiểu nghiệp vụ, quy trình hoạt động của các ứng dụng thương mại điện tử và các ứng dụng phân phối sản phẩm bản quyền và độc quyền
− Phác họa hệ thống tổng quát (thiết kế cơ sở dữ liệu, xử lý dữ liệu, …) - Tham khảo các ứng dụng, nền tảng tương tự: Distrokid, Spotify , …
− Tham khảo ý kiến của giảng viên hướng dẫn để được định hướng đúng, đạt kết quả tốt nhất
− Thiết kế giao diện, cơ sở dữ liệu
− Vận dụng đưa ra giải pháp phù hợp cho các bài toán.
CÔNG NGHỆ SỬ DỤNG
Ngôn ngữ lập trình Dart
Dart là ngôn ngữ lập trình đa mục đích ban đầu được phát triển bởi Google và sau đó được Ecma (ECMA-408) phê chuẩn làm tiêu chuẩn Nó được sử dụng để xây dựng các ứng dụng web, server, máy tính để bàn và thiết bị di động Dart là một ngôn ngữ hướng đối tượng, được xác định theo lớp, với cơ chế garbage-collected, sử dụng cú pháp kiểu C để dịch mã tùy ý sang JavaScript Nó hỗ trợ interface, mixin, abstract, generic, static typing và sound type (2 cái cuối có thể hiểu là type-safe) Dart là ngôn ngữ mã nguồn mở và miễn phí, được phát triển trên GitHub Hiện nay Dart đã release phiên bản 2.2
2.1.2 Lý do sử dụng Dart
Các nhà phát triển tại Google và các nơi khác sử dụng Dart để tạo các ứng dụng chất lượng cao, quan trọng cho iOS, Android và web Với các tính năng nhắm đến sự phát triển phía khách hàng, Dart rất phù hợp cho cả ứng dụng di động và web Dart giúp bạn tạo ra những trải nghiệm đẹp, chất lượng cao trên tất cả các màn hình, với:
- Một ngôn ngữ được tối ưu hóa cho client
Môi trường phát triển tích hợp (IDE) Android Studio
2.2.1 Giới thiệu sơ lượt Android Studio
Android Studio là một phầm mềm bao gồm các bộ công cụ khác nhau dùng để phát triển ứng dụng chạy trên thiết bị sử dụng hệ điều hành Android như các loại điện thoại smartphone, các tablet
Android Studio được đóng gói với một bộ code editor, debugger, các công cụ performance tool và một hệ thống build/deploy (trong đó có trình giả lập simulator để giả lập môi trường của thiết bị điện thoại hoặc tablet trên máy tính) cho phép các lập trình viên có thể nhanh chóng phát triển các ứng dụng từ đơn giản tới phức tạp
Android Studio hỗ trợ các hệ điều hành Windows, Mac OS X và Linux, và là IDE chính thức của Google để phát triển ứng dụng Android gốc để thay thế cho Android Development Tools (ADT) dựa trên Eclipse
2.2.2 Một số điểm mạnh của android studio so với các IDE khác
− Một hệ thống xây dựng Gradle linh hoạt
− Trình mô phỏng nhanh và tính năng phong phú
− Một môi trường hợp nhất nơi bạn có thể phát triển cho tất cả các thiết bị Android
− Instant Run để đẩy các thay đổi vào ứng dụng đang chạy của bạn mà không cần xây dựng một APK mới
− Tích hợp GitHub để giúp bạn xây dựng các tính năng ứng dụng phổ biến và nhập mã mẫu
− Các công cụ và khuôn khổ thử nghiệm mở rộng
Cơ sở dữ liệu thời gian thực Firebase
2.3.1 Một số thông tin về firebase
Firebase là một dịch vụ cơ sở dữ liệu thời gian thực được cung cấp bởi Google và hoạt động trên nền tảng đám mây Nó giúp các lập trình phát triển nhanh các ứng dụng di động bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu
Dự án được ứng dụng ba trong số rất nhiều dịch vụ hỗ trợ của firebase bao gồm : Firebase Authentication : Dùng để đăng nhập, đăng kí thông tin khách hàng giúp xây dựng các hệ thống xác thực an toàn và dễ dàng hơn, đồng thời cải thiện trải nghiệm đăng nhập cho người dùng Firebase storage : Cung cấp dịch vụ lưu trữ file dưới dạng tệp âm thanh, hình ảnh,… Dùng để lưu trữ thông tin ứng dụng
2.3.2 Ứng dụng firebase vào đồ án
Việc xây dựng một server để lưu trữ hình ảnh các sản phẩm là một vấn đề cần thiết và quan trọng, firebase cung cấp một dịch vụ miễn phí là firebase storage cho phép lưu trữ và truy suất hình ảnh nhanh chóng dễ dàng Việc lưu trữ và truy suất hình ảnh hoàn toàn tự động thông qua công nghệ điện toán đám mây của google giảm bớt việc xử lý cho vấn đề lưu trữ hình ảnh.
Công cụ quản lý đồ án Notion
Notion là phần mềm ghi chú all in one Có thể hiểu nó giống như google doc + google sheet+ google keep + google calendar + google mail + google drive Mà bạn không cần phải chuyển qua lại các ứng dụng
Notion hoạt động trên cả 3 nền tảng Android, Windows, iOS và đồng bộ (sync) thông tin ngay lập tức, giúp cập nhật thông tin đến các thành viên trong nhóm tốt hơn.
Framework Flutter
Flutter là nền tảng phát triển ứng dụng đa nền tảng cho iOS và Android do Google phát triển được sử dụng để tạo ra các ứng dụng gốc (native app) cho Google
Flutter gồm 2 thành phần quan trọng:
Một SDK (Software Development Kit): Một bộ sưu tập các công cụ sẽ giúp bạn phát triển các ứng dụng của mình Điều này bao gồm các công cụ để biên dịch mã của bạn thành mã máy gốc (mã cho iOS và Android)
Một Framework (UI Library based on widgets): Một tập hợp các thành phần giao diện người dùng (UI) có thể tái sử dụng (button, text inputs, slider, v.v.) giúp bạn có thể cá nhân hóa tùy theo nhu cầu của riêng mình.
XÂY DỰNG HỆ THỐNG
Xây dựng kiến trúc hệ thống
3.1.1 Kiến trúc tổng thể hệ thống:
- Mô hình kiến trúc được sử dụng: Client - Server
Client-server model là một cấu trúc ứng dụng phân tán phân vùng nhiệm vụ hoặc khối lượng công việc giữa các nhà cung cấp tài nguyên hoặc dịch vụ, được gọi là máy chủ và người yêu cầu dịch vụ, được gọi là máy khách.
Thông thường máy khách và máy chủ giao tiếp qua mạng máy tính trên phần cứng riêng biệt, nhưng cả máy khách và máy chủ có thể nằm trong cùng một hệ thống.
Máy chủ lưu trữ máy chủ chạy một hoặc nhiều chương trình máy chủ, chương trình này chia sẻ tài nguyên của chúng với máy khách Một máy khách thường không chia sẻ bất kỳ tài nguyên nào của nó, nhưng nó yêu cầu nội dung hoặc dịch vụ từ máy chủ Do đó, khách hàng bắt đầu các phiên giao tiếp với máy chủ, các phiên này đang chờ các yêu cầu đến
Ví dụ về các ứng dụng máy tính sử dụng mô hình máy khách-máy chủ là email, in qua mạng và World Wide Web
Client-server gồm 2 thành phần chính:
- Client: Cung cấp giao diện cho phép người dùng yêu cầu dịch vụ từ máy chủ và hiển thị kết quả máy chủ trả về.
- Server: Chờ các yêu cầu đến từ máy khách và sau đó phản hồi chúng Lý tưởng nhất là máy chủ cung cấp giao diện minh bạch được tiêu chuẩn hóa cho máy khách để máy khách không cần biết về các chi tiết cụ thể của hệ thống (tức là phần cứng và phần mềm) đang cung cấp dịch vụ.
Phân tích thiết kế hệ thống
Sơ đồ use-case người dùng:
Sơ đồ use-case Admin:
STT Tên Actor Mô tả ngắn/ ghi chú
1 Người dùng Là tác nhân tác động chính lên các sản phẩm mua bán(beat)
2 Admin Người quản lý các hoạt động đăng tải, mua, bán
STT Tên của Use case Actor Mô tả ngắn/ ghi chú
1 Đăng ký Người dùng + Admin
Người dùng đăng ký tài khoản để sử dụng ứng dụng
2 Đăng nhập Người Người dùng đăng nhập vào hệ dùng + Admin thống
3 Đăng xuất Người dùng + Admin
Người dùng đăng xuất khỏi hệ thống
4 Tìm kiếm Người dùng + Admin
Người dùng tìm kiếm beat
5 Bộ lọc Người dùng + Admin
Người dùng thêm bộ lọc để đơn giản hoá việc tìm kiếm beat
6 Xem chi tiết beat Người dùng + Admin
Người dùng xem chi tiết beat (tên, giá bán, độ dài beat)
Người dùng xem thông tin giỏ hàng
Người dùng huỷ đơn hàng
Người dùng thanh toán đơn hàng trong giỏ hàng
10 Beat đã mua Người dùng
Người dùng xem danh sách các beat đã mua
11 Xem beat đã bán Admin Admin xem danh sách các beat đã bán
12 Thêm beat Admin Admin thêm beat vào hệ thống
13 Xoá beat Admin Admin xoá beat khỏi hệ thống
14 Sửa thông tin beat Admin Admin thay đổi thông tin beat
3.2.1.4 Đặc tả use case Đăng ký
Tên use case Đăng ký
Mô tả Người dùng, Admin tạo tài khoản để đăng nhập vào hệ thống
Hậu điều kiện Người dùng, Admin đăng ký thành công Luồng sự kiện chính ● Người dùng, Admin vào ứng dụng
● Người dùng, Admin bấm vào
● Người dùng, Admin điền thông tin
● Hệ thống thông báo thành công/thất bại Đăng nhập
Tên use case Đăng nhập
Mô tả Người dùng, Admin đăng nhập vào hệ thống để sử dụng các chức năng
Tiền điều kiện Đã có tài khoản
Hậu điều kiện Người dùng, Admin đăng nhập thành công Luồng sự kiện chính ● Người dùng, Admin vào ứng dụng
● Người dùng, Admin bấm vào
● Người dùng, Admin điền thông tin
● Hệ thống thông báo thành công/thất bại Đăng xuất
Tên use case Đăng xuất
Mô tả Người dùng, Admin đăng xuất khỏi ứng dụng
Tiền điều kiện Đã đăng nhập thành công vào ứng dụng
Hậu điều kiện Người dùng, Admin đăng xuất thành công Luồng sự kiện chính ● Người dùng, Admin vào ứng dụng
● Người dùng, Admin đến phần
● Người dùng, Admin bấm vào nút “Log Out”
● Hệ thống đưa Người dùng, Admin tới màn hình đăng nhập
Tên use case Tìm kiếm
Mô tả Người dùng, Admin tìm kiếm beat tại mục tìm kiếm
Tiền điều kiện Đã đăng nhập thành công vào ứng dụng
Hậu điều kiện Người dùng, Admin tìm kiếm thành công Luồng sự kiện chính ● Người dùng, Admin vào ứng dụng
● Người dùng, Admin đến phần
● Người dùng, Admin nhập thông tin vào thanh tìm kiếm
● Hệ thống đưa ra thông tin đã được tìm kiếm hoặc báo lỗi không thành công
Tên use case Bộ lọc
Mô tả Người dùng, Admin thêm bộ lọc để giản lược kết quản tìm kiếm
Tiền điều kiện Đã đăng nhập thành công vào ứng dụng
Hậu điều kiện Người dùng, Admin tìm kiếm thành công Luồng sự kiện chính ● Người dùng, Admin vào ứng dụng
● Người dùng, Admin đến phần
● Người dùng, Admin nhập thông tin vào thanh tìm kiếm
● Người dùng, Admin thêm bộ lọc sau khi hệ thống đưa ra kết quả tìm kiếm lần đầu
● Hệ thống đưa ra kết quả tìm kiếm hoặc báo lỗi không thành công
Tên use case Xem chi tiết beat
Mô tả Người dùng, Admin xem chi tiết beat
Tiền điều kiện Đã đăng nhập thành công vào ứng dụng Hậu điều kiện Người dùng, Admin xem được chi tiết beat Luồng sự kiện chính ● Người dùng, Admin vào ứng dụng
● Người dùng, Admin bấm vào 1 beat bất kì được hiển thị tại trang chủ
● Hệ thống hiển thị thông tin beat hoặc báo lỗi thất bại
Tên use case Giỏ hàng
Mô tả Người dùng xem thông tin giỏ hàng
Tiền điều kiện Đã đăng nhập thành công vào ứng dụng Hậu điều kiện Người dùng xem được chi tiết giỏ hàng
Luồng sự kiện chính ● Người dùng vào ứng dụng
● Người dùng bấm vào phần giỏ hàng
● Hệ thống hiển thị thông tin giỏ hàng
Tên use case Huỷ đơn
Mô tả Người dùng huỷ đơn hàng
Tiền điều kiện Đã đăng nhập thành công vào ứng dụng
Hậu điều kiện Người dùng huỷ đơn hàng thành công
Luồng sự kiện chính ● Người dùng vào ứng dụng
● Người dùng bấm vào phần giỏ hàng
Tên use case Thanh toán
Mô tả Người dùng thanh toán giỏ hàng
Tiền điều kiện Đã đăng nhập thành công vào ứng dụng Hậu điều kiện Người dùng thanh toán giỏ hàng thành công Luồng sự kiện chính ● Người dùng vào ứng dụng
● Người dùng bấm vào phần giỏ hàng
● Người dùng tick vào các beat muốn thanh toán
● Người dùng điền email nhận beat
● Người dùng xác nhận thanh toán
● Hệ thống thông báo thành công hoặc báo lỗi
Tên use case Thêm beat
Mô tả Admin thêm beat lên hệ thống
Tiền điều kiện Đã đăng nhập thành công vào ứng dụng
Hậu điều kiện Admin thêm beat thành công
Luồng sự kiện chính ● Admin vào ứng dụng
● Admin bấm vào phần quản lý beat
● Admin bấm vào button “(+) Upload Beat”
● Admin thêm thông tin beat
● Admin bấm đồng ý với các điều khoản, bản quyền
● Hệ thống hiển thị thành công hoặc báo lỗi khi thất bại
Tên use case Xoá beat
Mô tả Admin xoá beat khỏi hệ thống
Tiền điều kiện Đã đăng nhập thành công vào ứng dụng Hậu điều kiện Admin xoá beat thành công khỏi hệ thống Luồng sự kiện chính ● Admin đăng nhập thành công vào ứng dụng
● Admin vào phần quản lý beat
● Admin chọn những beat cần xoá
● Hệ thống hiển thị thành công hoặc báo lỗi
Tên use case Sửa thông tin beat
Mô tả Admin sửa thông tin beat
Tiền điều kiện Đã đăng nhập thành công vào ứng dụng
Hậu điều kiện Admin sửa thông tin beat
Luồng sự kiện chính ● Admin đăng nhập thành công vào ứng dụng
● Admin vào phần quản lý beat
● Admin chọn bấm vào Beat cần sửa
● Admin thay đổi thông tin beat
● Hệ thống hiển thị thành công hoặc báo lôi
Thiết kế giao diện
STT Tên màn hình Mô tả chức năng
1 Màn hình đăng nhập Màn hình đăng nhập chứa các ô thông tin đăng nhập cần điền từ người dùng và bên cạnh đó còn có các chức năng đăng ký và quên mặt khẩu
2 Màn hình đăng ký Chứa các ô text để điền thông tin người dùng Các check box để người dùng xác nhận các điều khoàn
Có button để quay lại trong trường hợp người dùng không muốn đăng kí nữa Button xác nhận để đăng ký
3 Màn hình chính Màn hình chính từ trên xuống bao gồm có thanh search, filter, danh sách các beat hiện đang bán, danh sách các beat được recommend, và toolbar
4 Màn hình tìm kiếm Màn hình tìm kiếm gồm có thanh tìm kiếm để nhập thông tin tìm kiếm và hiển thị các kêt quả ở bên dưới thanh tìm kiếm
5 Màn hình quản lý beat Màn hình quả lý beat sẽ có button add beat và có các beat đã được add
6 Màn hình setting Màn hình setting có các chức năng cơ bản để setting app và setting tải khoản
7 Màn hình uploat beat Tại đây người dùng có thể thêm các thông tin về baet cần upload
8 Màn hình thông tin beat Khi người dùng bấm vào 1 beat bất kì trên màn hình chính thì màn hình thông tin beat sẽ được đẩy lên, tại đây hiển thị các thông tin cơ bản về beat đã được chọn
9 Pop up đăng xuất Pop-up đăng xuất sẽ được linh hoạt thay đổi theo hệ điều hành
10 Màn hình giỏ hàng Màn hình giỏ hàng bao gồm các beat đã được chọn vào giỏ hàng, lựa chọn sử dụng coupon, tiền tạm tính, và button thanh toán
11 Coupon popup Hiển thị các coupon có thể sử dụng
12 Màn hình thanh toán Có ô text để điền email nhận beat và button xác nhận thanh toán
13 Màn hình thanh toán thành công
Thông báo với người dùng là đã giao dịch thành công
3.3.2 Giao diện một số màn hình của ứng dụng Đăng nhập: Đăng ký:
Ưu nhược điểm và hướng phát triển
Ưu điểm và nhược điểm
- Hiện tại trên thị trường nội địa, việc phát triển các sản phẩm số hóa đang ngày càng phát triển Cùng với sự phát triển của nền âm nhạc hiện đại, các sản phẩm như X Studio đang ngày càng có nhiều sự ủng hộ từ các khách hàng có niềm đam mê với nghệ thuật nói chung và các khách hàng trẻ nói riêng Chính vì thế, việc xây dựng và phát triển app sẽ đạt một vài thành công nhất định trong tương lai gần
- Sản phẩm mà app hướng tới vẫn chưa có quá nhiều sự cạnh tranh tại thị trường nội địa, do vậy việc nhanh chóng có được sự ủng hộ từ khách hàng là không quá khó
- Vì đây là một mảng phân phối sản phẩm khá mới nên một vài yêu cầu và tính năng cần đạt được vẫn chưa được hoàn thiện Ví dụ như đảm bảo chất lượng âm nhạc, đảm bảo về nhu cầu bản quyền số trên toàn bộ sản phẩm beat Các thể loại beat phải được kiểm định chính xác qua các mức độ dao động của các giải âm tần hay gain âm thanh đã đạt đủ tiêu chí hay chưa,
- Chưa có quá nhiều sản phẩm tiền nhiệm để có thể học hỏi kinh nghiệm xây dựng và hát triển phần mềm cho phù hợp với nhu cầu của thị trường và xã hội.