1. Trang chủ
  2. » Kinh Doanh - Tiếp Thị

TÊN DỰ ÁN: Giới thiệu ẩm thực đường phố Hội An

52 169 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 52
Dung lượng 3,14 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Website cũng có các chức năng cho người quản trị để họ có thể quản lý sản phẩm, phân loại sản phẩm, quản lý khách hàng, quản lý các bình luận từ khác hàng về các sản phẩm cũng như thống

Trang 2

GIỚI THIỆU ĐỀ TÀI

1 GIỚI THIỆU ĐỀ TÀI

- Hiện nay tại Việt Nam, có rất nhiều nhà hàng, quán ăn nổi tiếng ở nhiều

tỉnh thành, và do sự phát triển mạnh mẽ của internet, nhu cầu mua sắm

online ngày càng cao nên việc phát triển một trang web để quảng bá ẩm

thực thật sự rất cần thiết Vì vậy chúng tôi sẽ thiết kế một website quảng

bá về ẩm thực tại Hội An Quảng Nam

2 PHÂN TÍCH HỆ THỐNG

Yêu cầu hệ thống

- Mục đích

- Hiện nay, có rất nhiều khách du lich đến Phố Cổ Hội An nhưng chưa

thật sự biết nhiều ẩm thực tại đây nên mục đích của website là giúp cho

du khách biết nhiều món ăn hơn, có nhiều sự lựa chọn hơn và dể dàng

để đặt hàng và thanh toán online trên website Website cũng có các chức

năng cho người quản trị để họ có thể quản lý sản phẩm, phân loại sản

phẩm, quản lý khách hàng, quản lý các bình luận từ khác hàng về các

sản phẩm cũng như thống kê món ăn theo loại…

- Phạm vi

Website dành cho người tiêu dùng

+ Cấu trúc chúng của tất cả các trang web trong website

phải:

+ Chứa danh mục loại món ăn để khách hàng dễ dàng tìm kiếm món

ăn theo từng loại

+ Tìm kiếm món ăn theo tên

+ Hiển thị danh sách các món ăn được quan tâm nhiều nhất (xem

nhiều nhất)

+ Đăng nhập/thông tin người tiêu dùng sau khi đã đăng nhập

+ Trang chính của website

 Trưng bày các món ăn đặc biệt được nhân viên quản trị chỉ định

+ Trang trưng bày món ăn

 Khi người dùng chọn loại món hoặc tìm kiếm theo tên thì danh sách món ăn thỏa mãn yêu cầu được hiện ra Mỗi món ăn cần hiển thị hình ảnh, tên, đơn giá và giảm giá nếu

có Khi người dùng nhấp vào hình của món ăn thì sẽ

Trang 3

chuyển đến trang hiển thị chi tiết món ăn đồng thời tăng số lần xem

+ Chi tiết món ăn

Yêu cầu của trang web này như sau:

 Thông tin chi tiết của món ăn được chọn

 Danh sách các món ăn cùng loại với món ăn được chọn

 Cho phép khách hàng gửi bình luận về sản phẩm

 Các trang quản lý tài khoản sử dụng

 Đăng nhập

 Đăng ký

 Quên mật khẩu

 Đổi mật khẩu

 Cập nhật thông tin tài khoản

Website dành cho người quản trị

+ Thống kê món ăn theo loại, cho phép hiển thị dưới dạng biểu đồ

+ Thống kê bình luận theo món ăn

Yêu cầu về bảo mật

+ Tất cả các form nhập phải được kiểm soát dữ liệu một cách hợp lý

+ Khách hàng chưa đăng nhập không được phép gửi bình luận về

món ăn cũng như đổi mật khẩu, cập nhật thông tin tài khoản

+ Chỉ có các nhân viên quản trị mới được phép thực hiện các chức

năng quản trị

Yêu cầu về môi trường công nghệ

+ Website phải được xây dựng với PHP và MySQL

Trang 4

3 VẼ SƠ ĐỒ USE CASE

Image 1

Trang 5

4 ĐẶT TẢ CHỨC NĂNG

- Chức năng dành cho khách hàng

+ Cấu trúc chung của các trang web

+ Hiển thị danh mục loại món ăn, form tìm kiếm theo tên, 10 món ăn

