Bối cảnh và vấn đề nghiên cứu

Trong xu hướng chuyển đổi số và phát triển thương mại điện tử, trang web đóng vai trò như một cửa hàng ảo, không chỉ phục vụ truyền thông mà còn kiến tạo trải nghiệm mua sắm trực quan, mở rộng cơ hội kinh doanh cho doanh nghiệp. Đối với lĩnh vực nghệ thuật và âm thanh, nhu cầu thưởng thức âm nhạc cũng như nhu cầu sáng tác, sản xuất âm nhạc ngày càng gia tăng trên toàn cầu. Điều này dẫn tới nhu cầu cấp thiết về việc trang bị các loại nhạc cụ, thiết bị âm thanh và phần mềm chuyên dụng.

Đề tài "Thiết Kế Website Bán Nhạc Cụ" (tên thương hiệu website: Seniks Musical Instruments - SMI) được thực hiện bởi sinh viên Nguyễn Huy Hoàng (MSSV: 2200005850, Lớp: 22DKTPMIB, Chuyên ngành Kỹ thuật Phần mềm) dưới sự hướng dẫn của Thầy Đặng Đức Trung tại Khoa Công nghệ Thông tin, Trường Đại học Nguyễn Tất Thành trong khuôn khổ học kỳ 3, năm học 2022 - 2023 (ngày hoàn thành: 26/09/2023).

Mục tiêu và nhiệm vụ của đồ án

  1. Nghiên cứu tổng quan và ứng dụng môi trường phát triển mã nguồn Visual Studio Code trong lập trình web.
  2. Xây dựng cấu trúc cây điều hướng (sitemap) cho một hệ thống website thương mại điện tử chuyên ngành nhạc cụ.
  3. Hiện thực hóa toàn bộ giao diện người dùng (Front-end) bao gồm 8 phân hệ/trang chức năng: Trang chủ, Trang liên hệ, Trang câu hỏi thường gặp, Trang danh mục sản phẩm, Trang giới thiệu, Cửa sổ đăng nhập/đăng ký, Trang chi tiết sản phẩm và Cửa sổ giỏ hàng.
  4. Lập trình các tương tác động trên giao diện (chuyển đổi slide, mở rộng accordion câu hỏi, lọc danh mục, đổi ảnh thumbnail sản phẩm, thêm/xóa/tính tổng tiền giỏ hàng) bằng JavaScript thuần.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Thiết kế giao diện và xử lý tương tác người dùng phía máy khách (Client-side) cho website kinh doanh nhạc cụ.
  • Phạm vi triển khai: Giao diện website hiển thị trên môi trường máy tính để bàn (Desktop layout), tập trung vào cấu trúc HTML5, định dạng CSS3 và tập lệnh tương tác JavaScript, không triển khai phần máy chủ (Backend) hay cơ sở dữ liệu (Database).

Cơ sở lý thuyết và phương pháp

Đồ án vận dụng các kiến thức và công nghệ nền tảng của lập trình web giao diện phía máy khách:

  • HTML5: Xây dựng cấu trúc ngữ nghĩa cho trang web thông qua hệ thống thẻ chuẩn (<div>, <section>, <form>, <label>, <input>, <table>, <ul>, <li>, <a>, <button>, <span>, <img>, <h3>, <h2>, <p>).
  • CSS3: Xây dựng bố cục giao diện, định dạng phong cách trực quan và hiệu ứng hiển thị với các thuộc tính: display, flex-direction, justify-content, align-items, position, float, clear, box-sizing, transition, opacity, z-index, border-radius, object-fit, transform.
  • JavaScript (Vanilla JS): Thao tác trực tiếp với mô hình cây đối tượng tài liệu (DOM API) để kích hoạt các sự kiện người dùng (click, change), quản lý mảng dữ liệu giỏ hàng, cập nhật tổng chi phí và xử lý chuyển đổi trạng thái hiển thị.
  • Thư viện biểu tượng Font-Awesome-6: Cung cấp hệ thống icon trực quan cho các nút điều hướng, xếp hạng sao đánh giá sản phẩm và các kênh mạng xã hội.
  • Môi trường phát triển: Visual Studio Code (VS Code) của Microsoft, tận dụng các tính năng Syntax highlighting, Snippets, IntelliSense và quản lý cấu trúc tệp mã nguồn.
  • Nguồn tài liệu đối sánh: Tài liệu hướng dẫn lập trình web chuẩn W3Schools Online Web Tutorials.

