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

Đề tài "Xây dựng App bán hàng" được thực hiện trong khuôn khổ Đồ án Cơ sở 3 thuộc ngành Công nghệ thông tin (chuyên ngành Kỹ thuật phần mềm), Khoa Khoa học Máy tính, Trường Đại học Công nghệ Thông tin và Truyền thông Việt - Hàn. Nghiên cứu do sinh viên Trần Thiên Trường (Mã sinh viên: 21IT318, Lớp: 21SE2) thực hiện dưới sự hướng dẫn của giảng viên Lê Tân.

1. Lý do chọn đề tài và bối cảnh thực tiễn

Theo tác giả trình bày trong báo cáo, bối cảnh thực tiễn xuất phát từ hoạt động kinh doanh bán lẻ tại khu vực thành phố Đà Nẵng. Khi mức sống và nhu cầu tiêu dùng của người dân địa phương ngày càng nâng cao, số lượng cửa hàng bán lẻ mở ra ngày càng nhiều nhằm đáp ứng nhu cầu mua sắm. Tuy nhiên, các chủ cửa hàng phải đối mặt với nhiều khó khăn trong khâu quản lý và vận hành kinh doanh, bao gồm:

  • Khó khăn trong việc tiếp cận và mở rộng tối đa tệp khách hàng tiềm năng.
  • Các công đoạn tìm nguồn hàng chất lượng, vận chuyển, quảng bá thương hiệu, cân đối thu - chi và tính toán chi phí vận hành để tái đầu tư đều phức tạp và tiêu tốn nhiều nhân lực.
  • Hệ thống kinh doanh truyền thống hoặc các giải pháp cũ còn tồn tại nhiều bất cập, trong đó có giao diện chưa tối ưu và khó tiếp cận khách hàng từ xa.

Từ thực trạng đó, việc xây dựng một ứng dụng di động (app) bán hàng được xác định là giải pháp cấp thiết nhằm tự động hóa quy trình nghiệp vụ, hỗ trợ khách hàng tra cứu và đặt mua sản phẩm mọi lúc mọi nơi, đồng thời đảm bảo tính chính xác và an toàn thông tin trong quản lý giao dịch.

2. Mục tiêu và nhiệm vụ nghiên cứu

Văn bản đồ án phân định mục tiêu nghiên cứu thành hai cấp độ cụ thể:

  • Mục tiêu tổng quát: Xây dựng hoàn chỉnh một ứng dụng bán hàng hoạt động trên nền tảng thiết bị di động Android.
  • Mục tiêu cụ thể:
    1. Phát triển chức năng hỗ trợ khách hàng xem danh mục, lựa chọn và xem thông tin chi tiết sản phẩm.
    2. Xây dựng chức năng quản lý giỏ hàng và thực hiện thanh toán chi phí đơn hàng.
    3. Xây dựng phân hệ tiếp nhận và lưu trữ thông tin khách hàng (họ tên, số điện thoại, địa chỉ, email).
    4. Thiết lập kênh thông tin liên hệ giữa khách hàng và quản trị viên cửa hàng.
    5. Xây dựng cơ sở dữ liệu và các giao diện người dùng tương thích trên thiết bị di động.

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

  • Đối tượng nghiên cứu: Khách hàng và các hành vi tương tác mua sắm trên ứng dụng.
  • Khách thể nghiên cứu: Khách hàng và người quản trị hệ thống (quản lý cửa hàng).
  • Phạm vi không gian: Nghiên cứu và khảo sát thực nghiệm tại địa bàn thành phố Đà Nẵng.
  • Phạm vi thời gian: Quá trình vận hành và xử lý tác vụ trong khung giờ hành chính.

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

Đồ án ứng dụng phương pháp luận kỹ nghệ phần mềm chuẩn, kết hợp giữa mô hình phân tích hướng đối tượng và công nghệ lập trình ứng dụng di động cục bộ.

1. Quy trình phát triển phần mềm