được xem nhiều nhất và form đăng nhập hoặc thông tin khách hàng sau khi

đã đăng nhập Nếu người đăng nhập có vai trò là nhân viên thì hiển thị liên

kết đến trang quản trị

+ Tìm hàng theo loại

+ Liệt kê các món ăn theo loại được chọn bởi khách hàng Thông tin mỗi

món ăn gồm tên, ảnh và đơn giá Liên kết đến trang chi tiết món ăn

+ Tìm hàng theo tên

+ Liệt kê các món ăn theo tên hàng hoặc tên loại theo yêu cầu tìm kiếm

của khách hàng Thông tin mỗi món ăn gồm tên, ảnh và đơn giá Liên kết

đến trang chi tiết món ăn

+ Xem thông tin chi tiết

+ Hiển thị thông tin chi tiết của món ăn được chọn bởi khách hàng và các

món ăn cùng loại có gắn liên kết đến trang chi tiết món ăn để khách hàng

có thể xem luôn mà không cần phải trở lại trang liệt kê món ăn

+ Gửi bình luận

+ Gửi bình luận về món ăn đang xem, chức năng này chỉ được thực hiện

sau khi khách hàng đã đăng nhập Các bình luận về món ăn cũng được liệt

 Đổi mật khẩu

 Thay đổi mật khẩu khi cần thiết để đảm bảo độ bảo mật của mình

Trang 6

 Tìm lại mật khẩu dựa vào tên đăng nhập và email_users

Sau khi xác minh đúng sẽ gửi mật khẩu qua email_users

đã đăng ký trước đó để đảm bảo độ bảo mật

 Cập nhật thông tin tài khoản

 Cập nhật lại thông tin tài khoản của mình (không cho phép cập nhật tên đăng nhập)

- Dành cho quản trị

+ Quản lý món ăn

 Thực hiện được các chức năng xem, thêm, xóa, sửa và phân

trang

+ Quản lý loại món ăn

 Thực hiện được các chức năng xem, thêm, xóa, sửa

+ Quản lý khách hàng

 Thực hiện được các chức năng xem, thêm, xóa, sửa Nhân viên

quản trị không được phép xóa chính mình

 Tổng hợp thông tin món ăn từng loại món ăn Thông tin tổng

hợp cần được trình bày có cấu trúc sau

Loại món ăn Số món ăn Giá trung

bình

Giá thấp nhất Giá cao

nhất

Trang 7

+ Trình duyệt thông dụng: FireFox, chrome, Safari

- Công cụ: Vim, visual studio code

Khách hàng Bình luậ

Trang 8

THIẾT KẾ HỆ THỐNG WEBSITE:

1 Mô hình hệ thống:

Image 3

2 Thiết kế cơ sở dữ liệu:

a Liệt kê thực thể, thuộc tính và mối quan hệ:

Trang 9

+ Hình ảnh

+ Ngày nhập

+ Mô tả

+ Trạng thái đặc biệt ( là mặt hàng đặc biệt được hiện ở trang chủ)

