Tải bản đầy đủ (.docx) (61 trang)

xây dựng website quản lý phụ kiện điện tử tại cửa hàng khuyến mãi cần thơ trên nền tảng công nghệ codeigniter framework

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.14 MB, 61 trang )

Website quản lý phụ kiện điện tử tại cửa hàng Khuyến Mãi Cần Thơ

MỤC LỤC

DANH SÁCH HÌNH

1


Website quản lý phụ kiện điện tử tại cửa hàng Khuyến Mãi Cần Thơ

DANH MỤC BẢNG

DANH MỤC KÝ HIỆU VÀ VIẾT TẮT
Ký hiệu/ chữ viết tắt
CSS

DOM

HLML
MVC
PHP

Diễn giải
Viết tắt của Cascading Style Sheets, nó chỉ đơn
thuần là một dạng file text với phần tên mở rộng là .css
Là chữ viết tắt của Document Object Model ("Mô hình
Đối tượng Tài liệu"), là một giao diện lập trình ứng
dụng. Thường thường DOM, có dạng một cây cấu trúc
dữ liệu, được dùng để truy xuất các tài liệu dạng
HTML và XML.


Viết tắt của Hypertext Markup Language, là ngôn ngữ
được sử dụng rộng rãi nhất để viết các trang Web.
Viết tắt của Model – View – Controller. Là một kiến
trúc phần mềm hay mô hình thiết kế được sử dụng
trong kỹ thuật phần mềm.
Viết tắt của chữ "Hypertext Preprocessor", đây là một
ngôn ngữ lập trình được sử dụng để viết ở phía máy
chủ (lập trình web)
Actor dùng để chỉ người sử dụng hoặc đổi tượng bên
ngoài tương tác với hệ thống.
Use Case là chức năng mà các Actor sử dụng.
Quan hệ Association dùng để mô tả mối quan hệ giữa
Actor và Use Case.
Quan hệ Dependency dùng để mô tả mối quan hệ giữa
các Use Case.
Quan hệ extend được sử dụng khi một Use Case tạo ra
để bổ sung chức năng cho Use Case trước đó.
Quan hệ include thường được sử dụng để mô tả việc
phân nhỏ của một Use Case.

2


Website quản lý phụ kiện điện tử tại cửa hàng Khuyến Mãi Cần Thơ

Mô tả đối tượng trong hệ thống.
Thông điệp gởi đi.
Thông điệp trả về.

TÓM TẮT

Ngày nay, khi công nghệ thông tin và mạng Internet đang phát triển mạnh mẽ.
Điều này đã tạo điều kiện cho các cửa hàng có thể dễ dàng quảng bá cửa hàng của
mình đến với nhiều người, nhiều nơi trên thế giới thông qua các website, ứng
dụng...với mục đích tăng lợi nhuận và mang cửa hàng đến gần hơn với mọi người gần
xa. Và để thực hiện được nhu cầu này, các cửa hàng rất cần cho mình một website để
giới thiệu sản phẩm của cửa hàng đến với mọi người.
Cửa hàng “Khuyến mãi cần thơ” là một cửa hàng chuyên bán phụ kiện điện tử
với chất lượng tốt và giá cả hợp lý. Đồng thời, “Khuyến mãi cần thơ” còn là một cửa
hàng mới và đang cố gắng từng bước khẳng định tên tuổi của mình trên thị trường. Do
đó, cũng như tất cả các cửa hàng khác, “Khuyến mãi cần thơ” cũng rất cần có một
website để phục vụ khách hàng ở mọi nơi có thể biết đến cửa hàng, đặt hàng, xem các
sản phẩm khuyến mãi, tìm sản phẩm…. Mặt khác, website cũng giúp cho việc quản lý
nhân viên, quản lý sản phẩm và thống kê trở nên dễ dàng hơn.
Mục tiêu của đề tài “Xây dựng website quản lý phụ kiện điện tử tại cửa hàng
Khuyến Mãi Cần Thơ trên nền tảng công nghệ CodeIgniter” đáp ứng các yêu cầu
sau:
Khánh hàng mua hàng trực tuyến.
Khách hàng có thể xem lại đơn hàng, tìm kiếm và bình luận sản phẩm.
Cửa hàng quản lý thông tin sản phẩm, nhân viên, các nhà cung cấp...
Duyệt đơn hàng khi khách hàng đặt.
Quản lý phiếu nhập, phiếu xuất và thống kê doanh thu, chi phí, lợi
nhuận.
 Nội dung của đề tài gồm 3 chương:
-

Chương 1: Tổng quan về đề tài: Giới thiệu đề tài và lý do thực hiện đề tài, nêu lên
phạm vi và phương pháp thực hiện.
Chương 2: Cơ sở lý thuyết: Giới thiệu về PHP framework, mô hình MVC và
CodeIgniter framework và các ngôn ngữ hỗ trợ.


3


Website quản lý phụ kiện điện tử tại cửa hàng Khuyến Mãi Cần Thơ

Chương 3: Nội dung và kết quả nghiên cứu: Kết quả điều tra, thu nhập thông tin
và xây dựng các sơ đồ: Use case,ER , cơ sở dữ liệu quan hệ.... Trình bày kết quả
nghiên cứu, nêu lên những phần đạt được và những phần còn hạn chế.
TỪ KHÓA: Quản lý cửa hàng, CodeIgniter framework, web quản lý

ABSTRACT
Nowadays, as information technology and the Internet are growing strongly. This
has created conditions for the easy advertise your store with many people, many place
about the world through website, applications ...with the purpose to increase profits
and bring store closer to people near and far. And to make this demand, the stores need
a website to introduce the store's products to everyone.
Store “Khuyen Mai Can Tho” is a store specializing in the sale of electronic
Accessories with good quality and reasonable price. At the same time, "Khuyến mãi
Cần Thơ" is also a new store and are trying to gradually asserted its name on the
market. Therefore, as well as all the other stores, "Khuyến mãi cần thơ" is also very
necessary to have a website to serve customers everywhere can learn to shop, order,
view the product promotion, search product…. On the other hand, the website also
helps to staff management, product management and statistics becomes much easier.
The objective of the subject “Construction of website management electronic
accessories at the store Khuyen Mai Can Tho on technology platforms
CodeIgniter” meets the following requirements:
Customers buy online.
Customers can review orders, search and comment on products.
Store product information management, employees, suppliers ...
Browse orders when customers order.

Manage input bill, bill and revenue statistics, costs and profit.
 The content of the subject includes three chapters:
-

Chapter 1: Overview of topics: Introduction to the subject and the reason to
implement the project, pointed out the scope and methods of implementation
Chapter 2: Theoretical Foundations: Introduction to PHP framework, MVC
model and CodeIgniter framework and language support.
Chapter 3: Content and results: The survey results, collect information and build
diagrams: Use case, ER, relational database .... Presenting research findings,
outlined up of the achievement and the parts are limited.
KEYWORDS: Store management, CodeIgniter framework, web management

4


Website quản lý phụ kiện điện tử tại cửa hàng Khuyến Mãi Cần Thơ

5


Chương 1: Tổng quan

CHƯƠNG 1: TỔNG QUAN
1.1. ĐẶT VẤN ĐỀ
Trong những năm gần đây, công nghệ thông tin và mạng Internet đã đang phát
triển với tốc độ nhanh chóng, góp phần quan trọng trong công cuộc xây dựng và phát
triển xã hội. Với sự phát triển mạnh mẽ và không ngừng đó thì công nghệ thông tin và
mạng Internet được áp dụng và đã đem lại hiệu quả tích cực trong các lĩnh vực: kinh
tế, chính trị, an ninh quốc phòng,thương mại điện tử... Và máy tính cũng dần trở nên

gần gũi, phổ biến với mọi người, việc mọi người sử dụng máy tính lên mạng để đặt và
mua sản phẩm đang trở nên rất phổ biến.
Vì vậy, các cửa hàng kinh doanh nói chung và cửa hàng phụ kiện điện tử nói
riêng, việc áp dụng một website để khách hàng có thể lựa chọn sản phẩm, đặt hàng là
vô cần cần thiết. Vừa để quảng bá cửa hàng đến với mọi người bất kể gần xa nhờ vào
mạng internet.
Ngoài ra website giúp cho cửa hàng quản lý nhân viên, sản phẩm, khuyến mãi...
Còn giúp cho cửa hàng thống kê doanh thu, lợi nhuận và gửi mail quảng cáo đến với
khách hàng.
Nhưng kèm theo đó là vấn đề bảo mật, các cửa hàng lo vì sợ bị mất những thông
tin quan trọng nên cần lựa chọn ngôn ngữ và công nghệ phù hợp.
Do đó, tôi chọn “Xây dựng website quản lý phụ kiện điện tử tại cửa hàng
Khuyến Mãi Cần Thơ trên nền tảng công nghệ CodeIgniter” làm đề tài để giải
quyết các vấn đề trên.
1.2. LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ
Website quản lý nói chung và quản lý phụ kiện điện tử nói riêng đã không còn là
một vấn đề mới nhưng chỉ được áp dụng ở một số cửa hàng lớn. Như ta thường thấy
các website như: thegioididong,tiki,lazada... Nhưng chi phí xây dựng khá cao và còn
khá mới đối với các cửa hàng nhỏ. Vì vậy, ở đây hệ thống quản lý ở một mức độ chưa
cao, chỉ tập trung ở chức năng quan trọng và cần thiết cho một cửa hàng phụ kiện điện
tử.
“Xây dựng website quản lý phụ kiện điện tử tại cửa hàng Khuyến Mãi Cần
Thơ trên nền tảng công nghệ CodeIgniter” sẽ đáp ứng những nhu cầu cần thiết để
cửa hàng có thể quản lý được sản phẩm và các chức năng cần thiết, còn khách hàng
có thể xem, lựa chọn sản phẩm và đặt hàng được. Chương trình cần được nghiên cứu
và có thời gian để xây dựng hoàn thiện hơn.

CBHD: Nguyễn Minh Trung

6


SVTH: Hồ Văn Cường


Chương 1: Tổng quan

1.3. KHẢO SÁT HIỆN TRẠNG
Cửa hàng “Khuyến Mãi Cần Thơ” là một cửa hàng chuyên bán phụ kiện điện
tử với chất lượng cao, nhiều mẫu mã và giá thành hợp lý. Hiện tại cửa hàng còn sử
dụng hình thức buôn bán truyền thống, số lượng khách hàng sẽ chỉ xung quang không
được nhiều người biết đến, việc giới thiệu sản phẩm đến nhiều nơi gặp rất nhiều khó
khăn, người mua thì cần phải đến trực tiếp cửa hàng để xem và khó khăn trong việc
lựa chọn sản phẩm. Việc quản lý cửa hàng cũng gặp rất nhiều khó khăn khi nhập xuất
hàng các phiếu chỉ ghi trên giấy rất dễ thất lạc, khó khăn trong việc kiểm tra số lượng
sản phẩm để nhập hàng phục vụ cho khách và các phiếu nhập dễ thất lạc dẫn đến khó
khăn trong việc thống kê.
Qua việc khảo sát thực tế trên, nếu cửa hàng cứ dùng phương pháp truyền thống
để mua bán với những khuyết điểm đã nêu trên, thì kết quả thu lại sẽ không được cao
và rất khó để phát triển. Do vậy, việc xây dựng một website quản lý bán hàng nói
chung và website quản lý phụ kiện điện tử tại cửa hàng “Khuyến Mãi Cần Thơ” nói
riêng là một việc hết sức cấp bách và cần thiết để nhằm mục đích khắc phục những
khuyết điểm đã nêu trên để phục vụ khách hàng được tốt hơn và việc quản lý một cửa
hàng trở nên đơn giản. Và với phương châm “Vừa lòng khách đến, vui lòng khách
đi” thì cửa hàng sẽ đem lại những gì tốt nhất để phục vụ cho quý khách hàng.
1.4. PHẠM VI ĐỀ TÀI
Xây dựng website quản lý phụ kiện điện tử tại cửa hàng “Khuyến Mãi Cần Thơ” đáp
ứng được các yêu cầu sau:
 Đối với trang người dùng
- Tạo tài khoản.
- Đăng nhập.

- Cập nhật thông tin cá nhân và mật khẩu.
- Quản lý lịch sử mua hàng và chi tiết mỗi đơn hàng.
- Tìm kiếm sản phẩm.
- Xem sản phẩm khuyến mãi, mới, bán chạy...
- Đặt hàng sản phẩm cần mua.
- Xem tin tức liên quan đến công nghệ.
 Đối với trang quản trị
- Đăng nhập.
- Phân quyền theo chức vụ của nhân viên.
- Cập nhật thông tin sản phẩm, nhân viên, nhà cung cấp, thể loại...
- Thêm các sản phẩm khuyến mãi, sửa hoặc xóa các sản phẩm đã và đang khuyến

mãi.

CBHD: Nguyễn Minh Trung

7

SVTH: Hồ Văn Cường


Chương 1: Tổng quan
Cập nhật tin tức, banner và các trang phụ.
Xem các bình luận của khách hàng và có thể xóa nếu nội dung không tốt.
Nhập hàng từ các nhà cung cấp.
Duyệt các đơn hàng của khách hàng.
Thống kê doanh thu, chi phí nhập hàng và lợi nhuận theo tháng, năm.
Gửi mail cho khách hàng và nhân viên trong cửa hàng.
Các tiện ích tìm kiếm trên từng trang.
 Một số lưu ý:

- Sản phẩm khi mua số lượng phải từ một trở lên.
- Số lượng sản phẩm mua phải nhỏ hơn hoặc bằng số lượng sản phẩm đang có
trong kho.
- Giá sản phẩm có thể thay đổi theo từng sự kiện khuyến mãi.
- Thời gian bảo hành được tính từ lúc lập phiếu bán cho khách hàng.
-

1.5. PHƯƠNG PHÁP THỰC HIỆN
 Lý thuyết :
- Nắm vững kỹ thuật phân tích thiết kế hệ thống.
- Nắm vững các phương pháp tổ chức, phân tích và thiết kế cơ sở dữ liệu..
- Nắm vững ngôn ngữ PHP, MySQL, HTML, CSS...
- Tìm hiểu thêm về Bootstrap framework.
- Tìm hiểu nguyên lý hoạt động mô hình MVC.
- Tìm hiểu một số website có sẵn trên mạng.
- Nghiên cứu CodeIgniter framework để áp dụng chương trình.
- Tìm hiểu kỹ về quá trình hoạt động của cửa hàng.
 Phần mềm sử dụng :
- Sử dụng Power Designer để thiết kế các mô hình ứng dụng.
- Microsoft Office Word để soạn thảo, viết báo cáo.
- Phần mềm Xampp bao gồm Apache, MySQL, PHP, phpMyAdmin.
- Dùng phần mềm Sublime text 3 để viết chương trình.
- Dùng công nghệ CodeIgniter framework để viết chương trình.
- Dùng trình duyệt như: Google Chrome, Cốc cốc... để chạy chương trình.
 Cài đặt và kiểm thử
- Chạy trên website trên localhost.
- Kiểm lỗi và giải quyết lỗi cùng các vấn đề phát sinh.

CBHD: Nguyễn Minh Trung


8

SVTH: Hồ Văn Cường


Chương 2: Cơ sở lý thuyết

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1. HTML
HTML là chữ viết tắt của HyperText Markup Language, có nghĩa là ngôn ngữ
đánh dấu siêu văn bản. Nó dùng để định dạng bố cục, các thuộc tính liên quan đến
cách hiển thị của một đoạn text và được hiển thị trên một chương trình đặc biệc ta gọi
là Browser. Hiện nay có khá nhiều Browser như Firefox, Chrome, Cốc Cốc...
Tất cả Browser đều có điểm chung là giúp người dùng thao tác với website và nó
đều có khả năng biên dịch những đoạn mã HTML, CSS và Javascript.
Một tài liệu HTML được hình thành bởi các phần tử HTML (HTML Elements)
được quy định bằng các cặp thẻ (tag), các cặp thẻ này được bao bọc bởi một dấu ngoặc
ngọn (ví dụ <html>) và thường là sẽ được khai báo thành một cặp, bao gồm thẻ mở và
thẻ đóng (ví dụ <strong> </strong>). Các văn bản muốn được đánh dấu bằng HTML
sẽ được khai báo bên trong cặp thẻ (ví dụ <strong>Đây là chữ in đậm</strong>).
Nhưng một số thẻ đặc biệt lại không có thẻ đóng và dữ liệu được khai báo sẽ nằm
trong các thuộc tính (ví dụ như thẻ <img>).
Một tập tin HTML sẽ bao gồm các phần tử HTML và được lưu lại dưới đuôi mở
rộng là .html hoặc .htm.
2.2. 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).
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm
nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl...
MySQL được phát triển, được công bố, được hỗ trợ bởi MySQL AB, là một công
ty của Thụy Điển