Thiết kế và triển khai hệ thống

Hệ thống website Seniks Musical Instruments (SMI) được thiết kế xoay quanh cây điều hướng sitemap hoàn chỉnh, hỗ trợ người dùng tiếp cận từ thông tin doanh nghiệp đến quy trình lựa chọn sản phẩm và thanh toán:

Thành phần sitemap Chức năng chi tiết được phân rã Tệp mã nguồn tương ứng
Home (Trang chủ) Banner quảng bá, danh mục nổi bật, sản phẩm mới về, bài viết tin tức, footer chính sách main.html, main.css, Slide.js
Contact (Liên hệ) Thông tin địa chỉ, bản đồ, số điện thoại, form gửi góp ý/bình luận contact.html, contact.css
Help / FAQ (Hỏi đáp) Danh sách câu hỏi thường gặp dạng accordion thu gọn/mở rộng faq.html, faq.css, FAQ.js
Categories (Danh mục) Lưới sản phẩm, bộ lọc theo phân loại & tầm giá, nút uncheck radio, thanh phân trang categories.html, categories.css, Uncheck.js
Who are we? (Giới thiệu) Lịch sử thương hiệu, thông tin đội ngũ nhân sự, cam kết chất lượng about.html, about.css
Login / Sign up (Tài khoản) Hộp thoại modal đăng nhập và đăng ký thành viên main.html, main.css
Product Details (Chi tiết) Thư viện ảnh chuyển đổi, mô tả sản phẩm, bảng thông số kỹ thuật nhạc cụ product.html, product.css, Product.js
My Cart (Giỏ hàng) Modal giỏ hàng, thêm sản phẩm, cập nhật số lượng, xóa mục, tính tổng tiền đơn hàng main.html, main.css, Cart.js

Nội dung chính theo từng chương

CHƯƠNG I: GIỚI THIỆU VISUAL STUDIO CODE

Chương I trình bày tổng quan về công cụ soạn thảo mã nguồn Visual Studio Code (VS Code) - nền tảng chính được tác giả sử dụng để phát triển đồ án:

  • Khái niệm và đặc tính: VS Code là trình soạn thảo mã nguồn mở miễn phí do Microsoft phát triển, hỗ trợ đa nền tảng (Windows, Linux, macOS) với ưu điểm nhanh, nhẹ, khả năng mở rộng mạnh mẽ qua hệ thống tiện ích (Extensions).
  • Lịch sử hình thành:
    • Ngày 29/04/2015: Microsoft ra mắt bản thử nghiệm tại hội nghị Build 2015.
    • Ngày 18/11/2015: VS Code được phát hành dưới giấy phép MIT, đưa mã nguồn lên GitHub và công bố tính năng Extensions.
    • Ngày 14/04/2016: Hoàn tất giai đoạn thử nghiệm và phát hành bản chính thức.
  • Tính năng chủ đạo: Làm nổi bật cú pháp (Syntax highlighting), đoạn mã mẫu (Snippets), tự động hoàn thành mã thông minh (IntelliSense), gỡ lỗi (Debugging), tái cấu trúc/cải tiến mã nguồn và tích hợp sẵn hệ thống quản lý phiên bản Git.
  • Phạm vi ứng dụng: Phổ biến trong lập trình giao diện Frontend (HTML, CSS, JavaScript), lập trình máy chủ Backend (hỗ trợ nhiều ngôn ngữ như Scala) cũng như hỗ trợ kiểm thử phần mềm và quản lý dữ liệu.

CHƯƠNG II: GIỚI THIỆU ĐỀ TÀI

