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

Đồ án tốt nghiệp này được thực hiện trong bối cảnh sự phát triển mạnh mẽ của thiết bị di động thông minh và hệ điều hành Android, kéo theo nhu cầu ứng dụng công nghệ số vào hoạt động kinh doanh bán lẻ ngày càng tăng cao. Tác giả nhận định rằng môi trường kinh doanh hiện đại đặt ra áp lực cạnh tranh lớn cho các cửa hàng tiện lợi: khách hàng có xu hướng lựa chọn nơi mua sắm dựa trên cả chất lượng sản phẩm lẫn các chính sách quyền lợi đi kèm. Phương thức quản lý khách hàng và tích điểm truyền thống (thủ công, thẻ giấy) không còn đáp ứng được yêu cầu về tốc độ và sự tiện lợi mà người tiêu dùng hiện đại đòi hỏi.

Xuất phát từ thực tiễn đó, mục tiêu của đề tài là thiết kế và xây dựng một ứng dụng tích điểm dành cho cửa hàng tiện lợi, chạy trên nền tảng Android, bao gồm cả giao diện dành cho khách hàng lẫn giao diện quản trị (Admin). Các nhiệm vụ cụ thể được xác định như sau:

  1. Khảo sát tình hình thực tế của mô hình tích điểm khách hàng và các phần mềm tích điểm hiện có trên thị trường.
  2. Phân tích yêu cầu chức năng và phi chức năng của hệ thống.
  3. Thiết kế cơ sở dữ liệu, biểu đồ UML (usecase, tuần tự, phân cấp chức năng) và giao diện ứng dụng.
  4. Xây dựng ứng dụng hoàn chỉnh trên Android Studio và demo sản phẩm.

Đối tượng nghiên cứu: Ứng dụng tích điểm khách hàng trên nền tảng Android, áp dụng cho mô hình cửa hàng tiện lợi.
Phạm vi: Hệ thống phục vụ một cửa hàng và toàn bộ khách hàng của cửa hàng đó; không giới hạn thời gian triển khai cụ thể; phạm vi kỹ thuật giới hạn trong môi trường Android Studio và ngôn ngữ Java.


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

Nền tảng công nghệ và công cụ phát triển

Đồ án sử dụng Android Studio làm môi trường phát triển tích hợp (IDE) chính thức, được Google phát triển dựa trên IntelliJ IDEA của JetBrains, thay thế cho plugin Android trên Eclipse. Ngôn ngữ lập trình chính là Java. Hệ thống build sử dụng Gradle — được tích hợp sẵn trong Android Studio — để quản lý cấu hình và build ứng dụng.

Cấu trúc dự án Android chuẩn được áp dụng, bao gồm các thư mục:

Thư mục Chức năng
java/ Chứa toàn bộ mã nguồn Java và mã JUnit test
res/layout/ Chứa các file XML định nghĩa giao diện người dùng
res/drawable/ Chứa các tài nguyên hình ảnh
res/mipmap/ Chứa biểu tượng ứng dụng (launcher icon) với các độ phân giải hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi
res/values/ Chứa các file XML định nghĩa chuỗi, màu sắc, kiểu chữ
manifests/ Chứa AndroidManifest.xml — khai báo toàn bộ Activity, quyền truy cập và metadata
Gradle Scripts/ Chứa build.gradle cấp Project và cấp Module

Khung phân tích và thiết kế hệ thống

Đồ án áp dụng phương pháp phân tích hướng đối tượng với UML (Unified Modeling Language), cụ thể là:

  • Biểu đồ Usecase (mức tổng quát, mức khách hàng, mức Admin) để xác định phạm vi chức năng và mối quan hệ giữa các actor.
  • Biểu đồ tuần tự (13 biểu đồ) để mô tả luồng xử lý của từng chức năng.
  • Sơ đồ phân cấp chức năng để tổ chức toàn bộ các nghiệp vụ theo cấu trúc phân tầng.
  • Thiết kế cơ sở dữ liệu theo mô hình bảng quan hệ.