Đồ án tuân thủ quy trình phát triển phần mềm 4 giai đoạn cơ bản:

  1. Đặc tả phần mềm: Xác định dịch vụ hệ thống, các ràng buộc phát triển và thiết lập tài liệu đặc tả yêu cầu chức năng, phi chức năng.
  2. Thiết kế và thực thi phần mềm: Mô tả cấu trúc hệ thống, mô hình hóa dữ liệu, thiết kế giao diện giao tiếp và chuyển đổi tài liệu thiết kế thành mã nguồn chương trình.
  3. Kiểm thử phần mềm: Vận hành các ca kiểm thử (test cases) với dữ liệu giả định để phát hiện và xử lý lỗi hệ thống.
  4. Cài đặt và bảo trì: Đóng gói phần mềm, triển khai trên môi trường mục tiêu và lập kế hoạch sửa lỗi phát sinh cũng như nâng cấp tính năng.

2. Phương pháp phân tích và thiết kế hướng đối tượng (OOAD) & UML

Tác giả áp dụng phương pháp Phân tích và Thiết kế Hướng đối tượng (Object-Oriented Analysis and Design - OOAD) thông qua Ngôn ngữ Mô hình hóa Thống nhất (Unified Modeling Language - UML) với mô hình đa góc nhìn (4+1 View Model):

  • Use Case View: Trung tâm chi phối toàn bộ kiến trúc, xác định tác nhân và các ca sử dụng.
  • Logical View: Cung cấp góc nhìn tĩnh về cấu trúc lớp và cách tổ chức hệ thống.
  • Process View: Mô tả sự tương tác động giữa các thành phần theo thời gian (Sequence Diagram).
  • Component View & Deployment View: Mô tả phân bổ thành phần mã nguồn và cấu hình triển khai trên thiết bị.

3. Công nghệ cơ sở dữ liệu SQLite

Hệ thống sử dụng hệ quản trị cơ sở dữ liệu quan hệ nhúng SQLite với các đặc tính kỹ thuật:

  • Động cơ cơ sở dữ liệu SQL khép kín, nhỏ gọn (kích thước nhân < 500KB), không cần cấu hình và không hoạt động theo mô hình Client - Server độc lập mà nhúng trực tiếp vào tệp lưu trữ của ứng dụng di động.
  • Tuân thủ đầy đủ 4 tính chất giao dịch ACID (Atomic, Consistent, Isolated, Durable) và chuẩn SQL92.
  • Văn bản phân tích rõ cú pháp phân nhóm DDL (CREATE, ALTER, DROP), DML (INSERT, UPDATE, DELETE) và DQL (SELECT).
  • Đồ án cũng chỉ ra hạn chế kỹ thuật của SQLite là sử dụng cơ chế khóa diện rộng (coarse-grained locking), cho phép nhiều tiến trình cùng đọc nhưng chỉ cho phép một tiến trình ghi tại một thời điểm, không phù hợp cho dữ liệu phát sinh lớn liên tục.

4. Kỹ thuật đồ họa và giao diện Android

  • Drawable trong Android: Sử dụng các dạng đồ họa như BitmapDrawable, ColorDrawable, GradientDrawable, ShapeDrawable, RippleDrawable, VectorDrawable, AnimatedDrawable, StateListDrawable và PathDrawable.
  • Animation: Tận dụng cơ chế Drawable Animation (chuỗi hình ảnh kế tiếp qua AnimationDrawable) và View Animation (biến đổi ma trận không gian qua các phép biến đổi Tweening: Scale, Rotate, Translate, Alpha).

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

Báo cáo đồ án được cấu trúc thành 5 chương chính (tính theo hệ thống đánh số chương trong phần nội dung chi tiết):

Chương 2: Tổng quan về đề tài

Chương này tập trung trình bày bối cảnh kinh doanh bán lẻ tại thành phố Đà Nẵng, nêu bật tầm quan trọng và tính cấp thiết của việc số hóa quy trình bán hàng. Tác giả xác định rõ mục tiêu tổng quát, mục tiêu cụ thể, đối tượng nghiên cứu (khách hàng, người quản lý), phạm vi giới hạn về không gian (Đà Nẵng) và thời gian (giờ hành chính), cùng phương pháp tiếp cận khảo sát sản phẩm thực tế trên thị trường.

Chương 3: Cơ sở lý thuyết

