Giới thiệu dự án
Thương mại điện tử (E-Commerce) tại Việt Nam duy trì tốc độ tăng trưởng kép hàng năm (CAGR) trên 20%, trở thành phương thức phân phối then chốt cho ngành bán lẻ. Tuy nhiên, theo khảo sát thực tế tại các đơn vị kinh doanh vừa và nhỏ điển hình như chuỗi cửa hàng thực phẩm E-Shopper Hà Nội, việc vận hành phần lớn vẫn phụ thuộc vào phương thức quản trị thủ công qua sổ sách và bảng tính rời rạc. Mô hình kinh doanh truyền thống này bộc lộ nhiều điểm nghẽn nghiêm trọng: chi phí mở rộng điểm bán vật lý quá cao, chu kỳ cập nhật thông tin sản phẩm và chương trình khuyến mãi đến khách hàng bị trễ từ 3–5 ngày, tỷ lệ thất thoát hoặc hư hỏng hàng hóa trong quá trình trưng bày thực tế chiếm từ 4–7% tổng giá trị kho, đồng thời việc tra cứu lịch sử mua hàng và tổng hợp báo cáo doanh thu định kỳ mất nhiều giờ lao động thủ công.
Nhằm giải quyết triệt để các rào cản trên, đề tài khóa luận tốt nghiệp "Xây dựng Website Bán hàng Trực tuyến E-Shopper" (Thực hiện bởi sinh viên Nguyễn Hoàng Hải, GVHD: TS. Nguyễn Đăng Minh - Khoa Công nghệ Thông tin & Điện tử Viễn thông, Trường Đại học Hòa Bình) tập trung nghiên cứu, thiết kế và phát triển nền tảng thương mại điện tử chuyên biệt. Hệ thống số hóa toàn diện quy trình nghiệp vụ bán lẻ thực phẩm, từ quản lý danh mục, kiểm soát biến động tồn kho, điều phối giỏ hàng đến xử lý luồng đơn hàng trực tuyến theo thời gian thực.
graph LR
A[Khách hàng / Vãng lai] -->|Duyệt SP, Đặt hàng| B(Web E-Shopper Engine)
B -->|Xử lý Session & Business Logic| C{Cơ sở dữ liệu Quan hệ}
D[Quản trị viên Admin/Manager] -->|Quản lý Kho, Đơn hàng, Thống kê| B
C -->|Lưu trữ Transaction & Logs| E[(Database Storage)]
Mục tiêu của dự án
- Số hóa 100% danh mục và quy trình bán hàng: Xây dựng hệ thống portal bán lẻ cho phép hiển thị trực quan thông tin sản phẩm, nguồn gốc xuất xứ, bảng giá và tình trạng khuyến mãi theo thời gian thực.
- Tối ưu hóa quy trình đặt hàng và quản lý Session: Phát triển module giỏ hàng (Shopping Cart) với cơ chế lưu trữ phiên làm việc tối ưu, cho phép khách vãng lai và thành viên thao tác thêm/sửa/xóa sản phẩm với độ trễ phản hồi dưới 1 giây.
- Phân quyền người dùng đa cấp (Role-Based Access Control - RBAC): Thiết lập ranh giới bảo mật nghiêm ngặt giữa 4 nhóm đối tượng: Khách vãng lai (Guest), Khách hàng thành viên (Customer), Quản lý đơn hàng (Manager) và Quản trị hệ thống cấp cao (Administrator).
- Tự động hóa báo cáo và kiểm soát tồn kho: Cung cấp dashboard phân tích doanh thu theo ngày/tháng/quý, cảnh báo mặt hàng bán chạy và cập nhật tức thì trạng thái xử lý đơn hàng.
Phạm vi và giới hạn hệ thống
- Phạm vi triển khai: Áp dụng trực tiếp vào chuỗi phân phối thực phẩm sạch của E-Shopper Hà Nội, hỗ trợ giao diện Responsive Web tương thích đa nền tảng (Desktop, Tablet, Mobile Web).
- Giới hạn kỹ thuật: Hệ thống tập trung xử lý luồng thanh toán khi nhận hàng (COD) và chuyển khoản nội địa; chưa tích hợp cổng thanh toán quốc tế trực tiếp qua API Visa/Mastercard tự động; quy trình đồng bộ kho áp dụng theo mô hình xử lý giao dịch tập trung (ACID Transactions).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Khảo sát hệ thống quản lý tại các đơn vị bán lẻ thực phẩm truyền thống cho thấy 3 mô hình vận hành chính với các ưu nhược điểm rõ rệt:
| Tiêu chí so sánh |
Sổ sách & Excel truyền thống |
Nền tảng SaaS đóng gói sẵn |
Website E-Shopper tùy biến |
| Chi phí đầu tư ban đầu |
Rất thấp |
Thấp (thuê bao hàng tháng) |
Trung bình (đầu tư một lần) |
| Khả năng mở rộng nghiệp vụ |
Kém (dễ vỡ cấu trúc dữ liệu) |
Hạn chế theo plugin nhà cung cấp |
Rất cao (chủ động 100% mã nguồn) |
| Bảo mật & Quyền riêng tư dữ liệu |
Thấp (dễ mất mát, rò rỉ dữ liệu) |
Phụ thuộc vào bên thứ ba |
Cao (lưu trữ On-Premise/Dedicated) |
| Tốc độ xử lý đơn hàng |
Thủ công (15–30 phút/đơn) |
Tự động (1–2 phút/đơn) |
Tự động (< 30 giây/đơn) |
| Độ trễ báo cáo tồn kho |
24–48 giờ |
Gần thời gian thực |
Thời gian thực (Real-time DB Trigger) |
Ma trận ưu tiên yêu cầu người dùng (MoSCoW Matrix)
- Must-Have (Bắt buộc): Đăng ký/đăng nhập xác thực dữ liệu; duyệt danh mục phân cấp; giỏ hàng session; xử lý tạo Order và OrderItems; phân quyền Admin/Manager/Customer; phòng chống tấn công SQL Injection và mã hóa mật khẩu.
- Should-Have (Nên có): Danh sách sản phẩm yêu thích (Wishlist); đánh giá/nhận xét sản phẩm; lọc nâng cao theo nhà cung cấp/mức giá; gửi email thông báo trạng thái đơn hàng.
- Could-Have (Có thể có): Tích hợp chat tư vấn trực tuyến; gợi ý sản phẩm bán chạy dựa trên lịch sử mua hàng.
- Won't-Have (Chưa thực hiện): Tích hợp ví điện tử đa cổng tự động; quản lý chuỗi logistics xuyên biên giới.
Thiết kế hệ thống
Hệ thống được xây dựng theo mô hình Kiến trúc phân tầng (3-Tier Layered Architecture) đảm bảo tính độc lập giữa các khối xử lý:
classDiagram
class User {
+int UserID
+string Username
+string PasswordHash
+string Email
+string Role
+Register()
+Login()
+UpdateProfile()
}
class Product {
+int ProductID
+string ProductName
+decimal Price
+int StockQuantity
+int CategoryID
+GetDetail()
+UpdateStock()
}
class Order {
+int OrderID
+int UserID
+DateTime OrderDate
+decimal TotalAmount
+string Status
+CreateOrder()
+UpdateStatus()
}
class OrderItem {
+int OrderItemID
+int OrderID
+int ProductID
+int Quantity
+decimal UnitPrice
}
User "1" --> "0..*" Order : Places
Order "1" *-- "1..*" OrderItem : Contains
Product "1" <-- "1..*" OrderItem : References
Ngăn xếp công nghệ (Technology Stack)
- Backend Framework: Microsoft .NET Core / ASP.NET MVC & PHP 7.4/8.0 Enterprise Engine.
- Database Management System: MySQL 8.0 Community Server / Microsoft SQL Server 2019.
- Web Server & Runtime: Apache HTTP Server 2.4 / IIS 10.0 Express.
- Frontend Architecture: HTML5, CSS3, JavaScript (ES6+), Bootstrap Framework.
- Security Layer: BCrypt / PBKDF2 Password Hashing, Prepared Statements PDO, Anti-CSRF Token Generation.
Thiết kế cơ sở dữ liệu quan hệ (Database Schema)
Cấu trúc cơ sở dữ liệu được chuẩn hóa ở mức 3NF (Third Normal Form) nhằm loại bỏ dư thừa dữ liệu:
-- Bảng Người dùng và Phân quyền
CREATE TABLE Users (
UserID INT AUTO_INCREMENT PRIMARY KEY,
Username VARCHAR(50) NOT NULL UNIQUE,
PasswordHash VARCHAR(255) NOT NULL,
FullName VARCHAR(100) NOT NULL,
Email VARCHAR(100) NOT NULL UNIQUE,
Phone VARCHAR(20),
Role ENUM('Admin', 'Manager', 'Customer') DEFAULT 'Customer',
IsActive BOOLEAN DEFAULT TRUE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng Danh mục sản phẩm
CREATE TABLE Categories (
CategoryID INT AUTO_INCREMENT PRIMARY KEY,
CategoryName VARCHAR(100) NOT NULL,
Description TEXT,
IsActive BOOLEAN DEFAULT TRUE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng Sản phẩm
CREATE TABLE Products (
ProductID INT AUTO_INCREMENT PRIMARY KEY,
CategoryID INT NOT NULL,
ProductName VARCHAR(150) NOT NULL,
Price DECIMAL(12, 2) NOT NULL,
QuantityInStock INT NOT NULL DEFAULT 0,
ImageURL VARCHAR(255),
Description TEXT,
IsHot BOOLEAN DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (CategoryID) REFERENCES Categories(CategoryID) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng Đơn hàng (Orders)
CREATE TABLE Orders (
OrderID INT AUTO_INCREMENT PRIMARY KEY,
UserID INT NOT NULL,
OrderDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
TotalAmount DECIMAL(12, 2) NOT NULL,
PaymentMethod VARCHAR(50) NOT NULL,
ShippingAddress TEXT NOT NULL,
OrderStatus ENUM('Pending', 'Processing', 'Shipped', 'Completed', 'Cancelled') DEFAULT 'Pending',
FOREIGN KEY (UserID) REFERENCES Users(UserID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng Chi tiết đơn hàng (OrderItems)
CREATE TABLE OrderItems (
OrderItemID INT AUTO_INCREMENT PRIMARY KEY,
OrderID INT NOT NULL,
ProductID INT NOT NULL,
Quantity INT NOT NULL,
UnitPrice DECIMAL(12, 2) NOT NULL,
FOREIGN KEY (OrderID) REFERENCES Orders(OrderID) ON DELETE CASCADE,
FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Phương pháp phát triển dự án (Methodology)
Dự án áp dụng mô hình phát triển phần mềm tiến hóa (Evolutionary Prototyping Lifecycle) kết hợp phương pháp luận Agile/Scrum. Mô hình này cho phép tạo ra các bản mẫu thử nghiệm (prototypes) chức năng nhanh chóng, lấy phản hồi từ nhân viên bán hàng và ban quản lý E-Shopper để liên tục hiệu chỉnh luồng xử lý.
gantt
title Lộ trình triển khai dự án E-Shopper
dateFormat YYYY-MM-DD
section Khảo sát & Thiết kế
Khảo sát yêu cầu & Lập đặc tả :done, des1, 2021-01-05, 10d
Thiết kế ERD & Kiến trúc hệ thống :done, des2, 2021-01-16, 14d
section Phát triển Module
Xác thực & Quản lý User :done, dev1, 2021-02-01, 12d
Danh mục & Catalog Sản phẩm :done, dev2, 2021-02-14, 18d
Giỏ hàng & Luồng thanh toán :done, dev3, 2021-03-05, 20d
Trang Quản trị Admin/Manager :done, dev4, 2021-03-26, 21d
section Kiểm thử & Đóng gói
Kiểm thử chức năng & Tải :done, test1, 2021-04-17, 15d
Triển khai & Chuyển giao :done, dep1, 2021-05-03, 10d
Implementation và kết quả
Quy trình phát triển và Thuật toán then chốt
Trong quá trình hiện thực hóa hệ thống, các thuật toán xử lý luồng dữ liệu giỏ hàng và cơ chế phòng vệ an toàn thông tin được tập trung xử lý ở mức backend.
1. Xử lý Giỏ hàng dựa trên State Session
Dữ liệu giỏ hàng của khách vãng lai và người dùng đăng nhập được trừu tượng hóa thông qua Session Container. Khi có thao tác thêm mới, hệ thống tự động kiểm tra sự tồn tại của ProductID, cập nhật số lượng lũy kế hoặc đẩy bản ghi mới vào mảng dữ liệu.
// Thuật toán xử lý giỏ hàng trên ASP.NET MVC / C#
public class CartController : Controller
{
private const string CART_SESSION_KEY = "E_SHOPPER_CART";
[HttpPost]
public ActionResult AddToCart(int productId, int quantity)
{
var product = dbContext.Products.Find(productId);
if (product == null || product.QuantityInStock < quantity)
{
return Json(new { success = false, message = "Sản phẩm không đủ số lượng trong kho!" });
}
List<CartItem> cart = Session[CART_SESSION_KEY] as List<CartItem> ?? new List<CartItem>();
CartItem existingItem = cart.FirstOrDefault(c => c.ProductID == productId);
if (existingItem != null)
{
existingItem.Quantity += quantity;
}
else
{
cart.Add(new CartItem {
ProductID = product.ProductID,
ProductName = product.ProductName,
UnitPrice = product.Price,
Quantity = quantity,
ImageURL = product.ImageURL
});
}
Session[CART_SESSION_KEY] = cart;
return Json(new { success = true, totalItems = cart.Sum(i => i.Quantity) });
}
}
2. Ngăn ngừa tấn công SQL Injection và Xử lý Giao dịch Đơn hàng (ACID)
Mọi thao tác truy vấn CSDL đều tuân thủ nguyên tắc Parameterized Queries. Quy trình tạo đơn hàng được đóng gói trong khối Transaction nhằm bảo toàn tính toàn vẹn dữ liệu:
// Backend Database Transaction & Parameterized Execution (PHP/PDO)
public function processCheckout($userId, array $cartItems, $totalAmount, $address, $paymentMethod) {
try {
$this->db->beginTransaction();
// 1. Thêm bản ghi đơn hàng chính với Prepared Statement
$stmtOrder = $this->db->prepare("
INSERT INTO Orders (UserID, TotalAmount, PaymentMethod, ShippingAddress, OrderStatus)
VALUES (:userId, :total, :method, :address, 'Pending')
");
$stmtOrder->execute([
':userId' => $userId,
':total' => $totalAmount,
':method' => htmlspecialchars($paymentMethod),
':address' => htmlspecialchars($address)
]);
$orderId = $this->db->lastInsertId();
// 2. Thêm từng phần tử OrderItem và trừ số lượng kho tức thì
$stmtItem = $this->db->prepare("
INSERT INTO OrderItems (OrderID, ProductID, Quantity, UnitPrice)
VALUES (:orderId, :productId, :quantity, :price)
");
$stmtUpdateStock = $this->db->prepare("
UPDATE Products
SET QuantityInStock = QuantityInStock - :qty
WHERE ProductID = :prodId AND QuantityInStock >= :qty
");
foreach ($cartItems as $item) {
$stmtItem->execute([
':orderId' => $orderId,
':productId' => $item['ProductID'],
':quantity' => $item['Quantity'],
':price' => $item['UnitPrice']
]);
$stmtUpdateStock->execute([
':qty' => $item['Quantity'],
':prodId' => $item['ProductID']
]);
if ($stmtUpdateStock->rowCount() === 0) {
throw new Exception("Sản phẩm ID {$item['ProductID']} không đủ hàng tồn kho để hoàn tất.");
}
}
$this->db->commit();
return $orderId;
} catch (Exception $e) {
$this->db->rollBack();
error_log("Lỗi tạo đơn hàng: " . $e->getMessage());
return false;
}
}
Kiểm thử và Đánh giá hiệu năng
Hệ thống trải qua 3 giai đoạn kiểm thử nghiêm ngặt: Kiểm thử hộp trắng (White-box Unit Testing), Kiểm thử tải (Load Testing qua Apache JMeter) và Kiểm thử chấp nhận người dùng (UAT).
pie title Tỷ lệ phân bổ kết quả kiểm thử kiểm thử chức năng (Total: 120 Testcases)
"Đạt chuẩn (Passed)" : 114
"Lỗi giao diện nhỏ (Resolved)" : 4
"Lỗi hiệu năng (Optimized)" : 2
Kết quả Benchmark Hiệu năng Hệ thống
- Thời gian phản hồi trang danh mục (Catalog Page Latency): Đạt trung bình 1.12s trong điều kiện 100 người dùng đồng thời (yêu cầu phi chức năng SR007 là < 5s, vượt chỉ tiêu thiết kế 77.6%).
- Tải xử lý đồng thời (Concurrent Throughput): Đạt mức ổn định 150 requests/second trên cấu hình phần cứng tiêu chuẩn (CPU Intel Core 2 Duo / PenIV 3.0 GHz, 2GB RAM).
- Độ chính xác truy vấn kiểm thử (SQL Query Execution Plan): Thời gian quét bảng ghi có chỉ mục (Clustered Index) cho danh mục 5,000 sản phẩm chỉ mất 0.0048s.
- Điểm đánh giá trải nghiệm người dùng (SUS Score): Đạt 84.5/100 điểm thông qua khảo sát trên 30 người dùng thử nghiệm tại Hà Nội.
Đổi mới và đóng góp
- Kiến trúc phân quyền RBAC phân tách chức năng rõ rệt: Khắc phục nhược điểm của các web bán hàng tự phát bằng cách chia nhỏ quyền hạn:
Admin (toàn quyền can thiệp hệ thống, quản lý tài khoản, xem thống kê tài chính) và Manager (chỉ thao tác trực tiếp trên luồng duyệt đơn hàng, quản lý đơn vận mà không thể can thiệp cấu hình hệ thống).
- Cơ chế giỏ hàng lai (Hybrid Cart Mechanism): Tự động duy trì trạng thái giỏ hàng xuyên suốt quá trình người dùng chuyển đổi từ khách vãng lai sang tài khoản thành viên sau khi đăng nhập mà không làm mất dữ liệu đã chọn trước đó.
- Chuẩn hóa quy trình nghiệp vụ bán lẻ thực phẩm: Đưa toàn bộ mô hình kinh doanh truyền thống từ giấy tờ sang quy trình số hóa khép kín: Khách đặt hàng $\rightarrow$ Manager duyệt $\rightarrow$ Trừ tồn kho tức thời $\rightarrow$ Xuất báo cáo tự động $\rightarrow$ Giảm thiểu 92% tỷ lệ sai lệch số liệu tồn kho.
Ứng dụng thực tế và triển khai
Kịch bản Triển khai Thực tế (Deployment Architecture)
Hệ thống được thiết kế tối ưu cho mô hình triển khai máy chủ độc lập (Dedicated Server) hoặc ảo hóa trên môi trường Cloud VPS tại các doanh nghiệp bán lẻ:
- Môi trường vận hành Server: Ubuntu Server 20.04 LTS hoặc Windows Server 2016/2019 chạy trên nền IIS/Apache.
- Cấu hình tối thiểu: CPU 2 Cores, RAM 2GB, Ổ cứng SSD 20GB khả dụng, Băng thông 100Mbps.
- Quy trình sao lưu (Backup Policy): Thiết lập cronjob tự động trích xuất bản dump CSDL định kỳ vào 02:00 sáng hàng tuần theo yêu cầu SR003, đồng thời nén lưu trữ phân tán tại máy chủ phụ.
Phân tích Hiệu quả Đầu tư (Cost-Benefit & ROI Analysis)
- Chi phí vận hành trước khi số hóa: Chi phí in ấn sổ sách, hóa đơn thủ công, nhân sự kiểm kê kho và thất thoát sản phẩm ước tính 18.000.000 VNĐ/tháng.
- Chi phí sau khi ứng dụng E-Shopper: Phí duy trì máy chủ hosting + tên miền tương đương 450.000 VNĐ/tháng.
- Tỷ suất hoàn vốn đầu tư (ROI): Doanh nghiệp thu hồi toàn bộ chi phí đầu tư phát triển hệ thống chỉ sau 3.5 tháng vận hành chính thức thông qua việc cắt giảm lãng phí quản lý và tăng 35% doanh thu nhờ kênh bán hàng online hoạt động 24/7.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Chưa tích hợp hệ thống thanh toán tự động qua cổng trung gian (VNPay, MoMo, ZaloPay API).
- Cơ chế tìm kiếm mới dừng lại ở truy vấn so khớp chuỗi SQL (
LIKE %keyword%), chưa tích hợp các công cụ tìm kiếm mờ (Fuzzy Search) hoặc Full-Text Search Engine như Elasticsearch.
Hướng nâng cấp đề xuất
- Xây dựng hệ thống gợi ý thông minh (Recommendation Engine): Ứng dụng thuật toán lọc cộng tác (Collaborative Filtering) để phân tích hành vi duyệt sắm và đề xuất thực phẩm phù hợp.
- Phát triển ứng dụng Mobile (Cross-platform PWA/Flutter): Đồng bộ hóa API với ứng dụng di động cho phép khách hàng nhận thông báo đẩy (Push Notifications) về khuyến mãi và lộ trình giao hàng.
- Tự động hóa chuỗi cung ứng: Tích hợp trực tiếp module Webhook với các đơn vị vận chuyển (Giao Hàng Nhanh, Viettel Post).
Đối tượng hưởng lợi
- Sinh viên chuyên ngành CNTT/KTPM: Nguồn tài liệu tham khảo hoàn chỉnh về quy trình phân tích thiết kế hệ thống thông tin, biểu đồ phân cấp chức năng (DFD/UML) và phương pháp chuẩn hóa CSDL quan hệ.
- Lập trình viên Backend/Web Developers: Bộ mã nguồn mẫu chuẩn mực về xử lý giỏ hàng với Session, quản lý phân quyền người dùng và thực thi an toàn dữ liệu qua Prepared Statements.
- Chủ doanh nghiệp và chuỗi cửa hàng bán lẻ: Bản thiết kế giải pháp số hóa toàn diện giúp tiết kiệm hàng chục triệu đồng chi phí nhượng quyền hoặc thuê phần mềm ngoài.
- Nhà nghiên cứu ứng dụng Thương mại điện tử: Dữ liệu thực nghiệm về thời gian xử lý giao dịch và hiệu quả chuyển đổi từ mô hình bán hàng truyền thống sang mô hình kỹ thuật số.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và phần mềm tối thiểu để triển khai website là gì?
Hệ thống yêu cầu máy chủ có CPU tối thiểu 2.2 GHz, RAM từ 2GB trở lên và dung lượng trống từ 500MB. Về phần mềm, hệ thống chạy mượt mà trên môi trường Windows Server hoặc Linux tích hợp web server Apache/IIS, hệ quản trị cơ sở dữ liệu MySQL 5.7/8.0 hoặc MS SQL Server, trình duyệt máy khách hỗ trợ Google Chrome, Firefox, Microsoft Edge.
2. Hệ thống xử lý thế nào khi xảy ra xung đột nhiều người cùng đặt một sản phẩm sắp hết hàng?
Hệ thống sử dụng cơ chế kiểm soát giao dịch ACID Transactions trong cơ sở dữ liệu kết hợp khóa dòng dữ liệu (Pessimistic / Optimistic Locking). Khi thực hiện processCheckout, truy vấn cập nhật kho sẽ kiểm tra điều kiện QuantityInStock >= :qty. Nếu số lượng tồn kho không đủ, transaction lập tức rollback toàn bộ và thông báo lỗi minh bạch đến người dùng.
3. Làm thế nào để phòng chống tấn công SQL Injection trên hệ thống?
Toàn bộ các tác vụ truy xuất dữ liệu từ client đều được lọc qua tầng Data Access Object (DAO) sử dụng kỹ thuật Prepared Statements (trên PHP PDO) hoặc Entity Framework Parameterized Queries (trên .NET). Các ký tự đặc biệt trong câu truy vấn được tham số hóa hoàn toàn, vô hiệu hóa khả năng chèn mã SQL độc hại từ ô nhập liệu người dùng.
4. Chi phí bảo trì và hỗ trợ kỹ thuật sau khi vận hành được tính toán ra sao?
Theo đặc tả phi chức năng SR004, hệ thống được thiết kế theo dạng module hóa độc lập, cho phép đội ngũ kỹ thuật hỗ trợ trực tiếp từ xa (qua TeamViewer/SSH) với thời gian phản hồi dưới 48 giờ. Do cấu trúc mã nguồn rõ ràng, chi phí bảo trì định kỳ chỉ bao gồm chi phí gia hạn tên miền và lưu trữ máy chủ.
5. Website có hỗ trợ tối ưu hóa công cụ tìm kiếm (SEO) không?
Có. Cấu trúc HTML5 được chuẩn hóa theo Semantic Elements (<header>, <nav>, <article>, <section>), hỗ trợ thẻ Meta Title, Meta Description tự động cho từng sản phẩm và danh mục, kết hợp đường dẫn thân thiện (URL Rewrite) giúp website đạt thứ hạng cao trên công cụ tìm kiếm Google.
Kết luận
Đồ án tốt nghiệp "Xây dựng Website Bán hàng Trực tuyến E-Shopper" của sinh viên Nguyễn Hoàng Hải đã giải quyết trọn vẹn bài toán chuyển đổi số từ mô hình kinh doanh truyền thống sang nền tảng thương mại điện tử hiện đại. Đề tài không chỉ hoàn thành xuất sắc các mục tiêu học thuật về phân tích thiết kế hệ thống, mô hình hóa dữ liệu quan hệ và bảo mật ứng dụng web mà còn mang lại giá trị thực tiễn cao cho doanh nghiệp với khả năng vận hành ổn định, thời gian phản hồi dưới 2 giây và tiết kiệm hơn 90% chi phí quản lý vận hành. Đây là nền tảng vững chắc để mở rộng phát triển thành hệ sinh thái bán lẻ đa kênh trong tương lai.