TỔNG QUÁT VỀ BÀI TOÁN
Đặt vấn đề
Hiện nay, sự phát triển công nghệ đã làm tăng nhu cầu của con người, và điện thoại di động đã trở thành một phương tiện thông tin quen thuộc Chỉ với vài thao tác đơn giản, người dùng có thể kết nối với bạn bè và người thân trên khắp đất nước Ngoài vai trò là công cụ liên lạc, điện thoại còn đóng góp quan trọng trong công việc kinh doanh của doanh nhân Đối với giới trẻ, điện thoại di động không chỉ là phương tiện liên lạc mà còn là món đồ trang sức thể hiện phong cách.
Thanhdat.com là một trang web tiên phong trong việc ứng dụng công nghệ thông tin vào bán điện thoại trực tuyến và dự kiến sẽ mở rộng trong tương lai Cửa hàng chuyên nhập khẩu điện thoại di động từ các thương hiệu nổi tiếng như Nokia, Samsung, Motorola, Sony,… và bán lẻ cho người tiêu dùng Giao dịch với khách hàng chủ yếu được thực hiện qua website.
Mục tiêu của trang web này là giúp khách hàng mua sắm trực tuyến một cách dễ dàng và thuận tiện Khách hàng có thể tham khảo thông tin sản phẩm, so sánh giá cả và lựa chọn sản phẩm phù hợp với nhu cầu ngay tại nhà hoặc cửa hàng Hệ thống tìm kiếm thân thiện và dễ sử dụng, cho phép khách hàng nhanh chóng đăng nhập hoặc đăng ký tài khoản để bắt đầu mua sắm và tạo đơn đặt hàng một cách nhanh chóng, tiết kiệm thời gian và đáp ứng nhu cầu thực tế.
Mô tả hoạt động của cửa hàng
- Quản lý và phân phối hoạt động của cửa hàng.
- Quyết định giá chính thức cho từng mặt hàng.
- Bán hàng qua mạng là một hình thức mới mà người mua hàng phải phải tự thao tác thông qua từng bước để có thể mua được hàng.
Các sản phẩm được phân loại rõ ràng theo nhiều chủng loại, giúp người dùng dễ dàng tìm kiếm và sử dụng Quản trị viên cũng thuận tiện trong việc thay thế hoặc thêm bớt sản phẩm Người dùng chỉ cần chọn một sản phẩm từ danh sách, thông tin chi tiết như tên hàng hóa, hình ảnh, giá bán và mô tả ngắn sẽ được hiển thị, kèm theo liên kết để thêm sản phẩm vào giỏ hàng.
- Giỏ hàng chứa các thông tin lẫn số lượng hàng hóa người dùng mua và có thể được cập nhật vào trong giỏ.
- Khi khách hành muốn đặt hàng thì hệ thống hiển thị trang xác lập đơn đặt hàng cùng với thông tin về khách hàng và hàng hóa.
Bộ phận này chịu trách nhiệm thực hiện quản trị mạng, quản lý thông tin khách hàng và cập nhật thông tin sản phẩm, nhằm đảm bảo cơ sở dữ liệu luôn được cập nhật nhanh chóng và hiệu quả.
Yêu cầu của hệ thống bán hàng qua mạng
1.3.1 Nhu cầu người sử dụng.
- Nhu cầu của khách hàng khi truy cập vào trang web là tìm kiếm các sản phẩm.
Chương trình cần đáp ứng nhu cầu của khách hàng, giúp họ tìm kiếm nhanh chóng và hiệu quả các sản phẩm mà họ mong muốn và cần mua.
- Chương trình phải có tính đa dạng và hấp dẫn nhằm thu hút sự quan tâm của nhiều người về công ty mình.
Trang web cần phải dễ hiểu và có giao diện thân thiện, hấp dẫn để người dùng có thể dễ dàng tìm thấy thông tin họ cần cũng như các thông tin liên quan.
Trong mua bán trực tuyến, việc bảo vệ thông tin cá nhân của người dùng là vô cùng quan trọng Đảm bảo an toàn trong quá trình đặt hàng và thanh toán sẽ giúp khách hàng yên tâm hơn Ngoài ra, việc giao hàng đúng địa điểm và đúng thời gian cũng là yếu tố cần thiết để nâng cao trải nghiệm mua sắm trực tuyến.
Quản trị viên website cần thường xuyên theo dõi thông tin hàng hóa, xử lý yêu cầu chính xác và thực hiện các chức năng đã được nhập Điều này giúp việc quản lý dữ liệu trở nên dễ dàng và hiệu quả hơn.
- Được phép chỉnh sửa, xóa những thông tin sai, không phù hợp.
- Theo dõi quá trình mua bán.
- Theo dõi thông tin khách hàng nhập vào khi mua hàng, phải đảm bảo tính an toàn, bảo mật, chính xác.
- Theo dõi, xử lý các đơn đặt hàng và cập nhật các thông tin liên quan đến đơn đặt hàng của khách.
- Có thể xóa tất cả các cơ sở dữ liệu sau một thời gian xác định.
KHẢO SÁT HIỆN TRẠNG
Sơ đồ phân cấp chức năng
Sau khi khảo sát thì em đã đưa ra được biểu đồ phân cấp chức năng như sau:
Hình 2.1 Sơ đồ phân cấp chức năng.
Mô tả chi tiết các chức năng.
- Chức năng quản trị:Thực hiện chức năng quản trị hệ thống website.
+ Đăng nhập: Cho phép quản trị và người dùng đăng nhập.
+ Cập nhật người dùng: Cho phép quản trị sửa, xóa, phân quyền người dùng trong website.
- Chức năng quản lý sản phẩm: Thực hiện chức năng quản lý sản phẩm.
Xây dựng website bán điện thoại trực tuyến
4.Quản lý góp ý và tin tức
1.Quản trị 5.Tìm kiếm 6.Thống kê
6.2.Thống kê SP bán chạy
6.3 Thống kê sản phẩm mới
5.2.Tìm kiếm theo khoảng giá SP
5.1.Tìm kiếm theo tên SP
+ Cập nhật danh mục: Cho phép quản trị viên thêm, sửa, xóa danh mục.
+ Cập nhật sản phẩm: Cho phép quản trị viên thêm, sửa, xóa sản phẩm
- Chức năng quản lý hóa đơn: Thực hiên chức năng quản lý các đơn đặt hàng, xử lý và giao hàng khi khách hàng thanh toán.
Cập nhật hóa đơn là quy trình quan trọng, trong đó một số hóa đơn bị lỗi hoặc hóa đơn rác sẽ được xóa bỏ Đồng thời, việc xử lý hóa đơn cần được thực hiện cẩn thận; nếu thông tin đơn hàng chính xác, hàng hóa sẽ được giao đến tay khách hàng, ngược lại, khách hàng sẽ được thông báo về sự không chính xác của thông tin.
- Chức năng quản lý góp ý và tin tức: Thực hiện chức năng quản lý ý kiến của khách hàng và tin tức.
+ Cập nhật tin tức: Quản trị viện có thể thêm, sửa, xóa tin tức.
+ Xử lý ý kiến: Một số ý kiến rác sẽ được quản trị viện xóa bỏ.
- Chức năng tìm kiếm: Cho phép khách hàng tìm kiếm nhanh sản phẩm mình cần tìm.
+ Tìm kiếm theo tên sản phẩm: Cho phép khách hàng tìm kiếm sản phẩm theo tên.
+ Tìm kiếm theo khoảng giá sản phẩm: Cho phép khách hàng tìm kiếm sản phẩm theo 1 khoảng giá nào đó.
- Chức năng thống kê: Đưa ra các thông tin về sản phẩm bán chạy, sản phẩm mới và đơn hàng.
+ Thống kê sản phẩm bán chạy: Đưa ra thông tin các sản phẩm bán được nhiều nhất.
+ Thống kê đơn đặt hàng: Đưa ra thông tin đơn hàng và chi tiết.
+ Thống kê sản phẩm mới: Đưa ra thông tin những sản phẩm mới nhập về.
Biều đồ luồng dữ liệu ngữ cảnh
Hình 2.2 Biều đồ luồng dữ liệu ngữ cảnh.
Tìm kiếm, đặt hàng Cập nhật thông tin, sản phẩm
Biều đồ luồng dữ liệu mức đỉnh
Hình 2.3.Biều đồ luồng dữ liệu mức đỉnh.
Gửi yêu cầu Gửi yêu cầu Trả lời yêu cầu
Trả lời yêu cầu Quản trị viên
Trả lời yêu cầu Gửi yêu cầu
Gửi yêu cầu Trả lời yêu cầu
Quản lý tin tức và góp ý
Biểu đồ luồng dữ liệu mức dưới đỉnh
2.4.1 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Quản trị”.
Hình 2.4 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Quản trị”.
Trả lời Gửi yêu cầu
Trả lời Gửi yêu cầu
Trả lời Gửi yêu cầu
Gửi yêu cầu Gửi yêu cầu Đăng xuất
Nhập tài khoản, mật khẩu Đăng nhập?
Kiểm tra thông tin tài khoản
Kết thúc Hiển thị trang theo quyền
Sơ đồ khối đặc tả chức năng đăng nhập
2.4.2 Biều đồ luồng dữ liệu mức dưới đỉnh chức năng“Quản lý sản phẩm”.
Hình 2.5 Biều đồ luồng dữ liệu mức dưới đỉnh chức năng“Quản lý sản phẩm”.
Cập nhật sản phẩm Sản phẩm
Lưu đồ thuật toán đặc tả chức năng quản lý sản phẩm
Nhập thông tin sản phẩm hoặc danh mục
Cập nhật vào cơ sở dữ liệu Thông báo thành công
2.4.3 Biều đồ luồng dữ liệu mức dưới đỉnh chức năng“Quản lý hóa đơn”.
Hình 2.6 Biều đồ luồng dữ liệu mức dưới đỉnh chức năng “Quản lý hóa đơn”.
Khách hàng Gửi yêu cầu
Lưu đồ thuật toán đặc tả chức năng đặt hàng
Thông báo thành công Điền thông tin khách hàng Thêm vào đơn hàng Kết thúc
Bắt đầu Hiển thị trang sản phẩm Xem và chọn sản phẩm Đúng
Sai Kiểm tra thông tin?Thống báo không hợp lệ
2.4.4.Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng“Quản lý tin tức và góp ý”.
Hình 2.7 Biểu đồ luồng dữ liệu mức dưới đỉnhchức năng “Quản lý tin tức và góp ý”.
2.4.5 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Tìm kiếm”.
Hình 2.8 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Tìm kiếm”.
5.1 Tìm kiếm theo tên sản phẩm
Khách hàng 5.2Tìm kiếm theogiá sản phẩm Kết quả
Xử lý yêu cầu Quản trị viên
Lưu đồ thuật toán đặc tả chức năng tìm kiếm
Bắt đầu Điền tên sản phẩm hoặc giá sản phẩm
Thông báo không tìm thấy Đưa ra kết quả
2.4.6 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Thống kê”.
Hình 2.9 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Thống kê”. Đơn hàng
6.3 Thống kê sản phẩm mới
Yêu cầu kết quả Yêu cầu kết quả
6.2 Thống kê phẩm bán chạy Yêu cầu kết quả
Lưu đồ thuật toán đặc tả chức năng thống kê
Chọn chức năng thống kê Đúng
Thông báo không có dữ liệu Đưa ra kết quả
NGÔN NGỮ LẬP TRÌNH PHP VÀ MYSQL
Ngôn ngữ PHP
PHP (Personal Home Page hay PHP Hypertext Preprocessor) được giới thiệu vào năm 1994 bởi R Lerdoft, là một ngôn ngữ lập trình dựa trên Perl, cho phép xử lý trên máy chủ và trả về mã HTML cho trình duyệt Ngày nay, PHP ngày càng trở nên phổ biến trong thiết kế web nhờ khả năng hoạt động trên nhiều hệ điều hành khác nhau Quá trình xử lý PHP diễn ra trên máy chủ, cho phép các trang web sử dụng ngôn ngữ này dễ dàng hiển thị thông tin một cách trực quan và hiệu quả.
PHP có khả năng kết nối trực tiếp với HTML, tương tự như nhiều ngôn ngữ lập trình khác Mã PHP được phân tách khỏi HTML thông qua các thực thể đầu và cuối Khi tài liệu được phân tích, quá trình xử lý PHP chỉ diễn ra tại những điểm quan trọng, sau đó kết quả sẽ được xuất ra.
Mã PHP được bao bọc trong một kiểu tag đặc biệt, cho phép chuyển đổi giữa chế độ PHP và các ngôn ngữ khác Cú pháp của PHP tương tự như một số ngôn ngữ lập trình khác, đặc biệt là C và Perl.
- Trong một ngôn ngữ lập trình mạnh mẽ, bạn cần phải khai báo (xác định) các loại và tên của biến trước khi sử dụng nó.
- Trong PHP biến tuyên bố là tự động khi bạn sử dụng nó.
+ Một tên biến phải bắt đầu bằng một ký tự hoặc một underscore “_”
+ Một tên biến chỉ có thể chứa các ký tự chữ-số ký tự và dưới (az, AZ, 0-9, và _)
Một tên biến không được phép có khoảng trắng Nếu tên biến bao gồm nhiều từ, các từ phải được phân tách bằng dấu gạch dưới ($my_string) hoặc bằng cách viết hoa chữ cái đầu của mỗi từ ($myString).
3.1.2 Các câu lệnh điều khiển.
+ Sử dụng câu lệnh switch để lựa chọn một trong nhiều khối mã sẽ được thi hành.
Cú pháp hoạt động của biểu ngữ n (thường là biến) được đánh giá một lần, sau đó giá trị của nó sẽ được so sánh với các giá trị của từng trường hợp Nếu giá trị đúng được tìm thấy, các khối mã liên quan sẽ được thực thi Để ngăn chặn việc tự động chạy các trường hợp tiếp theo, có thể sử dụng lệnh break Nếu không có kết quả đúng nào được tìm thấy, câu lệnh mặc định sẽ được sử dụng.
In programming, a switch statement allows for the execution of specific code based on the value of a variable For instance, if the variable 'n' matches 'label1', the corresponding code is executed, followed by a break statement to exit the switch Similarly, if 'n' equals 'label2', the designated code runs before breaking out of the switch If 'n' does not match either label, the default case executes, handling any other values This structure ensures clear and organized control flow in code execution.
Trong khi vòng lặp while thi hành khối mã lệnh khi điều kiện còn đúng. Câu lệnh như sau:
Vòng lặp dưới đây được khởi đầu với i = 1 và sẽ tiếp tục chạy miễn là i nhỏ hơn hoặc bằng 5 Mỗi lần lặp, giá trị của i sẽ tăng thêm 1.
Mã lập trình trên sẽ đưa ra là:
Vòng lặp do…while sẽ luôn luôn thực thiệ khối mã lệnh sau đó kiểm tra điều kiện và lặp lại vòng lặp khi điều kiện đúng.
+ Vòng lặp for sử dụng khi bạn biết rõ bao nhiều lần sẽ được lặp.
{ echo “The number is ” $i “”;
{ mã để thi hành câu lệnh;
} while (điều kiện); for (init; condition; increment)
Vòng lặp được định nghĩa bắt đầu với i = 1 và sẽ tiếp tục thực hiện khi i nhỏ hơn hoặc bằng 5 Sau mỗi vòng lặp, giá trị của i sẽ tăng thêm 1.
{ echo “The number is ” $i “”;
+ Mảng để lưu trữ bộ các giá trị, bằng cách ấy cho phép bạn nhóm các biến vô hướng lại.
+ Sau khi chúng ta có mảng, chúng ta có thể làm nhiều thứ hữu ích với nó Ví dụ như sort()
Các giá trị lưu trữ trong mảng được gọi là phần tử, và mỗi phần tử này có một chỉ số (hay key) để truy cập Trong hầu hết các ngôn ngữ lập trình, chỉ số của mảng thường bắt đầu từ 0.
0 hay 1 PHP cũng như vậy PHP còn cung cấp mảng kết hợp, mảng kết hợp có thể có mọi thứ giống mảng chỉ số, nhưng thường sử dụng chuỗi
Hệ quản trị CSDL MySQL
- MySQL là một phần mềm quản trị CSDL mã nguồn mở, miễn phí nằm trong nhóm LAMP (Linux - Apache -MySQL – PHP).
- Hỗ trợ giao dịch mạnh.
- Nơi lưu trữ web và dữ liệu tin cậy.
- Chế độ bảo mật dữ liệu mạnh.
- Sự phát triển ứng dụng hỗn hợp.
- Mã nguồn mở tự do 24/7.
- MySQL là một phần mềm quản trị CSDL dạng server-based (gần tương đương với SQL Server của Microsoft).
- MySQL quản lý dữ liệu thông qua các CSDL, mỗi CSDL có thể có nhiều bảng quan hệ chứa dữ liệu.
MySQL cung cấp cơ chế phân quyền người sử dụng riêng biệt, cho phép quản lý nhiều cơ sở dữ liệu (CSDL) khác nhau cho mỗi người dùng Mỗi người dùng sẽ có một tên truy cập (username) và mật khẩu tương ứng để truy xuất vào CSDL.
3.3.4 Cú pháp cơ bản của MySQL
Id int(8) NOT NULL, name varchar(10) NOT NULL, PRIMARY KEY (id)
INSERT INTO user VALUES (‘dung’,’007’) DELETE FROM user WHERE id=’007’
UPDATE user SET name=’dung’ WHERE id=’007’
SELECT *FROM user SELECT * FROM user WHERE name =””
SELECT DISTINCT name FROM user
CHƯƠNG 4 : THIẾT KẾ CƠ SỞ DỮ LIỆU 4.1 Mô hình thực thể liên kết.
MaDM Idnsx TenSP Hinhanh Mau Chitiet Soluong Daban Gia Khuyenmai1 Khuyenmai2 Ngaycapnhat
Idsp Tensp Soluong Gia phuongthucthanhtoan
Idnd Hoten Diachi Dienthoai Email Ngaydathang Trangthai Nhà sản xuất
4.2 Các bảng cơ sở dữ liệu.
5 Bảng 4.1 Bảng nhà sản xuất
Thuộc tính Kiểu dữ liệu Ràng buộc
Thuộc tính Kiểu dữ liệu Ràng buộc
Thuộc tính Kiểu dữ liệu Ràng buộc
Chitiet Text soluong Int daban int gia int
Thuộc tính Kiểu dữ liệu Ràng buộc
Thuộc tính Kiểu dữ liệu Ràng buộc
6 Bảng 4.6 Bảng chi tiết hóa đơn
Thuộc tính Kiểu dữ liệu Ràng buộc
Thuộc tính Kiểu dữ liệu Ràng buộc
Thuộc tính Kiểu dữ liệu Ràng buộc
CHƯƠNG 5: THIẾT KẾ GIAO DIỆN
Hình 4.1.Giao diện trang index.
- Trang chủ là nơi tương tác giữa người dùng với website.
- Chứa các chức năng: đăng nhập, mua hàng, góp ý,…
Hình 4.2 Giao diện giới thiệu
- Trang giới thiệu là để giúp ngươi dùng biết một ít thông tin về website.
Hình 4.3 Giao diện tin tức
- Hiển thị những thông tin liên quan đến điện thoại.
Hình 4.4 Giao diện hỗ trợ.
- Người dùng muốn góp ý hoặc muốn liên hệ với quản trị viên sẽ vào giao diện góp ý để gửi.
5.1.5 Giao diện đăng nhập Admin
Hình 4.5 Giao diện đăng nhập Admin
- Trang đăng nhập Admin để khi có người muốn vào trang quản lý thì cần phải đăng nhập mới quản lý được.
Hình 4.6 Giao diện giỏ hàng
- Những sản phẩm khách hàng chọn mua sẽ được lưu tạm thời vào giỏ hàng.
- Khách hàng cũng có thể cập nhật số lượng sản phẩm hoặc xóa sản phẩm trong giỏ hàng nếu không mua đến.
5.2.1 Giao diện trang chủ quản trị
Hình 4.7 Giao diện quản trị Admin
- Giao diện trang quản lý chứa các chức năng quản trị như: Quản lý sản phẩm, Quản lý danh mục, Quản lý hóa đơn…
- Hiển thị những đơn hàng chưa được xử lý.
5.2.2 Giao diện quản lý sản phẩm
Hình 4.8 Giao diện quản lý sản phẩm
- Các thông tin sản phẩm sẽ được Admin quản lý và có thể thêm, sửa, xóa sản phẩm.
5.2.3 Giao diện quản lý danh mục.
Hình 4.9 Giao diện quản lý danh mục
- Các danh mục hàng hóa sẽ được hiển thị và quản lý ở đây
5.2.4 Giao diện quản lý hóa đơn.
Hình 4.10 Giao diện quản lý hóa đơn.
- Khi khách hàng gửi đơn hàng thì nó sẽ được hiển thị và Admin sẽ xử lý đơn hàng này.
5.2.5 Giao diện quản lý người dùng.
Hình 4.11 Giao diện quản lý người dùng.
- Trang quản lý người dùng sẽ cho người quản lý sửa, xóa và phân quyền cho người dùng.
5.2.6 Giao diện quản lý tin tức.
Hình 4.12 Giao diện quản lý tin tức
5.2.7 Giao diện quản lý hỗ trợ
Hình 4.9 Giao diện quản lý góp ý.
- Trang quản lý hỗ trợ sẽ cho người quản lý xử lý những góp ý của người dùng gửi.
Chương 6: Các kỹ thuật tối ưu hóa
6.1 Mô hình hóa quan hệ
Trong các hệ quản trị SQL, việc chuyển đổi dữ liệu từ bảng sang dạng đối tượng là thách thức cho lập trình viên Mặc dù truy vấn trực tiếp với cơ sở dữ liệu thông qua giao diện mang lại hiệu suất cao, nhưng điều này có thể dẫn đến tình trạng dữ liệu không đồng bộ giữa các phần của hệ thống và các module, gây ra dữ liệu dị thường khi truy vấn Vì vậy, mô hình ánh xạ quan hệ Object Relational Mapping (ORM) được áp dụng rộng rãi để kết nối dữ liệu bảng với các đối tượng Nhóm cũng áp dụng Eloquent ORM của Laravel để thực hiện quá trình ánh xạ này.
Mô hình Eloquent ORM ánh xạ các đối tượng và quan hệ thành các lớp con của Model, giúp đơn giản hóa việc truy vấn thông qua các lớp này Các truy vấn không dẫn đến đối tượng dị thường sẽ được loại bỏ, và việc thực hiện join giữa các quan hệ được mô hình hóa thành thuộc tính và phương thức, tối ưu hóa hiệu suất so với các truy vấn thông thường, giảm thiểu vấn đề N+1 Hơn nữa, Eloquent ORM sử dụng PDO để giao tiếp với cơ sở dữ liệu và có cơ chế kiểm tra tính hợp lệ, giúp ngăn ngừa lỗi bảo mật như SQL Injection.
6.2 Phân Trang Đối với dữ liệu nhỏ thì việc phân trang dường như không ảnh hưởng đến việc truy vấn dữ liệu Tuy nhiên đối với các dữ liệu lớn hơn như của các cửa hàng điện thoại lớn, các chuỗi cửa hàng có nhiều dữ liệu thì việc phân trang sẽ giúp giảm đi lượng dữ liệu phải lấy ra trong một lần, việc này giúp thời gian đọc dữ liệu và trả dữ liệu ngắn hơn nhằm tránh ảnh hưởng đến người dùng Trong bài tập lớn nhóm em đã sử dụng LIMIT để phân trang Hướng phát triển sẽ sử dụng phương thức Pagination của
Laravel dể thực hiện một cách nhanh chóng, đơn giản và hiệu quả
N+1 query là một cách truy vấn không hiệu quả do sử dụng quá nhiều truy vấn
Ví dụ cho vấn đề này ta có đoạn code sau:
Trong đoạn mã này, có hai mô hình là Danhmuc và Sanpham, với mối quan hệ đơn giản: mỗi Danhmuc có thể chứa nhiều Sanpham, trong khi mỗi Sanpham chỉ thuộc về một Danhmuc.
Trong truy vấn này, chúng ta sẽ lấy tất cả các sản phẩm và sau đó truy vấn bảng danh mục để lấy tên danh mục Nếu có n sản phẩm, sẽ có n+1 câu truy vấn, bao gồm cả truy vấn lấy sản phẩm Với số lượng bản ghi ít, lượng truy vấn này không ảnh hưởng nhiều, nhưng trong dự án lớn với hàng nghìn bản ghi, các truy vấn kiểu này sẽ ảnh hưởng lớn đến hiệu suất của chương trình.
Chúng ta sẽ sử dụng Laravel Query Detector của Laravel để tìm kiếm các n+1 Query Sau đó sử dụng Eager Loading để giải quyết vấn đề này.
Khi đó truy vấn ở trên sẽ là:
Lúc này chúng ta chỉ còn lại 2 câu truy vấn: select * from SP; select * from danhmuc where madm in (1, 2, 3, 4, 5, );
PHẦN 7: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
1 Những công việc làm được
Đã thực hiện phân tích hiện trạng hệ thống để xây dựng sơ đồ phân cấp các chức năng cho hệ thống mới Đồng thời, đã tạo ra các biểu đồ mức ngữ cảnh, mức đỉnh và mức dưới đỉnh nhằm hỗ trợ quá trình phát triển hệ thống mới cho nhà hàng.
-Thiết kế được mô hình cơ sở dữ liệu cho website.
-Thiết kế giao diện website thân thiện, dễ sử dụng cho người dùng.
Do thiếu kinh nghiệm thực tế, quá trình phân tích hệ thống cho website của cửa hàng vẫn còn nhiều điểm chưa chính xác và chưa đảm bảo tính đúng đắn Tôi sẽ tiếp tục hoàn thiện vấn đề này trong quá trình phát triển hệ thống sau này.
-Giao diện trang web còn chưa được đẹp mắt.
-Ngôn ngữ và phần mềm soạn thảo là còn mới mẻ nên còn nhiều chức năng, chưa vận dụng và kiểm soát được.
-Còn chưa thực hiện được các hướng cách tối ưu hóa việc quản lý và lưu trữ dữ liệu. 3.Hướng phát triển.
Chuyển từ code php thuần sang sử dụng framework laravel Thực hiện các tối ưu hóa về quản lý và lưu trữ dữ liệu.
PHỤ LỤC VỀ BẢNG VÀ HÌNH ẢNH
Hình 2.1 Sơ đồ phân cấp chức năng.
Hình 2.2 Biều đồ luồng dữ liệu ngữ cảnh
Hình 2.3 Biều đồ luồng dữ liệu mức đỉnh
Hình 2.4 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Quản trị”
Hình 2.5 Biều đồ luồng dữ liệu mức dưới đỉnh chức năng “Quản lý sản phẩm”.
Hình 2.6 Biều đồ luồng dữ liệu mức dưới đỉnh chức năng “Quản lý hóa đơn”.
Hình 2.7 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Quản lý tin tức và góp ý”.
Hình 2.8 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Tìm kiếm”.
Hình 2.9 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Thống kê”.
YHình 4.1 Giao diện trang index.
Hình 4.2 Giao diện giới thiệu
Hình 4.3 Giao diện tin tức
Hình 4.5 Giao diện đăng nhập Admin
Hình 4.6 Giao diện giỏ hàng
Hình 4.7 Giao diện quản trị Admin
Hình 4.8 Giao diện quản lý sản phẩm
Hình 4.9 Giao diện quản lý hóa đơn
Hình 4.10 Giao diện quản lý người dùng
Hình 4.11 Giao diện quản lý góp ý
YBảng 4.1 Bảng nhà cung cấp Bảng 4.2 Bảng danh mục Bảng 4.3 Bảng sản phẩm Bảng 4.4 Bảng hỗ trợ
Bảng 4.6 Bảng chi tiết hóa đơnBảng 4.7 Bảng người dùngBảng 4.8 Bảng tin tức
THIẾT KẾ VÀ XÂY DỰNG CƠ SỞ DỮ LIỆU
XÂY DỰNG CHƯƠNG TRÌNH
Giao diện quản trị
5.2.1 Giao diện trang chủ quản trị
Hình 4.7 Giao diện quản trị Admin
- Giao diện trang quản lý chứa các chức năng quản trị như: Quản lý sản phẩm, Quản lý danh mục, Quản lý hóa đơn…
- Hiển thị những đơn hàng chưa được xử lý.
5.2.2 Giao diện quản lý sản phẩm
Hình 4.8 Giao diện quản lý sản phẩm
- Các thông tin sản phẩm sẽ được Admin quản lý và có thể thêm, sửa, xóa sản phẩm.
5.2.3 Giao diện quản lý danh mục.
Hình 4.9 Giao diện quản lý danh mục
- Các danh mục hàng hóa sẽ được hiển thị và quản lý ở đây
5.2.4 Giao diện quản lý hóa đơn.
Hình 4.10 Giao diện quản lý hóa đơn.
- Khi khách hàng gửi đơn hàng thì nó sẽ được hiển thị và Admin sẽ xử lý đơn hàng này.
5.2.5 Giao diện quản lý người dùng.
Hình 4.11 Giao diện quản lý người dùng.
- Trang quản lý người dùng sẽ cho người quản lý sửa, xóa và phân quyền cho người dùng.
5.2.6 Giao diện quản lý tin tức.
Hình 4.12 Giao diện quản lý tin tức
5.2.7 Giao diện quản lý hỗ trợ
Hình 4.9 Giao diện quản lý góp ý.
- Trang quản lý hỗ trợ sẽ cho người quản lý xử lý những góp ý của người dùng gửi.
CÁC KỸ THUẬT TỐI ƯU
Phân trang
Khi xử lý dữ liệu nhỏ, phân trang có thể không ảnh hưởng nhiều đến truy vấn Tuy nhiên, với dữ liệu lớn từ các cửa hàng điện thoại lớn, phân trang giúp giảm lượng dữ liệu truy xuất mỗi lần, rút ngắn thời gian đọc và trả dữ liệu, từ đó cải thiện trải nghiệm người dùng Trong dự án lớn, nhóm đã áp dụng LIMIT để thực hiện phân trang, và hướng phát triển tiếp theo sẽ sử dụng phương thức Pagination.
Laravel dể thực hiện một cách nhanh chóng, đơn giản và hiệu quả.
N+1 Query
N+1 query là một cách truy vấn không hiệu quả do sử dụng quá nhiều truy vấn
Ví dụ cho vấn đề này ta có đoạn code sau:
Trong đoạn mã này, chúng ta có hai mô hình chính là Danhmuc và Sanpham Mối quan hệ giữa chúng là một Danhmuc có thể chứa nhiều Sanpham, trong khi mỗi Sanpham chỉ thuộc về một Danhmuc duy nhất.
Trong câu truy vấn này, chúng ta sẽ lấy ra tất cả các sản phẩm và sau đó truy vấn đến bảng danh mục để lấy tên danh mục Nếu có n sản phẩm, sẽ có n+1 câu truy vấn, bao gồm cả câu truy vấn lấy ra tất cả sản phẩm Với số lượng bản ghi ít, lượng truy vấn này không gây ảnh hưởng nhiều, nhưng khi dự án lớn với hàng nghìn bản ghi, các truy vấn kiểu này sẽ ảnh hưởng lớn đến hiệu suất của chương trình.
Chúng ta sẽ sử dụng Laravel Query Detector của Laravel để tìm kiếm các n+1 Query Sau đó sử dụng Eager Loading để giải quyết vấn đề này.
Khi đó truy vấn ở trên sẽ là:
Lúc này chúng ta chỉ còn lại 2 câu truy vấn: select * from SP; select * from danhmuc where madm in (1, 2, 3, 4, 5, );
PHẦN 7: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
1 Những công việc làm được
Chúng tôi đã thực hiện phân tích hiện trạng hệ thống để xây dựng sơ đồ phân cấp các chức năng cho hệ thống mới Đồng thời, chúng tôi cũng đã tạo ra các biểu đồ mức ngữ cảnh, mức đỉnh và mức dưới đỉnh nhằm hỗ trợ cho quá trình phát triển hệ thống mới của nhà hàng.
-Thiết kế được mô hình cơ sở dữ liệu cho website.
-Thiết kế giao diện website thân thiện, dễ sử dụng cho người dùng.
Do thiếu kinh nghiệm thực tế, quá trình phân tích hệ thống cho website của cửa hàng vẫn còn nhiều điểm chưa chính xác và chưa đảm bảo tính đúng đắn Tôi sẽ hoàn thiện những vấn đề này trong quá trình phát triển hệ thống sau này.
-Giao diện trang web còn chưa được đẹp mắt.
-Ngôn ngữ và phần mềm soạn thảo là còn mới mẻ nên còn nhiều chức năng, chưa vận dụng và kiểm soát được.
-Còn chưa thực hiện được các hướng cách tối ưu hóa việc quản lý và lưu trữ dữ liệu. 3.Hướng phát triển.
Chuyển từ code php thuần sang sử dụng framework laravel Thực hiện các tối ưu hóa về quản lý và lưu trữ dữ liệu.
PHỤ LỤC VỀ BẢNG VÀ HÌNH ẢNH
Hình 2.1 Sơ đồ phân cấp chức năng.
Hình 2.2 Biều đồ luồng dữ liệu ngữ cảnh
Hình 2.3 Biều đồ luồng dữ liệu mức đỉnh
Hình 2.4 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Quản trị”
Hình 2.5 Biều đồ luồng dữ liệu mức dưới đỉnh chức năng “Quản lý sản phẩm”.
Hình 2.6 Biều đồ luồng dữ liệu mức dưới đỉnh chức năng “Quản lý hóa đơn”.
Hình 2.7 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Quản lý tin tức và góp ý”.
Hình 2.8 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Tìm kiếm”.
Hình 2.9 Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng “Thống kê”.
YHình 4.1 Giao diện trang index.
Hình 4.2 Giao diện giới thiệu
Hình 4.3 Giao diện tin tức
Hình 4.5 Giao diện đăng nhập Admin
Hình 4.6 Giao diện giỏ hàng
Hình 4.7 Giao diện quản trị Admin
Hình 4.8 Giao diện quản lý sản phẩm
Hình 4.9 Giao diện quản lý hóa đơn
Hình 4.10 Giao diện quản lý người dùng
Hình 4.11 Giao diện quản lý góp ý
YBảng 4.1 Bảng nhà cung cấp Bảng 4.2 Bảng danh mục Bảng 4.3 Bảng sản phẩm Bảng 4.4 Bảng hỗ trợ
Bảng 4.6 Bảng chi tiết hóa đơnBảng 4.7 Bảng người dùngBảng 4.8 Bảng tin tức