Chương 3 hệ thống hóa các nền tảng lý thuyết và công nghệ được sử dụng trong đề tài, bao gồm:

  • Bốn giai đoạn của quy trình phát triển phần mềm (Đặc tả, Thiết kế/Thực thi, Kiểm thử, Cài đặt/Bảo trì).
  • Khái niệm và phương pháp luận OOAD kết hợp UML (chi tiết các góc nhìn kiến trúc và các loại biểu đồ: Use Case, Class, Object, Sequence, Collaboration, State, Activity, Component, Deployment).
  • Tổng quan hệ quản trị cơ sở dữ liệu SQLite, các nhóm lệnh SQL và đặc điểm cơ chế khóa dữ liệu.
  • Kỹ thuật xây dựng giao diện bằng Drawable và hệ thống hiệu ứng chuyển động Animation trong hệ điều hành Android.

Chương 4: Phân tích và thiết kế hệ thống

Chương này trình bày toàn bộ quá trình mô hình hóa hệ thống bán hàng:

  • Đặc tả yêu cầu chức năng phân hệ quản trị và phân hệ người dùng.
  • Xây dựng sơ đồ Use Case tổng quát và sơ đồ Use Case chi tiết cho từng nghiệp vụ (chọn danh mục, xem thông tin sản phẩm, thanh toán, liên hệ, quản lý khách hàng, quản lý sản phẩm).
  • Thiết lập bảng mô tả dòng sự kiện (Use Case Specification) cho các tác vụ chính.
  • Xác định các yêu cầu phi chức năng (giao diện thân thiện, tốc độ xử lý, tính bảo mật dữ liệu, tính riêng tư, khả năng mở rộng và phục hồi dữ liệu).
  • Xây dựng Biểu đồ lớp thực thể, Biểu đồ tuần tự (Sequence Diagram) và Biểu đồ lớp chi tiết kèm đặc tả thuộc tính/phương thức.
  • Thiết kế lược đồ cơ sở dữ liệu quan hệ gồm 5 bảng chính và phác thảo giao diện người dùng (UI wireframes/mockups).

Chương 5: Triển khai ứng dụng

Chương 5 hiện thực hóa các bản vẽ thiết kế thành phần mềm thực tế:

  • Cài đặt giao diện giao dịch bằng các tệp XML (kết hợp các thành phần DrawerLayout, Toolbar, ViewFlipper, RecyclerView, ListView, TextInputLayout).
  • Lập trình logic bằng ngôn ngữ Java trên Android SDK; sử dụng thư viện mạng Volley (RequestQueue, JsonArrayRequest, StringRequest) để trao đổi dữ liệu JSON và thư viện Picasso để đồng bộ hình ảnh từ URL.
  • Thiết lập các kịch bản kiểm thử (Test cases) đối với các chức năng mua hàng, thanh toán, lưu thông tin khách hàng.
  • Quy trình đóng gói phần mềm thành tệp tin cài đặt (APK) và xác định môi trường cấu hình triển khai trên thiết bị Android.

Thiết kế và triển khai ứng dụng

1. Thiết kế lớp đối tượng (Class Design)

Hệ thống được thiết kế hướng đối tượng với các lớp thực thể và lớp quản trị chính, bao gồm danh sách thuộc tính và phương thức truy xuất công khai:

Lớp đối tượng Thuộc tính chính Phương thức xử lý chính
Khách hàng (KhachHang) TênKH (String - PK), Id (String), SoDienThoai (String), DiaChi (String), Email (String) DangNhap() (void), CapNhapThongTin() (void)
Sản phẩm (SanPham) TenSP (String - PK), ID (String), HinhAnh (String) ThemSP() (void), CapNhapSP() (void), XoaSP() (void)
Hóa đơn (HoaDon) ID (String - PK), TenKH (String), GiaSP (String), SoLuong (String) CapNhap() (void), Xoa() (void)
Quản trị viên (Admin) N/A (kế thừa/quản lý) DangNhap() (void), CapNhapSP() (void), XoaSP() (void), CapNhapHD() (void), XoaHD() (void)
Chi tiết hóa đơn (ChiTietHoaDon) MaSP (String - PK), MaDonHang (String), TenSP (String), GiaSP (String) ThemHD() (void), CapNhapHD() (void), XoaHD() (void)
Chi tiết sản phẩm (ChiTietSanPham) ID (String - PK), Tên (String), Gia (String), HinhAnh (String), MoTa (String) ThemSP() (void), CapNhapSP() (void), XoaSP() (void)