Nguồn dữ liệu: Khảo sát thực tế thị trường tích điểm khách hàng (phân tích 5 phần mềm tích điểm thương mại phổ biến tại Việt Nam: Nhanh.vn, Sapo, KiotViet, SUNO.VN, Tinhtien.net) kết hợp với yêu cầu nghiệp vụ đặt ra cho cửa hàng tiện lợi điển hình.


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

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

Chương này cung cấp nền tảng lý thuyết về môi trường phát triển ứng dụng. Tác giả trình bày tổng quan về Android — hệ điều hành dựa trên nền tảng Linux, thiết kế cho thiết bị màn hình cảm ứng — và phân tích chi tiết Android Studio về khái niệm, mục đích ra đời, tính năng, ưu điểm và nhược điểm.

Các tính năng nổi bật của Android Studio được điểm qua bao gồm: hệ thống build Gradle linh hoạt, trình mô phỏng (emulator) nhiều tính năng, chỉnh sửa trực tiếp (live edit) theo thời gian thực, tích hợp GitHub, hỗ trợ đa khung kiểm thử, và tích hợp Google Cloud Platform (bao gồm Google Cloud Messaging và App Engine). Chương cũng mô tả chi tiết cấu trúc thư mục dự án Android chuẩn và vai trò của từng file cốt lõi như activity_main.xml, MainActivity.java, và AndroidManifest.xml.

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

Đây là chương trọng tâm, được cấu trúc qua nhiều bước phân tích có hệ thống.

Khảo sát thực tế xác định bốn lợi ích chính của hệ thống tích điểm mà tác giả phân tích: (1) giữ chân khách hàng cũ, (2) tiếp cận khách hàng mới, (3) quản lý thông tin khách hàng có hệ thống, và (4) xây dựng lòng trung thành và tạo động lực mua hàng. Tác giả cũng khảo sát 5 phần mềm tích điểm thương mại hiện có để xác định khoảng trống cần giải quyết.

Phân tích yêu cầu xác định hai nhóm tác nhân (Actor):

STT Actor Quyền hạn
1 Người quản trị (Admin) Toàn quyền: tích điểm, đổi điểm, quản lý khách hàng, quản lý sản phẩm, tìm kiếm
2 Người dùng (Khách hàng) Giới hạn: đăng nhập, xem điểm, xem sản phẩm, quản lý thông tin cá nhân

Chín usecase được đặc tả chi tiết, bao gồm: Đăng nhập, Đăng ký, Tích điểm, Đổi điểm, Quản lý khách hàng, Quản lý thông tin sản phẩm, Tìm kiếm, Xem điểm, và Quản lý thông tin cá nhân. Mỗi usecase được đặc tả đầy đủ dòng sự kiện chính, dòng sự kiện thay thế, và trạng thái hệ thống trước/sau thực hiện.

Cơ sở dữ liệu được thiết kế gồm ba bảng chính:

Bảng Các trường chính Ghi chú
Admin Mk_ad (int, khóa chính), Ten_ad (varchar), Sdt_ad (int, khóa chính), Dia_chi (varchar) Lưu thông tin tài khoản quản trị
Khách hàng Mk_kh (int, khóa chính), Ten_kh (varchar), Sdt (int, khóa chính), Hoa_don (int), Dia_chi (varchar) Lưu thông tin và dữ liệu điểm khách hàng
Sản phẩm Ten-sp (char), Gia_spbd (int), Gia_spsg (int), Ngay_bd (datetime), Ngay_kt (datetime) Lưu thông tin sản phẩm khuyến mại

Yêu cầu phi chức năng xác định bốn tiêu chí: giao diện bắt mắt và dễ sử dụng, tốc độ xử lý nhanh và chính xác, bảo mật cao, và tương thích với đa phần thiết bị hiện tại.

Chương III: Xây dựng ứng dụng