CBHD: Nguyễn Minh Trung

9

SVTH: Hồ Văn Cường


Chương 2: Cơ sở lý thuyết

2.3. JAVASCRIPT
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, theo phiên bản hiện hành, là một ngôn ngữ lập trình kịch bản dựa trên
đối tượng được phát triển từ các ý niệm nguyên mẫu. Ngôn ngữ này được dùng rộng
rãi cho các trang web, nhưng cũng được dùng để tạo khả năng viết script sử dụng các
đối tượng nằm sẵn trong các ứng dụng. Nó vốn được phát triển bởi Brendan
Eich tại Hãng truyền thông Netscape với cái tên đầu tiên Mocha, rồi sau đó đổi tên

thành LiveScript, và cuối cùng thành JavaScript. Giống Java, JavaScript có cú
pháp tương tự C, nhưng nó gần với Self hơn Java. .js là phần mở rộng thường được
dùng cho tập tin mã nguồn JavaScript.
Phiên bản mới nhất của JavaScript là phiên bản 1.5, tương ứng với ECMA-262
bản 3. ECMAScript là phiên bản chuẩn hóa của JavaScript. Trình duyệt Mozilla phiên
bản 1.8 beta 1 có hỗ trợ không đầy đủ cho E4X - phần mở rộng cho JavaScript hỗ trợ
làm việc với XML, được chuẩn hóa trong ECMA-357.
2.4. AJAX
AJAX (tiếng Anh: "Asynchronous JavaScript and XML" - nghĩa là "JavaScript
và XML không đồng bộ") là một nhóm các công nghệ phát triển web được sử dụng để
tạo các ứng dụng web động hay các ứng dụng giàu tính Internet (rich Internet
application). Từ Ajax được ông Jesse James Garrett đưa ra và dùng lần đầu tiên vào
tháng 2 năm 2005 để chỉ kỹ thuật này, mặc dù các hỗ trợ cho Ajax đã có trên các
chương trình duyệt từ 10 năm trước.
Ajax là một kỹ thuật phát triển web có tính tương tác cao bằng cách kết hợp các ngôn
ngữ:
-

-

HTML (hoặc XHTML) với CSS trong việc hiển thị thông tin.
Mô hình DOM (Document Object Model), được thực hiện thông
qua JavaScript, nhằm hiển thị thông tin động và tương tác với những thông tin
được hiển thị.
Đối tượng XMLHttpRequest để trao đổi dữ liệu một cách không đồng bộ với
máy chủ web.
XML thường là định dạng cho dữ liệu truyền, mặc dầu bất cứ định dạng nào
cũng có thể dùng, bao gồm HTML định dạng trước, văn bản thuần (plain text),
JSON và ngay cả EBML.


CBHD: Nguyễn Minh Trung

10

SVTH: Hồ Văn Cường


Chương 2: Cơ sở lý thuyết

2.5. JQUERY
jQuery là một thư viện kiểu mới của JavaScript, được tạo bởi John Resig vào
năm 2006 với một phương châm tuyệt vời: Write less, do more - Viết ít hơn, làm nhiều
hơn. jQuery làm đơn giản hóa việc truyền tải HTML, xử lý sự kiện, tạo hiệu ứng động
và tương tác Ajax.
Dưới đây liệt kê một số tính năng quan trọng được hỗ trợ bởi jQuery:
-

-

-

Thao tác DOM: giúp dễ dàng lựa chọn các phần tử DOM để duyệt một cách dễ
dàng như sử dụng CSS, và chỉnh sửa nội dung của chúng bởi sử dụng phương
tiện Selector mã nguồn mở, mà được gọi là Sizzle.
Xử lý sự kiện: giúp tương tác với người dùng tốt hơn bằng việc xử lý các sự
kiện đa dạng mà không làm cho HTML code rối tung lên với các Event
Handler.
Hỗ trợ AJAX: giúp bạn rất nhiều để phát triển một site giàu tính năng và phản
hồi tốt bởi sử dụng công nghệ AJAX.
Hiệu ứng: đi kèm với rất nhiều các hiệu ứng đa dạng và đẹp mắt mà bạn có thể

sử dụng trong các Website của mình.
Gọn nhẹ:là thư viện gọn nhẹ, nó chỉ có kích cỡ khoảng 19KB.
Được hỗ trợ hầu hết bởi các trình duyệt hiện đại và làm việc tốt trên IE 6.0+, FF
2.0+, Safari 3.0+, Chrome và Opera 9.0+
Cập nhật và hỗ trợ các công nghệ mới nhất CSS3 Selector và cú pháp XPath.

2.6. PHP FRAMEWORK
Framework dịch theo tiếng anh có nghĩa là khuôn khổ, còn xét theo mặt lập trình
PHP thì Framework là một bộ thư viện được tổ chức theo một mô hình sẵn và tích hợp
nhiều thư viện sẵn giúp lập trình viên tiết kiệm thời gian, đồng thời giải quyết vấn đề
tạo ra chuẩn chung cho các lập trình viên khi làm việc nhóm (team work). Hiện nay có
khá nhiều Framework được xây dựng từ PHP như CodeIgniter , CakePHP, Yii,
Phalcon, Zend. Mỗi Framework có những điểm mạnh, yếu khác nhau và tùy vào sở
thích, nhu cầu của công ty mà ta chọn để làm dự án.
Xét về mặt lập trình PHP thì trong một website thì thông thường sẽ có những
chức năng như sau: xử lý menu, upload file, rewrite URL, tạo thumb, security...
Tất cả các module đã liệt kê ở trên hầu hết đã được tích hợp sẵn trong các
Framework, vì vậy việc xây dựng website trên nền tảng Framework là rất cần thiết và
khuyến khích.

CBHD: Nguyễn Minh Trung

11

SVTH: Hồ Văn Cường


Chương 2: Cơ sở lý thuyết

2.7. MÔ HÌNH MVC

2.7.1. Giới thiệu mô hình MVC
MVC là chữ viết tắt của Model - View - Controller, đây là một mô hình kiến
phần mềm được tạo ra với mục đích quản lý và xây dựng dự án phần mềm có hệ thống
hơn. Mô hình này được dùng khá rộng rãi và đặc biệt là trong các ngôn ngữ lập trình
web. Trong PHP hiện tại có khá nhiều Framework và tất cả đều xây dựng từ mô hình
MVC, từ đó bạn có thể thấy sự quan trọng của nó như thế nào rồi đấy.

Hình 2.1. Mô hình MVC
2.7.2. Các thành phần của mô hình MVC


Model (Tầng dữ liệu): được giao nhiệm vụ cung cấp dữ liệu cho cơ sở dữ liệu
và lưu dữ liệu vào các kho chứa dữ liệu. Tất cả các nghiệp vụ logic được thực thi ở
Model. Dữ liệu vào từ người dùng sẽ thông qua View đến Controller và được kiểm
tra ở Model trước khi lưu vào cơ sở dữ liệu. Việc truy xuất, xác nhận, và lưu dữ
liệu là một phần của Model.



View (Tâng giao diện): hiển thị các thông tin cho người dùng của ứng dụng và
được giao nhiệm vụ cho việc nhận các dữ liệu vào từ người dùng, gửi đi các yêu
cầu đến controller, sau đó là nhận lại các phản hồi từ controller và hiển thị kết
quả cho người dùng.

CBHD: Nguyễn Minh Trung

12

SVTH: Hồ Văn Cường



Chương 2: Cơ sở lý thuyết



Controller (Tầng điều khiển): đảm nhiệm việc cập nhật bộ phận hiển thị
(View) khi cần thiết. Bộ điều khiển này nhận dữ liệu nhập từ người dùng, truy xuất
các thông tin cần thiết từ mô hình trong (Model), và cập nhật thích hợp phần hiển
thị (View). Giao diện với người sử dụng phần mềm được thiết lập nhờ sự tương tác
qua lại giữa View và Controller: hai bộ phận này chính là phần trình bày bên ngoài
của đối tượng biểu diễn bên trong.

2.7.3. Quy trình xử lý dữ liệu

Hình 2.2.Sơ đồ hoạt động của MVC
Nhìn vào sơ đồ trên, ta thấy có mũi tên nét liền và những mũi tên nét đứt. Những
mũi tên nét đứt được hình thành trên quan điểm của người dùng mà không phải là của
nhà thiết kế. Do đó chúng ta chỉ quan tâm đến những mũi tên còn lại.
Đâ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, bằng cách click vào button, user gửi yêu cầu đi.
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ý, View sẽ nhận kết quả từ Model và hiển thị lại cho
người dùng.


Ưu điểm và nhược điểm của MVC


Ưu điểm:

Thể hiện tính chuyên nghiệp trong lập trình, phân tích thiết kế. Do được chia thành
các thành phần độc lập nên giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp,
bảo trì..

CBHD: Nguyễn Minh Trung

13

SVTH: Hồ Văn Cường


Chương 2: Cơ sở lý thuyết



Nhược điểm:

Đối với dự án nhỏ việc áp dụng mô hình MC gây cồng kềnh, tốn thời gian trong
quá trình phát triển. Tốn thời gian trung chuyển dữ liệu của các thành phần.

2.8. CODEIGNITER FRAMWORK
2.8.1. Giới thiệu về CodeIgniter
CodeIgniter là một framework viết bằng ngôn ngữ lập trình
PHP dựa trên nền tảng MVC ( Model - View - Contrller ) cho
phép tạo các trang web của bạn để có kịch bản tối thiểu kể từ khi

trình bày và tách biệt với kịch bản PHP, nói đơn giản nếu bạn
Code thuần theo PHP bạn phải tự tổ chức cấu trúc giữa giao
diện, xử lý code và cơ sở dữ liệu việc làm này không khả dụng
nếu dự án của bạn là một tập hợp các Module cần có nhiều
người xử lý.
2.8.2. Quá trình phát triển của CodeIgniter
CodeIgniter là một nền tảng ứng dụng web nguồn mở được viết bằng ngôn ngữ
PHP bởi Rick Ellis (CEO của EllisLab, Inc). Phiên bản đầu tiên được phát hành ngày
28.02.2006, phiên bản hiện tại: 1.7.2 (phát hành ngày 11.09.2009). Ý tưởng xây dựng
CodeIgniter được dựa trên Ruby on Rails, một nền tảng ứng dụng web được viết bằng
ngôn ngữ Ruby. Hiện tại, CodeIgniter đang được phát triển bởi ExpressionEngine
Development Team thuộc EllisLab, Inc.
Sau nhiều năm không ngừng cải thiện và phát triển, CodeIgniter đã ra mắt bản
mới nhất 3.1.0 vào ngày 26-7-2016 với nhiều cải thiện so với các phiên bản trước. Bài
báo cáo này tìm hiểu về phiên bản 3.1.0.

CBHD: Nguyễn Minh Trung

14

SVTH: Hồ Văn Cường


Chương 2: Cơ sở lý thuyết

2.8.3. So sánh các framework

Hình 2.3. Biểu đồ so sánh framework php
 Nhìn vào biểu đồ trên ta thấy:


CodeIgniter không phải là framework đang giữ vị trí đầu. Nhưng luôn giữ vị trí
cao trong bảng xếp hạng các framework phổ biến dù đã ra đời tương đối lâu.
2.8.4. Lý do chọn CodeIgniter
Sau đây là những lý do để tôi chọn CodeIgniter để viết chương trình:
 Được thiết kế theo mô hình MVC: Mô hình MVC giúp tách thành phần hiển thị









giao diện và xử lý của một phần mềm thành những thành phần độc lập, từ đó
giúp cho việc thiết kế, xử lý và bảo trì mã nguồn dễ dàng, đồng thời tăng khả năng
mở rộng của phần mềm. CodeIgniter vận dụng mô hình này trong thiết kế,
giúp tách biệt các tập tin giao diện với các tập tin xử lý dữ liệu, nâng cao khả năng
quản lý và dễ bảo trì.
Nhỏ gọn: Gói chỉ 404KH (không bao gồm phần User Guide). So với các PHP
framework khác như CakePHP (1.3MB), Symfony (5.08MB) hay Zend Framework
(5.66Mb)...Kích thước của CodeIgniter giúp giảm thiểu đáng kể không gian lưu
trữ.
Tốc độ nhanh: CodeIgniter được đánh giá là một PHP framework có tốc độ
nhanh nhất hiện nay. Bằng cơ chế lưu nội dung vào bộ đệm (cache), kiểm tra bộ
đệm trước khi tiến hành thực hiện yêu cầu, CodeIgniter giảm số lần truy cập và xử
lý dữ liệu, từ đó tối ưu hóa tốc độ tải trang.
Miễn phí: CodeIgniter được phát hành dưới giấy phép Apache/BSD mở rộng, cho
phép người dùng tự do thay đổi, phát triển và phân phối mã nguồn.
Hỗ trợ Search Engine Optimization: Cấu trúc URL của CodeIgniter rất thân

thiện với các robot tìm kiếm.
Hệ thống thư viện phong phú: CodeIgniter cung cấp các thư viện phục vụ cho
những tác vụ thường gặp nhất trong lập trình web, chẳng hạn như truy cập cơ sở dữ

CBHD: Nguyễn Minh Trung

15

SVTH: Hồ Văn Cường


Chương 2: Cơ sở lý thuyết







liệu, gửi email, kiểm tra dữ liệu, quản lý session, xử lý ảnh…đến những chức năng
nâng cao như XML-RPC, mã hóa, bảo mật…
Bảo mật hệ thống: Cơ chế kiểm tra dữ liệu chặt chẽ, ngăn ngừa XSS và SQL
Injection của CodeIgniter giúp giảm thiểu các nguy cơ bảo mật cho hệ thống.
Tính tiếp cận và tài liệu dễ học, dễ mở rộng.
Bộ core thư viện của CodeIgniter ít thay đổi.
Dễ tích hợp thêm các thư viện từ framework khác.
CodeIgniter Framework có vòng đời ổn định hơn so với các PHP Framework
khác.

2.8.5. Những hạn chế của CodeIgniter

Kèm theo những ưu điểm của CodeIgniter cũng còn nhiều hạn chế cần được cải thiện
như:
 Chưa hỗ trợ Object-Relational Mapping: Object Relational Mapping (ORM) là một

kỹ thuật lập trình, trong đó các bảng của cơ sở dữ liệu được ánh xạ thành các đối
tượng trong chương trình. Kỹ thuật này giúp cho việc thực hiện các thao tác trong
cơ sở dữ liệu (Create Read Update Delete – CRUD) dễ dàng, mã nguồn ngắn
gọn hơn. Hiện tại, CodeIgniter vẫn chưa hỗ trợ ORM.
 Chưa hổ trợ AJAX: AJAX (Asynchronous JavaScript and XML) [26] đã trở thành
một phần không thể thiếu trong bất kỳ ứng dụng Web 2.0 nào. AJAX giúp nâng cao
tính tương tác giữa người dùng và hệ thống, giúp cho người dùng có cảm giác như
đang sử dụng ứng dụng desktop vì các thao tác đều diễn ra “tức thời”. Hiện
tại, CodeIgniter vẫn chưa có thư viện dựng sẵn nào để hỗ trợ xây dựng ứng dụng
AJAX. Lập trình viên phải sử dụng các thư viện bên ngoài, như jQuery,
Script.aculo.us, Prototype hay Mootools…
 Chưa hỗ trợ một số module thông dụng: So sánh với các framework khác,
CodeIgniter không có các module thực thi một số tác vụ thường gặp trong quá trình
xây dựng ứng dụng web như chứng thực người dùng (User Authorization), trình phân
tích RSS (RSS Parser) hay trình xử lú PDF...
 Chưa hỗ trợ Event-Driven Programming: Event-Driven Programming (EDP) là
một nguyên lý lập trình, trong đó các luồng xử lý của hệ thống sẽ dựa vào các sự kiện,
chẳng hạn như click chuột, gõ bàn phím không phải là một khuyết điểm to lớn
của CodeIgniter vì hiện tại, chỉ có một số ít framework hỗ trợ EDP, bao gồm
Prado, QPHP và Yii.

CBHD: Nguyễn Minh Trung

16

SVTH: Hồ Văn Cường



Chương 2: Cơ sở lý thuyết

2.8.6. Hướng dẫn cài đặt
Có 4 bước để cài đặt CodeIgniter :
1. Download bộ nguồn CodeIgniter tại website http://CodeIgniter .com/, phiên

bản hiện tại: 3.1.0.
2. Mở tập tin application/config/config.php bằng một chương trình soạn thảo, thay
đổi giá trị $config['base_url'] . Đây là đường dẫn tuyệt đối đến thư mục
CodeIgniter trên server.
3. Nếu ứng dụng có tương tác với cơ sở dữ liệu, thiết lập các giá trị cần thiết trong
tập tin application/config/database.php.
4. Upload tất cả thư mục và tập tin của CodeIgniter lên server.

2.8.7. Luồng thực thi trong CodeIgniter

Hình 2.4. Luồng thực thi dữ liệu trong CodeIgniter
Quan sát hình ảnh trên để hình dung luồng thực thi của CodeIgniter:
-

Tập tin index.php: đóng vai trò làm controller đầu vào, thiết lập các tài nguyên cần
thiết cho hệ thống.
Routing: Quá trình điều hướng giúp xác định các yêu cầu và hướng xử lý đối với
chúng.
Caching: Nếu dữ liệu được yêu cầu đã được lưu trong bộ đệm, CodeIgniter sẽ trả dữ
liệu trong bộ đệm về phía client. Quá trình xử lý kết thúc.
Security: Dữ liệu trước khi được chuyển đến các Controller sẽ được lọc để phòng
chống XXS hoặc SQL Injection.

Application Controller: Controller xử lý dữ liệu nhận được bằng cách gọi đến các
Models, Libraries, Helpers, Plugins…có liên quan.

CBHD: Nguyễn Minh Trung

17

SVTH: Hồ Văn Cường


Chương 2: Cơ sở lý thuyết

-

View: Dữ liệu được chuyển qua View để hiển thị cho người dùng. Nếu chức năng
caching được bật, dữ liệu sẽ được lưu trong cache cho những lần yêu cầu tiếp theo.
Trong thực tế, đôi khi ta cần xen vào các bước trong sơ đồ trên. Chẳng hạn, trước khi
một controller được gọi, ta có thể muốn lưu log xuống tập tin trong hệ thống.
CodeIgniter sử dụng cơ chế hook cho phép ta thực hiện việc này. Để kích hoạt hook,
ta cần thay đổi giá trị của biến $config[‘enable_hooks’] trong tập tin
application/config/config.php.$config[‘enable_hooks’]=TRUE;

2.8.8. Điều hướng URL trên CodeIgniter bằng routes file
Bình thường thì ta luôn có đối chiếu 1-1 giữa cấu trúc Url với class/method trong
controller tương ứng. Các phân đoạn của Url thường có mẫu như sau:
example.com/class/function/id
Nhưng đôi khi chúng ta lại muốn thay đổi mối quan hệ này theo kiểu riêng của
mình. Ví dụ như :
example.com/product/1/
example.com/product/2/

Ở trên chúng ta thấy, phân đoạn thứ 2 của Url đáng nhẽ phải là tên của hàm trong
controller product thì được thay bằng Id của sản phẩm.
Để thay đổi được cấu trúc Url như trên, CodeIgniter cho phép chúng ta điều
hướng bằng cách định nghĩa lại trong file routes.php.
Trong file routes.php chúng ta sẽ tìm thấy một mảng tên là $routes, mảng này
cho phép chúng ta xác định từng thành phần điều hướng mà ta muốn.
 CodeIgniter đưa ra 2 cách để định nghĩa Url là dùng thẻ tự do hoặc biểu thức

chính quy.
1. Sử dụng kiểu Thẻ Tự Do.
Một Url theo kiểu Thẻ Tự Do có cấu trúc như sau:
$route['product/:num'] = "catalog/product_lookup_1";
$route['product/:any'] = "catalog/product_lookup_2";
Trong một đường dẫn, khóa của mảng route (product/:num hoặc product/:any)
chứa URL tương ứng.

CBHD: Nguyễn Minh Trung

18

SVTH: Hồ Văn Cường


Chương 2: Cơ sở lý thuyết

Còn giá trị của mảng (catalog/product_lookup_1) là đích sẽ được điều hướng tới
với catalog là tên class và product_lookup_1 là tên method.
(:num) sẽ khớp với một phân đoạn chỉ chứa con số
(:any) sẽ khớp với một phân đoạn chứa mọi ký tự
Một vài ví dụ cho kiểu Thẻ Tự Do:

$route['journals'] = "blogs";
Một Url chứa từ journals trong phân đoạn đầu tiên sẽ khớp với blogs class.
$route['blog/joe'] = "blogs/users/34";
Một Url chứa phân đoạn blog/joe sẽ khớp với blogs class và users method. ID sẽ
được thiết lập giá trị là 34
$route['product/(:any)'] = "catalog/product_lookup";
Một Url với phân đoạn đầu tiên là product, và phân đoạn thứ hai là bất cứ ký tự gì
sẽ khớp với catalog class và product_lookup method.
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";
Một Url với phân đoạn đầu tiên là product, và phân đoạn thứ hai là một số sẽ khớp
với catalog class và product_lookup_by_id method với tham số được truyền vào hàm
chính là số ở phân đoạn thứ 2 của Url.
Chú ý: Không sử dụng ký tự "/" hay "\" trong Url.
2. Kiểu Biểu Thức Chính Quy.

Một ví dụ cụ thể về biểu thức chính quy:
$route['products/([a-z]+)/(\d+)'] = "$1/id_$2";
Url ở trên sẽ tương ứng với products/shirts/123 sẽ gọi đến shirts class
và id_123 method.


Ngoài ra còn thêm hai đường dẫn duy trì đó là:
$route['default_controller'] = 'welcome';

Đường dẫn này sẽ chỉ định class nào sẽ được tải nếu trên Url không có dữ liệu
nào. Trường hợp này là khi người dùng gõ đường dẫn gốc của hệ thống.
Ở ví dụ trên welcome class sẽ được tải. Chúng ta cần thiết phải có đường dẫn mặc
định này cho hệ thống.
$route['404_override'] = '';
Đường dẫn này sẽ chỉ định class nào sẽ được tải lên nếu controller được yêu cầu

không tìm thấy trên hệ thống. Nó sẽ ghi đè lên trang hiện thị lỗi mặc định.

CBHD: Nguyễn Minh Trung

19

SVTH: Hồ Văn Cường


Chương 2: Cơ sở lý thuyết

Nó sẽ không ảnh hưởng tới hàm show_404(), hàm này
file error_404.php mặc định trong thư mục application/errors/error_404.php.

sẽ

tải

Chú ý: Các đường dẫn Duy Trì này phải được đặt trên tất các các đường dẫn Thẻ Tự
Do hoặc Biểu Thức Chính Quy khác.

2.8.9. Cấu trúc của CodeIgniter

Hình 2.5. Cấu trúc của CodeIgniter

CBHD: Nguyễn Minh Trung

20

SVTH: Hồ Văn Cường



Chương 2: Cơ sở lý thuyết

CBHD: Nguyễn Minh Trung

21

SVTH: Hồ Văn Cường


Chương 3: Nội dung và kết quả nghiên cứu

CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU
3.1. MÔ TẢ HỆ THỐNG
Website quản lý phụ kiện điện tử dành cho cửa hàng “Khuyến Mãi Cần Thơ” nhằm
vào các mục đích:
 Quản lý:
- Quản lý nhân viên bao gồm: Mã nhân viên, họ tên nhân viên, số điện thoại, giới

-

-

-

tính, địa chỉ... Mỗi nhân viên sẽ có công tác riêng, trong công tác sẽ cho biết
nhân viên giữ chức vụ gì và lương cơ bản của nhân viên đó.
• Thông tin công tác: Mã công tác, ngày bắt đầu và hệ số lương.
• Thông tin chức vụ: Mã chức vụ, tên chức vụ và mô tả.

• Thông tin lương: Bậc lương và lương cơ bản.
Quản lý khách hàng bao gồm: Mã khách hàng, tên, địa chỉ, số điện thoại...Mỗi
khách hàng sẽ có thể đánh giá sản phẩm thông qua bình luận sản phẩm của cửa
hàng.
• Thông tin bình luận: Mã bình luận và nội dung. Mỗi bình luận sẽ cho biết
khách hàng nào bình luận sản phẩm nào.
Quản lý sản phẩm bao gồm: Mã sản phẩm, tên sản phẩm, giá, thời gian bảo
hành, hình ảnh... Mỗi sản phẩn được cung cấp bởi nhà sản xuất, thuộc vào thể
loại, có khuyến mãi cho từng sản phẩm, có nhiều ảnh sản phẩm và được khách
hàng bình luận.
• Thông tin nhà sản xuất: Mã nhà sản xuất, tên sản xuất, địa chỉ, số điện
thoại...
• Thông tin khuyến mãi: Mã khuyến mãi, ngày kết thúc, giá khuyến mãi và
trạng thái.
• Thông tin ảnh sản phẩm: Mã ảnh sản phẩm và ảnh sản phẩm.
• Thông tin thể loại sản phẩm: Mã thể loại, tên thể loại, tên tìm kiếm, ảnh và
thuộc vào một nhóm sản phẩm.
• Thông tin nhóm sản phẩm: Mã nhóm thể loại, tên nhóm thể loại và tên tìm
kiếm.
Quản lý bán hàng:
• Khi khách hàng có nhu cầu mua sản phẩn của cửa hàng, khách hàng có thể
đến trực tiếp cửa hàng, điện trực tiếp đến cửa hàng hoặc mua hàng trực tiếp
thông qua website cửa cửa hàng.
• Để đặt hàng thông qua website khách hàng có thể vào trang web cửa hàng
tạo một tài khoản cá nhân hoặc điền các thông tin cần thiết khi thanh toán.
• Khi việc đăng kí mua được xác nhận thì một hóa đơn được lập ra, sẽ gửi đến
hệ thống và chờ nhân viên duyệt cho khách hàng.

CBHD: Nguyễn Minh Trung


22

SVTH: Hồ Văn Cường


Chương 3: Nội dung và kết quả nghiên cứu

Thông tin của mỗi hóa đơn: Mã số hóa đơn, mã khách hàng, mã sản phẩm,
số lượng, đơn giá, ngày đặt...
• Nhân viên sẽ dựa vào các thông tin trên để giao hàng trực tiếp đến địa chỉ
của khách hàng.
- Quản lý nhập hàng:
• Hằng ngày nhân viên sẽ kiểm tra số lượng của các sản phẩm và danh sách
sản phẩm hết hàng, nếu thấy số lượng còn ít không đủ phục vụ khác hàng,
thì nhân viên lập phiếu nhập để nhập sản phẩm từ nhà cung cấp.
• Thông tin của mỗi phiếu nhập bao gồm: Mã phiếu nhập, ngày lập, mã sản
phẩm, số lượng đơn giá...
 Chức năng khách hàng
- Xem và tìm kiếm sản phẩm.
- Đăng kí tài khoản để quản lý hóa đơn và bình luận.
- Mua hàng bằng bằng tài khoản đăng kí hoặc có thể điều các thông tin cần thiết.
- Đặt hàng và nhận mail thông báo.
 Chức năng cửa hàng
- Thêm, sửa, xóa sản phẩm, nhân viên, nhà cung cấp...
- Duyệt đơn hàng khách.
- Thống kê doanh thu, lợi nhuận và chi phí nhập hàng.
- Quản lý nhân viên, lương tháng và sản phẩm tồn kho.
- Quản lý nhập hàng, tin tức, banner...
 Yêu cầu ổn định và bảo mật
- CodeIgniter có kích thước nhỏ gọn và nhờ vào cơ chế lưu nội dung vào bộ đệm

nên có tốc độ rất nhanh.
- Cơ chế bảo mật chặt chẽ, ngăn ngừa XSS và SQL Injection của CodeIgniter
giúp cho website yên tâm với phương thức tấn công phổ biến, giảm thiểu các
nguy cơ bảo mật cho hệ thống.


3.2. GIẢI PHÁP PHÂN TÍCH, THIẾT KẾ CÁC MÔ HÌNH
3.2.1. Sơ đồ phân rã chức năng


Sơ đồ phân rã chức năng khách hàng

CBHD: Nguyễn Minh Trung

23

SVTH: Hồ Văn Cường


Chương 3: Nội dung và kết quả nghiên cứu

Hình 3.1. Sơ đồ phân rã chức năng khách hàng
 Khi khách hàng vào website sẽ có các chức năng cơ bản như sau:
- Xem và tìm kiếm các sản phẩm theo ý muốn như: sản phẩm mới, khuyến mãi,

tìm theo tên...
- Xem tin tức công nghệ.
- Tạo tài khoản để đăng nhập vào website.
- Đặt các sản phẩm theo ý muốn.
- Xem các trang giới thiệu cửa hàng và hỗ trợ khách hàng.

 Khi khách hàng đăng nhập vào website sẽ được thêm các chức năng sau:
- Bình luận được sản phẩm.
- Quản lý đơn hàng của mình.
- Cập nhật được thông tin cá nhân.
- Đăng xuất.


Sơ đồ phân rã chức năng khách hàng

CBHD: Nguyễn Minh Trung

24

SVTH: Hồ Văn Cường


Chương 3: Nội dung và kết quả nghiên cứu

Hình 3.2. Sơ đồ phân rã chức năng nhân viên
Khi nhân viên đăng nhập vào hệ thống quản lý, tùy vào chức vụ sẽ được các nhóm
chức năng tương ứng sẽ được ghi vào trong phần mô tả của chức vụ. Với nhân viên
toàn quyền sẽ được các chức năng sau:
-

Về quản lý: Quản lý sản phẩm, nhân viên khách hàng, tin tức, gửi mail cho
nhân viên và khách hàng...Bao gồm thêm, sửa và xóa.
Về giao dịch: Sẽ được duyệt đơn hàng của khách và nhập hàng.
Về thống kê: Doanh thu, lợi nhuận, sản phẩm tồn...
Khi nhân viên đăng nhập sẽ có thể xem thông tin cá nhân và thay đổi được mật
khẩu của mình.


3.2.2. Sơ đồ Use case
3.2.2.1. Use case nhân viên:

CBHD: Nguyễn Minh Trung

25

SVTH: Hồ Văn Cường


×