Chương II định vị thương hiệu và phạm vi chức năng của hệ thống website:

  • Tên hệ thống: Seniks Musical Instruments (SMI).
  • Mục tiêu hoạt động: SMI là nền tảng thương mại trực tuyến chuyên cung cấp các loại nhạc cụ (Guitar, Drum, Keyboard, Synthesizer...), thiết bị phần cứng âm thanh (Headphone, Microphone, Speaker) và phần mềm (Software) phục vụ quá trình sản xuất âm nhạc.
  • Lý do lựa chọn đề tài: Xuất phát từ sự phổ cập của âm nhạc trong đời sống hiện đại và sự gia tăng số lượng cá nhân có định hướng trở thành nhà sản xuất âm nhạc. Việc tạo ra một cổng thông tin và thương mại trực tuyến giúp kết nối người dùng với các sản phẩm nhạc cụ chất lượng một cách thuận tiện.
  • Cấu trúc Sitemap: Mô tả liên kết giữa các trang:
    • Nhóm thông tin doanh nghiệp (Information): The Company, Our Story, Address, Request Information.
    • Nhóm thông tin & giao dịch sản phẩm (Products): Product's Information, Add Product to Cart, Delete Product from Cart, Calculate Product Costs.
  • Công nghệ và môi trường: Lập trình bằng HTML5, CSS, JavaScript, mã nguồn biểu tượng Font-Awesome-6 trên môi trường Visual Studio Code.

CHƯƠNG III: XÂY DỰNG WEBSITE