+ Số lượt xem ( ghi nhận số lượt xem để đánh giá độ quan tâm của khách

+ Mã món ăn được bình luận

+ Nội dung bình luận

+ Thời gian bình luận

- type:

+ Mã loại món ăn

+ Tên loại món ăn

- Yêu cầu ràng buộc quan hệ:

Trang 10

users

pk ma_users

Ten_user Mat_khau_users_us

ers Hinh_pro_users

Noi_dung_cmt_cmt Ngay_cmt

Products

Ten_pro Gia_pro Dia_chi_pro Giam_gia_pro_pro Hinh_pro_pro Ngay_nhap_pro_pro Mo_ta_pro_pro Dac_biet_pro_pro So_luot_xem_pro_pro

Type

Pk Ma_type

Ten_type

Trang 11

- Bảng users:

Ma_users varchar(10) Pk, not null Mã khách hàng

Ten_users Varchar(255) Not null Tên khách hàng

Mat_khau_users_

users

Varchar(50) Not null Mật khẩu

Hinh_pro_users Varchar(255) Not null Hình ảnh users

Ma_pro Int(30) Tu tang, pk, not

null

Mã món ăn

Ten_pro Varchar(255) not null Tên món ăn

Dia_chi_pro Varchar(255) not null Địa chỉ món ăn

Giam_gia_pro_pr

o

Int(30) not null Giảm giá

Hinh_pro_pro Varchar(255) not null Hình ảnh

Ngay_nhap_pro_

pro

Mo_ta_pro_pro Varchar(2000) not null Miêu tả món ăn

Dac_biet_pro_pro Bit(1) not null Trạng thái đặc

biệt So_luot_xem_pro Int(11) Default 0 Số lượt xem

Trang 12

Ma_type Int(30) not null, fk Mã loại

- type:

Tên cột Kiểu Ràng buộc Ghi chú

Ma_type Int(30) Tu tang, pk, not

null

Mã loại món Ten_type Varchar(255) Not null Tên loại món

- comments:

Tên cột Kiểu Ràng buộc Ghi chú

Ma_cmt Int(30) Tu tang, pk, not

null

Mã bình luận

Ma_users_cmt Varchar(30) Fk, not null Mã khách hàng

bình luận Ma_pro_cmt Int(30) Fk, not null Mã món ăn đươc

bình luận Noi_dung_cmt_c

Trang 13

3 Thiết kế giao diện:

a Sitemap:

Image 4

b Giao diện quản trị website:

Image 5

Trang 14

c Giao diện customer:

1 Trang chu:

Image 6

2 Mon an chi tiet:

Trang 15

Image 7

3 Contact:

Trang 16

Image 8

Trang 17

4 About us:

Image 9

Trang 18

I THỰC HIỆN VIẾT MÃ

1 ĐẶT TẢ CHỨC NĂNG

- Tạo CSDL

+ Sử dụng công cụ MySQL hoặc viết mã SQL để tạo CSDL có

hoi_an_street_foods và các bảng có cấu trúc và ràng buộc như mô tả ở phần

cấu trúc bảng Cụ thể cần tại một CSDL như sơ đồ sau:

Image 10

- SQL truy vấn và thao tác bảng

+ Viết các câu lệnh thực hiện truy vấn và thao tác dữ liệu cần thiết cho mỗi

bảng Các câu lệnh này được sử dụng trong lập trình php sau này để làm việc

với cơ sở dữ liệu

UPDATE type SET ten_type=? WHERE ma_type=?

Xóa theo mã DELETE FROM type WHERE ma_type=?

Truy vấn tất cả SELECT * FROM type

Truy vấn theo

SELECT * FROM type WHERE ma_type=?

Trang 19

Đếm số lượng SELECT count(*) FROM type WHERE ma_type=?

 Món ăn

Hành động Câu lệnh SQL

Thêm mới INSERT INTO products(ten_pro, gia_pro, giam_gia_pro,

hinh_pro, ma_type, dac_biet_pro, so_luot_xem_pro, ngay_nhap_pro, mo_ta_pro) VALUES (?,?,?,?,?,?,?,?,?)

Cập nhật theo

UPDATE products SET ten_pro=?, gia_pro=?, giam_gia_pro=?, hinh_pro=?, ma_type=?, dac_biet_pro=?, so_luot_xem_pro=?, ngay_nhap_pro=?, mo_ta_pro=?

SELECT count(*) FROM products WHERE ma_pro=?

Phân trang SELECT * FROM products ORDER BY ma_pro LIMIT 0, 10

Tìm kiếm

hàng đặc biệt

SELECT * FROM products WHERE dac_biet_pro=1

Tìm kiếm SELECT * FROM products WHERE ma_type=?

Trang 20

Tìm kiếm

hàng theo tên

SELECT * FROM products hh

JOIN type lo ON lo.ma_type=hh.ma_type WHERE ten_pro LIKE ? OR ten_type LIKE ?

 Khách hàng

Hành động Câu lệnh SQL

Thêm mới INSERT INTO users(ma_users, mat_khau_users, ten_users,

email_users, hinh_pro, kich_hoat, vai_tro_users) VALUES (?, ?, ?, ?, ?, ?, ?)

SELECT count(*) FROM users WHERE ma_users=?

Đổi mật khẩu UPDATE users SET mat_khau_users=? WHERE ma_users=?

Trang 21

noi_dung_cmt=?, ngay_cmt=? WHERE ma_cmt=?

Xóa theo mã DELETE FROM comments WHERE ma_cmt=?

JOIN products h ON h.ma_pro=b.ma_pro WHERE b.ma_pro=?

ORDER BY ngay_cmt DESC

JOIN type lo ON lo.ma_type=hh.ma_type GROUP BY lo.ma_type, lo.ten_type

Thống kê bình

luận theo hàng

SELECT hh.ma_pro, hh.ten_pro,

COUNT(*) so_luong,

Trang 22

MIN(bl.ngay_cmt) cu_nhat, MAX(bl.ngay_cmt) moi_nhat FROM comments bl

JOIN products hh ON hh.ma_pro=bl.ma_pro GROUP BY hh.ma_pro, hh.ten_pro

HAVING so_luong > 0

- Lập trình CSDL

Trong dự án này chúng ta chọn mô hình lập trình với CSDL như hình sau

Image 11 Trong đó:

 Controller: là các php điều khiển hành vi người dùng để thực hiện các

chức năng nghiệp vụ

 Database: cơ sở dữ liệu hoi_an_street_foods

 PDO: là php cung cấp các hàm tiện ích chung thực hiện truy vấn và thao

tác CSDL sử dụng cơ chế PDO

 DAO: là các php chứa các hàm thực hiện các thao tác và truy vấn dữ

liệu đối với mỗi bảng Nó cũng chứa các hàm thực hiện thao tác tổng

hợp thống kê dữ liệu

Như vậy khi một trang php (controller) muốn thực hiện thao tác hoặc truy vấn

dữ liệu liên quan đến một bảng nào đó thì chỉ việc include dao tương ứng và

gọi hàm trong dao đó để thực hiện

Việc tách thành các phần riêng biết giúp quản lý dự án tốt hơn, dễ bảo trì nâng

cấp hơn và đặc biệt là khả năng tái sử dụng rất cao, nghĩa là một đoạn mã

được viết một lần nhưng được sử dụng ở nhiều nơi

+ Xây dựng thư viện PDO

PDO là file php chứa các hàm tiện ích chúng hỗ trợ thao tác và truy vấn dữ liệu,

nó sẽ được sử dụng trong các DAO sau này

Trang 23

Tổ chức thư viện Tạo file pdo.php với tổ chức mã như sau

* Thực thi câu lệnh sql thao tác dữ liệu (INSERT, UPDATE, DELETE)

* @param string $sql câu lệnh sql

* @param array $args mảng giá trị cung cấp cho các tham số của $sql

* @throws PDOException lỗi thực thi câu lệnh

*/

function pdo_execute($sql){…}

/**

* Thực thi câu lệnh sql truy vấn dữ liệu (SELECT)

* @param string $sql câu lệnh sql

* @param array $args mảng giá trị cung cấp cho các tham số của $sql

* @return array mảng các bản ghi

* @throws PDOException lỗi thực thi câu lệnh

*/

function pdo_query($sql){…}

/**

* Thực thi câu lệnh sql truy vấn một bản ghi

* @param string $sql câu lệnh sql

* @param array $args mảng giá trị cung cấp cho các tham số của $sql

Trang 24

* @return array mảng chứa bản ghi

* @throws PDOException lỗi thực thi câu lệnh

*/

function pdo_query_one($sql){…}

/**

* Thực thi câu lệnh sql truy vấn một giá trị

* @param string $sql câu lệnh sql

* @param array $args mảng giá trị cung cấp cho các tham số của $sql

* @return giá trị

* @throws PDOException lỗi thực thi câu lệnh

*/

function pdo_query_value($sql){…}

Trang 25

+ Xây dựng các lớp DAO

DAO (Data Access Object) là các file php chứa các hàm hỗ trợ làm việc với

các bảng trong CSDL Vì vậy các thao tác hay truy vấn liên quan đến bảng nào

sẽ được định nghĩa trong file dao của bảng đó

Trong hoi_an_street_foods có 4 bảng nên chúng ta tổ chức thành 4 file dao

khác nhau đồng thời có file thống kê chứa các truy vấn tổng hợp thống kê

Image 12 Mỗi file DAO tối thiểu chứa các hàm thao tác và truy vấn sau

 _insert(): thêm mới

 _update(): cập nhật

 _delete(): xóa

 _select_all(): truy vấn tất cả

 _select_by_id(): truy vấn theo mã

 _exist(): kiểm tra tồn tại

Trang 26

2 VIẾT MÃ TẠO CSDL

- Tổ chức website

Hãy tổ chức dự án của bạn có cấu trúc thư mục như sau

Trong đó:

 Index.php: là trang bắt đầu

 Global.php: là thư viện chứa các hàm hỗ trợ dùng chung cho cả website

 Content: là thư mục chứa hình, js, css, fonts

 Dao: là thư mục chứa các DAO

 Admin: chứa php thực hiện các chức năng quản trị

 Site: chứa các php dành cho khách hàng

- Thư viện tiện ích Global.php

Global.php chứa các biến toàn cục và các hàng hỗ trợ dùng chung cho tất cả

các php trong website

- Mô hình tổ chức giao diện

Sau khi đã xây dựng xong các DAO và global.php việc các lại là viết mã php

cho 2 phần là admin và site Mã trong 2 phần này được tổ chức theo mô hình

sau

Trang 27

Image 13 Theo mô hình tổ chức này thì tất cả các yêu cầu từ người dùng được chuyển

đến Controller (file php điều khiển) Controller sẽ thực hiện chức năng nghiệp

vụ được yêu cầu sau đó chia sẽ dữ liệu và chuyển sang layout Trong số dữ liệu

chia sẽ có biến $VIEW_NAME (trang giao diện php) chứa đường dẫn trang

php sinh giao diện Layout dựa vào biến này để include giao diện tương ứng

vào đúng vị trí đã dành sãn trong layout

Trên mô hình chúng ta còn nhìn thấy global.php và dao/xyz.php là 2 file php

cần được include vào Controller Trong đó:

 Global.php: chứa các biến toàn cục và các hàng dùng chung cho tất cả

các php trong website

 Dao/xyz.php: là các dao cần thiết để Controller làm việc với CSDL

- Xây dựng admin

Trang 28

Tổ chức thư mục của phần admin

 Layout.php là template dùng chung cho các giao diện của phần admin

 Memu-admin.php là các liên kết dẫn đên các trang quản lý trong admin menu này sẽ được nhúng vào layout.php của phần admin

 Mỗi thư mục chứa php xử lý và giao diện quản lý của mỗi chức năng tương ứng

 Tổ chức layout và menu

Tổ chức layout.phpTrong layout.php này có include 2 php là menu-admin.php

và một php chứa nội dung do biến $VIEW_NAME chỉ định

Trang 31

data-toggle="modal" data-target="#myModal" style="cursor: pointer;">

<i class="fas fa-user-circle

Trang 32

Tất cả các liên kết điều gọi đến các trang index.php trong các thư mục tương

ứng của admin ngoại trừ liên kết trang chủ gọi đến index.php trong thư mục

trang-chinh của phần site (dành cho khách hàng)

 Trang chủ của phần admin

 Do trong thư mục trang-chinh có chứa index.php nên khi gọi url đến thư mục này thì index.php sẽ chạy

 Cuối cùng index.php đặt biến

$VIEW_NAME=”home.php” và include layout.php nên layout.php sẽ chạy và include home.php vào layout.php

 Như vậy index.php là controller còn home.php là view

Trang 33

Trong trang này có sử dụng css, nhưng mã nguồn trình bày ở trên thì đã lược

bỏ để đơn giản trong việc đọc mã Bạn có thể design giao diện tùy thích

 Quản lý loại món ăn

Tổ chức các file php quản lý loại món ăn như hình sau

Tổ chức

 Index.php là controller

 New.php là giao diện thêm mới

 Edit.php là giao diện cập nhật

 List.php là giao diện liệt kê

Tổ chức thư mục và Mô hình hoạt động: tương tự khach-hang

Sự khác biệt lớn nhất ở bài này so với khach-hang là có phần mã xử lý phân

trang và select-box đó là đổ danh mục loại món ăn vào select-box và chọn loại

món ăn khi edit một mặt hàng

Tổng hợp và quản lý bình luận

Tổ chức thư mục

Ngày đăng: 05/03/2019, 21:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w