Chương này mô tả quá trình triển khai thực tế ứng dụng. Tác giả tổ chức mã nguồn theo hai nhóm class rõ ràng:

Class thiết kế giao diện (XML): activity_home.xml, bottom_menu_admin.xml, fragment_detail_productsale.xml, fragment_add_productsale.xml, fragment_detail_customer.xml, fragment_all_customer.xml, fragment_add_customer.xml.

Class xử lý sự kiện (Java): HomeActivity, DetailProductSaleFlagment, AddProductSaleFlagment, AdapterProductSale, HomeFrafment, DetailCustomerFlagment, AddCustomerFlagment, AdapterCustomer.

Chương trình bày thiết kế giao diện cho các màn hình chính: đăng nhập, trang chủ khách hàng, tài khoản khách hàng, trang chủ Admin, thêm mới khách hàng, thêm mới sản phẩm, thông tin khách hàng của Admin, và sửa thông tin sản phẩm. Phần triển khai (demo) minh họa các luồng thao tác thực tế: đăng nhập, sửa thông tin cá nhân, đổi mật khẩu, đăng xuất, thêm/sửa/xóa sản phẩm, thêm/sửa/xóa/tìm kiếm khách hàng.


Thiết kế và triển khai

Kiến trúc hệ thống

Ứng dụng được xây dựng theo kiến trúc phân tầng hai vai trò: Admin (người bán hàng vận hành trực tiếp tại quầy) và Khách hàng (người dùng cuối tra cứu điểm và thông tin cá nhân). Hai vai trò này được phân quyền rõ ràng ngay từ màn hình đăng nhập.

Sơ đồ phân cấp chức năng tổ chức theo hai nhánh chính:

  • Admin: Tích điểm → Đổi điểm → Quản lý sản phẩm → Quản lý khách hàng
  • Khách hàng: Xem điểm → Xem sản phẩm → Sửa thông tin cá nhân

Công nghệ sử dụng

Thành phần Chi tiết
IDE Android Studio
Ngôn ngữ lập trình Java
Hệ thống build Gradle
Hệ điều hành mục tiêu Android (nền tảng Linux)
Thiết kế giao diện XML Layout (activity, fragment)
Phân tích thiết kế UML (usecase, sequence diagram, function hierarchy)

Cơ chế nghiệp vụ tích điểm

Cơ chế tích điểm hoạt động theo nguyên lý: Admin nhập tổng hóa đơn của khách hàng, hệ thống tự động quy đổi thành điểm theo tỷ lệ chiết khấu của cửa hàng và cộng vào tài khoản khách. Khi đổi điểm, hệ thống quy đổi điểm sang tiền mặt và trừ trực tiếp vào hóa đơn. Tìm kiếm khách hàng được thực hiện thông qua số điện thoại; nếu không tìm thấy, hệ thống tự động chuyển sang trang thêm mới khách hàng.


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

Kết quả chính

Đồ án hoàn thành một ứng dụng Android có đầy đủ các chức năng đã đề xuất:

  • 11 chức năng được hiện thực hoàn chỉnh theo bảng yêu cầu chức năng, bao gồm: tích điểm theo phần trăm hóa đơn, đổi điểm sang tiền mặt, thêm/sửa/xóa sản phẩm, thêm/sửa/xóa khách hàng, tìm kiếm, sửa thông tin cá nhân, đổi mật khẩu.
  • 9 usecase được đặc tả và triển khai đầy đủ, bao phủ cả hai luồng Actor.
  • 13 biểu đồ tuần tự mô tả chi tiết luồng xử lý từng chức năng.
  • 3 bảng cơ sở dữ liệu (Admin, Khách hàng, Sản phẩm) được thiết kế và triển khai.
  • Giao diện được xây dựng cho 8 màn hình chính của ứng dụng.

Giải pháp đề xuất