Chương III là trọng tâm kỹ thuật của đồ án, mô tả chi tiết giải pháp thiết kế giao diện và hiện thực mã nguồn cho 8 phân hệ chức năng:

  1. Trang chủ (Homepage - main.html, main.css, Slide.js):

    • Giao diện & Bố cục: Đầu trang gồm thanh điều hướng (Logo SMI, Home, Contact, Help/FAQ, Categories, Who are we?, My Cart, Login). Phần thân trang gồm banner trượt giới thiệu dòng đàn Fender Player & Player Plus, lưới danh mục phổ biến (8 nhóm: Drum, Guitar, Headphone, Microphone, Keyboard, Software, Speaker, Synthesizer), danh sách sản phẩm mới về (New Arrivals: Ibanez Artwood AW84CE-WK giá $383.99), mục bài viết tiêu biểu (Featured Articles: The Best Pedalboards 2023). Chân trang hiển thị chính sách vận chuyển an toàn, đổi trả trong 30 ngày, bảo hành toàn diện, cùng các biểu tượng thanh toán (Visa, MasterCard...).
    • Kỹ thuật: Sử dụng kết hợp CSS Flexbox và định vị để căn chỉnh thanh điều hướng, bố trí lưới sản phẩm; tập lệnh JavaScript điều khiển hiệu ứng chuyển đổi slide tự động và tương tác.
  2. Trang liên hệ (Contact - contact.html, contact.css):

    • Giao diện: Cung cấp thông tin địa chỉ cửa hàng tại khu vực biển Tuy Hòa, số điện thoại liên lạc, cùng biểu mẫu tiếp nhận phản hồi "Send Your Comments" với các trường nhập dữ liệu và nút "Send Message".
    • Kỹ thuật: Sử dụng thẻ <form>, <input>, <button>, kết hợp CSS float, padding, border-radius và hiệu ứng chuyển đổi con trỏ chuột (cursor: pointer, transition).
  3. Trang giải đáp thắc mắc (Help / FAQ - faq.html, faq.css, FAQ.js):

    • Giao diện: Trình bày danh sách các câu hỏi phổ biến của khách hàng (What is an FAQ Page?, Why do you need an FAQ page?, Does it improve the user experience of a website?).
    • Kỹ thuật: Ứng dụng tập lệnh JavaScript FAQ.js để bắt sự kiện click chuột vào từng câu hỏi, thay đổi trạng thái hiển thị ẩn/hiện (display: block / none, overflow: hidden) của đoạn văn bản trả lời theo mô hình accordion.
  4. Trang danh sách sản phẩm (Categories - categories.html, categories.css, Uncheck.js):

    • Giao diện: Cột bên trái là bộ lọc đa cấp theo danh mục nhạc cụ và khoảng giá (Option 1 đến Option 5). Khu vực bên phải hiển thị lưới sản phẩm Ibanez Artwood AW84CE-WK kèm giá, trạng thái tồn kho ("In stock"), xếp hạng sao và thanh điều hướng phân trang (Previous, trang 1 đến 6, Next).
    • Kỹ thuật: Định dạng lưới sản phẩm bằng CSS; mã nguồn JavaScript Uncheck.js hỗ trợ người dùng hủy chọn (uncheck) các nút tùy chọn radio button khi muốn thiết lập lại bộ lọc.
  5. Trang giới thiệu (Who are we? - about.html, about.css):

    • Giao diện: Trình bày thông tin thương hiệu "About Something", tầm nhìn phát triển và cam kết chất lượng dịch vụ của đội ngũ nhân viên.
    • Kỹ thuật: Bố cục văn bản kết hợp hình ảnh sử dụng thuộc tính float, margin, clear: both, và object-fit để tối ưu hóa hiển thị hình ảnh.
  6. Cửa sổ đăng nhập / đăng ký (Login / Sign up - main.html, main.css):

    • Giao diện: Thiết kế dưới dạng cửa sổ popup modal nổi bật trên nền mờ. Form Đăng nhập yêu cầu Email và Password; Form Đăng ký yêu cầu bổ sung trường Username cùng nút liên kết chuyển đổi qua lại "Already have an account? Log In".
    • Kỹ thuật: Sử dụng position: fixed/absolute, z-index cao để đè lên các thành phần giao diện khác, kết hợp max-width, min-width, border-radius và hiệu ứng tương tác form.
  7. Trang chi tiết sản phẩm (Product - product.html, product.css, Product.js):

    • Giao diện: Trình bày chi tiết sản phẩm đàn Ibanez Artwood AW84CE-WK Acoustic Guitar Weathered Black (đơn giá $389.99). Bên trái là khu vực ảnh sản phẩm lớn kèm hệ thống ảnh thumbnail thu nhỏ; bên phải gồm số lượng đặt hàng, nút "Add to Cart" và bảng thông số kỹ thuật chi tiết.
    • Bảng thông số cấu hình đàn:
      • Dáng đàn (Body Shape): Grand Pacific
      • Vật liệu thân đàn (Body Material): Sitka Spruce (Top), Walnut (Body & Back)
      • Lớp hoàn thiện (Body Finish): Matte
      • Phím đàn & Cần đàn (Fretboard & Neck): Eucalyptus, Scale Length 25.5", 20 phím (Frets), họa tiết 4mm Dots Faux Pearl
      • Hệ thống điện tử (Electronics): Expression System 2, Fishman AEQ-S2
      • Phần cứng & Phụ kiện: Ngựa đàn Eucalyptus, Pickguard đen, Khóa Taylor Nickel Tuners, Hộp AeroCase
    • Kỹ thuật: Đoạn mã JavaScript Product.js cho phép hoán đổi nguồn ảnh chính (src) khi người dùng nhấp vào các ảnh mẫu thumbnail; bảng thông số xây dựng bằng thẻ <table>, <tr>, <th>, <td>.
  8. Cửa sổ giỏ hàng (Cart - Cart.js, main.css):

    • Giao diện: Hiển thị danh sách sản phẩm đã được thêm vào đơn hàng, bao gồm hình ảnh thu nhỏ, tên sản phẩm, đơn giá, số lượng (Qty) và dòng tổng tiền (Total: $...). Giao diện hỗ trợ hiển thị các trạng thái: Giỏ hàng trống (Total: $0), giỏ hàng có sản phẩm, cập nhật khi tăng giảm số lượng sản phẩm, hoặc khi thêm sản phẩm trùng lặp.
    • Kỹ thuật: Tập lệnh Cart.js định nghĩa các hàm xử lý mảng giỏ hàng, cập nhật tổng chi phí động khi thay đổi giá trị số lượng, xóa mặt hàng khỏi danh sách và hiển thị giao diện thanh toán ("Pay").
