Khách hàng có thể cập nhập thông tin của mìnhkhi muốn thay đổi, đánh giá và bình luận sản phẩm, xem lịch sử giao dịch và chi tiết hóađơn đã đặt.Nhân viên bán hàng có thể thêm, sửa, xóa s
CƠ SỞ LÝ THUYẾT
Ngôn ngữ lập trình PHP
PHP (viết tắt là: "P Hypertext Preprocessor", "Personal Home Page") là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.
Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng đồng và có sự đóng góp rất lớn của Zend Inc., công ty do các nhà phát triển cốt lõi của PHP lập nên nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát triển ở quy mô doanh nghiệp.
PHP được phát triển từ một sản phẩm có tên là PHP/FI do Rasmus Lerdorf tạo ra năm 1994 PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm một số các chức năng cơ bản cho PHP như ta đã biết đến chúng ngày nay.
Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C, đã thu hút được hàng ngàn người sử dụng trên toàn thế giới với xấp xỉ 50.000 tên miền đã được ghi nhận là có cài đặt nó, chiếm khoảng 1% số tên miền có trên mạng Internet Tuy đã có tới hàng nghìn người tham gia đóng góp vào việc tu chỉnh mã nguồn của dự án này thì vào thời đó nó vẫn chủ yếu chỉ là dự án của một người.
PHP/FI 2.0 được chính thức công bố vào tháng 11 năm 1997 dưới dạng các bản beta Nhưng không lâu sau đó, nó đã được thay thế bởi các bản alpha đầu tiên của PHP 3.0.
Lịch sử của các bản PHP:
- PHP/FI: ra đời năm 1994
- PHP/FI 2.0: ra đời năm 1997
- PHP 3.0: được tạo ra năm 1997 và đã chính thức được công bố vào tháng 6 năm 1998, sau 9 tháng được cộng đồng kiểm nghiệm.
- PHP 4: được công bố vào tháng 5 năm 2000
- PHP 5: sau hàng loạt bản thử nghiệm được nhà xản xuất công bố thì bản PHP 5.1 được họ công bố vào tháng 7 năm 2005.
- PHP 6 Phiên bản 6 này chỉ dùng ở việc nghiên cứu và thử nghiệm Sau đó PHP bỏ hẳn phiên bản 6 và lên 7.
- PHP 7 ở phiên bản này thêm vào rất nhiều cú pháp, tính năng mới giúp choPHP trở nên mạnh mẽ hơn Những tính năng mới quan trọng có thể kể đến như: khai báo kiểu dữ liệu cho biến, xác định kiểu dữ liệu trả về cho 1 hàm,thêm các toán tử mới.
Mô hình MVC
Spring MVC là một module con trong Spring framework, cung cấp kiến trúc Model-View-Controller và các components sẵn có để sử dụng và phát triển ứng dụng web một cách linh hoạt.
Mô hình MVC là kết quả của việc tách các khía cạnh khác nhau của ứng dụng(logic đầu vào, các xử lý logic, UI) trong khi đó cung cấp một sự kết hợp giữa các thành phần đó một cách “lỏng lẻo”.
Luồng xử lý các yêu cầu của DispatcherServlet được minh họa theo hình:
Hình 2: Luồng xử lý yêu cầu của DispastcherServlet Đây là chuỗi sự kiện tương ứng khi nhận một yêu cầu HTTP gửi đến DispatcherServlet:
- Sau khi nhận một HTTP request, DispatcherServlet gửi yêu cầu đến HandlerMapping (một bản đồ cấu hình URL) để xác định controller nào sẽ xử lý yêu cầu này
- Controller sẽ nhận các request và gọi các phương thức dịch vụ (service methods) phù hợp dựa trên việc sử dụng các method GET/POST… Nếu yêu cầu đó cần truy xuất cơ sở dữ liệu thì Controller sẽ ủy nhiệm cho một business logic hay nhiều hơn một model để lấy thông tin và gửi dữ liệu về cho Controller Lúc này Controller đóng gói mô hình dữ liệu và tên của một view sẽ được tải lên thành đối tượng ModelAndView và gửi trả về cho DispathcherServlet
- DispatcherServlet gửi gói ModelAndView cho ViewResolver để tìm xem view (thông thường là một trang JSP, HTML) nào sẽ được load lên Sau khi hoàn tất, DispatcherServlet sẽ chuyển dữ liệu từ model đến view và cuối cùng hiển thị trên trình duyệt.
2.2 Các thành phần trong mô hình MVC
2.2.1 Model Đây là thành phần chứa tất cả các nghiệp vụ logic, phương thức xử lý, truy xuất database, đối tượng mô tả dữ liệu như các Class, hàm xử lý…
2.2.2 View Đảm nhận việc hiển thị thông tin, tương tác với người dùng, nơi chứa tất cả các đối tượng GUI như textbox, images… Hiểu một cách đơn giản, nó là tập hợp các form hoặc các file HTML.
Giữ nhiệm vụ nhận điều hướng các yêu cầu từ người dùng và gọi đúng những phương thức xử lý chúng… Chẳng hạn thành phần này sẽ nhận request từ url và form để thao tác trực tiếp với Model.
Hệ quản trị cơ sở dữ liệu MySql
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,…
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).
Laravel
Laravel là một PHP framework mã nguồn mở, được phát triển bởi Taylor Otwell và nhắm vào mục tiêu hỗ trợ phát triển các ứng dụng web theo kiến trúc MVC (Model – View – Controller).
Những tính năng nổi bật của Laravel bao gồm cú pháp dễ hiểu – rõ ràng , một hệ thống đóng gói modular và quản lý gói phụ thuộc, nhiều cách khác nhau để truy cập vào các cơ sở dữ liệu quan hệ, nhiều tiện ích khác nhau hỗ trợ việc triển khai vào bảo trì ứng dụng.
Laravel có một hệ sinh thái rất lớn với một nền tảng giúp triển khai ứng dụng của bạn một cách nhanh chóng, và trang web chính thức của nó cung cấp nhiều hướng dẫn bằng video gọi là Laracasts.
Vào năm 2015, Laravel đã có được nhiều sự bình chọn nhất từ các lập trình viên trong một cuộc bình chọn về PHP framework phổ biến nhất Trước đó, framework này đã trở thành project PHP phổ biến nhất và được theo dõi nhiều nhất trên Github.
4.2 Lịch sử phát triển của Laravel.
Laravel được Taylor Otwell tạo ra như một giải pháp thay thế cho CodeIgniter, cung cấp nhiều tính năng quan trọng hơn như xác thực và phân quyền.
Bản Laravel beta đầu tiên được phát hành vào ngày 9/6/2011 và Laravel 1 cũng được phát hành trong cùng tháng
Laravel 2 được phát hành vào tháng 9 năm 2011 Tính năng đáng kể bao gồm hỗ trợ controller, điều này thực sự biến Laravel 2 thành một MVC framework hoàn chỉnh, hỗ trợ Inversion of Control (IoC), hệ thống template Blade
Laravel 3 được phát hành vào tháng 2 năm 2012, với một tấn tính năng mới bao gồm giao diện dòng lệnh (CLI) tên “Artisan”,
Laravel 4, tên mã “Illuminate”, được phát hành vào tháng 5 năm 2013.
Laravel 5 được phát hành trong tháng 2 năm 2015.
Laravel 5.1 phát hành vào tháng 6 năm 2015.
Bootstrap, Jquery và javascript
Bootstrap là 1 framework HTML, CSS, và JavaScript cho phép người dùng dễ dàng thiết kế website theo 1 chuẩn nhất định, tạo các website thân thiện với các thiết bị cầm tay
Bootstrap là một trong những framework được sử dụng nhiều nhất trên thế giới để xây dựng nên một website Bootstrap đã xây dựng nên 1 chuẩn riêng và rất được người dùng ưa chuộng Chính vì thế, chúng ta hay nghe tới một cụm từ rất thông dụng "Thiết kế theo chuẩn Bootstrap"
Bootstrap bao gồm những cái cơ bản có sẵn như: typography, forms, buttons, tables, navigation, models, image carousels và nhiều thứ khác Trong bootstrap có thêm nhiều Component, Javascript hỗ trợ cho việc thiết kế reponsive của bạn dễ dàng, thuận tiện và nhanh chóng hơn.
Lịch sử bootstrap là được phát triển bởi Mark Otto và jacob Thornton tại Twitter Nó được xuất bản như là một mã nguồn mở vào tháng 8 năm 2011 trên GitHub Bản bootstrap mới nhất bây giờ là bootstrap 5.
5.2 jQuery jQuery là một thư viện JavaScript đa tính năng, nhỏ gọn, nhanh, được tạo bởi John Resig vào năm 2006 với một phương châm hết sức ý nghĩa: Write less, do more - Viết ít hơn, làm nhiều hơn. jQuery đơn giản hóa việc duyệt tài liệu HTML, xử lý sự kiện, hoạt ảnh và tương tác Ajax để phát triển web nhanh chóng Các phân tích web đã chỉ ra rằng, jQuery là thư viện JavaScript được triển khai rộng rãi nhất. jQuery là một bộ công cụ JavaScript được thiết kế để đơn giản hóa các tác vụ khác nhau bằng cách viết ít code hơn.
JavaScript là một ngôn ngữ lập trình của HTML và WEB Nó là nhẹ và được sử dụng phổ biến nhất như là một phần của các trang web, mà sự thi hành của chúng cho phép Client-Side script tương tác với người sử dụng và tạo các trang web động.
Nó là một ngôn ngữ chương trình thông dịch với các khả năng hướng đối tượng.
JavaScript được biết đến đầu tiên với tên Mocha, và sau đó là LiveScript, nhưng công ty Netscape đã đổi tên của nó thành JavaScript, bởi vì sự phổ biến như là một hiện tượng của Java lúc bấy giờ JavaScript xuất hiện lần đầu trong Netscape 2.0 năm 1995 với tên LiveScript Core đa năng của ngôn ngữ này đã được nhúng vàoNetscape, IE, và các trình duyệt khác.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Phân tích
Hình 3: Sơ đồ use case
Hình 4: Use case bán hàng
2.1.2 Chức năng chủ cửa hàng
Hình 5: Use case chủ cửa hàng
- Mục đích: Đăng kí thành viên.
- Tác nhân: Khách vãng lai.
- Điều kiện: Kiểm tra thông tin nhập, nếu thông tin chính xác sẽ lưu vào cơ sở dữ liệu và thêm thông tin thành viên đó vào CSDL.
- Đầu vào: Tên đăng nhập, mật khẩu, họ tên, ngày sinh, địa chỉ, số điện thoại, email.
- Đầu ra: Đưa ra thông báo đã đăng kí thành công hoặc yêu cầu nhập lại nếu không hợp lệ
- Mục đích: Đăng nhập tài khoản.
- Điều kiện: Người dùng đã đăng ký tài khoản.
- Đầu vào: Email, mật khẩu.
- Đầu ra: Hiển thị các chức năng của thành viên, nhân viên bán hàng, nhân viên kho, quản trị viên.
- Mục đích: Tìm kiếm sản phẩm.
- Tác nhân: Khách hàng, nhân viên bán hàng, nhân viên kho.
- Điều kiện: Lấy thông tin CSDL theo trường đã tìm kiếm.
- Đầu vào: Nhập tên sản phẩm cần tìm.
- Đầu ra: Thông tin sản phẩm cần tìm.
- Mục đích: Chọn những sản phẩm cần tìm kiếm.
- Điều kiện: Lấy thông tin từ CSDL mà khách hàng đã chọn vào giỏ.
- Đầu vào: Hiển thị thông tin về tên sản phẩm, ảnh, đơn giá, số lượng, thành tiền, tổng tiền của sản phẩm.
- Đầu ra: Thông tin tất cả sản phẩm khách hàng đã thêm vào giỏ hàng và tổng tiền.
- Mục đích: Các sản phẩm cần mua.
- Điều kiện: Lưu thông tin đơn hàng trong cơ sở dữ liệu.
- Đầu vào: Sau khi xem đơn hàng, khách hàng có nhu cầu đặt hàng thì nhấn nút đặt hàng để đặt hàng.
- Đầu ra: Đưa ra thông báo đặt hàng thành công cho khách hàng.
- Mục đích: Đăng nhập tài khoản người quản trị vào hệ thống.
- Tác nhân: Quản trị viên, nhân viên bán hàng, nhân viên kho,nhân viên giao hàng.
- Điều kiện: Nhận thông tin đăng nhập từ Admin và nhân viên, hệ thống sẽ kiểm tra thông tin, nếu đúng thì đăng nhập, sai thì nhập lại.
- Đầu vào: Email, mật khẩu.
- Đầu ra: Giao diện các chức năng đã được phân quyền.
2.2.2.2 Cập nhật thông tin thành viên
- Mục đích: Cập nhật thông tin.
- Tác nhân: quản trị viên.
- Điều kiện: Nếu đăng nhập thành công, có thể thêm thành viên mới hoặc sửa xóa thành viên cũ, phân quyền.
- Đầu vào: Thông tin thành viên.
- Đầu ra: Thông tin thành viên đã được thêm.
2.2.2.3 Cập nhật thông tin nhân viên
- Mục đích: Cập nhật thông tin.
- Tác nhân: quản trị viên.
- Điều kiện: Nếu đăng nhập thành công, có thể thêm thành viên mới hoặc sửa xóa nhân viên cũ, phân quyền.
- Đầu vào: Thông tin nhân viên.
- Đầu ra: thông tin nhân viên đã được cập nhật.
2.2.2.4 Cập nhật thông tin sản phẩm
- Mục đích: Cập nhật thông tin sản phẩm.
- Tác nhân: Quản trị viên.
- Điều kiện: Nếu đăng nhập thành công, có thể thêm sản phẩm mới hoặc sửa xóa sản phẩm cũ.
- Đầu vào: Thông tin sản phẩm.
- Đầu ra: Thông tin sản phẩm.
2.2.2.5 Cập nhật danh mục sản phẩm
- Tác nhân: Quản trị viên.
- Điều kiện: Nếu đăng nhập thành công, có thể thêm danh mục mới hoặc sửa xóa danh mục cũ.
- Đầu vào: Thông tin danh mục sản phẩm.
- Đầu ra: Thông tin danh mục sản phẩm.
- Mục đích: Duyệt đơn hàng
- Tác nhân: Quản trị viên
- Điều kiện trước: Quản trị viên phải đăng nhập thành công
- Đầu vào: Mã đơn hàng, mã khách hàng, tổng tiền, tình trạng
- Đầu ra: Thông tin được lưu vào cơ sở dữ liệu
2.2.3.1 Cập nhật tình trạng đơn hàng
- Mục đích: Cập nhật lại tình trạng đơn hàng (đã đóng gói,đang giao hàng, trả lại, hoàn tất)
- Tác nhân: Nhân viên kho
- Điều kiện trước: Nhân viên kho phải đăng nhâp thành công
- Đầu vào: Mã đơn hàng, Mã khách hàng, tình trạng
- Đầu ra: Thông tin được lưu vào cơ sở dữ liệu
- Mục đích: Cập nhật số lượng sản phẩm trong kho
- Tác nhân: Nhân viên Kho
- Điều kiện trước: Nhân viên kho phải đăng nhập thành công
- Đầu vào: Mã sản phẩm, số lượng, mã nhân viên, ngày nhập
- Đầu ra: Thông tin nhập hàng được lưu vào cơ sở dữ liệu
- Mục đích: Xem danh sách đơn hàng cần giao.
- Tác nhân: Nhân viên giao hàng.
- Điều kiện: Nhân viên giao hàng đăng nhập thành công, nhấn vào xem chi tiết rồi cập nhật trạng thái đơn hàng.
- Đầu vào: Danh sách hóa đơn bán hàng, chi tiết hóa đơn.
- Đầu ra: đơn hàng được cập nhật.
2.3.1 Sơ đồ hoạt động thanh toán
Hình 6: Sơ đồ hoạt động thanh toán
2.3.2 Sơ đồ hoạt động trang chủ
Hình 7:Sơ đồ hoạt động trang chủ
2.3.3 Sơ đồ hoạt động tìm kiếm
Hình 8: Sơ đồ hoạt động tìm kiếm
2.3.4 Sơ đồ hoạt động thêm vào giỏ hàng
Hình 9: Sơ đồ hoạt động thêm vào giỏ hàng
2.3.5 Sơ đồ hoạt động đăng nhập
Hình 10: Sơ đồ hoạt động đăng nhập
2.3.6 Sơ đồ hoạt động đăng ký thành viên
Hình 11: Sơ đồ hoạt động đăng ký thành viên
Thiết kế hệ thống
3.1 Thiết kế cơ sở dữ liệu
TÊN TRƯỜNG KIỂU DỮ LIỆU RÀNG BUỘC MÔ TẢ
Makh Int(10) Primary key Mã khách hàng
Tenkh Varchar(255) Not null Tên khách hàng
Email Varchar(255) Not null Thư điện tử
Sdt Varchar(255) Not null Số điện thoại
Matkhau Varchar(255) Not null Mật khẩu
Tentaikhoan Varchar(255) Tên tài khoản
TÊN TRƯỜNG KIỂU DỮ LIỆU RÀNG BUỘC MÔ TẢ
Masp Int(11) Primary key Mã sản phâm
Matl Int(11) Foreign key Mã loại sản phâm
Mancc Varchar(255) Foreign key Mã nhà cung cấp
Tensp Varchar(255) Tên sản phẩm
Anhsp Varchar(255) Ảnh sản phẩm
Soluong Int(11) Số lượng sản phẩm
Noidungsp Varchar(255) Nội dung sản phẩm
Giasp Varchar(255) Giá sản phẩm
TÊN TRƯỜNG KIỂU DỮ LIỆU RÀNG BUỘC MÔ TẢ
Matl Int(11) Primary key Mã loại sản phẩm
Tentheloai Varchar(255) Tên loại sản phẩm
Bảng 3: tbl loại sản phẩm
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Iddonhang Bigint(50) Primary key Id đơn hàng
Madh Varchar(50) Foreign key Mã đơn hàng
Makh Int(11) Not null Mã khách hàng
Tinhtrangdh Varchar(50) Not null Tình trạng dơn hàng
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Mancc Int(11) Primary key Mã nhà cung cấp
Tenncc Varchar(255) Tên nhà cung cấp
Diachi Varchar(255) Mã phiếu nhập
Email Varchar(100) Thư điện tử
Dienthoai Varchar(11) Số điện thoại
Bảng 5: tbl nhà cung cấp
3.1.6 Table chi tiết đơn hàng
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Mactdh Int(11) Primary key Mã chi tiết đơn hàng
Madh Int(11) Foreign key Mã đơn hàng
Masp Int(11) Foreign key Mã sản phẩm
Tensp Varchar(255) Not null Tên sản phẩm
Giasp Varchar(50) Not null Giá sản phẩm
Bảng 6: tbl chi tiết đơn hàng