Ứng dụng đề xuất thay thế phương thức quản lý thủ công tại cửa hàng tiện lợi bằng giải pháp số hoá trên thiết bị Android, với hai giao diện riêng biệt được bảo vệ bởi hệ thống đăng nhập phân quyền. Cơ chế tích điểm theo phần trăm tổng hóa đơn và đổi điểm trực tiếp sang tiền mặt trên hóa đơn là hai nghiệp vụ trung tâm được đơn giản hoá để phù hợp với thao tác thực tế tại quầy thu ngân.

Đóng góp

Tác giả xây dựng một giải pháp di động hoàn chỉnh cho bài toán tích điểm khách hàng ở quy mô cửa hàng đơn lẻ — phân khúc thường bị bỏ qua bởi các phần mềm thương mại lớn như Sapo hay KiotViet vốn hướng đến mô hình đa kênh hoặc chuỗi bán lẻ. Ứng dụng được phát triển hoàn toàn trên Android Studio với Java — công nghệ miễn phí, dễ tiếp cận — làm tăng tính khả thi triển khai thực tế.


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

Dựa trên phạm vi được xác định trong đồ án, một số hạn chế có thể nhận thấy:

  • Ứng dụng được thiết kế cho một cửa hàng đơn lẻ, chưa hỗ trợ mô hình chuỗi nhiều chi nhánh.
  • Cơ sở dữ liệu được thiết kế cục bộ; đồ án không đề cập đến giải pháp đồng bộ dữ liệu đám mây hay máy chủ từ xa, dẫn đến hạn chế về khả năng truy cập từ nhiều thiết bị cùng lúc.
  • Ứng dụng chỉ triển khai trên nền tảng Android, chưa có phiên bản iOS hoặc web tương ứng.
  • Cơ chế tích điểm hiện tại theo tỷ lệ chiết khấu cố định; các chương trình tích điểm phức tạp hơn (theo hạng thành viên, theo danh mục sản phẩm, điểm thưởng sự kiện) chưa được đề cập.
  • Đồ án không đề cập đến kiểm thử tự động hay kiểm thử hiệu năng với lượng dữ liệu lớn.

Hướng mở rộng tiếp theo có thể bao gồm: tích hợp backend đám mây, phát triển phiên bản đa nền tảng, và bổ sung tính năng thống kê doanh thu theo điểm tích lũy.


Giá trị tham khảo

Đồ án phù hợp để tham khảo cho các nhóm đối tượng sau:

  • Sinh viên ngành Công nghệ thông tin (đặc biệt chuyên ngành phát triển ứng dụng di động) đang học hoặc thực hành xây dựng ứng dụng Android lần đầu, vì đồ án trình bày rõ cấu trúc dự án Android Studio từ cơ bản đến triển khai thực tế.
  • Sinh viên làm đồ án tốt nghiệp về hệ thống quản lý bán lẻ hoặc CRM (Customer Relationship Management) quy mô nhỏ, có thể tham khảo phần thiết kế usecase, biểu đồ tuần tự và mô hình cơ sở dữ liệu ba bảng đơn giản nhưng đủ để vận hành nghiệp vụ cốt lõi.
  • Người học tự tìm hiểu lập trình Android với Java có thể tham khảo phần Chương I về cấu trúc thư mục và các file quan trọng, và Chương III về cách tổ chức class giao diện (XML) tách biệt với class xử lý sự kiện (Java/Fragment).
  • Chủ cửa hàng tiện lợi hoặc người muốn xây dựng ứng dụng tích điểm đơn giản có thể tham khảo phần phân tích nghiệp vụ ở Chương II, đặc biệt là đặc tả usecase tích điểm và đổi điểm.

Các phần đáng tham khảo nhất: Bảng yêu cầu chức năng và phi chức năng (Chương II), đặc tả 9 usecase với dòng sự kiện thay thế, và phần tổ chức class trong Chương III.


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

