Giờ đây, mọi việc liên quan đến thông tin trở nên thật dễ dàng cho người sử dụng: chỉ cần có một máy tính kết nối internet và một dòng dữ liệu truy tìm thì gần như lập tức… cả thế giới v
Trang 1Thái Nguyên, 2021
Sinh viên thực hiện : Nguyễn Đức Tuyên
Mã Sinh Viên : DTC165D4801030013Giáo viên hướng dẫn: Tô Hữu Nguyên
ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
THÁI NGUYÊN
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG THÁI NGUYÊN
KHOA CÔNG NGHỆ THÔNG TIN
Sinh viên thực hiện : Nguyễn Đức Tuyên
Mã Sinh Viên : DTC165D4801030013Giáo viên hướng dẫn: Tô Hữu Nguyên
Trang 3LỜI NÓI ĐẦU
Ngày nay, ứng dụng công nghệ thông tin và việc tin học hóa được xem làmột trong những yếu tố mang tính quyết định trong hoạt động của các chínhphủ, tổ chức, cũng như của các công ty, nó đóng vai trò hết sức quan trọng, cóthể tạo ra những bước đột phá mạnh mẽ Mạng Internet là một trong những sảnphẩm có giá trị hết sức lớn lao và ngày càng trở thành một công cụ không thểthiếu, là nền tảng chính cho sự truyền tải, trao đổi thông tin trên toàn cầu Giờđây, mọi việc liên quan đến thông tin trở nên thật dễ dàng cho người sử dụng:chỉ cần có một máy tính kết nối internet và một dòng dữ liệu truy tìm thì gầnnhư lập tức… cả thế giới về vấn đề mà bạn đang quan tâm sẽ hiện ra, có đầy đủthông tin, hình ảnh và thậm chí đôi lúc có cả những âm thanh nếu bạn cần…Bằng internet, chúng ta đã thực hiện được nhiều công việc với tốc độ nhanh hơn
và chi phí thấp hơn nhiều so với cách thức truyền thống Chính điều này, đã thúcđẩy sự khai sinh và phát triển của thương mại điện tử và chính phủ điện tử trênkhắp thế giới, làm biến đổi đáng kể bộ mặt văn hóa, nâng cao chất lượng cuộcsống con người Trong hoạt động sản xuất, kinh doanh, giờ đây, thương mạiđiện tử đã khẳng định được vai trò xúc tiến và thúc đẩy sự phát triển của doanhnghiệp Đối với một cửa hàng hay shop, việc quảng bá và giới thiệu đến kháchhàng các sản phẩm mới đáp ứng được nhu cầu của khách hàng sẽ là cần thiết.Vậy phải quảng bá thế nào đó là xây dựng được một Website cho cửa hàng củamình quảng bá tất cả các sản phẩm của mình bán
Vì vậy, chúng em đã thực hiện đồ án “Xây dựng website bán giầy online trên mô hình MVC” có nội dung như sau:
Người chủ doanh nghiệp mong muốn đưa các sản phẩm đó lên website củamình Khách hàng có thể đặt mua hàng trên website mà không cần đến cửa hàng
Trang 4LỜI CẢM ƠN
Trong lời đầu tiên của báo cáo đồ án tốt nghiệp “Xây dựng website bán
giầy online trên mô hình MVC” này, em muốn gửi những lời cám ơn và biết ơn
chân thành nhất của mình tới tất cả những người đã hỗ trợ, giúp đỡ em về kiếnthức và tinh thần trong quá trình thực hiện đồ án
Trước hết em xin chân thành cám ơn Thầy Tô Hữu Nguyên, Giảng viênKhoa Công Nghệ Thông Tin, Trường Đại Học Công Nghệ Thông Tin và TruyềnThông Thái Nguyên, người đã trực tiếp hướng dẫn, nhận xét, giúp đỡ em trongsuốt quá trình thực hiện đồ án
Xin chân thành cảm ơn ban giám hiệu nhà trường, các thầy cô trong KhoaCông Nghệ Thông Tin và các phòng ban nhà trường đã tạo điều kiện tốt nhấtcho em cũng như các bạn khác trong suốt thời gian học tập và làm tốt nghiệpVới kiến thức hạn chế, tài liệu tham khảo chưa nhiều nên đồ án không tránh khỏinhững sai sót, kính mong quý thầy cô cùng các bạn chia sẻ, góp ý để đồ án đượchoàn thiện
Em xin chân thành cảm ơn!
Thái Nguyên, Ngày 3 Tháng 6 Năm 2021
Sinh viênNguyễn Đức Tuyên
Trang 5MỤC LỤC
MỤC LỤC i
CHƯƠNG 1 : TỔNG QUAN VỀ MYSQL VÀ PHP 1
1.1 Tổng quan về MySQL 1
1.1.1 Khởi động và sử dụng 1
1.1.2 Một số thuật ngữ 1
1.1.3 Loại dữ liệu trong MySQL 1
1.1.4 Những cú pháp cơ bản 2
1.2 TỔNG QUAN VỀ PHP 3
1.2.1 Lịch sử phát triển 3
1.2.2 Cấu trúc cơ bản 4
1.2.3 Xuất giá trị ra trình duyệt 5
1.2.4 Biến, hằng, chuỗi và các kiểu dữ liệu 5
1.2.5 Các phương thức được sử dụng trong lập trình PHP 6
1.2.6 Cookie và Session trong PHP 7
1.2.7 Hàm 8
CHƯƠNG 2 : MÔ HÌNH KIẾN TRÚC MVC 10
2.1 MVC là gì? 10
2.2 Xuất Xứ của mô hình MVC 10
2.3 Đặc điểm của mô hình MVC 11
2.4 Kiến trúc mô hình MVC 11
2.4.1 Thành phần Controller 13
2.4.2 Thành phần Model 13
2.4.3 Thành Phần View 14
2.5 Ưu điểm và nhược điểm của MVC 15
2.5.1 Ưu điểm 15
2.5.2 Nhược điểm 16
2.6 Cấu trúc Web MVC 16
CHƯƠNG 3: ỨNG DỤNG VÀO BÀI TOÁN THỰC TẾ 17
Trang 63.1 Tên đề tài 17
3.2 Lí do chọn đề tài 17
3.3 Lựa chọn công cụ ngôn ngữ thực hiện: 17
3.4 Khảo sát xây dựng hệ thống 17
3.4.1 Đặt vấn đề 17
3.4.2 Website cần xây dựng 18
3.4.3 Website cần xây dựng 19
3.4.4 Yêu cầu đặt ra 19
3.5 Phân tích và thiết kế cơ sở dữ liệu 20
3.5.1 Định nghĩa bài toán 20
3.5.2 Các nhóm chức năng của hệ thống 21
3.5.3 Xác định các tác nhân 21
3.6 Xác định các USE CASE , xây dựng biểu đồ USE CASE chi tiết 21
3.6.1 Xác định các Use case 21
3.6.2 Biểu đồ UC 23
3.6.3 Biểu đồ lớp 27
3.6.4 Biểu đồ trình tự các chức năng 29
3.7 Thiết kế cơ sở dữ liệu 39
3.8 Mô hình dữ liệu quan hệ 44
CHƯƠNG 4: HOÀN THIỆN SẢN PHẨM 45
4.1 Giao diện trang chủ dành cho khách hàng 45
4.1.1 Giao diện trang chủ 45
4.1.2 Menu dọc 46
4.1.3 Danh sách sản mới nhất 46
4.1.4 Danh sách các sản phẩm đang bán 47
4.1.5 Phần Đăng Ký 47
4.1.6 Phần đăng Nhập 48
4.1.7 Phần Mua hàng chọn size số lượng 48
4.1.8: Phần Giỏ Hàng 48
Trang 74.1.10 Thanh toán bằng Paypal 49
4.1.11 Thanh toán bằng MOMO (QR) 50
4.1.12 Thanh toán bằng ATM (Banking) 50
4.1.13 Xem đơn hàng đã mua 51
4.1.14 Chat khi cần hỗ trợ 51
4.1.15 Email thông báo đã mua hàng 52
4.2 Giao diện dành cho quản lý 52
4.2.1 Giao diện đăng nhập 52
4.2.2 Giao diện xem thông tin 52
4.2.3 Giao diện thêm thông tin 53
4.2.4 Giao diện sửa thông tin 53
4.2.5 Chức năng xuất ra file excel,pdf,csv,copy 53
4.2.6 Chức năng thống kê doanh số theo tháng 54
4.2.7 Chức năng thống kê hàng tồn kho 54
4.2.8 Chức năng thống kê doanh thu 55
4.3 Up load Website lên Host 55
TÀI LIỆU THAM KHẢO 56
KẾT LUẬN 57
Trang 8NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Thái Nguyên, Ngày 3 Tháng 6 Năm 2021
Giáo viên hướng dẫn
(Ký tên,ghi rõ họ tên)
Trang 9CHƯƠNG 1 : TỔNG QUAN VỀ MYSQL VÀ PHP 1.1 Tổng quan về MySQL
MySQL là hệ quản trị dữ liệu miễn phí, được tích hợp sử dụng chung với Apache, PHP Chính yếu tố phát triển trong cộng đồng mã nguồn mở nên MySQL đã qua rất nhiều sự hỗ trợ của những lập trình viên yêu thích mã nguồn
mở MySQL cũng có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL Nhưng MySQL không bao quát toàn bộ những câu truy vấn cao cấp như SQL Về bản chất MySQL chỉ đáp ứng việc truy xuất đơn giản trong quá trình vận hành của website nhưng hầu hết có thể giải quyết các bài toán trong PHP.
1.1.1 Khởi động và sử dụng
Chúng ta sử dụng command như sau: MySQL –hname –uuser –ppass Để
truy cập vào cơ sở dữ liệu
Hoặc sử dụng bộ appserv để vào nhanh hơn theo đường dẫn sau:
26 Start/ Appserv/ MySQL command Line client Sau đó nhập password mà
chúng ta đã đặt vào
1.1.2 Một số thuật ngữ
NULL : Giá trị cho phép rỗng.
AUTO_INCREMENT : Cho phép giá trị tăng dần (tự động).
UNSIGNED : Phải là số nguyên dương
PRIMARY KEY : Cho phép nó là khóa chính trong bảng.
1.1.3 Loại dữ liệu trong MySQL
IU
Trang 101.1.4 Những cú pháp cơ bản
- Tạo một cơ sở dữ liệu:
CREATE DATABASE tên_cơ_sở_dữ_liệu; Cú pháp sử dụng cơ sở dữ liệu:
Use tên_database; Cú pháp thoát khỏi cơ sở dữ liệu: Exit Tạo một bảng
trong cơ sở dữ liệu: CREATE TABLE user (<tên_cột><mô_tả>,…,<tên_cột_n>
… <mô_tả_n>)
Hiển thị có bao nhiều bảng: show tables;
Hiển thị có bao nhiêu cột trong bảng: show columns from table; Thêm 1
cột vào bảng:
ALTER TABLE tên_bảng ADD <tên_cột><thuộc_tính> AFTER
<tên_cột>
- Thêm giá trị vào bảng:
INSERT INTO Tên_bảng(tên_cột) VALUES(Giá_trị_tương_ứng);
- Truy xuất dữ liệu:
SELECT tên_cột FROM Tên_bảng;
- Truy xuất dữ liệu với điều kiện:
SELECT tên_cột FROM Tên_bảng WHERE điều kiện;
Truy xuất dữ liệu và sắp xếp theo trình tự:
SELECT tên_cột FROM Tên_bảng WHERE điều kiện (có thể có wherehoặc không) ORDER BY Theo quy ước sắp xếp Trong đó quy ước sắp xếp baogồm hai thông số là ASC (từ trên xuống dưới), DESC (từ dưới lên
trên)
- Truy cập dữ liệu có giới hạn:
SELECT tên_cột FROM Tên_bảng WHERE điều kiện (có thể có where hoặc không) LIMIT vị trí bắt đầu, số record muốn lấy ra
- Cập nhật dữ liệu trong bảng:
Update tên_bảng set tên_cột=Giá trị mới WHERE (điều kiện) Nếu không
có ràng buộc điều kiện, chúng sẽ cập nhật toàn bộ giá trị mới của các recordtrong bảng
Trang 11DELETE FROM tên_bảng WHERE (điều kiện) Nếu không có ràng buộcđiều kiện, chúng sẽ xóa toàn bộ giá trị của các record trong bảng.
1.2 TỔNG QUAN VỀ PHP
1.2.1 Lịch sử phát triển
PHP
Được phát triển từ một sản phẩm có tên là PHP/FI PHP/FI do Rasmus
Lerdorf tạo ra năm 1995, ban đầu được xem như là một tập con đơn giản của các
mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ yếu lý lịch của ông
trên mạng Ông đã đặt tên cho bộ mã kịch bản này là 'Personal Home Page
Tools'.
PHP 3
PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi với
các phiên bản PHP mà chúng ta được biết ngày nay Nó đã được Andi Gutmans
và Zeev Suraski tạo ra năm 1997 sau khi viết lại hoàn toàn bộ mã nguồn trước
đó PHP 3.0 đã chính thức được công bố vào tháng 6 năm 1998, sau thời gian 9tháng được cộng đồng kiểm nghiệm
PHP 4
Vào mùa đông năm 1998, ngay sau khi PHP 3.0 chính thức được công bố,
Andi Gutmans và Zeev Suraski đã bắt đầu bắt tay vào việc viết lại phần lõi của
PHP Một động cơ mới, có tên 'Zend Engine' (ghép từ các chữ đầu trong tên của
Zeev và Andi), đã đáp ứng được các nhu cầu thiết kế này một cách thành công,
và lần đầu tiên được giới thiệu vào giữa năm 1999 PHP 4.0, dựa trên động cơnày, và đi kèm với hàng loạt các tính năng mới bổ sung, đã chính thức đượccông bố vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra đời
PHP 5
Sự thành công hết sức to lớn của PHP 4.0 đã không làm cho nhóm pháttriển PHP tự mãn Cộng đồng PHP đã nhanh chóng giúp họ nhận ra những yếukém của PHP 4 đặc biệt với khả năng hỗ trợ lập trình hướng đối tượng (OOP),
xử lý XML, không hỗ trợ giao thức máy khách mới của MySQL 4.1 và 5.0, hỗ trợ dịch vụ web yếu Những điểm này chính là mục đích để Zeev và Andi viết
Trang 12Zend Engine 2.0, lõi của PHP 5.0 Một thảo luận trên Slashdot đã cho thấy
việc phát
Trang 13triển PHP 5.0 có thể đã bắt đầu vào thời điểm tháng 12 năm 2002 nhưng nhữngbài phỏng vấn Zeev liên quan đến phiên bản này thì đã có mặt trên mạng
Internet vào khoảng tháng 7 năm 2002.
Ngày 29 tháng 6 năm 2003, PHP 5 Beta 1 đã chính thức được công bố để cộng đồng kiểm nghiệm Đó cũng là phiên bản đầu tiên của Zend Engine 2.0.
Phiên bản Beta 2 sau đó đã ra mắt vào tháng 10 năm 2003 với sự xuất hiện của
hai tính năng rất được chờ đợi: Iterators, Reflection nhưng namespaces một tính
năng gây tranh cãi khác đã bị loại khỏi mã nguồn Ngày 21 tháng 12 năm 2003:PHP 5 Beta 3 đã được công bố để kiểm tra với việc phân phối kèm với Tidy, bỏ
hỗ trợ Windows 95, khả năng gọi các hàm PHP bên trong XSLT, sửa chữa nhiều
lỗi và thêm khá nhiều hàm mới PHP 5 bản chính thức đã ra mắt ngày 13 tháng 7năm 2004 sau một chuỗi khá dài các bản kiểm tra thử bao gồm Beta 4, RC 1,RC2, RC3 Mặc dù coi đây là phiên bản sản xuất đầu tiên nhưng PHP 5.0 vẫncòn một số lỗi trong đó đáng kể là lỗi xác thực HTTP
Trang 14Trong PHP để kết thúc 1 dòng lệnh chúng ta sử dụng dấu ";"
Để chú thích 1 đoạn dữ liệu nào đó trong PHP ta sử dụng dấu "//" cho từng dòng Hoặc dùng cặp thẻ "/*…*/" cho từng cụm mã lệnh
Ví dụ: <?php echo ”Hello world!”; ?>
1.2.3 Xuất giá trị ra trình duyệt
Để xuất dữ liệu ra trình duyệt chúng ta có những dòng cú pháp sau :
+ echo "Thông tin";
+ printf "Thông tin";
Thông tin bao gồm : biến, chuỗi, hoặc lệnh HTML …
Nếu giữa hai chuỗi muốn liên kết với nhau ta sử dụng dấu "."
1.2.4 Biến, hằng, chuỗi và các kiểu dữ liệu
- Biến
Biến được xem là vùng nhớ dữ liệu tạm thời Và giá trị có thể thay đổiđược Biến được bắt đầu bằng ký hiệu "$" Và theo sau chúng là 1 từ, 1 cụm từnhưng phải viết liền hoặc có gạch dưới
1 biến được xem là hợp lệ khi nó thỏa các yếu tố :
+ Tên của biến phải bắt đầu bằng dấu gạch dưới và theo sau là các ký tự,
số hay dấu gạch dưới
+ Tên của biến không được phép trùng với các từ khóa của PHP
Trong PHP để sử dụng 1 biến chúng ta thường phải khai báo trước, tuynhiên đối với các lập trình viên khi sử dụng họ thường xử lý cùng một lúc cáccông việc, nghĩa là vừa khai báo vừa gán dữ liệu cho biến
Bản thân biến cũng có thể gán cho các kiểu dữ liệu khác Và tùy theo ý định củangười lập trình mong muốn trên chúng
- Hằng
Nếu biến là cái có thể thay đổi được thì ngược lại hằng là cái chúng ta không thểthay đổi được Hằng trong PHP được định nghĩa bởi hàm define theo cú pháp:
define (string tên_hằng, giá_trị_hằng ).
Cũng giống với biến hằng được xem là hợp lệ thì chúng phải đáp ứng 1 số
Trang 15+ Hằng không có dấu "$" ở trước tên.
+ Hằng có thể truy cập bất cứ vị trí nào trong mã lệnh + Hằng chỉ được phépgán giá trị duy nhất 1 lần
+ Hằng thường viết bằng chữ in để phân biệt với biến
$last_name= ‘Van A’;
Để liên kết 1 chuỗi và 1 biến chúng ta thường sử dụng dấu "."
- Kiểu dữ liệu
Các kiểu dữ liệu khác nhau chiếm các lượng bộ nhớ khác nhau và có thể
được xử lý theo cách khác nhau khi chúng được theo tác trong 1 script Trong
PHP chúng ta có 6 kiểu dữ liệu chính như sau :
Chúng ta có thể sử dụng hàm dựng sẵn GETtype() của PHP4 để kiểm tra
kiểu của bất kỳ biến
1.2.5 Các phương thức được sử dụng trong lập trình PHP
Có 2 phương thức được sử dụng trong lập trình PHP là GET và POST
Phương thức GET
Phương thức này cũng được dùng để lấy dữ liệu từ form nhập liệu Tuy nhiên
nhiệm vụ chính của nó vẫn là lấy nội dung trang dữ liệu từ webserver.
Ví dụ:
Với url sau: shownews.php?id=50
Vậy với trang shownews ta dùng hàm $_GET["id"] sẽ được giá trị là 50 Phương thức POST
Trang 16Phương thức này được sử dụng để lấy dữ liệu từ form nhập liệu Và chuyển
chúng lên trình chủ webserver.
1.2.6 Cookie và Session trong PHP
Cookie và Session là hai phương pháp sử dụng để quản lý các phiên làm việc giữa
người sử dụng và hệ thống
Cookie
Cookie là 1 đoạn dữ liệu được ghi vào đĩa cứng hoặc bộ nhớ của máy người sử
dụng Nó được trình duyệt gởi ngược lên lại server mỗi khi browser tải 1 trang
Cookie được tạo ra bởi website và gởi tới browser, do vậy 2 website khác nhau
(cho dù cùng host trên 1 server) sẽ có 2 Cookie khác nhau gởi tới browser Ngoài ra, mỗi browser quản lý và lưu trữ Cookie theo cách riêng của mình, cho nên 2 browser cùng truy cập vào 1 website sẽ nhận được 2 Cookie khác nhau.
1. Để thiết lập Cookie ta sử dụng cú pháp:
SetCookie("tên Cookie","giá trị", thời gian sống) Tên Cookie là tên mà
chúng ta đặt cho phiên làm việc
Giá trị là thông số của tên Cookie.
Ví dụ: setCookie("name","admin",time()+3600);
2. Để sử dụng lại Cookie vừa thiết lập, chúng ta sử dụng cú pháp:
Cú pháp: $_COOKIE["tên Cookies"]
Tên Cookie là tên mà chúng ta thiết lập phía trên.
3. Để hủy 1 Cookie đã được tạo ta có thể dùng 1 trong 2 cách sau:
+ Cú pháp: setCookie("Tên Cookie")
Gọi hàm setCookie với chỉ duy nhất tên Cookie mà thôi
+ Dùng thời gian hết hạn Cookie là thời điểm trong quá khứ.
Trang 17Một cách khác quản lý người sử dụng là Session Session được hiểu là khoảng thời gian người sử dụng giao tiếp với 1 ứng dụng Một Session được bắt
đầu khi người sử dụng truy cập vào ứng dụng lần đầu tiên, và kết thúc khi người
sử dụng thoát khỏi ứng dụng Mỗi Session sẽ có được cấp một định danh (ID)
khác nhau
- Để thiết lập 1 Session ta sử dụng cú pháp: Session_start()
Đoạn code này phải được nằm trên các kịch bản HTML Hoặc những lệnh
echo,printf Để thiết lập 1 giá trị Session, ngoài việc cho phép bắt đầu thực thi Session Chúng ta còn phải đăng ký 1 giá trị Session Để tiện cho việc gán giá trị
cho Session đó.
Ta có cú pháp sau: Session_register("Name")
4. Giống với Cookie Để sử dụng giá trị của Session ta sử dụng mã lệnh sau:
Cú pháp: $_SESSION["name"]
Với Name là tên mà chúng ta sử dụng hàm Session_register("name") để khai báo.
5. Để hủy bỏ giá trị của Session ta có những cách sau:
Session_destroy() // Cho phép hủy bỏ toàn bộ giá trị của Session Session_unset()// Cho phép hủy bỏ Session
1.2.7 Hàm
Để giảm thời gian lặp lại 1 thao tác code nhiều lần, PHP hỗ trợ người lậptrình việc tự định nghĩa cho mình những hàm có khả năng lặp lại nhiều lần trong
website Việc này cũng giúp cho người lập trình kiểm soát mã nguồn một cách
mạch lạc Đồng thời có thể tùy biến ở mọi trang Mà không cần phải khởi tạohay viết lại mã lệnh như HTML thuần
Hàm tự định nghĩa Cú pháp: function function_name()
{//Lệnh thực thi}
Tên hàm có thể là một tổ hợp bất kỳ những chứ cái, con số và dấu gạch dưới, nhưng phải bắt đầu từ chứ cái và dấu gạch dưới
Trang 18Hàm tự định nghĩa với các tham số
Cú pháp:
function function_name($gt1,$gt2){
//Lệnh thực thi}
Hàm tự định nghĩa với giá trị trả về
PHP cung cấp nhiều hàm cho phép triệu gọi lại file Như hàm include("URL đến file"), require("URL Đến file").
Ngoài hai cú pháp trên còn có include_once(), require_once() Hai hàm này cũng
có trách nhiệm gọi lại hàm Những chúng sẽ chỉ gọi lại duy nhất 1 lần mà thôi
.3 Kết hợp PHP và MySQL trong ứng dụng website Kết nối cơ sở dữ liệu
MySQL_connect("hostname","user","pass");
Lựa chọn cơ sở dữ liệu
MySQL_select_db("tên_CSDL");
Thực thi câu lệnh truy vấn
MySQL_query("Câu truy vấn ở đây");
Trang 19CHƯƠNG 2 : MÔ HÌNH KIẾN TRÚC MVC 2.1 MVC là gì?
MVC là viết tắt của Model – View – Controller Là một trong nhữngdesign pattern Được vận hành để tách mã lệnh thành 3 phần riêng biệt Ở mỗiphần MVC sẽ có những chức năng đặc thù Để xử lý các tác vụ mà request gởitới MVC làm cho mã lệnh trở nên trong sáng, dễ phát triển và dễ nâng cấp theothời gian Để làm việc tốt đối với MVC, chúng ta cần nắm thật vững kiến thứcOOP Bản chất của các framework khác cũng được hình thành trên lý thuyếtMVC Do vậy nếu chúng ta nắm tốt MVC Thì ở những framework khác chắcchắn sẽ không cảm thấy khó hiểu
Model: Là thành phần chịu trách nhiệm xử lý các thao tác trêndatabase Và gởi trả kết quả thông qua view
View: Là phần hiển thị thông tin trên website, sau khi đi qua controller
và nhận kết quả từ phía model thì view là bước cuối cùng để chuyểnthông tin tới người dùng
Controller: Là phần điều hướng các request tới những tác vụ tươngứng Controller là một phần không thể thiếu ở bất cứ framework nào
Vì nó có trách nhiệm gởi và nhận request từ hệ thống tới người sửdụng
2.2 Xuất Xứ của mô hình MVC
Tất cả bắt đầu vào những năm 70 của thế kỷ 20, tại phòng thí nghiệmXerox PARC ở Palo Alto Sự ra đời của giao diện đồ họa (Graphical UserInterface) và lập trình hướng đối tượng (Object Oriented Programming) chophép lập trình viên làm việc với những thành phần đồ họa như những đối tượng
đồ họa có thuộc tính và phương thức riêng của nó Không dừng lại ở đó, nhữngnhà nghiên cứu ở Xerox PARC còn đi xa hơn khi cho ra đời cái gọi là kiến trúcMVC (Viết tắt của Model
– View – Controller)
MVC được phát minh tại Xerox Parc vào những năm 70, bởiTrygveReenskaug MVC lần đầu tiên xuất hiện công khai là trong Smalltalk –
Trang 2080 Sau đó trong một thời gian dài hầu như không có thông tin nào về MVC,ngay cả trong tài liệu 80 Smalltalk Các giấy tờ quan trọng đầu tiên đ ợcƣ công
bố trên
Trang 21MVC là “A Cookbook for Using the Model – View – Controller User InterfaceParadigm in Smalltalk – 80”, bởi Glenn Krasner và Stephen Pope, xuất bảntrong tháng 8 tháng 9 năm 1988.
2.3 Đặc điểm của mô hình MVC
Cái lợi ích quan trọng nhất của mô hình MVC là nó giúp cho ứngdụng dễ bảo trì, module hóa các chức năng, và được xây dựng nhanh chóng.MVC tách các tác vụ của ứng dụng thành các phần riêng lẻ model, view,controller giúp cho việc xây dựng ứng dụng nhẹ nhàng hơn Dễ dàng thêm cáctính năng mới, và các tính năng cũ có thể dễ dàng thay đổi MVC cho phép cácnhà phát triển và các nhà thiết kế có thể làm việc đồng thời với nhau MVC chophép thay đổi trong 1 phần của ứng dụng mà không ảnh hưởng đến các phầnkhác
Sở dĩ như vậy vì kiến trúc MVC đã tách biệt (decoupling) sự phụ thuộcgiữa các thành phần trong một đối tượng đồ họa, làm tăng tính linh động(flexibility) và tính tái sử dụng (reusebility) của đối tượng đồ họa đó Một đốitượng đồ họa bấy giờ có thể dễ dàng thay đổi giao diện bằng cách thay đổi thànhphần View của nó trong khi cách thức lưu trữ (Model) cũng như xử lý(Controller) không hề thay đổi Tương tự, ta có thể thay đổi cách thức lưu trữ(Model) hoặc xử lý (Controller) của đối tượng đồ họa mà những thành phần cònlại vẫn giữ nguyên
Chính vì vậy mà kiến trúc MVC đã được ứng dụng để xây dựng rất nhiềuframework và thư viện đồ họa khác nhau Tiêu biểu là bộ thư viện đồ họa củangôn ngữ lập trình hướng đối tượng SmallTalk (cũng do Xerox PARC nghiêncứu và phát triển vào thập niên 70 của thế kỷ 20) Các Swing Components củaJava cũng được xây dựng dựa trên kiến trúc MVC Đặc biệt là nền tảngASP.NET MVC Frame work
2.4 Kiến trúc mô hình MVC
Trong kiến trúc MVC, một đối tượng đồ họa người dùng(GUI Component) bao gồm 3 thành phần cơ bản: Model, View, và Controller Model có tráchnhiệm đối với toàn bộ dữ liệu cũng như trạng thái của đối tượng đồ họa View
Trang 22chính là thể hiện trực quan của Model, hay nói cách khác chính là giao diện của
Trang 23đối tượng đồ họa Và Controller điều khiển việc tương tác giữa đối tượng đồ họa với người sử dụng cũng như những đối tượng khác.
Khi người sử dụng hoặc những đối tượng khác cần thay đổi trạng thái củađối tượng đồ họa, nó sẽ tương tác thông qua Controller của đối tượng đồ họa.Controller sẽ thực hiện việc thay đổi trên Model Khi có bất kỳ sự thay đổi nàoxảy ra ở Model, nó sẽ phát thông điệp ( broadcast message) thông báo cho View
và Controller biết Nhận được thông điệp từ Model, View sẽ cập nhật lại thểhiện của mình, đảm bảo rằng nó luôn là thể hiện trực quan chính xác của Model.Còn Controller, khi nhận được thông điệp từ Model, sẽ có những tương tác cầnthiết phản hồi lại người sử dụng hoặc các đối tượng khác
Lấy ví dụ một GUI Component (thành phần đồ họa người dùng) đơn giản
là Checkbox Checkbox có thành phần Model để quản lý trạng thái của nó làcheck hay uncheck, thành phần View để thể hiện nó với trạng thái tương ứng lênmàn hình, và thành phần Controller để xử lý những sự kiện khi có sự tương táccủa người sử dụng hoặc các đối tượng khác lên Checkbox Khi người sử dụngnhấn chuột vào Checkbox, thành phần Controller của Checkbox sẽ xử lý sự kiệnnày, yêu cầu thành phần Model thay đổi dữ liệu trạng thái Sau khi thay đổitrạng thái, thành phần Model phát thông điệp đến thành phần View vàController Thành phần View của Checkbox nhận được thông điệp sẽ cập nhậtlại thể hiện của Checkbox, phản ánh chính xác trạng thái Checkbox do Modellưu giữ Thành phần
Trang 24Controller nhận được thông điệp do Model gởi tới sẽ có những tương tác phảnhồi với người sử dụng nếu cần thiết.
2.4.1 Thành phần Controller
Controller có trách nhiệm chính là điều hướng các yêu cầu của người sửdụng Như vậy trên toàn ứng dụng của ta, tất cả các request đều sẽ phải đi tớicontroller Và tại đây, ứng với các tham số người sử dụng truyền mà ta đưa họđến một tác vụ nào đó trên ứng dụng
Tại các tác vụ này, chúng sẽ thông qua lớp model để làm việc và trả kếtquả trở về controller Cuối cùng controller sẽ đẩy dữ liệu thao tác tới view View
là thành phần cuối cùng mà người sử dụng nhận được khi họ giở request tới ứngdụng
Có thể hiểu controller, giống với kỹ thuật đa cấp với các tác vụ chạy ứngdụng phân cấp theo từng nhánh riêng biệt như: Module, action
2.4.2 Thành phần Model
Model là thành phần chủ yếu được sử dụng để thao tác xử lý dữ liệu.Trong các framework, Model vẫn thường sử dụng theo phương thức ActiveRecord Một trong những design pattern Chúng có tác dụng rút ngắn thời gianviết câu truy vấn cho người sử dụng Biến những câu truy vấn phức tạp trở nêngần gũi và thân thiện với người sử dụng thông qua các thư viện được định nghĩasẵn
Model thường sẽ là các phương thức có trách nhiệm xử lý các tác vụ như:select, insert, update, delete các record trong database Ứng với các lấy dữ liệu,model thường sử dụng mảng để gởi trả kết quả về Vì mảng có thể cho phépmodel lưu trữ nhiều thông tin hơn, nên thường các record khi bóc tách chúng sẽmang các dữ liệu của database một cách chi tiết
Khi sử dụng models, ta cũng cần tuân theo nguyên tắc chính của chúng làkhông xuất giá trị trực tiếp trong model Mà tất cả những dữ liệu ấy, phải đưavào mảng và trả về theo phương thức Và tiếp tục ở view ta sẽ sử dụng nó để lấy
dữ liệu ra
Trang 252.4.3 Thành Phần View
View là phần hiển thị thông tin tương phản khi gởi và nhận request Trướcđây, khi người lập trình chưa nghĩ tới view Họ thường thao tác xử lý dữ liệungay trực tiếp trên ứng dụng và đổ cả dữ liệu ngay trên file PHP đó Điều nàylàm cho ứng dụng trở nên cồng kềnh, và đặc biệt rất khó cho việc bảo trì nângcấp sau này Nhất là đối với designer, việc thay đổi giao diện của một websiteluôn làm cho họ cảm thấy đau đầu vì phải vọc thẳng vào core
Trước đây, để giải quyết tình huống này Người ta thường sử dụngtemplate để phân tách website thành 2 mảng riêng biệt Một là giao diện và một
là core Việc chỉnh sửa giao diện trở nên đơn giản hơn đối với họ so với cách viếtthập cẩm kia Tuy nhiên, các thư viện này thực chất sẽ làm cho ứng dụng củachúng ta trở nên chậm chạp hơn bao giờ hết Bởi chúng phải phiên dịch nhiều lầncác kịch bản
Chẳng hạn, để dễ thao tác, smarty sẽ dịch ngược các yêu cầu của bạn sangngôn ngữ của nó Sau đó chúng sẽ chuyển ngôn ngữ đó sang PHP và thao tác xử
lý trên nó Việc này sẽ làm ứng dụng chậm chạp, do cứ phải dịch qua, dịch lạimột kịch bản Trong khi, với sự kết hợp của PHP thuần, ứng dụng của bạn sẽnhanh và ổn định hơn nhiều Và view cũng là một phần trong việc nâng cấpnhững hạn chế ấy Chúng giúp giảm thiểu tối đa quá trình biên dịch nhiều lần Vàlàm cho ứng dụng trở nên mạnh mẽ và chuyên nghiệp hơn nhiều so với cách lậptrình thuần
Cách thức hoạt động của MVC
Trang 26Đây là một cách đơn giản để mô tả lại luồng sự kiện được xử lý trong MVC:
User tương tác với View, gửi yêu cầu đến Controller
Controller nhận và điều hướng chúng đến đúng phương thức xử lý
ở Model
Model nhận thông tin và thực thi các yêu cầu
Khi Model hoàn tất việc xử lý Controller sẽ nhận kết quả từ Model
và gửi về View để hiển thị lại kết quả vừa nhận cho người dùng
2.5 Ưu điểm và nhược điểm của MVC
Tạo thành mô hình chuẩn cho nhiều dự án, các chuyên gia sẽ tiếp cận –tìm hiểu những dự án đó một cách nhanh chóng và hiệu quả Nếu bạn nắm rõ môhình MVC của một dự án nào đó, thì khi tiếp cận với một dự án khác mà bạnchưa từng biết hoặc tiếp xúc, nhưng nó lại được xây dựng với mô hình MVC thì
sẽ không khó khăn gì mà cực kỳ dễ dàng Học một nhưng có thể hiểu và sử dụngđược mười
Giúp các chuyên gia lập trình, nhà quản lý, nhà đầu tư, PM… có thể hiểuđược dự án hoạt động ra sao hoặc giúp các lập trình viên dễ dàng quản lý – pháttriển dự án Nó không phải ngôn ngữ, nhưng khi họ cùng nhìn vào nó thì sẽ tựhiểu nó là gì, khi đó họ có thể trao đổi các yêu cầu và bàn bạc công việc
Đây là một mô hình chuẩn, nó tối ưu nhất hiện nay so với nhiều mô hìnhkhác và được sử dụng trong nhiều dự án và nhiều lĩnh vực, đặc biệt trong côngnghệ sản xuất ứng dụng – phần mềm Các lập trình viên sử dụng mô hình chuẩn
Trang 27Đây là mô hình đơn giản, xử lý những nghiệp vụ đơn giản, và dễ dàngtriển khai với các dự án nhỏ
2.6 Cấu trúc Web MVC
Trong thư mục admin chứa các thư mục mô hình MVC: Controller,Model, View và các thành phân khác được phân chia rõ rang
Trang 28CHƯƠNG 3: ỨNG DỤNG VÀO BÀI TOÁN THỰC TẾ
3.3 Lựa chọn công cụ ngôn ngữ thực hiện:
Để thực hiện xây dựng website này nhóm em chọn PHP và HTML
PHP rất thích hợp với việc viết cho web, bên cạnh đó khi sử dụng chúngcũng có thể nhúng được vào trang HTML một cách dễ dàng Hiện nay, PHPđang là một ngôn ngữ lập trình cho web được sử dụng và biết đến vô cùng phổbiến trên thế giới Lý do là bởi việc tối ưu hóa các ứng dụng của web, việc cótốc độ nhanh và nhỏ gọn Bên cạnh đó, các cú pháp của PHP cũng giống với là
C và Java nên các lập trình viên có thể học và xây dựng được một sản phẩm làtương đối nhanh so với các ngôn ngữ khác
3.4 Khảo sát xây dựng hệ thống
3.4.1 Đặt vấn đề
Ngày nay công nghệ thông tin đã có những bước tiến phát triển mạnh mẽ
về cả chiều sâu và chiều rộng Máy tính điện tử giờ đây không còn là thứ quýhiếm mà đang ngày càng trở thành một công cụ làm việc và giải trí của conngười Những năm gần đây, việc cập nhật các thông tin cũng như thực hiện cácgiao dịch qua mạng internet ngày càng trở nên phổ biến Và một loại hình kinh
Trang 29doanh này mang
Trang 30lại rất nhiều lợi ích cho người tiêu dùng cũng như nhà cung cấp Phần lớn kháchhàng có nhu cầu mua hàng thì phải đến các cửa hàng, siêu thị hay các trung tâmthương mại để lựa chọn những mặt hàng hợp với nhu cầu của mình Công việcnày tốn kém nhiều thời gian và chi phí đi lại cho người tiêu dùng, đôi khi kháchhàng còn mua phải hàng kém chất lượng Tất cả những bất cập đó sẽ được loại
bỏ với sự ra đời của website bán hàng qua mạng Khi khách hàng có nhu cầumua hàng, dù ở nhà hay công sở hay bất cứ nơi đâu có mạng internet, kháchhàng chỉ cần truy cập vào những trang web bán hàng qua mạng là có thể tìmkiếm được nhũng mặt hàng mà mình muốn mua, khách hàng có thể thực hiệncác thủ tục được hướng dẫn trên trang web là có thể mua được hàng, nhân viêncủa công ty đó sẽ giao hàng đến tận nơi cho khách hàng Ngoài những lợi ích màInternet mang lại cho người tiêu dùng nó còn giúp cho nhà cung cấp phát triểnrất nhiều trong việc mở rộng thị trường, giúp thương hiệu của công ty đượcnhiều người biết đến, từ đó giảm được rất nhiều chi phí quảng cáo cho sản phẩm
và rất thuận tiện trong việc quản lý sản phẩm và chăm sóc khách hàng theo đúngphương trâm đặt ra
3.4.2 Website cần xây dựng
Nhận thấy rằng, khi sử dụng khi sử dụng mysql trên xampp để thiết kế vàlưu trữ cơ sở dữ liệu thì khả năng lưu trữ dữ liệu của nó là rất lớn, nó còn có khảnăng phân tán dữ liệu cao Cơ sở dữ liệu lưu trữ được khối lượng lớn vì vậy khiứng dụng trên website, ứng dụng Website có số lượng người truy cập cùng mộtlúc rất lớn thì luôn đáp ứng được nhu cầu cần thiết Vì vậy chúng em đã sử dụngmysql trên xampp để thiết kế và lưu trữ CSDL cho website để đáp ứng nhu cầubài toán đặt ra
Môi trường triển khai : ứng dụng được triển khai trên môi trường web
Công cụ và ngôn ngữ sử dụng để thiết kế trang web:
- html, Css, Mvc
- bootstrap
- javascrip
Trang 31- mysql trên xampp
3.4.3 Website cần xây dựng
- Nhóm chức năng đăng ký, đăng nhập thành viên
- Nhóm chức năng xem thông tin : Xem thông tin sản phẩm, giỏ hàng, đơn hàng, thông tin cá nhân, xem thông tin đơn hang đã mua
- Nhóm chức năng quản lý thông tin: Quản lý thông tin cá nhân, quản lý thông tin khách hàng, quản lý danh mục sản phẩm
- Nhóm chức năng nhập, xuất hàng và cập nhật thông tin lên website
- Nhóm chức năng mua hàng, tiếp nhận và xử lý đơn hang,thanh toán
- Nhóm chức năng thống kê, báo cáo, biểu đồ
- Hiển thị danh sách các mặt hàng của cửa hàng để khách hàng xem, lựa chọn và mua
- Khách hàng xem các thông tin tin tức mới
- Sau khi khách hàng chọn và đặt hàng trực tiếp thì phải hiện lên
đơn hàng để khách hàng có thể nhập thông tin mua hàng và xem hoá đơn mua hang và tiến hành thanh toán
Trang 32Thứ hai : Dành cho người quản trị: Người làm chủ ứng dụng có quyền kiềm
soát mọi hoạt động của hệ thống Người này được cấp username và password đểđăng nhập hệ thống thực hiện chức năng của mình
- Chức năng cập nhật, sửa, xoá các mặt hàng, loại hàng, nhà sản xuất, tintức (phải kiểm soát được hệ thống) Nó đòi hỏi sự chính xác
- Tiếp nhận kiểm tra đơn đặt hàng của khách hàng Hiển thị đơn đặt hàng
- Thống kê theo ngày, khoảng thời gian Ngoài các chức năng trên thì trangWeb phải được thiết kế sao cho dễ hiểu, giao diện mang tính dễ dùng đẹpmắt và làm sao cho khách hàng thấy được thông tin cần tìm, cung cấp cácthông tin quảng cáo hấp dẫn, các tin tức khuyến mãi để thu hút kháchhàng Điều quan trọng là phải đảm bảo an toàn tuyệt đối thông tin kháchhàng trong quá trình đặt mua qua mạng
3.5 Phân tích và thiết kế cơ sở dữ liệu
3.5.1 Định nghĩa bài toán
Sau khi khảo sát hiện trạng của hệ thống và xây dựng hệ thống thì em đãđưa ra các tệp CSDL của “Xây dựng website bán giầy online”
Các tệp CSDL được lưu trong file shop_giay.sql trong file báo cáo
Qua quá trình khảo sát, phân tích thực trạng và xây dựng hướng phát triểncho hệ thống mới em đã xây dựng cấu trúc của hệ thống “Xây dựng website bángiầy online”
Hệ thống mua bán giầy là một Website cung cấp cho người sử dụng, nhàquản lý những chức năng cần thiết để tiến hành giao dịch, quản lý sự hoạt độngcũng như theo dõi tình hình phát triển cửa hàng của mình Đối với khách hàng,
hệ thống cho phép xem thông tin về sản phẩm của cửa hàng Sau khi đăng kýlàm thành viên, khách hàng có thể chọn sản phẩm trên website đưa vào giỏ hàng
và tiến hành giao dịch mua bán Sau khi chọn hàng xong khách hàng chuyển quaviệc thanh toán bằng một trong các hình thức thanh toán, đồng thời chọn địađiểm giao hàng Sau khi đã thực hiện xong, khách hàng nhấn xác nhận để hoàntất giao dịch
Trang 33Đối với các nhân viên, là người sẽ tiếp nhận đơn hàng do người quản lýchuyển đến, thực hiện việc giao hàng và xác nhận việc giao hàng đã hoàntất.
Đối với quản lý sẽ xử lý các thống kê của cửa hàng
3.5.2 Các nhóm chức năng của hệ thống
Chức năng của hệ thống có thể chia làm các nhóm chức năng chính như sau:
1 Nhóm chức năng đăng ký, đăng nhập thành viên
2 Nhóm chức năng xem thông tin, bao gồm xem thông tin giỏ hàng, xem thông tin đơn hàng, xem thông tin sản phẩm, xem thông tin cá nhân
3 Nhóm chức năng quản lý thông tin, bao gồm quản lý thông tin cá nhân, quản
lý danh sách thành viên, quản lý danh mục sản phẩm,
4 Nhóm chức năng mua hàng, tiếp nhận và xử lý đơn hàng
3.5.3 Xác định các tác nhân
Dựa vào mô tả bài toán, ta có thể xác định được các tác nhân chính của hệthống như sau:
KHÁCH HÀNG : là người giao dịch với hệ thống thông qua các đơn đặt hàng,
khách hàng có thể chọn các loại sản phẩm, chọn địa điểm giao hàng
Khách hàng có thể đăng ký làm thành viên của hệ thống
NGƯỜI QUẢN LÝ: là người điều hành, quản lý và theo dõi mọi hoạt động của
3.6 Xác định các USE CASE , xây dựng biểu đồ USE CASE chi tiết
3.6.1 Xác định các Use case
- Tác nhân “Khách hàng” có các UC sau:
Đăng ký làm thành viên
Tìm kiếm
Trang 34 Xem thông tin sản phẩm
Xem thông tin giỏ hàng
Chọn sản phẩm cần mua
Thêm, bớt sản phẩm trong giỏ hàng
Thực hiện việc mua hàng
Thanh toán
- Tác nhân “Người quản lý” có các UC sau:
Tiếp nhận đơn hàng
Giao cho nhân viên thực hiện
Quản lý danh sách thành viên
Quản lý danh mục sản phẩm
Quản lý banner
Quản lý các Admin
Quản lý các loại sản phẩm
- Tác nhân “Nhân viên” có các UC sau:
Thực hiện việc xử lý đơn hàng
Thống kê
Ngoài ra, các “Thành Viên” của hệ thống bao gồm các khách hàng đã đăng ký làm thành viên còn có các UC sau:
Đăng nhập
Xem thông tin cá nhân
Sửa đổi thông tin cá nhân