// Trích xuất cấu trúc xử lý dữ liệu tiêu biểu trong Cart.js
// Quản lý thông tin sản phẩm: title, price, img, qty và tính toán Total

CHƯƠNG IV: KẾT LUẬN

Chương IV tổng kết toàn bộ quá trình thực hiện đồ án:

  • 4.1. Ưu điểm của đồ án:
    • Hệ thống hình ảnh minh họa phong phú, đa dạng và có tính thẩm mỹ cao.
    • Giao diện trực quan, bố cục rõ ràng, tạo sự thuận tiện cho người dùng khi thao tác.
    • Hiện thực tương đối hoàn chỉnh các phân hệ chức năng tương tác cơ bản của một trang web bán hàng.
  • 4.2. Hạn chế của đồ án:
    • Giao diện chưa được thiết kế thích ứng (Responsive Web Design) hoàn chỉnh cho các loại màn hình di động (Smartphones) và máy tính bảng (Tablets).
    • Số lượng danh mục và mặt hàng sản phẩm thực tế còn đơn điệu, chủ yếu sử dụng dữ liệu mẫu.
    • Một số tính năng thương mại điện tử chuyên sâu (xử lý đơn hàng máy chủ, cổng thanh toán trực tuyến thực tế, quản lý cơ sở dữ liệu) chưa thể tích hợp.
  • 4.3. Hướng phát triển của đồ án:
    • Hoàn thiện và tích hợp các module chức năng còn thiếu để có thể đưa website vào vận hành thực tế.
    • Mở rộng quy mô hệ thống hướng tới mục tiêu trở thành nền tảng trực tuyến lớn về kinh doanh nhạc cụ tại Việt Nam.

Kết quả và đóng góp

Đồ án đã hoàn thành đầy đủ các yêu cầu của môn học Thiết kế Web chuyên ngành Kỹ thuật Phần mềm:

  • Kết quả cụ thể:
    • Hoàn thành bộ mã nguồn giao diện Front-end gồm các tệp cấu trúc HTML (main.html, contact.html, faq.html, categories.html, about.html, product.html), hệ thống tệp định dạng giao diện CSS (main.css, contact.css, faq.css, categories.css, about.css, product.css) và các tệp script JavaScript (Slide.js, FAQ.js, Uncheck.js, Product.js, Cart.js).
    • Xây dựng thành công 8 màn hình chức năng liên kết chặt chẽ với nhau thông qua sitemap logic.
    • Hiện thực thành công logic giỏ hàng ở Client-side: thêm sản phẩm từ trang chi tiết, xử lý cộng dồn khi trùng sản phẩm, cập nhật số lượng trực tiếp và tính toán tự động tổng số tiền cần thanh toán.

Hạn chế và hướng nghiên cứu tiếp

Căn cứ theo đánh giá tự thân của tác giả trong đồ án, hệ thống còn tồn tại các giới hạn kỹ thuật và hướng mở rộng như sau:

  • Hạn chế:
    • Đồ án chưa tối ưu hóa giao diện đa kích thước màn hình (chưa hỗ trợ Mobile/Tablet Responsive).
    • Dữ liệu sản phẩm hiển thị còn mang tính chất tĩnh, chưa phong phú về chủng loại thiết bị âm nhạc.
    • Thiếu hệ thống quản trị nội dung (CMS/Admin) và hệ thống xử lý phía máy chủ (Backend/Database).
  • Hướng phát triển:
    • Nghiên cứu áp dụng CSS Media Queries hoặc các CSS Framework để hoàn thiện tính năng Responsive cho mọi thiết bị di động.
    • Lập trình hệ thống máy chủ và cơ sở dữ liệu để quản lý sản phẩm, tài khoản người dùng và đơn hàng động.
    • Kết nối các cổng thanh toán điện tử thực tế nhằm nâng cấp SMI thành nền tảng kinh doanh hoàn chỉnh.

