Đồ án môn học Công nghệ phần mềm Chương trình tra cứu và phát nhạc BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM ĐỒ ÁN MÔN HỌC Công nghệ phần mềm CHƯƠNG TRÌNH TRA CỨU VÀ PHÁT NHẠC meMUSIC Giả[.]
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC Công nghệ phần mềm
CHƯƠNG TRÌNH TRA CỨU
VÀ PHÁT NHẠC meMUSIC
Giảng viên hướng dẫn: Trần Văn Ngân Sinh viên thực hiện: Lại Huy Dũng MSSV: 1911067453 - Lớp: 19DTHB3
TP Hồ Chí Minh, ngày 30 tháng 10 năm 2021
Trang 2MỤC LỤC
TRANG BÁO CÁO QUÁ TRÌNH LÀM VIỆC 5
LỜI MỞ ĐẦU 6
QUY TRÌNH CÁC CÔNG VIỆC THỰC HIỆN 7
I Quy trình khảo sát thu thập thông tin: 7
(1) Khảo sát về cách tìm kiếm âm nhạc: 7
(2) Khảo sát thể loại nhạc thịnh hành: 7
(3) Khảo sát nghệ sĩ thịnh hành: 8
(4) Khảo sát về giao diện: 8
II Quy trình thiết kế và xây dựng Database: 8
III Quy trình thiết kế và xây dựng phần mềm: 8
IV Quy trình kiểm thử: 8
GIỚI THIỆU TỔNG QUAN 9
I Công nghệ thực hiện: 9
II Đặc tả đối tượng: 9
III Đặc tả Database: 10
(1) Entity Relationship Diagram (ERD): 10
(2) Đối tượng Users: 10
(3) Đối tượng Artist (nghệ sĩ): 11
(4) Đối tượng Bài hát: 11
(5) Đối tượng Album: 13
(6) Đối tượng CT_Album: 13
Trang 3(8) Đối tượng CT_Playlist: 14
IV Về giao diện: 15
V Về chức năng: 17
ĐẶC TẢ CHI TIẾT CÁC CHỨC NĂNG 19
I Giao diện đăng nhập và đăng ký: 19
II Giao diện trang chính: 20
(1) Menu strip điều hướng: 21
(2) Tìm kiếm, chọn và play nhạc: 22
(3) Trang xem thông tin nghệ sĩ, album: 27
(4) Thanh menu điều hướng: 32
III Giao diện Thư viện nhạc cá nhân (Thư viện của tôi): 33
(1) Thanh menu điều hướng: 35
(2) Các chức năng của playlist: 37
IV Giao diện Nghệ sĩ Hot (Hot Artists): 39
V Giao diện Thể loại Hot (Hot Genres hay Top Collections): 41
CHI TIẾT QUY TRÌNH KIỂM THỬ 43
I Kiểm thử chức năng đăng nhập: 43
II Kiểm thử chức năng đăng ký: 43
III Kiểm thử chức năng tìm kiếm: 43
IV Kiểm thử chức năng chọn, nghe, xem thông tin bài hát, nghệ sĩ, album: 43
V Kiểm thử các chức năng của Playlist: 44
VI Kiểm thử nút phát tất cả: 44
VII Kiểm thử dòng chạy chữ: 44
VIII Kiểm thử thuật toán nút Back<<: 44
Trang 4IX Kiểm thử chức năng xem và sửa thông tin tài khoản: 44 LỜI KẾT 45
Trang 5TRANG BÁO CÁO QUÁ TRÌNH LÀM VIỆC
tưởng thực hiện chương trình
bao gồm các ý tưởng về việc thiết kế database,thiết kế giao diện, các chức năng và thuật toán
- Bắt đầu và cũng hoàn thành tạo database
- Bắt đầu nhập dữ liệu cho database và tải cácfile cần thiết: hình, nhạc
900 dòng dữ liệu và 400 file bài nhạc và 200file hình ảnh
- Trong quá trình xây dựng database cũng nảysinh thêm nhiều ý tưởng mới và hoàn thànhcode trước một vài thuật toán
- Bắt đầu đi vào quá trình thiết kế và codingphần mềm
- Trong quá trình làm cũng nảy sinh nhiều ýtưởng và nhiều lần nâng cấp thêm thuật toán,chức năng mới cũng như nâng cấp giao diệnđẹp mắt và hoàn chỉnh hơn
- Nộp bài
Trang 6LỜI MỞ ĐẦU
Những năm gần đây, vai trò của công nghệ đã và đang phát triển và lớn mạnh không ngừng.Các hệ thống điện tử, công nghệ thông tin áp dụng rộng rãi trong các quy mô, mô hình kinh doanhcủa các doanh nghiệp lớn nhỏ, trong đó có thị trường âm nhạc Từ hai cá thể tưởng chừng như không
có mối liên kết với nhau, thế nhưng với sự phát triển của khoa học công nghệ đã đóng góp một vaitrò không nhỏ trong sự phát triển của thị trường giải trí này Các nghệ sĩ, công ty âm nhạc ngoài pháthành đĩa than như thời trước nay đã áp dụng công nghệ nhạc số và đăng tải âm nhạc của mình lêncác ứng dụng phổ biến
Từ đó, chương trình mang tên: meMUSIC được tạo ra nhằm mục đích giúp người dùng tiếpcận đến các sản phẩm nhạc số dễ dàng hơn Với các thuật toán tìm kiếm, các chức năng quản lý nhạc
và playlist cá nhân tiện lợi, âm nhạc sẽ dễ dàng đến với mọi người hơn
Trang 7QUY TRÌNH CÁC CÔNG VIỆC THỰC HIỆN
I Quy trình khảo sát thu thập thông tin:
- Tổng thời gian thực hiện: 1 ngày
- Cách thực hiện khảo sát: phỏng vấn ba nhóm bạn có phong cách khác nhau
(1) Khảo sát về cách tìm kiếm âm nhạc:
- Trong chương trình có một chức năng gọi là chức năng tìm kiếm bài hát Thuật toán tìm kiếm
là một trong những thuật toán được đầu tư nhất của phần mềm Trong quá trình lên ý tưởng thựchiện phần mềm đã có bước đi thu thập khảo sát về cách mọi người tìm kiếm âm nhạc Có người sẽ
gõ tên bài hát, có người sẽ gõ tên nghệ sĩ hay thậm chí có người gõ tìm tên album để nghe Một phầnlớn người sẽ gõ cả tên bài hát + tên nghệ sĩ, hoặc theo thứ tự tên nghệ sĩ + tên bài hát để tìm kiếm.Nếu theo thuật toán tìm kiếm các bài hát có tên có chứa chữ trong khung tìm kiếm như thông thường
sẽ không đáp ứng ra được kết quả những người đùng gõ tìm kiếm như trên Vì vậy em đã thêm vàotrong thông tin bài hát trong database một thuộc tính gọi là keyword (từ khóa) Thuộc tính này lưutất cả keyword mà người dùng có thể tìm kiếm thông tin về bài hát này mà không được thể hiệntrong tên bài hát, bao gồm cả những tên dễ viết sai chính tả, tên tiếng Việt không gõ dấu Và chủ yếucác cụm từ khóa này được viết theo công thức: tên ca sĩ tên bài hát tên ca sĩ (Ví dụ từ khóa cho bàihát Team của Lorde: lorde team lorde), như thế sẽ đáp ứng khi người dùng gõ cả tên bài hát và tênnghệ sĩ dù theo thứ tự trước sau thế nào Điều đó giúp cho mọi người dễ tiếp cận đến âm nhạc hơn
- Cách thực hiện: khảo sát bằng phỏng vấn
(2) Khảo sát thể loại nhạc thịnh hành:
- Trước khi bắt đầu quy trình thiết kế phần mềm đã có bước khảo sát về các thể loại nhạc màmọi người yêu thích nhất để tổng hợp ra thành các bộ sưu tập (Collection) theo thể loại hot nhất chọnvào menu thể loại hot
- Cách thực hiện: khảo sát bằng phỏng vấn
Trang 8(3) Khảo sát nghệ sĩ thịnh hành:
- Tương tự với thể loại, quá trình phỏng vấn cũng hỏi về nghệ sĩ nào được yêu thích nhất haynổi tiếng và thịnh hành nhất để chọn vào menu nghệ sĩ hot
- Cách thực hiện: khảo sát bằng phỏng vấn
(4) Khảo sát về giao diện:
- Trong quy trình khảo sát phỏng vấn cũng thu thập một vài thông tin về việc người dùng thích
có giao diện trực quan và thế nào và ghi nhận vào bảng lên ý tưởng thiết kế giao diện
- Cách thực hiện: khảo sát bằng phỏng vấn
II Quy trình thiết kế và xây dựng Database:
- Thời gian lên ý tưởng thiết kế Database: trong vòng 1 ngày
- Thời gian nhập liệu và xây dựng Database: 9 ngày Ngoài nhập liệu database còn tải các dữliệu ngoài như các file hình, nhạc
- Tổng thời gian thực hiện: 9 ngày
III Quy trình thiết kế và xây dựng phần mềm:
- Thời gian lên ý tưởng thiết kế và thuật toán: diễn ra đồng thời trong lúc xây dựng database vàcoding
- Tổng thời gian hoàn thành xây dựng phần mềm bao gồm cả việc xây dựng database: 19 ngày
IV Quy trình kiểm thử:
- Các bước kiểm thử được thực hiện ngay sau khi đã hoàn thành code các thuật toán và event
Trang 9GIỚI THIỆU TỔNG QUAN
I Công nghệ áp dụng:
- Phần mềm lập trình Windows Form bằng ngôn ngữ C# thực hiện bằng chương trình VisualStudio Community 2019
- Database xây dựng trên SQL Server
- Phần mềm kết nối với SQL Server nhờ công nghệ Entity Framework của NET Framework
V Đặc tả đối tượng:
Phần mềm quản lý các đối tượng theo các thông tin và thuộc tính như sau:
- Phần mềm quản lý các user theo các thông tin tài khoản: username (mỗi người dùng cóusername khác nhau không phân biệt hoa thường), password, họ user, tên user và ngày tạo tài khoản
- Mỗi tài khoản sẽ có nhiều playlist khác nhau lưu các thông tin: tên playlist (các playlist củacùng một user không được phép trùng tên), ngày tạo Trong đó có một playlist các Bài hát đã thích làmặc định không cho phép user chỉnh sửa (đổi tên hoặc xóa)
- Phần mềm quản lý các bài hát trong database theo các thông tin: Tên bài hát, tên nghệ sĩ (mỗibài hát chỉ thuộc một nghệ sĩ phát hành, nếu có nghệ sĩ khác tham gia sẽ được tính là featuring, đượcghi ở tên bài hát), thể loại (bài hát có thể có nhiều thể loại), năm phát hành, số lượt nghe
- Ngoài bài hát phần mềm còn quản lý các album của nghệ sĩ trong database theo các thông tin:Tên album, tên nghệ sĩ phát hành, năm phát hành album Một bài hát có thể thuộc nhiều album khácnhau Nếu được phát hành lần đầu trong album thì trạng thái phát hành của bài hát sẽ là ‘Độc quyền’,hoặc có thể ‘Tái phát hành’ trong album khác Hoặc có thể là phát hành dưới dạng bản cover củanghệ sĩ khác hay đồng sở hữu bản quyền với nghệ sĩ khác
- Phần mềm cũng quản lý thông tin của nghệ sĩ: Tên nghệ sĩ, mức độ thịnh hành Một nghệ sĩ
có thể phát hành nhiều bài hát hoặc album nhưng album và bài hát chỉ thuộc một nghệ sĩ
Trang 10VI Đặc tả Database:
(1) Entity Relationship Diagram (ERD):
(5) Đối tượng Users:
- username: Username của user đồng thời cũng là khóa chính
- matkhau: Password not null
- HoUser: Họ của user, not null
- TenUser: Tên của user, not null
Trong phần mềm sẽ hiển thị họ tên user theo định dạng: họ user + tên user
- NgayUser: Ngày tạo tài khoản, định dạng datetime để dễ dàng tích hợp với ngôn ngữ C#.Thuộc tính được code bên phần mềm để tự động nhập thời gian hiện tại khi đăng ký
Trang 11(6) Đối tượng Artist (nghệ sĩ):
- MaArtist: đóng vai trò là khóa chính
- TenArtist: tên hiển thị của nghệ sĩ trong phần mềm, not null
- Indie: thể hiện độ thịnh hành của nghệ sĩ, lưu dưới dạng số, not null
Trong giới chuyên môn âm nhạc có một thuật ngữ gọi là ‘Indie’, có nghĩa là nghệ sĩ hoạt độngđộc lập, tự sáng tác, tự phát hành nhạc mà không phụ thuộc và công ty hay bên thứ ba nào Do vậycác nghệ sĩ này thường ít nổi tiếng do không có công ty hỗ trợ hoạt động mạnh mẽ (đi diễn show,marketing…v.v) Những bài nhạc của nhóm nghệ sĩ Indie được gọi hẳn là một thể loại Indie Do vậythuộc tính này cũng được đùng để chọn thành một thể loại Thuộc tính này được quy định như sau:+ 0: Nhóm nghệ sĩ thịnh hành nhất, có công ty âm nhạc sản xuất, phát hành nhạc và marketing.+ 1: Nhóm nghệ sĩ độc lập (Indie), nhưng vẫn có độ nổi tiếng nhất định nhờ siêng năng hoạtđộng hoặc có khả năng sáng tác thiên phú, thu được đông đảo fan (chẳng hạn như rapper Đen Vâu).Các nghệ sĩ từng một thời nổi tiếng nhưng đã giải nghệ hoặc ngưng hoạt động cũng thuộc nhóm này.+ 2: Nhóm nghệ sĩ Indie ít người biết, hoặc gu nhạc khó nghe, hoặc từ thời đại trước
- ArKeyword: lưu các từ khóa của nghệ sĩ không được thể hiện trong thuộc tính tên nghệ sĩ Cóthể là viết sai chính tả, tên tiếng Việt không dấu, hoặc nghệ danh khác
(7) Đối tượng Bài hát:
- MaBaiHat: đóng vai trò là khóa chính
- TenBaiHat: tên bài hát hiển thị trong phần mềm, not null
- MaArtist: khóa phụ kết nối với đối tượng Artist
- NamPhatHanh: năm bài hát được phát hành lần đầu, not null
Trang 12- TheLoai1: lưu các thể loại theo quốc gia, not null Thuộc tính này được quy định như sau:+ V: V-Pop (nhạc Việt Nam)
+ S: nhạc buồn, tâm trạng (viết tắt cho Sad)
+ L: nhạc về chủ đề tình yêu (viết tắt cho Love)
+ Y: nhạc về chủ đề lối sống hết mình quên ngày mai, hoặc để vực dậy tâm trạng (viết tắt choYOLO - You Only Live Once)
+ C: Christmas (nhạc Giáng Sinh)
Một bài hát có thể lưu nhiều thể loại ví dụ như sau: SL: nhạc buồn về chủ đề tình yêu
- BHKeyword: lưu thông tin các từ khóa mà người dùng có thể tìm kiếm cho bài hát này
- LuotNghe: lưu số lượt nghe của bài hát Được cập nhật khi người dùng chọn nghe bài hát ởphần mềm
Trang 13(8) Đối tượng Album:
- MaAlbum: đóng vai trò là khóa chính
- TenAlbum: tên album được hiển thị trong phần mềm, not null
- MaArtist: khóa phụ kết nối với đối tượng Artist
- NamAlbum: năm phát hành album, not null
- AlKeyword: lưu thông tin các từ khóa người dùng có thể tìm kiếm album mà không được thểhiện ở tên album
(9) Đối tượng CT_Album:
Vì album và bài hát có một quan hệ nhiều-nhiều nên phải sinh ra thêm một đối tượng gọi là Chitiết Album
- MaAlbum: khóa phụ kết nối với đối tượng Album
- MaBaiHat: khóa phụ kết nối với đối tượng bài hát
Hai thuộc tính trên là một cặp khóa chính
- TrangThaiPhatHanh: thuộc tính này được thể hiện như sau:
+ Độc quyền: bài hát được phát hành độc quyền lần đầu trong album này
+ Tái phát hành: bài hát đã được phát hành trước đó (có thể là phát hành single hoặc trongalbum khác) song được phát hành lại theo album này
+ Cover: bài hát được cover từ nghệ sĩ khác
+ Đồng sở hữu: bài hát đồng sở hữu bản quyền bởi nhiều nghệ sĩ
Trang 14(10) Đối tượng Playlist:
Quản lý các playlist của user
- MaPlaylist: đóng vai trò là khóa chính Được tự động nhập khi người dùng tạo playlist bênphần mềm theo công thức như sau:
+ Nếu là playlist do người dùng tạo: username_(ngày giờ tạo kiểu datetime dưới dạng chuỗi).+ Playlist bài hát đã thích được tự động tạo khi người dùng tạo tài khoản mới: username_Liked
- TenPlaylist: tên của playlist do người dùng đặt, not null
- username: khóa phụ kết nối với user
- NgayPlaylist: ngày tạo playlist, not null, dạng datetime để phù hợp với ngôn ngữ C# Thuộctính này tự động điền khi người dùng tạo playlist mới
(11) Đối tượng CT_Playlist:
Vì playlist và bài hát có một quan hệ nhiều-nhiều nên phải sinh ra thêm một đối tượng gọi làChi tiết Playlist
- MaPlaylist: khóa phụ kết nối với đối tượng Playlist
- MaBaiHat: khóa phụ kết nối với đối tượng bài hát
Hai thuộc tính trên là một cặp khóa chính
- ThoiGianThem: thời gian bài hát được thêm vào playlist, not null, dạng datetime để phù hợpvới ngôn ngữ C# Thuộc tính này tự động điền khi người dùng thêm bài hát vào playlist
Trang 15VII Về giao diện:
- Phần mềm sử dụng hai màu sắc chủ đạo đen và hồng tím, lấy cảm hứng từ nhóm nhạc HànQuốc nổi tiếng toàn cầu: BLACKPINK - tạo cảm giác hiện đại và quốc tế cho phần mềm
- Phần mềm có các giao diện chính sau đây:
+ Giao diện đăng nhập:
Trang 16+ Giao diện đăng ký tài khoản mới:
Trang 17+ Giao diện trang chủ:
- Chức năng xem thông tin và sửa thông tin tài khoản
- Chức năng tìm kiếm bài hát theo từ khóa: tên bài hát, tên nghệ sĩ hoặc tên album
- Chọn và nghe bài hát tùy muốn
- Chức năng xem thông tin bài hát, nghệ sĩ, album
Trang 18- Chọn và nghe toàn bộ playlist cá nhân, hoặc toàn bộ playlist của một nghệ sĩ nào đó, hoặctoàn bộ bài hát trong một album nào đó.
- Chức năng quản lý thư viện cá nhân: xem thông tin toàn bộ các playlist cá nhân, thêm playlistmới, đổi tên playlist, thêm - xóa các bài hát khỏi playlist, xóa toàn bộ playlist
- Phàn mềm có gợi ý sẵn các playlist theo thể loại như: Rap, EDM, nhạc dance, nhạc quốc tếbất hủ v.v, để người dùng chọn nghe tùy theo sở thích hay tâm trạng, cảm hứng
- Phần mềm cũng gợi ý một vài ca sĩ nổi bật (Hot Artists) để người dùng tìm hiểu và chọnnghe
- Cuối cùng là ở mỗi trang đều có các thanh menu điều hướng để dễ dàng chuyển qua lại giữacác trang giao diện chính: trang chủ, thư viện, Hot Genres, Hot Artists
Trang 19ĐẶC TẢ CHI TIẾT CÁC CHỨC NĂNG
I Giao diện đăng nhập và đăng ký:
- Người dùng nhập vào username và
password cá nhân vào khung nhập tương ứng
- Nhấn vào biểu tượng con mắt sẽ ẩn/hiện
password Một tính năng khá quen thuộc
- Khi nhấn vào nút đăng nhập, hệ thống sẽ
kiểm tra thông tin và có các bẫy lỗi: username
không tồn tại hoặc sai mật khẩu
- Nếu chưa có tài khoản, người dùng có thể
nhấn vào nút đăng ký sẽ chuyển qua giao diện
đăng ký tài khoản mới
- Khi đăng ký, người dùng nhập các ô thông
tin vào các ô tương ứng
- Cũng có biểu tượng con mắt
- Khi nhấn nút đăng ký, hệ thống sẽ kiểm tra
thông tin và thông báo nếu user được đăng ký thành
công Hoặc báo lỗi tương ứng với các bẫy lỗi: để
trống thông tin, username hoặc/và password sai quy
định (có dấu, có khoảng trắng…), hoặc username đã tồn tại
- Vì username không phân biệt hoa thường nên nếu đã có ‘USER12’ thì ‘user12’ hay
‘UsER12’,…cũng sẽ bị báo trùng
Trang 20IX Giao diện trang chính:
(1): Menu strip điều hướng
(2): Lời chào thay đổi theo các buổi trong ngày: sáng, trưa-chiều, tối, và khuya muộn Cùng với
đó chính là họ tên user đã đặt
(3): Thanh tìm kiếm bài hát
(4): Thanh menu điều hướng Đề mục màu tím thể hiện trang mà người dùng đang ở
(5): Danh sách tất cả bài hát người dùng tìm kiếm Sẽ hiển thị toàn bộ bài hát nếu người dùng
để trống ô tìm kiếm
(6): Trình play nhạc Khi nhạc pause sẽ hiện ra dòng chạy chữ ghi: thông tin bài hát, hoặcthông tin playlist đang phát Khi nhạc dừng hẳn sẽ hiện ra câu chào
Trang 21(1) Menu strip điều hướng:
(1): Về trang chủ
(2): Đến trang thư viện nhạc cá nhân
(3): Đến trang thể loại hot
(4): Đến trang nghệ sĩ hot
Khi click vào các nút trên sẽ không
có gì xảy ra nếu đang ở trang cần đến rồi
(7): Đăng xuất trở về màn hình đăng
nhập
(5): Xem thông tin tài khoản (6): Sửa thông tin tài khoản
- Các nút (5),(6) có bẫy lỗi không cho mở nếu đang mở rồi
- (6): Khi nhấn nút xác nhận sẽ hỏi xác nhận thay đổi thông tin Có bẫy lỗi password không hợp lệ vàhỏi lại nếu có thông tin để trống không muốn thay đổi Khi thoát cũng hỏi xác nhận nếu không muốnthay đổi thông tin nữa
Trang 22Vì vậy em đã thêm vào trong thông tin bài hát trong database một thuộc tính gọi là keyword (từkhóa) Thuộc tính này lưu tất cả keyword mà người dùng có thể tìm kiếm thông tin về bài hát này màkhông được thể hiện trong tên bài hát, bao gồm cả những tên dễ viết sai chính tả, tên tiếng Việtkhông gõ dấu Và chủ yếu các cụm từ khóa này được viết theo công thức: tên ca sĩ tên bài hát tên ca
sĩ (Ví dụ từ khóa cho bài hát Team của Lorde: lorde team lorde), như thế sẽ đáp ứng khi người dùng
gõ cả tên bài hát và tên nghệ sĩ dù theo thứ tự trước sau thế nào Điều đó giúp cho mọi người dễ tiếpcận đến âm nhạc hơn Vậy khi người dùng gõ vào ô tìm kiếm sẽ tìm dữ liệu trong database theo cảthuộc tính keyword này