2. Thiết kế cơ sở dữ liệu quan hệ

Lược đồ cơ sở dữ liệu được tổ chức thành 5 bảng phục vụ lưu trữ thông tin sản phẩm và giao dịch:

Tên bảng CSDL Cột / Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải chức năng
Khách hàng (KhachHang) TenKH
ID
SoDienThoai
DiaChi
NVARCHAR
NVARCHAR
NVARCHAR
NVARCHAR
Not Null
-
-
-
Lưu trữ thông tin định danh và địa chỉ của khách mua hàng.
Sản phẩm (SanPham) TenSP
ID
HinhAnhSP
NVARCHAR
NVARCHAR
NVARCHAR
Not Null
-
-
Lưu thông tin cơ bản về tên, mã và đường dẫn ảnh sản phẩm.
Đơn hàng (DonHang) ID
TenKH
SDT
DiaChi
Email
NVARCHAR
NVARCHAR
NVARCHAR
NVARCHAR
NVARCHAR
Not Null
-
-
-
-
Ghi nhận đơn đặt hàng cùng thông tin liên lạc của khách.
Chi tiết sản phẩm (ChiTietSP) ID
TenSP
MaDonHang
HinhAnhSP
MoTa
INT
NVARCHAR
NVARCHAR
NVARCHAR
NVARCHAR
Not Null
-
-
-
-
Chứa thông tin mô tả chi tiết, hình ảnh và phân loại của sản phẩm.
Chi tiết đơn hàng (ChiTietDonHang) ID
MaDonHang
MaSP
GiaSP
TenSP
SoLuongSP
INT
INT
INT
INT
NVARCHAR
INT
Not Null
-
-
-
-
-
Lưu chi tiết từng mặt hàng trong đơn: số lượng, đơn giá và tên sản phẩm.

3. Công nghệ và kỹ thuật lập trình triển khai

  • Ngôn ngữ và nền tảng: Java, XML trên nền tảng Android.
  • Thành phần giao diện:
    • androidx.DrawerLayout và com.NavigationView tạo menu trượt điều hướng trang chính.
    • ViewFlipper kết hợp hiệu ứng Animation (slide_in_right, slide_out_right) tự động chạy slide ảnh quảng cáo banner (chu kỳ 5 giây).
    • androidx.RecyclerView hiển thị danh sách sản phẩm mới dạng lưới (GridLayoutManager).
    • ListView hiển thị danh mục sản phẩm và danh sách mặt hàng trong giỏ hàng.
    • com.TextInputLayout và EditText tiếp nhận dữ liệu nhập liệu của khách hàng.
  • Xử lý mạng và đa luồng:
    • Sử dụng thư viện Volley để quản lý hàng đợi kết nối (RequestQueue), gửi các yêu cầu bất đồng bộ (JsonArrayRequest, StringRequest) thông qua phương thức HTTP POST để nhận/gửi dữ liệu JSON tới máy chủ API.
    • Sử dụng Handler (mHandler) kết hợp ProgressBar ở chân trang (footerview) để tải thêm dữ liệu phân trang (LoadMoreData, phân trang page) khi cuộn màn hình (OnScrollListener).
    • Thư viện Picasso đồng bộ tải hình ảnh từ URL và ánh xạ trực tiếp vào ImageView với chế độ hiển thị FIT_XY.

4. Kiểm thử chức năng và yêu cầu triển khai

Tác giả đã tiến hành kiểm thử các chức năng chính trên ứng dụng thông qua các kịch bản test case:

STT Tên Test Case Mục đích kiểm thử Thao tác thực hiện Kết quả ghi nhận
1 Kiểm tra chức năng mua hàng Kiểm tra khả năng xem và chọn mua sản phẩm Nhấn vào sản phẩm cần mua trên danh sách Ứng dụng điều hướng và hiển thị chi tiết sản phẩm chính xác
2 Kiểm tra chức năng thanh toán Thanh toán các sản phẩm đã chọn trong giỏ Nhấn nút "Thanh toán giỏ hàng" tại giao diện giỏ hàng Chuyển sang màn hình thanh toán thành công
3 Kiểm tra tiếp tục mua hàng Quay lại danh mục khi đang trong giỏ hàng Nhấn nút "Tiếp tục mua hàng" Quay lại màn hình danh mục sản phẩm
4 Kiểm tra lưu thông tin khách hàng Lưu dữ liệu khách hàng vào cơ sở dữ liệu Nhập đầy đủ thông tin vào biểu mẫu và nhấn "Xác nhận" Dữ liệu được gửi và lưu trữ thành công vào hệ thống
  • Yêu cầu môi trường vận hành ứng dụng:
    • Hệ điều hành: Android phiên bản 6.0 (Marshmallow) trở lên.
    • Vi xử lý (CPU): Tối thiểu 2 nhân.
    • Bộ nhớ RAM: Tối thiểu 2GB.
    • Dung lượng lưu trữ khả dụng: Tối thiểu 200MB.

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

1. Kết quả đạt được

  • Về mặt sản phẩm phần mềm: Xây dựng thành công ứng dụng bán hàng trên Android với đầy đủ các màn hình nghiệp vụ: Màn hình chính (Main/Home), Màn hình danh mục sản phẩm, Màn hình chi tiết sản phẩm, Màn hình giỏ hàng (quản lý thêm/xóa/sửa sản phẩm, tính tổng tiền tự động), Màn hình tiếp nhận thông tin đơn hàng và Màn hình liên hệ quản trị viên.
  • Về mặt kỹ thuật: Tích hợp hoàn chỉnh cơ chế tải dữ liệu phân trang bất đồng bộ bằng Volley, hiển thị ảnh động với Picasso và lưu trữ đơn hàng dạng mảng JSON gửi về máy chủ.
  • Về mặt học thuật và kỹ năng: Tác giả đã làm chủ quy trình phát triển phần mềm chuẩn, nắm vững phương pháp phân tích thiết kế hệ thống bằng UML (Use Case, Class, Sequence), củng cố kỹ năng lập trình Java Android và tư duy thiết kế cơ sở dữ liệu.

2. Đóng góp của đề tài

  • Cung cấp một giải pháp phần mềm mã nguồn mở cơ sở, hoàn chỉnh các quy trình nghiệp vụ bán lẻ cơ bản trên thiết bị di động.
  • Hỗ trợ các cửa hàng bán lẻ tiện lợi tiếp cận hình thức kinh doanh số, cho phép khách hàng đặt hàng nhanh chóng mà không bị giới hạn về mặt địa lý.

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

1. Hạn chế của đề tài

Bản thân tác giả đã tự nhìn nhận các tồn tại trong phần kết luận của báo cáo:

  • Một số chức năng nghiệp vụ của ứng dụng chưa được tối ưu hóa hoàn toàn về mặt thuật toán và xử lý.
  • Tài liệu phân tích và thiết kế hệ thống ở một số mục còn lủng củng, chưa đạt độ rõ ràng và mạch lạc cao.
  • Giao diện người dùng (UI) còn đơn giản, mức độ thẩm mỹ chưa cao.

2. Hướng nghiên cứu và phát triển tiếp theo

Dựa trên những hạn chế được nêu trong văn bản, tác giả đề xuất 3 hướng mở rộng:

  1. Tối ưu hóa mã nguồn và cấu trúc phần mềm để nâng cao khả năng tương thích với nhiều dòng thiết bị phần cứng khác nhau.
  2. Nâng cao tốc độ xử lý của hệ thống nhằm cải thiện trải nghiệm người dùng trong quá trình duyệt sản phẩm và thanh toán.
  3. Nâng cấp cơ chế bảo mật thông tin và chuyển đổi mô hình cơ sở dữ liệu cục bộ sang kiến trúc cơ sở dữ liệu mạng phân tán nhằm hỗ trợ số lượng người dùng đồng thời lớn hơn.

Giá trị tham khảo