1. Ai là người thực hiện thao tác tích điểm cho khách hàng trong ứng dụng này, và quy trình diễn ra như thế nào?
Theo thiết kế trong đồ án, Admin (người bán hàng) là người thực hiện toàn bộ thao tác tích điểm. Quy trình cụ thể: Admin tìm kiếm tài khoản khách hàng bằng số điện thoại → truy cập vào trang thông tin khách hàng → nhấn "thêm điểm" → nhập tổng hóa đơn → hệ thống tự động quy đổi sang điểm theo tỷ lệ chiết khấu của cửa hàng → lưu. Khách hàng không thể tự cộng điểm cho mình.

2. Khách hàng có thể tự đổi điểm lấy tiền giảm giá không?
Không. Theo đặc tả usecase đổi điểm trong đồ án, Admin là người thực hiện thao tác đổi điểm. Khi khách muốn quy đổi, Admin vào tài khoản khách, nhập số điểm cần đổi, hệ thống quy đổi điểm sang tiền và trừ trực tiếp vào hóa đơn. Khách hàng chỉ có quyền xem số điểm tích lũy của mình thông qua giao diện trang thông tin cá nhân.

3. Hệ thống xử lý như thế nào khi Admin tìm kiếm khách hàng nhưng số điện thoại chưa tồn tại?
Theo đặc tả usecase tìm kiếm trong Chương II, khi số điện thoại không có trong hệ thống, hệ thống sẽ hiển thị thông báo lỗi và tự động chuyển hướng sang trang thêm mới khách hàng. Admin có thể chấp nhận để tạo tài khoản mới cho khách ngay lập tức tại đó.

4. Cơ sở dữ liệu của ứng dụng được thiết kế gồm những bảng nào và bảng khách hàng lưu những thông tin gì?
Cơ sở dữ liệu gồm ba bảng: Admin, Khách hàng và Sản phẩm. Bảng khách hàng lưu năm trường: Mk_kh (mật khẩu tài khoản, kiểu int, khóa chính), Ten_kh (tên khách hàng, varchar), Sdt (số điện thoại, int, khóa chính), Hoa_don (tổng hóa đơn, int), và Dia_chi (địa chỉ, varchar). Đáng chú ý là trường Hoa_don được lưu trực tiếp trong bảng khách hàng, phản ánh nghiệp vụ tích điểm dựa trên tổng giá trị mua hàng tích lũy.

5. Sản phẩm hiển thị trên ứng dụng dành cho khách hàng là loại sản phẩm gì?
Theo phân tích yêu cầu trong Chương II, sản phẩm được hiển thị trên ứng dụng là sản phẩm khuyến mại — bao gồm sản phẩm giảm giá có thời hạn, sản phẩm mới ra mắt, hoặc sản phẩm bán chạy. Bảng sản phẩm trong cơ sở dữ liệu lưu các trường: tên sản phẩm, giá ban đầu (Gia_spbd), giá sau giảm (Gia_spsg), ngày bắt đầu (Ngay_bd) và ngày kết thúc khuyến mại (Ngay_kt). Khi hết chương trình, Admin chủ động xóa sản phẩm khỏi ứng dụng.


Kết luận

Đồ án tốt nghiệp "Phát triển ứng dụng tích điểm cho cửa hàng tiện ích trên nền tảng Android" của sinh viên Trương Thị Trinh — Trường Đại học Công nghệ Đông Á, năm 2023 — trình bày quá trình phân tích, thiết kế và xây dựng hoàn chỉnh một ứng dụng di động Android phục vụ nghiệp vụ tích điểm và quản lý khách hàng cho cửa hàng tiện lợi quy mô nhỏ. Hệ thống được thiết kế rõ ràng theo hai vai trò phân quyền (Admin và Khách hàng), với 11 chức năng nghiệp vụ, 9 usecase được đặc tả đầy đủ và 13 biểu đồ tuần tự mô tả chi tiết từng luồng xử lý. Công nghệ sử dụng hoàn toàn là Android Studio và Java — bộ công cụ miễn phí, phổ biến trong đào tạo CNTT — làm cho kết quả nghiên cứu có tính tái hiện cao trong môi trường học thuật và thực hành.