- Khảo sát quy trình xử lý đặt bàn và đặt món online của nhà hàng - Phân tích, xác định các yêu cầu của hệ thống - Xây dựng hệ thống hỗ trợ xử lý đặt bàn và đặt món gồm: Quản lý các da
Trang 1KHOA CÔNG NGHỆ TIN HỌC
Trang 3- Khảo sát quy trình xử lý đặt bàn và đặt món online của nhà hàng
- Phân tích, xác định các yêu cầu của hệ thống
- Xây dựng hệ thống hỗ trợ xử lý đặt bàn và đặt món gồm:
Quản lý các danh mục
Quản lý đặt bàn
Quản lý đặt món
Trang 4đang dần chú ý đến nhu cầu ăn uống Họ không chỉ muốn ăn ngon mà cònmuốn được nhận những giá trị tinh thần đi kèm với dịch vụ ăn uống Ví như:một không gian đầy nghệ thuật tương xứng với đồng tiền bỏ ra, phong cáchphục vụ chuyên nghiệp, nét văn hóa riêng biệt mà chỉ tìm thấy ở nhà hàng đó(phong cách sống kiểu Mĩ với Mc Donald, Sushi băng chuyền của người NhậtBản…), hay từ kênh cầu nối giữa nhà hàng và thực khách hiệu quả, mang lại
ấn tượng tốt đẹp Kênh cầu nối hữu hiệu đó chính là Website.
Sau thời gian học tập tại trường, được sự chỉ bảo hướng dẫn tận tìnhcủa các thầy cô trong khoa Công nghệ thông tin, Viện Đại học Mở Hà Nội em
đã kết thúc khóa học và tích lũy được vốn kiến thức nhất định Được sự đồng
ý của nhà trường và các thầy cô trong khoa em được nhận đề tài tốt nghiệp:
“Xây dựng website quảng bá và quản lý đặt món cho nhà hàng lẩu SUMO”.
Qua đề tài tốt nghiệp, em muốn vận dụng tổng thể tất cả các kiến thức đã học,tìm hiểu để khẳng định thực lực của bản thân, giúp em có thêm kinh nghiệmlàm việc sau khi ra trường
Bằng sự cố gắng nỗ lực của bản thân và đặc biệt là sự giúp đỡ tận tìnhchu đáo của cô giáo Th.S Trịnh Thị Xuân, em đã hoàn thành đồ án đúng thờihạn Do trình độ còn nhiều hạn chế, em rất mong nhận được sự đóng góp ý kiếncủa các thầy cô để đề tài này được hoàn thiện hơn Em xin chân thành cảm ơn
cô giáo Th.S Trịnh Thị Xuân, các thầy cô giáo trong Khoa Công nghệ thôngtin, Viện Đại học Mở Hà Nội đã tạo điều kiện giúp đỡ em trong thời gian qua
Hà Nội, ngày… tháng… năm…
Sinh viên thực hiệnPhạm Minh Ngọc
Trang 6TÓM TẮT ĐỒ ÁN 5
Chương I MỞ ĐẦU 1.1 Giới thiệu bài toán 1
1.2 Mục tiêu và phạm vi đề tài 2
1.2.1 Mục tiêu 2
1.2.2 Phạm vi đề tài 2
1.3 Ưu, nhược điêm của đề tài 2
1.4 Ý nghĩa lý luận và ý nghĩa thực tiễn của đề tài 3
1.5 Cấu trúc của báo cáo 3
Chương II CÔNG NGHỆ SỬ DỤNG 2.1 Hệ quản trị cơ sở dữ liệu MySQL 4
2.1.1 Đặc điểm 4
2.1.2 Quản lý CSDL trong MySQL 4
2.1.3 Các kiểu bảng dữ liệu trong MySQL 4
2.1.4 Thao tác với bảng dữ liệu 6
2.1.5 Quản lý chỉ mục 6
2.1.6 Truy vấn dữ liệu từ bảng 7
2.1.7 Thủ tục Procedure, Con trỏ, Trigger 9
2.2 Ngôn ngữ lập trình PHP 11
2.2.1 Ưu điểm 11
2.2.2 Làm thế nào để chạy được kịch bản PHP 12
2.2.3 Cú pháp PHP 12
2.2.4 Kiểu dữ liệu 12
2.2.5 Biến FORM 15
Trang 73.1 Yêu cầu chung về hệ thống 17
3.2 Yêu cầu bài toán 17
3.3 Mục đích của trang web 17
3.4 Đối tượng sử dụng hệ thống 18
3.5 Các chức năng cơ bản của hệ thống 18
3.6 Mô hình phân cấp chức năng 19
3.7 Sơ đồ ngữ cảnh 26
3.8 Ma trận thực thể - chức năng (E – F) 27
3.9 Sơ đồ luồng dữ liệu 28
3.9.1 Sơ đồ luồng dữ liệu mức đỉnh 0 28
3.9.2 Sơ đồ luồng dữ liệu mức dưới đỉnh “1.0 Quản lý User” 29
3.9.3 Sơ đồ luồng dữ liệu mức dưới đỉnh “2.0 Quản lý món ăn” 29
3.9.4 Sơ đồ luồng dữ liệu mức dưới đỉnh “3.0 Quản lý đơn đặt” 30
3.9.5 Sơ đồ luồng dữ liệu mức dưới đỉnh “4.0 Tìm kiếm” 30
3.9.6 Sơ đồ luồng dữ liệu mức dưới đỉnh “5.0 Thống kê” 31
3.10 Lưu đồ thuật toán 31
3.10.1 Chức năng đăng nhập và đăng xuất (Admin) 31
3.10.2 Chức năng đổi mật khẩu 32
3.10.3 Chức năng thay đổi thông tin Admin 33
3.10.4 Chức năng đặt bàn 34
3.10.5 Chức năng đặt món 35
3.10.6 Chức năng tìm kiếm 36
3.10.7 Chức năng thêm danh mục món ăn, món ăn, bàn, ca 37
3.10.8 Chức năng sửa danh mục món ăn, món ăn, bàn, ca 38
3.10.9 Chức năng xóa danh mục món ăn, món ăn, bàn, ca 39
Trang 84.1.1 Mô hình cơ sở dữ liệ 45
4.2 Thiết kế giao diện chức năng 46
4.2.1 Đăng nhập 46
4.2.2 Đặt bàn 46
4.2.3 Liên hệ 47
4.3 Chương trình 48
4.3.1 Trang Giới thiệu 48
4.3.2 Trang Đặt bàn 49
4.3.3 Trang Tin tức 50
4.3.4 Trang Hình ảnh 51
4.3.5 Trang Liên hệ 52
4.3.6 Trang Thanh toán giỏ hàng 53
4.3.7 Trang Login – Admin 54
4.3.8 Trang chủ Admin 54
4.3.9 Trang Quản lý đơn hàng 55
4.3.10 Trang Quản lý danh mục món ăn 55
4.3.11 Trang Quản lý bảng tin 56
4.3.12 Trang Quản lý liên hệ 56
4.3.13 Trang Quản lý hình ảnh 57
4.3.14 Trang Quản lý tài khoản Admin 57
KẾT LUẬN 58
DANH MỤC TÀI LIỆU THAM KHẢO 59
Trang 91 CSDL Cơ sở dữ liệu
2 PK Primary Key Khóa chính
Trang 10Bảng 3.1 Các tác nhân ngoài và hồ sơ dữ liệu 19
Bảng 3.2 Các chức năng theo mạch công việc 19
Bảng 3.3 Ma trận thực thể - chức năng 27
Bảng 4.1 Bảng ban 40
Bảng 4.2 Bảng admin 40
Bảng 4.3 Bảng danh_muc 41
Bảng 4.4 Bảng dd_ban 41
Bảng 4.5 Bảng dd_mon 41
Bảng 4.6 Bảng don_dat 42
Bảng 4.7 Bảng mon_an 42
Bảng 4.8 Bảng ca 43
Bảng 4.9 Bảng lien_he 43
Bảng 4.10 Bảng loai_tin 43
Bảng 4.11 Bảng bang_tin 44
Bảng 4.12 Bảng anh 44
Bảng 4.13 Bảng album 44
Trang 11Hình 3.3 Sơ đồ chi tiết chức năng “Cập nhật danh mục món ăn” 23
Hình 3.4 Sơ đồ chi tiết chức năng “Cập nhật món ăn” 24
Hình 3.5 Sơ đồ chi tiết chức năng “Đặt bàn” 24
Hình 3.6 Sơ đồ chi tiết chức năng “Đặt món” 25
Hình 3.7 Sơ đồ chi tiết chức năng “Xử lý đơn đặt” 25
Hình 3.8 Sơ đồ ngữ cảnh 26
Hình 3.9 Sơ đồ luồng dữ liệu mức đỉnh 0 28
Hình 3.10 Sơ đồ luồng dữ liệu mức dưới đỉnh 1.0 Quản lý User 29
Hình 3.11 Sơ đồ luồng dữ liệu mức dưới đỉnh 2.0 Quản lý món ăn 29
Hình 3.12 Sơ đồ luồng dữ liệu mức dưới đỉnh 3.0 Quản lý đơn đặt 30
Hình 3.13 Sơ đồ luồng dữ liệu mức dưới đỉnh 4.0 Tìm kiếm 30
Hình 3.14 Sơ đồ luồng dữ liệu mức dưới đỉnh 5.0 Thống kê 31
Hình 3.15 Lưu đồ thuật toán chức năng đăng nhập và đăng xuất (Admin) 31
Hình 3.16 Lưu đồ thuật toán chức năng đổi mật khẩu 32
Hình 3.17 Lưu đồ thuật toán chức năng thay đổi thông tin Admin 33
Hình 3.18 Lưu đồ thuật toán chức năng đặt bàn 34
Hình 3.19 Lưu đồ thuật toán chức năng đặt bàn 35
Hình 3.20 Lưu đồ thuật toán chức năng tìm kiếm 36
Hình 3.21 Lưu đồ thuật toán chức năng thêm đối tượng 37
Hình 3.22 Lưu đồ thuật toán chức năng sửa đối tượng 38
Hình 3.23 Lưu đồ thuật toán chức năng xóa đối tượng 39
Hình 4.1 Mô hình cơ sở dữ liệu 45
Hình 4.2 Giao diện Đăng nhập 46
Hình 4.3 Giao diện Đặt bàn 46
Hình 4.4 Giao diện liên hệ 47
Trang 12Chương I
MỞ ĐẦU
Giới thiệu bài toán
Ngày nay website đóng vai trò là kênh truyền thông và công cụ kinhdoanh hàng đầu cho mỗi đơn vị kinh doanh, nó mang lại lợi thế không thế phủnhận: nó là kênh tư vấn khách hàng trực tuyến, quảng cáo, marketing và PR,
là phương tiện quản lý doanh nghiệp từ xa Đặc biệt trong lĩnh vực nhà hàng
ẩm thực, website giúp tự động hóa nghiệp vụ phục vụ khách hàng (thông quađặt bàn trực tuyến, )
Trong bối cảnh nền kinh tế chưa có dấu hiệu hồi phục một cách mạnh
mẽ và tích cực thì bán hàng qua mạng là giải pháp được lựa chọn nhiều hơn
cả để tiết kiệm chi phí, mở rộng thị trường mục tiêu mà lại cải thiện được chấtlượng dịch vụ (thông qua góp ý trực tuyến của khách hàng) Ngoài ra, websitegiúp gia tăng lượng khách hàng thông qua các công cụ tìm kiếm (Google,Bing, Yahoo, )
Thêm vào đó, các đồ ăn du nhập từ nước ngoài vào Việt Nam hiện nay(Nhật, Hàn, Trung, Thái,…) ngày càng bão hòa, không còn sự mới lạ, và sứchút đặc biệt với thực khách nữa, thì người ta lại thích tìm về những giá trị ẩmthực Việt truyền thống, những bí quyết nấu ăn độc đáo của từng ẩm thực gia,mỗi món ăn vào tay từng nhà đầu bếp là cả một trải nghiệm khác biệt Hơnnữa, đó còn là một nét văn hóa, một nét đẹp tao nhã của người Việt Nam từxưa tới nay Có thể nói ẩm thực Việt đang tự khẳng định được vị trí mới củamình, đặc biệt là món lẩu đang rất được ưa chuộng Món ăn Việt không chỉngon, lành, độc đáo mà còn thể hiện được tài năng và trí tuệ, sự chịu khó,sáng tạo của con người Việt Nam
Trang 13Với những cảm nhận về xu hướng phát triển xã hội và ẩm thực nhưtrên, nhóm dự án chúng tôi muốn xây dựng một website nhà hàng lẩu SUMOnhằm mục đích giúp khách hàng có thể linh hoạt trong việc mua hàng, tiếtkiệm được nhiều thời gian và tiền bạc Mong muốn của chúng tôi là mang đếncho khách hàng những lựa chọn tốt nhất về chất lượng sản phẩm, giá cả vàdịch vụ kèm theo Đồng thời giúp quảng bá văn hóa ẩm thực Việt ngày càngrộng rãi tới tất cả khách trong và ngoài nước.
Thông qua đây chúng tôi cũng trau dồi thêm kiến thức về nghiệp vụquản lí công tác bán hàng, dịch vụ phục vụ khách hàng, và quản lý website
Từ đó mô hình hóa nghiệp vụ thông qua các ứng dụng trên nền website, nângcao khả năng tư duy, tích lũy kinh nghiệm và tăng hiệu quả làm việc
Mục tiêu và phạm vi đề tài
Mục tiêu
- Hỗ trợ công tác quản lý trong hệ thống nhà hàng được nhanh và dễ dàng
hơn
- Phần mềm hỗ trợ nhân viên quản lý để rút gắn thời gian lao động chân tay,
kiểm soát thông tin cũng như doanh thu chính xác hơn
- Phần mềm hỗ trợ khách hàng có thể xem, đặt hàng mà không cần phải mất
thời gian đến tận nơi, tiết kiệm chi phí
Phạm vi đề tài
- Phát triển cho nhà hàng lẩu SUMO
- Có thể phát triển cho các nhà hàng vừa và nhỏ.
Ưu, nhược điêm của đề tài
Ưu điểm:
- Website có sử dụng cơ sở dữ liệu quan hệ mạnh MySQL và được hỗ trợ
bởi các ngôn ngữ lập trình tiên tiến như PHP, javascript,…
Trang 14- Giao diện đẹp, đơn giản, thân thiện và dễ sử dụng, không đòi hỏi người
dùng phải có trình độ và hiểu biết về tin học cao, phù hợp với trình độ củaquản lý cũng như nhân viên trong nhà hàng
- Có nhiều menu nhanh thuận tiện trong quá trình thao tác.
- Tạo điều kiện thuận lợi cho khách hàng có thể chọn các món ăn yêu thích.
- Khách hàng sẽ được cung cấp đầy đủ thông tin về nhà hàng, món ăn, thông
tin cần thiết cũng như hình ảnh thực tế… với giá cả được niêm yết côngkhai trên trang web
Nhược điểm:
- Website chỉ dùng cho các nhà hàng vừa và nhỏ, chưa thể ứng dụng cho nhà
hàng lớn cũng như chuỗi các cửa hàng
- Chưa quản lý được toàn bộ của hàng với các khâu nhập, xuất nguyên liệu,
quản lý toàn bộ nhân viên với lương, thưởng…
Ý nghĩa lý luận và ý nghĩa thực tiễn của đề tài
- Giúp em hiểu rõ về quy trình và nghiệp vụ của website quảng bá và quản lý
đặt món cho nhà hàng
- Tiếp cận và làm quen với các yêu cầu thực tế của khách hàng đối với
website quảng bá và quản lý đặt món cho nhà hàng
- Ứng dụng đề tài vào quảng bá và quản lý đặt món cho nhà hàng.
- Nâng cấp website để ứng dụng vào quá trình quảng bá và quản lý đặt món
cho tất cả các nhà hàng
Cấu trúc của báo cáo
Báo cáo gồm 4 chương:
- Chương I: Mở đầu
- Chương II: Công nghệ sử dụng
- Chương III: Phân tích bài toán
Trang 15- Chương IV: Thiết kế và xây dựng hệ thống
Chương II CÔNG NGHỆ SỬ DỤNG
Hệ quản trị cơ sở dữ liệu MySQL
Đặc điểm
MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở thông dụng nhất.MySQL là một hệ thống client/server bao gồm một SQL server đaluồng cho phép hỗ trợ nhiều thiết bị đầu cuối khác nhau, một vài chương trìnhclient khác nhau và các thư viện, các công cụ quản trị và một vài giao diện lậptrình Các nhà cung cấp cũng cung cấp MySQL như là một thư viện đa luồng
mà ta có thể kết nối trong ứng dụng của ta để đạt tới một sản phẩm nhỏ hơn,nhanh hơn, dễ quản lý hơn MySQL có nhiều các phần mềm được phân phối
có sẵn, điều này rất thuận tiện trong việc tìm ướng dụng yêu thích hoặc ngônngữ hỗ trợ MySQL
Quản lý CSDL trong MySQL
Để tạo mới một CSDL trong MySQL, sử dụng lệnh CREATE
DATABASE:
CREATE DATABASE [IF NOT EXISTS] database_name;
Câu lệnh trên tạo một CSDL với tên là database_name, phần [IF NOTEXISTS] để tránh khỏi lỗi tạo một CSDL mới trùng tên với một CSDL đã cótrong máy chủ CSDL
Các kiểu bảng dữ liệu trong MySQL
- MySQL hỗ trợ nhiều kiểu bảng dữ liệu hoặc các máy lưu trữ khác nhau giúp
chúng ta tối ưu hóa CSDL của mình Các kiểu bảng trong MySQL gồm:
Trang 16 ISAM: đã bị loại khỏi các phiên bản từ 5.x trở đi Nó được thay thếbởi MyISAM Một bảng dữ liệu kiểu ISAM có dung lượng tối đa là 4GB vàkhông thể di chuyển.
MyISAM: Kiểu MyISAM là mặc định khi tạo ra một bảng dữ liệumới Các thao tác trên bảng dữ liệu kiểu này diễn ra rất nhanh, tuy nhiên nólại không hỗ trợ đặc tính an toàn giao tác Dung lượng của một bảng dữ liệukiểu MyISAM phụ thuộc và hệ điều hành Bảng dữ liệu kiểu MyISAM có thểchuyển từ hệ thống này sang hệ thống khác Với bảng dữ liệu kiểu MyISAMbạn có thể có tới 64 khóa và chiều dài tối đa của khóa là 1024byte
InnoDB: Khác với bảng dữ liệu kiểu MyISAM, bảng dữ liệu kiểuInnoDB có đặc tính an toàn giao tác và hỗ trợ khóa dòng (row level locking).Các khóa ngoại được hỗ trợ trong kiểu InnoDB Tập tin dữ liệu của bảng dữliệu kiểu InnoDB có thể lưu trữ ở nhiều file khác nhau Vì thế dung lượng củabảng InnoDB phụ thuộc vào dung lượng của ổ đĩa Giống như bảng dữ liệukiểu MyISAM, tập tin dữ liệu của InnoDB có thể chuyển từ hệ thống nàysang hệ thống khác Điểm bất lợi của InnoDB so với MyISAM là nó cầnnhiều không gian lưu trữ
BDB: cũng tương tự như InnoDB ở tính an toàn giao tác Nó hỗ trợkhóa trang (page level locking) Tuy nhiên tập tin dữ liệu BDB lại không thểchuyển đổi giữa các hệ thống
MERGE: Bảng dữ liệu kiểu Merge được thêm vào để giải quyếtvấn đề hạn chế của MyISAM Nó biến nhiều bảng MyISAM thành một bảng
dữ liệu vì thế những hạn chế về dung lượng của MyISAM không còn là trởngại kỹ thuật
HEAP: Bảng dữ liệu kiểu HEAP được lưu trữ trong bộ nhớ Do đó,
nó là kiểu bảng được thao tác nhanh nhất Bởi cơ chế lưu trữ, dữ liệu sẽ bịmất đi khi máy tính không còn nguồn điện và đôi khi nó còn có thể gây ra
Trang 17tình trạng tràn bộ nhớ đối với máy chủ CSDL Các bảng HEAP không hỗ trợnhững trường có kiểu AUTO_INCREMENT, BLOB và TEXT.
Thao tác với bảng dữ liệu
2.1.4.1 Tạo bảng
Create table ten_bang (
Danh_sach_cac_truong) ENGINE= kieu_du_lieu_cua_bangTrong đó Danh_sach_cac_truong là tên các cột và kiểu dữ liệu của cột
2.1.4.2 Chỉnh sửa cấu trúc bảng
ALTER TABLE ten_bang
lua_chon_chinh_sua
Trong đó lựa chọn chỉnh sửa gồm:
+ Thêm cột: add ten_cot
+ Thêm khóa chính: add primary key ten_khoa
+ Thay đổi thuộc tính cột: change ten_cu ten_moi kieu_du_lieu
+ Xóa cột: drop ten_cot
+ Xóa khóa chính của trường: drop ten_khoa
+ Đổi tên của bảng: Rename ten_moi
2.1.4.3 Xóa bảng dữ liệu
- Cú pháp: Drop ten_bang
- Xóa trống dữ liệu của bảng: TRUNCATE TABLE ten_bang
Câu lệnh TRUNCATE TABLE xóa bỏ bảng dữ liệu rồi sau đó tạo lạichính bảng đó, câu lệnh này không hỗ trợ tính an toàn giao tác
Quản lý chỉ mục
2.1.5.1 Tạo chỉ mục
Trang 18CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name USING [BTREE | HASH | RTREE]
ON table_name (column_name [(length)] [ASC | DESC], )
Trong đó:
UNIQUE có nghĩa là MySQL sẽ tạo ràng buộc trên tất cả các giá trịcủa cột đều phải phân biệt lẫn nhau Tuy nhiên giá trị NULL lại có thể đượclặp ngoại trừ đối với bảng dữ liệu kiểu BDB
Chỉ mục FULLTEXT chỉ được hỗ trợ bởi MyISAM và chỉ hợp lệ đốivới những trường có kiểu CHAR, VARCHAR hay TEXT
Chỉ mục SPATIAL hỗ trợ cột trong bảng kiểu MyISAM Lưu ý, giátrị của cột không thể là NULL
- Câu lệnh SELECT có nhiều phần tùy chọn cho nhiều mục đích khác nhau.
Trong đó các mệnh đề FROM, WHERE, GROUP BY, HAVING, ORDER
Trang 19BY và LIMIT phải tuân theo thứ tự như trên Để truy vấn tất cả các cộttrong một bảng dữ liệu ta sử dụng cú pháp (*) thay vì liệt kê ra tên tất cảcác cột.
2.1.6.2 Insert
- Cú pháp: INSERT INTO `ten_bang` (`ten_cot1`, …., `ten_cotn`)
VALUES ([value-1],…., [value-n])
- Dạng 2: MySQL cho phép bạn xóa các dòng trên nhiều bảng dữ liệu
DELETE [LOW_PRIORITY] [QUICK]
table_name[.*] [, table_name[.*] ]
FROM table-references
[WHERE where_definition]
Trang 20- Dạng 3: tương tự với dạng thứ hai nhưng thay vì sử dụng từ khóa FROM
thì nó lại sử dụng từ khóa USING
DELETE [LOW_PRIORITY] [QUICK]
FROM table_name[.*] [, table_name[.*] ]
- Thủ tục thường trú tự gọi đến chính nó gọi là thủ tục thường trú đệquy Hầu hết các hệ quản trị csdl quan hệ đều hỗ trợ loại thủ tục thường trúnày nhưng MySQL (đến nay) thì vẫn chưa
- Gọi thủ tục: call ten_thutuc
- Khai báo biến trong thủ tục thướng trú
DECLARE ten_bien kieu_bien DEFAULT giatri_macdinh;
- Gán giá trị cho biến
DECLARE ten_bien kieu_bien DEFAULT giatri_macdinh;
SET ten_bien= giatri_gan
Trang 21Ngoài câu lệnh SET, chúng ta còn có thể sử dụng lệnh SELECT …INTO để gán giá trị cho biến.
2.1.7.2 Sử dụng con trỏ để duyệt trên kết quả truy vấn
- Bước 1: Khai báo con trỏ với cú pháp sau:
DECLARE cursor_name CURSOR FOR SELECT_statement;
- Bước 2: mở con trỏ để sử dụng
OPEN cursor_name;
- Bước 3: Lấy ra một dòng để xử lý và chuyển con trỏ sang dòng tiếp theo
FETCH cursor_name INTO variable list;
- Bước 4: đóng con trỏ, giải phóng bộ nhớ mà con trỏ chiếm giữ.
CLOSE cursor_name;
2.1.7.3 Trigger
- Tigger là một hoặc một tập các câu lệnh SQL được lưu trữ trong CSDL và
sẽ được kích hoạt bởi sự kiện mà nó theo dõi trên bảng dữ liệu Sự kiện đógắn liền với thao tác INSERT, UPDATE hay DELETE
- Đôi khi người ta xem trigger là một dạng đặc biệt của thủ tục thường trú
nếu xét về mặt mã lệnh viết trong thân trigger
Trang 22- View là một bảng ảo hay còn gọi là bảng logic được hình thành nên từ kết
quả truy vấn của câu lệnh SELECT Do bảng ảo cũng tương tự như bảng
dữ liệu nên chúng ta vẫn có thể truy vấn, cập nhật dữ liệu như các bảng dữliệu thông thường Khi dữ liệu ở các bảng dữ liệu thay đổi thì dữ liệu trongbảng ảo cũng thay đổi theo
- PHP (viết tắt chữ Hypertext Preprocessor) là ngôn ngữ lập trình phía server
được thiết kế để dễ dàng xây dựng các trang web động Mã PHP có thểthực thi trên server để tạo ra mã HTML và xuất ra trình duyệt web theo yêucầu của người sử dụng
Ngôn ngữ PHP ra đời năm 1994 Rasmus Lerdorf sau đó được phát triểnbởi nhiều người trải qua nhiều phiên bản
dễ dàng: gửi, nhận mail, làm việc với các cookie và nhiều thứ khác nữa
+ PHP là một ngôn ngữ rất dễ dùng, dễ học và đơn giản hơn nhiều sovới các ngôn ngữ khác như Java, Perl Nếu bạn đã biết ngôn ngữ C thì mọiviệc sẽ hoàn toàn thuận lợi
Trang 23+ PHP có thể sử dụng được trên nhiều hệ điều hành, chúng ta có thểviết chúng trên Unix, Linux và các phiên bản của Windows Và có thể đem
mã PHP này chạy trên các hệ điều hành khác mà không phải sửa lại mã
+ PHP làm việc tốt với nhiều hệ quản trị cơ sở
+ PHP là ngôn ngữ mã nguồn mở
Làm thế nào để chạy được kịch bản PHP
Để chạy được mã lệnh PHP chúng ta cần phải có một môi trườngserver Vì PHP là ngôn ngữ làm việc trên server Để tạo ra môi trường serverthì cách tốt nhất và nhanh nhất chúng ta nên sử dụng gói Xampp Xampp làgói cài đặt đã tích hợp sẵn Apache, MySQL và PHP Xampp cũng bao gồmphpMyadmin – một công cụ dạng web giúp cho người lập trình quản trịdatabase một cách dễ dàng và rất nhiều thư viện hỗ trợ lập trình khác như:OpenSSL, Pdf dass
Cú pháp PHP
- Để lập trình bằng ngôn ngữ PHP cần chú ý những điểm sau:
Cuối câu lệnh có dấu ;
Biến có tiền tố là $
Mỗi phương thức đều bắt đầu { và đóng bằng dấu }
Khi khai báo biến thì không có kiểu dữ liệu
Nên có giá trị khởi đầu cho biến khai báo
Phải có ghi chú cho mỗi feature mới
Sử dụng dấu // và # để giải thích cho mỗi câu ghi chú
Sử dụng /* và */ cho mỗi đoạn ghi chú
Khai báo biến có phân biệt chữ hoa hay thường
- Khai báo biến trong PHP không cần khai báo kiểu dữ liệu nhưng sửdụng tiền tố $ trước biến:
$ten_bien [=giatri_khoidau];
Trang 24Array Mảng với nhiều kiểu dữ liệu
Trang 25* /
%
Cộng Trừ Nhân Chia Chia lấy dư
+=
-=
Not And Or Bằng Tăng Giảm
!a
a && b
a || b
a = b a++ a
Trang 26-Biến FORM như một loại biến, thay vì khai báo thì biến đó chính làtên của thẻ nhập liệu trong trang submit hay tham số trên thực thi truy vấn.
- Biến form từ form được submit với phương thức POST Trong trang
ta submit đến, nếu khai báo tên của thẻ nằm trong thẻ form có tên là xyz thìbiến form được định nghĩa là $xyz
- Biến form từ form được submit với phương thức GET
- Nếu sử dụng phương thức GET trong thẻ form, ta có thể lấy giá trịcủa các tham số trên chuỗi Query bằng biến form
SESSION và COOKIE
Cookie và session là hai phương pháp sử dụng để quản lý các phiênlàm việc giữa người sử dụng và hệ thống Việc quản lý phiên làm việc này sẽgiúp bạn tạo ra sự chứng thực hiệu quả bởi việc xác nhận thông tin trước khitruy cập vào một phân vùng cố định
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 khibrowser tải 1 trang web từ server
- Thiết lập COOKIE:
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
- Sử dụng COOKIE:
Để 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"]
- Hủy COOKIE:
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 27 SESSION
Mộ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 đượcbắ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 khingười sử dụng thoát khỏi ứng dụng Mỗi session sẽ có được cấp một địnhdanh (ID) khác nhau và nội dung được lưu trong thư mục thiết lập trong filephp.ini (tham số session.save_path)
- Thiết lập SESSION :
Để 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ữnglệnh echo, printf
Để thiết lập 1 giá trị session, ngoài việc cho phép bắt đầu thực thisession 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")
- Sử dụng giá trị của SESSION:
Giống với cookie Để sử dụng giá trị của session ta sử dụng mã lệnhsau:
Để 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
Chương 3
Trang 28PHÂN TÍCH BÀI TOÁN
Yêu cầu chung về hệ thống
Cơ bản áp dụng rộng rãi, phổ biến cho nhiều người có thể sử dụngđược, ít xảy ra lỗi, đầy đủ, rành mạch, rõ ràng
Có các chức năng cơ bản như: Quản lý danh mục, quản lý người dùng,đăng và quản lý bài, tìm kiếm thông tin…
Giao diện đơn giản, thân thiện, đẹp và dễ nhìn
Đáp ứng được tính bảo mật trên website nói chung
Thao tác nhanh chóng, hợp lý, hiệu quả, chính xác
Cập nhật, phục hồi và sao lưu dữ liệu
Yêu cầu bài toán
- Khi một khách hàng truy cập vào website có khả năng xem và tìm kiếm
những món ăn mà họ muốn theo tên mặt hàng, theo danh mục mặt hàng.Khi khách hàng xem một món ăn cụ thể, website sẽ đưa ra thông tin chi tiết
về món ăn, bao gồm mô tả, hình ảnh và giá cả Nếu khách hàng muốn đặt
bàn thì có thể click vào nút Chọn món hoặc Đặt bàn rồi chọn món (hoặc
chọn sau) và điền thông tin cá nhân để gửi cho nhà hàng
- Khi có khách đặt bàn, quản lý nhà hàng sẽ gọi lại cho khách vào số điện
thoại mà khách đã điền trong thông tin để xác thực lại và để bàn cho khách
Mục đích của trang web
- Đối với khách hàng: Trang web cần đáp ứng được những yêu cầu sau:
Hiển thị rõ ràng các món ăn của nhà hàng với hình ảnh, giá cả và đầy
đủ chi tiết, các bàn còn trống hay đã để khách hàng có thể xem và lựa chọn
Trang 29Cung cấp chức năng tìm kiếm nhanh cho khách hàng Mục đích lớnnhất của khách hàng khi ghé thăm một trang web là tìm kiếm những thứ mìnhcần, do vậy chức năng tìm kiếm là rất quan trọng.
Sau khi khách hàng chọn lựa xong món ăn thì hệ thống phải cung cấpthông tin làm đơn đặt món và đặt bàn để gửi về cho người quản trị
- Đối với nhà quản lý: Khi Admin đăng nhập thành công và hệ thống quản
lý, Admin có thể làm những công việc sau:
Có thể thực hiện chức năng cập nhập (thêm, sửa, xóa) đối với các món
ăn, danh mục món ăn, đơn hàng, tin tức, bàn, ca, ảnh
Thêm User cùng quản trị toàn bộ hệ thống trang web
Tiếp cận và xử lí các đơn đặt món và đặt bàn của khách hàng
Thống kê các món ăn, đơn đặt, doanh thu của nhà hàng trên trang web
Đối tượng sử dụng hệ thống
Có ba đối tượng tham gia trực tiếp vào quá trình tương tác vớiwebsite là: Khách hàng, nhà quản lý và nhân viên
+) Khách hàng: là đối tượng có nhu cầu tìm hiểu và đặt món, đặt bàn
của nhà hàng trực tiếp trên website
+) Nhà quản lý: là người quản lý toàn bộ hệ thống trang web, gọi tắt là
Admin sẽ được cung cấp một username và password
+) Nhân viên: quản lý trang web, cũng sẽ được cung cấp một username
Trang 30Quản lý món ăn: Quản lý các danh mục và các món ăn có trên trangweb, chứa chức năng thêm, sửa, xóa các món trên trang web.
Quản lý các chức năng khác: Quản lý tin tức, ảnh, bàn, ca đặt…có trêntrang web, chứa chức năng thêm, sửa, xóa các món trên trang web
Quản lý đơn đặt: quản lý các đơn đặt khi khách hàng đặt thành công vàthanh toán cho khách
Xử lý đơn đặt: Kiểm tra các đơn đặt của khách nếu đạt yêu cầu thì chuyểnqua bộ phận nhà bếp, thanh toán, nếu không đủ thì phải thông báo với khách
Thống kê doanh thu
Tìm kiếm: Theo tên món ăn, theo danh mục món ăn
Xác định các tác nhân ngoài và hồ sơ dữ liệu
Bảng 3.1 Các tác nhân ngoài và hồ sơ dữ liệuDanh từ Xác định các tác nhân ngoài và hồ sơ DLKhách hàng Tác nhân ngoài
Người dùng Tác nhân ngoài
Món ăn Hồ sơ dữ liệu
Danh mục Hồ sơ dữ liệu
Admin Hồ sơ dữ liệu
Đơn đặt Hồ sơ dữ liệu
Hóa đơn Hồ sơ dữ liệu
Báo cáo Hồ sơ dữ liệu
Trang 31Mô hình phân cấp chức năng
Nhóm các chức năng theo mạch công việc
Bảng 3.2 Các chức năng theo mạch công việc
Các chức năng Gộp nhóm chứcnăng
Gộp nhómchưc năngmức đỉnh1.1 Đăng kí
1.2 Chỉnh sửa tài khoản
1.3 Đăng nhập
1.0 Quản lý User
Quảng bá vàquản lý đặtmón cho nhàhàng lẩuSUMO
2.1 Cập nhật danh mục món ăn
2.2 Cập nhật món ăn
2.0 Quản lý món ăn
3.1 Đặt bàn
3.2 Đặt món
3.3 Xử lý đơn đặt
3.0 Quản lý đơn đặt
4.1 Tìm kiếm theo tên món ăn
4.2 Tìm kiếm theo danh mục món ăn
4.0 Tìm kiếm
5.1 Thống kê đơn đặt
5.2 Thống kê doanh thu
5.0 Thống kê
Trang 32 Sơ đồ phân cấp chức năng
Hình 3.1 Sơ đồ phân cấp chức năng
Trang 33- Đăng nhập: cho phép Admin đăng nhập vào hệ thống trang web vớitài khoản của mình để thực hiện các công việc.
(2) Quản lý món ăn: là chức năng dùng để quản lý các danh mục và
món ăn có trên trang web
- Cập nhật danh mục món ăn: chứa chức năng thêm, sửa, xóa các loạimón ăn trên trang web
- Cập nhật món ăn: chứa các chức năng thêm, sửa, xóa các món ăn trêntrang web
(3) Quản lý đơn đặt: dùng để quản lý các đơn đặt khi khách hàng đặt
thành công và đem chúng đi xử lý, chuẩn bị và thanh toán cho khách
- Đặt bàn: Khách hàng sẽ đặt bàn qua hệ thống website (có thể đặt món
trước hoặc sau khi đến nhà hàng sẽ gọi món)
- Đặt món: Khách hàng sẽ đặt món qua hệ thống website hoặc khi đếncửa hàng sẽ gọi món
- Xử lý đơn đặt: kiểm tra các đơn hàng của khách nếu đạt yêu cầu thì
chuyển qua xử lý và thanh toán, không đủ yêu cầu thì thông báo tới kháchhàng cập nhật lại
(4) Tìm kiếm: cho phép khách hàng tìm kiếm nhanh thông tin của sản
phẩm mình cần trên website
- Tìm kiếm theo tên món ăn: cho phép khách hàng tìm kiếm các món ăn
có tên trùng hoặc tương tự từ khóa tên món ăn khách hàng nhập vào ô tìmkiếm
- Tìm kiếm theo danh mục món ăn: cho phép khách hàng tìm kiếm
nhanh các món ăn thuộc một danh mục món ăn nào đó trên website
(5) Thống kê: Đưa ra các thông tin về món ăn, các hoạt động của trang
web
Trang 34Xóa tài khoản (1.2.2)
Sửa tài khoản(1.2.1)
Chỉnh sửa tài khoản
Sơ đồ chi tiết từng chức năng:
Chỉnh sửa tài khoản
Hình 3.2 Sơ đồ chi tiết chức năng “Chỉnh sửa tài khoản”
Cập nhật danh mục món ăn
Hình 3.3 Sơ đồ chi tiết chức năng “Cập nhật danh mục món ăn”