Báo cáo đồ án là tài liệu tham khảo thực tế và hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Đặc biệt là sinh viên đang thực hiện các đồ án cơ sở, đồ án môn học Lập trình di động (Android) hoặc Phân tích thiết kế hệ thống thông tin.
  • Các phần có giá trị tham khảo cao nhất:
    • Quy trình mô hình hóa UML từ Use Case đến Class Diagram và Sequence Diagram cho bài toán thương mại điện tử cơ bản.
    • Cấu trúc mã nguồn mẫu viết bằng Java cho các tác vụ xử lý mạng với Volley (JsonArrayRequest, StringRequest), nạp ảnh qua Picasso, và cấu trúc phân trang trên ListView kết hợp Handler.
    • Cấu trúc thiết kế bảng cơ sở dữ liệu quan hệ cho nghiệp vụ đặt hàng và chi tiết đơn hàng.

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

1. Ứng dụng sử dụng cơ chế nào để giao tiếp và đồng bộ dữ liệu sản phẩm từ máy chủ?

Ứng dụng sử dụng thư viện Volley thông qua lớp RequestQueue. Để lấy danh sách loại sản phẩm và sản phẩm mới nhất, ứng dụng gửi các JsonArrayRequest đến địa chỉ máy chủ (Server.Đuonganloaisp, Server.Đuongấnnphammoinhat). Dữ liệu JSON trả về được bóc tách các trường (id, tensp, giasp, hinhanhsp, motasp) để gán vào các danh sách đối tượng Java (ArrayList<Sanpham>, ArrayList<Loaisp>).

2. Quy trình xử lý đơn hàng và lưu thông tin khách hàng được thực hiện như thế nào trong mã nguồn?

Khi người dùng xác nhận thông tin tại màn hình Thongtinnguoidung, hệ thống gửi một yêu cầu StringRequest dạng POST chứa thông tin cá nhân khách hàng (tên, số điện thoại, địa chỉ, email) lên máy chủ để tạo đơn hàng và nhận về mã đơn hàng (madonhang). Sau đó, nếu mã đơn hàng hợp lệ (madonhang > 0), hệ thống tiếp tục gửi một yêu cầu thứ hai (Duongdanchitietdonhang) đẩy toàn bộ mảng JSON chứa chi tiết các món hàng trong giỏ (masanpham, tensanpham, giasanpham, soluongsanpham) để lưu vào bảng chi tiết đơn hàng.

3. Tại sao báo cáo lại phân tích hạn chế coarse-grained locking của SQLite?

Trong Chương 3, tác giả chỉ ra rằng SQLite áp dụng cơ chế khóa mức thô (coarse-grained locking). Cơ chế này hỗ trợ nhiều tiến trình đọc dữ liệu đồng thời, nhưng tại một thời điểm chỉ cho phép một tiến trình ghi dữ liệu. Do đó, SQLite chỉ phù hợp làm cơ sở dữ liệu nhúng cục bộ trên thiết bị hoặc hệ thống có quy mô nhỏ, không phải là lựa chọn tối ưu cho hệ thống có lượng dữ liệu phát sinh liên tục với tần suất ghi cao từ nhiều người dùng.

4. Cấu hình thiết bị tối thiểu để triển khai và chạy ứng dụng là gì?

Theo phần đặc tả triển khai của đồ án (Chương 5), ứng dụng yêu cầu thiết bị di động chạy hệ điều hành Android từ phiên bản 6.0 (Marshmallow) trở lên, vi xử lý CPU tối thiểu 2 nhân, bộ nhớ RAM tối thiểu 2GB và dung lượng bộ nhớ trong còn trống ít nhất 200MB.


Kết luận

Đồ án "Xây dựng App bán hàng" của sinh viên Trần Thiên Trường đã hoàn thành đầy đủ quy trình kỹ nghệ phần mềm từ khâu khảo sát thực tế, phân tích yêu cầu, thiết kế hệ thống hướng đối tượng bằng UML đến cài đặt ứng dụng Android hoàn chỉnh. Sản phẩm đáp ứng tốt các nghiệp vụ thương mại điện tử cơ bản như duyệt danh mục, quản lý giỏ hàng, đặt hàng và lưu trữ thông tin giao dịch qua giao tiếp API bất đồng bộ. Mặc dù còn một số hạn chế về mặt giao diện và tính tối ưu trong phân tích thiết kế, đồ án vẫn là một tài liệu tham khảo học thuật có giá trị cho sinh viên chuyên ngành kỹ thuật phần mềm khi tiếp cận lập trình ứng dụng di động cơ sở.