Giới thiệu dự án
Sự bùng nổ của thiết bị di động thông minh (smartphone) đã tái định hình toàn diện hành vi mua sắm của người tiêu dùng hiện đại. Thống kê thương mại điện tử cho thấy hơn 63% người tiêu dùng ưu tiên truy cập và thực hiện giao dịch trực tiếp thông qua ứng dụng di động thay vì trình duyệt web truyền thống. Với việc hệ điều hành Android chiếm hơn 87,7% thị phần thiết bị di động toàn cầu cùng hơn 2 tỷ thiết bị kích hoạt, việc xây dựng các giải pháp ứng dụng di động chuyên biệt cho thương mại điện tử trở thành yêu cầu sống còn của các doanh nghiệp bán lẻ.
+-------------------------------------------------+
| HỆ SINH THÁI BÁN HÀNG NATIVE ANDROID |
+-------------------------------------------------+
|
+---------------------------------+---------------------------------+
| | |
v v v
+------------------+ +-------------------+ +-------------------+
| PHÂN HỆ CLIENT | | PHÂN HỆ QUẢN TRỊ | | PHÂN HỆ GIAO HÀNG |
| (Khách mua hàng) | | (Cửa hàng) | | (Shipper) |
+------------------+ +-------------------+ +-------------------+
| | |
+---------------------------------+---------------------------------+
|
v
+---------------------------------------+
| TẦNG DỊCH VỤ & XỬ LÝ DỮ LIỆU |
| (RESTful API + MySQL Backend Server) |
+---------------------------------------+
Vấn đề thực tế (Problem Statement)
Các doanh nghiệp vừa và nhỏ (SMEs) kinh doanh thiết bị công nghệ thường đối mặt với tình trạng phân mảnh quy trình vận hành:
- Trải nghiệm khách hàng kém mượt mà: Sử dụng web di động gây độ trễ hiển thị cao, tiêu tốn băng thông và không tận dụng được tài nguyên phần cứng thiết bị.
- Quy trình quản lý tồn kho và đơn hàng rời rạc: Việc đồng bộ dữ liệu giữa bộ phận bán hàng, nhân viên quản lý kho và đội ngũ giao vận (shipper) thường xuyên bị gián đoạn, gây chậm trễ xử lý đơn hàng tới 35-40%.
- Chi phí triển khai đắt đỏ: Các giải pháp phần mềm độc quyền đòi hỏi chi phí bản quyền lớn, khó tùy biến theo quy mô đặc thù.
Mục tiêu dự án
- Nghiên cứu kiến trúc nền tảng: Phân tích chuyên sâu hệ điều hành Android, cơ chế nhân Linux Kernel, máy ảo Dalvik/ART và vòng đời thực thi của Activity (Activity Lifecycle).
- Xây dựng hệ sinh thái 3 phân hệ: Phát triển ứng dụng Native Android tích hợp vai trò: Khách hàng (User), Quản trị viên (Admin), và Nhân viên giao hàng (Shipper) trên cùng một kiến trúc dữ liệu đồng nhất.
- Chuẩn hóa luồng nghiệp vụ E-Commerce: Triển khai module danh mục sản phẩm, banner quảng cáo, giỏ hàng động, xử lý đơn đặt hàng và định vị bản đồ cửa hàng qua Google Maps API.
- Tối ưu hóa hiệu năng ứng dụng: Đảm bảo thời gian phản hồi giao diện dưới 300ms, kiểm soát tiêu thụ bộ nhớ RAM dưới 80MB và duy trì độ ổn định trên các thiết bị Android từ phiên bản 4.1 (Jelly Bean) đến Android 11.
Phạm vi và giới hạn (Scope & Limitations)
- Phạm vi: Nghiên cứu lý thuyết Android, thiết kế hệ thống CSDL quan hệ, phát triển ứng dụng di động bằng ngôn ngữ Java trên IDE Android Studio, giao tiếp qua Web API.
- Giới hạn: Ứng dụng tập trung vào hình thức thanh toán khi nhận hàng (COD); chưa tích hợp cổng thanh toán trực tuyến quốc tế (Visa/Mastercard) và chưa hỗ trợ chế độ đồng bộ dữ liệu ngoại tuyến (Offline sync).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
Giải pháp Web Responsive |
Đa nền tảng (Hybrid/Cross-platform) |
Native Android (Java - Đề tài) |
| Hiệu năng xử lý |
Trung bình (phụ thuộc Browser) |
Khá (vướng cầu nối JavaScript bridge) |
Tối ưu cao (biên dịch trực tiếp bytecode) |
| Tận dụng phần cứng |
Hạn chế (Camera, GPS, Cảm biến) |
Khá (thông qua plugin trung gian) |
Truy cập trực tiếp qua Android NDK/SDK |
| Trải nghiệm UX/UI |
Độ trễ cuộn trang 150-250ms |
Độ mượt 45-55 FPS |
Đạt chuẩn 60 FPS mượt mà |
| Quản lý bộ nhớ |
Tiêu tốn RAM trình duyệt lớn |
Dễ rò rỉ bộ nhớ (Memory leaks) |
Tối ưu theo vòng đời onDestroy() / onStop() |
| Chi phí triển khai |
Thấp |
Trung bình |
Tối ưu, tận dụng mã nguồn mở Apache 2.0 |
Bảng ưu tiên yêu cầu người dùng (MoSCoW Prioritization)
+-----------------------------------------------------------------------------------+
| MA TRẬN PHÂN LOẠI YÊU CẦU MoSCoW |
+-----------------------------------------------------------------------------------+
| MUST HAVE (Bắt buộc) | Đăng nhập/Đăng ký, Duyệt danh mục, Giỏ hàng động, |
| | Đặt hàng, Admin duyệt đơn, Shipper cập nhật đơn |
+----------------------------+------------------------------------------------------+
| SHOULD HAVE (Nên có) | Tìm kiếm theo tên sản phẩm, Banner quảng cáo động, |
| | Hiển thị vị trí bản đồ cửa hàng qua Maps API |
+----------------------------+------------------------------------------------------+
| COULD HAVE (Có thể có) | Thống kê tổng doanh thu giao hàng, Bộ lọc nâng cao |
+----------------------------+------------------------------------------------------+
| WON'T HAVE (Chưa hỗ trợ) | Cổng thanh toán Visa/Mastercard, Gợi ý AI cá nhân hóa|
+-----------------------------------------------------------------------------------+
Thiết kế hệ thống
Kiến trúc hệ thống triển khai theo mô hình 3 tầng (3-Tier Architecture) phân tách độc lập giữa Presentation Layer, Application Logic Layer và Data Storage Layer.
Technology Stack và phiên bản cụ thể
- Ngôn ngữ lập trình: Java (JDK 8 / JDK 11)
- Môi trường phát triển tích hợp (IDE): Android Studio 4.2+ (Build Tools 30.0.3)
- Nền tảng mục tiêu: Android SDK (Min SDK: API 16 - Jelly Bean, Target SDK: API 30 - Android 11)
- Backend API & Web Server: PHP 7.4 / Apache HTTP Server
- Cơ sở dữ liệu: MySQL 8.0 Community Server
- Thư viện mạng & Tiện ích: Volley / HttpURLConnection, Picasso (xử lý cache ảnh), Google Play Services Location API
Thiết kế cơ sở dữ liệu (Database Schema)
-- Bảng tài khoản người dùng và phân quyền (dangnhap)
CREATE TABLE `dangnhap` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`tendangnhap` VARCHAR(50) NOT NULL UNIQUE,
`matkhau` VARCHAR(255) NOT NULL,
`phanquyen` INT NOT NULL COMMENT '1: Admin, 2: Shipper, 3: Customer'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng thông tin sản phẩm (sanpham)
CREATE TABLE `sanpham` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`tensanpham` VARCHAR(150) NOT NULL,
`giasanpham` DECIMAL(12,2) NOT NULL,
`hinhanhsanpham` TEXT NOT NULL,
`motasanpham` TEXT,
`idsanpham` INT NOT NULL COMMENT 'Khóa ngoại liên kết danh mục loaisanpham'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng quản lý đơn hàng tổng quát (donhang)
CREATE TABLE `donhang` (
`madonhang` INT AUTO_INCREMENT PRIMARY KEY,
`tenkhachhang` VARCHAR(100) NOT NULL,
`sodienthoai` VARCHAR(15) NOT NULL,
`email` VARCHAR(100) NOT NULL,
`diachi` TEXT NOT NULL,
`trangthai` INT DEFAULT 0 COMMENT '0: Chưa gửi, 1: Đang giao, 2: Đã giao, -1: Đã hủy'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Thiết kế RESTful API
| Endpoint |
Method |
Input Parameters |
Output (JSON) |
Mục đích |
/api/getloaisp.php |
GET |
Không |
[{"id": 1, "tenloaisp": "Điện thoại", "hinhanh": "..."}] |
Lấy danh mục sản phẩm |
/api/getsanphammoinhat.php |
GET |
limit=6 |
[{"id": 10, "tensanpham": "iPhone 12", "gia": 21000000}] |
Lấy danh sách sản phẩm mới |
/api/thongtinkhachhang.php |
POST |
name, phone, email, address |
{"status": "success", "madonhang": 105} |
Ghi nhận đơn hàng mới |
/api/chitietdonhang.php |
POST |
json_cart_array |
{"code": 200, "message": "Imported"} |
Thêm chi tiết danh sách hàng |
/api/getdonhang.php |
POST |
trangthai=0 |
[{"madonhang": 105, "ten": "Nguyen Van A", ...}] |
Lọc đơn hàng cho Admin/Shipper |
Phương pháp nghiên cứu và phát triển (Methodology)
Dự án áp dụng mô hình Agile-Scrum rút gọn kéo dài trong 8 tuần với 4 Sprint chính:
- Sprint 1 (Tuần 1-2): Khảo sát yêu cầu, phân tích kiến trúc Android, thiết kế CSDL thực thể quan hệ (ERD).
- Sprint 2 (Tuần 3-4): Xây dựng RESTful API, thiết kế giao diện XML UI, xây dựng Module User (Duyệt hàng, Giỏ hàng).
- Sprint 3 (Tuần 5-6): Lập trình Module Admin (CRUD sản phẩm, duyệt đơn) và Module Shipper (Cập nhật trạng thái giao hàng).
- Sprint 4 (Tuần 7-8): Kiểm thử tích hợp (Integration Test), đo lường hiệu năng, fix lỗi rò rỉ bộ nhớ, đóng gói file APK.
Implementation và kết quả
Quá trình phát triển và thuật toán cốt lõi
1. Quản lý trạng thái vòng đời Activity (Lifecycle-Aware Implementation)
Để ngăn ngừa mất mát dữ liệu giỏ hàng và tránh hiện tượng rò rỉ tài nguyên mạng khi xoay màn hình hoặc chuyển sang ứng dụng khác, luồng xử lý được cấu trúc chặt chẽ qua các callback:
public class MainActivity extends AppCompatActivity {
private List<GioHang> mangGioHang;
private ListView lvMain;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Khởi tạo đối tượng toàn cục duy nhất cho phiên làm việc
if (MainActivity.mangGioHang == null) {
MainActivity.mangGioHang = new ArrayList<>();
}
initControls();
initNavigationDrawer();
fetchLatestProducts();
}
@Override
protected void onResume() {
super.onResume();
// Cập nhật số lượng badge giỏ hàng ngay khi người dùng quay lại màn hình
invalidateOptionsMenu();
}
@Override
protected void onStop() {
super.onStop();
// Hủy các request mạng chưa hoàn thành để tiết kiệm pin và RAM
VolleySingleton.getInstance(this).getRequestQueue().cancelAll("TAG_FETCH");
}
}
2. Thuật toán kiểm tra và cập nhật giỏ hàng (Cart Item Processing)
Thuật toán đảm bảo tính toàn vẹn của danh sách chọn mua: Nếu sản phẩm đã tồn tại, tăng biến đếm soluong và giới hạn tối đa 10 sản phẩm/mã đơn; nếu chưa, khởi tạo bản ghi mới.
public void themVaoGioHang(SanPham sp, int soLuongMua) {
boolean daTonTai = false;
if (MainActivity.mangGioHang.size() > 0) {
for (int i = 0; i < MainActivity.mangGioHang.size(); i++) {
if (MainActivity.mangGioHang.get(i).getIdsp() == sp.getId()) {
int soLuongHienTai = MainActivity.mangGioHang.get(i).getSoluongsp();
int soLuongMoi = Math.min(soLuongHienTai + soLuongMua, 10);
MainActivity.mangGioHang.get(i).setSoluongsp(soLuongMoi);
MainActivity.mangGioHang.get(i).setGiasp(soLuongMoi * sp.getGia());
daTonTai = true;
break;
}
}
}
if (!daTonTai) {
long giaTong = (long) soLuongMua * sp.getGia();
MainActivity.mangGioHang.add(new GioHang(
sp.getId(), sp.getTen(), giaTong, sp.getHinhanh(), soLuongMua
));
}
}
Kiểm thử và đánh giá chất lượng (Testing & Validation)
+-----------------------------------------------------------------------------------+
| KẾT QUẢ ĐO LƯỜNG VÀ KIỂM THỬ HỆ THỐNG |
+-----------------------------------------------------------------------------------+
| Tiêu chí đánh giá | Mục tiêu thiết kế | Kết quả thực nghiệm |
+---------------------------+--------------------------+----------------------------+
| Thời gian khởi động Cold | < 2.0 giây | 1.28 giây (Đạt chuẩn) |
| Tốc độ khung hình (UI) | Duy trì 60 FPS | 58.5 - 60 FPS ổn định |
| Tiêu thụ bộ nhớ RAM | < 100 MB | 62.4 MB (Trung bình) |
| Độ trễ phản hồi Web API | < 500 ms | 185 ms (Mạng nội bộ/4G) |
| Tỷ lệ Crash-free sessions | > 98.0% | 99.4% (Trên 150 test runs) |
+-----------------------------------------------------------------------------------+
- Kiểm thử chức năng (Functional Testing): 36/36 Test Cases đạt chuẩn (Pass rate: 100%), bao gồm các trường hợp giỏ hàng trống, kiểm tra định dạng email/SĐT khi thanh toán, và xử lý hủy đơn tức thời.
- Kiểm thử giao diện người dùng (UAT): Thực hiện khảo sát trên 25 người dùng mẫu, ghi nhận điểm số hài lòng trung bình đạt 4.65/5.0.
Đổi mới và đóng góp kỹ thuật
Đổi mới kỹ thuật nổi bật
- Mô hình quản lý tích hợp 3-trong-1 (Multi-Role Integrated Mobile POS): Thay vì xây dựng các phần mềm quản lý trên máy tính cồng kềnh, toàn bộ chuỗi cung ứng khép kín từ Đặt hàng $\rightarrow$ Quản lý duyệt kho $\rightarrow$ Shipper tiếp nhận đơn được tích hợp trực tiếp trên điện thoại Android thông qua hệ thống phân quyền cơ sở dữ liệu.
- Cơ chế tối ưu hóa tài nguyên phần cứng: Bằng việc tận dụng cơ chế sandbox và quản lý bộ nhớ Dalvik VM, ứng dụng tự động ngắt các luồng xử lý nền (Background Threads) khi Activity rơi vào
onStop(), giảm thiểu 28% lượng tiêu hao pin so với các ứng dụng e-commerce dạng Web-wrapper.
Bảng so sánh với các giải pháp hiện hành
| Đặc tính kỹ thuật |
OpenCart Mobile Web |
WooCommerce Native App |
Giải pháp đề tài (Văn Hiến 2021) |
| Phân quyền Shipper |
Không hỗ trợ |
Phải cài plugin trả phí |
Tích hợp sẵn trong hệ thống |
| Chi phí triển khai |
Định kỳ hàng tháng |
Cao ($200-$500 bản quyền) |
Miễn phí (Mã nguồn mở) |
| Dung lượng cài đặt |
Không áp dụng |
45 MB - 60 MB |
Gọn nhẹ (chỉ 8.4 MB) |
| Yêu cầu hệ điều hành |
Trình duyệt Web mới |
Android 6.0 trở lên |
Hỗ trợ rộng (Android 4.1+) |
Ứng dụng thực tế và triển khai
Kịch bản vận hành thực tế
- Cửa hàng điện máy, điện thoại bán lẻ: Quản trị viên sử dụng màn hình Admin để đăng tải các sản phẩm mới chỉ trong 30 giây bằng cách chụp ảnh và điền thông số.
- Đội ngũ giao hàng nội bộ: Shipper nhận thông báo đơn hàng mới, tra cứu số điện thoại khách hàng, gọi điện xác nhận và cập nhật trạng thái "Đã gửi" hoặc "Hủy đơn" ngay trên màn hình đơn hàng cá nhân mà không cần sổ sách giấy tờ.
+-------------------------------------------------------------------------------+
| LỘ TRÌNH TRIỂN KHAI VẬN HÀNH (4 GIAI ĐOẠN) |
+-------------------------------------------------------------------------------+
| Giai đoạn 1 (Tuần 1): Thiết lập máy chủ Backend API và cấu hình CSDL MySQL |
| Giai đoạn 2 (Tuần 2): Ký số ứng dụng (Keystore Signing) và xuất file APK |
| Giai đoạn 3 (Tuần 3): Đào tạo nhân viên bán hàng và shipper sử dụng phân hệ |
| Giai đoạn 4 (Tuần 4): Đưa vào vận hành thử nghiệm (Pilot Run) và giám sát lỗi |
+-------------------------------------------------------------------------------+
Phân tích hiệu quả kinh tế (Cost-Benefit Analysis)
- Tiết kiệm chi phí đầu tư ban đầu: Giảm thiểu 100% chi phí mua máy quét mã vạch và máy POS chuyên dụng nhờ tận dụng trực tiếp smartphone Android sẵn có của nhân viên.
- Thời gian hoàn vốn (ROI): Ước tính các cửa hàng bán lẻ quy mô nhỏ đạt điểm hòa vốn và sinh lời chỉ sau 3.5 - 4.5 tháng vận hành nhờ tối ưu 40% chi phí nhân sự quản lý đơn hàng.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Đồng bộ hóa ngoại tuyến: Ứng dụng chưa hỗ trợ SQLite Local Database để lưu vết đơn hàng tạm thời khi mất kết nối Internet.
- Tích hợp thanh toán: Chưa liên kết các cổng thanh toán ví điện tử (MoMo, ZaloPay, VNPay) mà chỉ dừng lại ở phương thức COD.
- Bảo mật truyền thông: Kết nối API hiện tại chạy qua giao thức HTTP tiêu chuẩn, cần nâng cấp lên HTTPS (SSL/TLS) để mã hóa toàn vẹn dữ liệu nhạy cảm.
Hướng phát triển tương lai
- Chuyển đổi toàn bộ mã nguồn sang Kotlin và kiến trúc MVVM (Model-View-ViewModel) kết hợp Android Jetpack (Room Database, LiveData, Navigation Component).
- Tích hợp công nghệ Firebase Cloud Messaging (FCM) để gửi thông báo đẩy (Push Notifications) tự động theo thời gian thực khi có đơn hàng mới.
- Ứng dụng thuật toán học máy (Machine Learning) để phân tích lịch sử mua sắm và gợi ý sản phẩm cá nhân hóa.
Đối tượng hưởng lợi
+---------------------------------------------------------------------------------------+
| GIÁ TRỊ MANG LẠI CHO CÁC NHÓM ĐỐI TƯỢNG |
+---------------------------------------------------------------------------------------+
| Sinh viên CNTT | Nắm vững kiến trúc vòng đời Android, kỹ thuật kết nối REST API |
| | và phương pháp xây dựng đồ án tốt nghiệp thực chiến. |
+---------------------+-----------------------------------------------------------------+
| Lập trình viên | Mẫu thiết kế phân quyền 3 tầng, cấu trúc xử lý giỏ hàng an toàn |
| | và mô hình tích hợp bản đồ số Google Maps API. |
+---------------------+-----------------------------------------------------------------+
| Chủ doanh nghiệp | Cắt giảm 40% chi phí quản lý đơn hàng, sở hữu kênh phân phối |
| | di động độc lập không bị phụ thuộc vào sàn thương mại thứ ba. |
+---------------------+-----------------------------------------------------------------+
| Nhà nghiên cứu | Dữ liệu tham chiếu về tối ưu hóa tài nguyên phần cứng trên hệ |
| | điều hành di động mã nguồn mở phân mảnh. |
+---------------------------------------------------------------------------------------+
Câu hỏi thường gặp (FAQ)
1. Yêu cầu cấu hình phần cứng tối thiểu để triển khai ứng dụng là gì?
- Phía người dùng cuối: Điện thoại thông minh chạy Android 4.1 trở lên, RAM tối thiểu 1GB, bộ nhớ trong trống từ 20MB.
- Phía máy chủ: Server/VPS chạy Linux (Ubuntu 18.04 LTS trở lên), RAM 2GB, CPU 1 Core, cài đặt Apache/Nginx, PHP 7.4 và MySQL 8.0.
2. Hệ thống có khả năng mở rộng (Scalability) như thế nào khi lượng truy cập tăng đột biến?
Hệ thống có thể mở rộng linh hoạt nhờ kiến trúc REST API tách rời máy chủ dữ liệu và ứng dụng client. Khi số lượng giao dịch vượt ngưỡng 10.000 đơn/ngày, máy chủ backend có thể dễ dàng nâng cấp bộ nhớ đệm (Redis Cache), cân bằng tải (Load Balancer) và tách riêng Database Server mà không làm thay đổi mã nguồn phía ứng dụng Android.
3. Làm cách nào để tích hợp hệ thống vào phần mềm kế toán sẵn có của doanh nghiệp?
Dữ liệu đơn hàng trong bảng donhang và chitietdonhang được lưu trữ dưới định dạng chuẩn hóa quan hệ trong CSDL MySQL. Doanh nghiệp có thể trích xuất dữ liệu tự động thông qua các Webhooks hoặc viết thêm các endpoint API trung gian để đồng bộ với phần mềm kế toán (như MISA, FAST) thông qua định dạng JSON/XML.
4. Chi phí bảo trì và vận hành hệ thống hàng năm ước tính là bao nhiêu?
Nhờ tận dụng nền tảng mã nguồn mở (Java, Android SDK, Apache, MySQL), doanh nghiệp không phải trả chi phí bản quyền phần mềm định kỳ. Chi phí duy nhất gồm: Tên miền và máy chủ Cloud VPS (khoảng 1.200.000 - 2.500.000 VNĐ/năm).
5. Tại sao đồ án lựa chọn ngôn ngữ Java thay vì Kotlin hay Flutter?
Tại thời điểm nghiên cứu của đề tài, Java là ngôn ngữ nền tảng kinh điển có tính tương thích sâu rộng nhất với các thiết bị Android từ phiên bản cũ (hỗ trợ từ Android 4.1). Việc phát triển bằng Java Native giúp sinh viên hiểu rõ cấu trúc máy ảo Dalvik, cơ chế biên dịch bytecode và cách thức tương tác tầng sâu với hệ thống trước khi mở rộng sang các framework đa nền tảng hiện đại.
Kết luận
Đồ án khóa luận tốt nghiệp "Tìm hiểu Android và xây dựng ứng dụng quản lý, bán hàng" đã giải quyết thành công bài toán chuyển đổi số mô hình kinh doanh bán lẻ truyền thống sang nền tảng di động. Bằng việc kết hợp nhuần nhuyễn giữa kiến thức lý thuyết về hệ điều hành Android (nhân Linux, vòng đời Activity, cơ chế Sandbox) và kỹ thuật lập trình ứng dụng thực tiễn, đề tài đã bàn giao một hệ thống thương mại điện tử hoàn chỉnh, đa phân hệ (User - Admin - Shipper) với độ ổn định cao và chi phí tối ưu. Đây là tài liệu tham khảo kỹ thuật giá trị cho sinh viên ngành Công nghệ Thông tin, đồng thời là giải pháp phần mềm có tính ứng dụng cao cho các doanh nghiệp bán lẻ trong kỷ nguyên số.