Giá trị tham khảo

Đồ án là tài liệu tham khảo phù hợp cho:

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm: Dùng làm mẫu tham khảo khi thực hiện đồ án môn học Thiết kế Web cơ sở, học hỏi phương pháp tổ chức cấu trúc tệp mã nguồn HTML/CSS/JavaScript thuần không qua framework trung gian.
  • Người học lập trình Front-end cơ bản: Tham khảo cách thức xây dựng các thành phần tương tác UI/UX thông dụng như Slide banner, Accordion FAQ, Modal Login/Register, Image Gallery Switcher và Shopping Cart logic bằng DOM JavaScript thuần.

Câu hỏi thường gặp

1. Website Seniks Musical Instruments (SMI) cung cấp những danh mục sản phẩm chính nào?
Website SMI được thiết kế để phân phối 8 nhóm sản phẩm chính bao gồm: Trống (Drum), Đàn Guitar, Tai nghe (Headphone), Micro (Microphone), Đàn phím (Keyboard), Phần mềm âm nhạc (Software), Loa (Speaker) và Đàn tổng hợp âm (Synthesizer).

2. Công cụ và bộ công nghệ nào đã được sử dụng để phát triển đồ án này?
Đồ án sử dụng trình soạn thảo mã nguồn Visual Studio Code (VS Code) và bộ công nghệ nền tảng Front-end bao gồm HTML5 (xây dựng cấu trúc), CSS3 (định dạng phong cách, bố cục), JavaScript thuần (xử lý tương tác logic) và thư viện biểu tượng Font-Awesome-6.

3. Phân hệ giỏ hàng (Cart) trong đồ án có thể xử lý những thao tác nào?
Tập lệnh Cart.js của phân hệ giỏ hàng hỗ trợ các thao tác: hiển thị danh sách sản phẩm đã chọn kèm hình ảnh và đơn giá, tính tổng tiền đơn hàng, thông báo khi giỏ hàng trống (Total: $0), xử lý khi có sản phẩm trùng lặp, thay đổi số lượng đặt hàng (Qty) và chuyển hướng giao dịch thanh toán.

4. Chức năng tương tác tại trang Help / FAQ được xây dựng như thế nào?
Trang Help / FAQ sử dụng tập lệnh JavaScript FAQ.js để lắng nghe sự kiện nhấp chuột của người dùng vào các câu hỏi thường gặp, từ đó kích hoạt chuyển đổi trạng thái ẩn/hiện của khối nội dung câu trả lời tương ứng theo định dạng accordion.

5. Đồ án còn những hạn chế kỹ thuật lớn nào theo tác giả trình bày?
Đồ án còn ba hạn chế chính: giao diện chưa được tối ưu hóa cho màn hình điện thoại và máy tính bảng (chưa responsive); dữ liệu sản phẩm hiển thị còn hạn chế; và chưa tích hợp được các tính năng xử lý dữ liệu phía máy chủ (Backend/Database).


Kết luận

Đồ án môn học "Thiết Kế Website Bán Nhạc Cụ" của sinh viên Nguyễn Huy Hoàng đã hoàn thành trọn vẹn mục tiêu xây dựng giao diện Front-end cho nền tảng thương mại điện tử Seniks Musical Instruments. Bằng việc ứng dụng thuần thục HTML5, CSS3, JavaScript trên nền tảng Visual Studio Code, tác giả đã hiện thực hóa 8 phân hệ chức năng từ điều hướng, giới thiệu, chi tiết cấu hình nhạc cụ đến logic tính toán giỏ hàng. Mặc dù còn hạn chế về khả năng đáp ứng đa thiết bị di động và thiếu hệ thống cơ sở dữ liệu động, đồ án vẫn cung cấp một cấu trúc tham khảo chuẩn mực cho sinh viên chuyên ngành Kỹ thuật Phần mềm trong học phần Thiết kế Web.