Tên đề tài: Xây dựng website hỗ trợ tìm kiếm và đặt phòng khách sạn Sinh viên thực hiện: Phan Thị Thanh Thảo Mã SV: 1911505310258 Lớp: 19T2 Trong bối cảnh kinh tế Việt Nam đang hoà nhập
Trang 2Đà Nẵng, 01/2024 TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
ĐỒ ÁN TỐT NGHIỆP
ĐẠI HỌC NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
Trang 5Tên đề tài: Xây dựng website hỗ trợ tìm kiếm và đặt phòng khách sạn Sinh viên thực hiện: Phan Thị Thanh Thảo
Mã SV: 1911505310258 Lớp: 19T2 Trong bối cảnh kinh tế Việt Nam đang hoà nhập với nền kinh tế thế giới, nhu cầu hợp tác, giao lưu và trao đổi văn hoá ngày càng nhiều…Đồng nghĩa với việc nhu cầu đi lại, ăn ở của du khách nước ngoài khi đến thăm Việt Nam, cũng như khách trong nước ngày càng tăng cao Có một thực tế cho thấy rằng, khó khăn trở ngại đối với du khách khi có ý định đến Việt Nam là vấn đề chỗ ở, nơi nghỉ dưỡng Việc đặt được một nơi để dừng chân, nghỉ ngơi trở thành nổi trăn trở rất lớn đối với mỗi du khách, trong khi đó hệ thống các khách sạn ở nước ta đang ngày càng phát triển, hiện đại và tiện nghi Tuy nhiên, việc để du khách biết đến các khách sạn lại chưa được giải quyết đúng đắn,…
Nhằm mong muốn tạo ra một hệ thống website cho phép người dùng có thể tìm kiếm thông tin về các khách sạn tại Việt Nam, đồng thời hỗ trợ việc đặt phòng trước qua mạng, em đã tập trung và tìm hiểu thực hiện đề tài: “XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VÀ ĐẶT PHÒNG KHÁCH SẠN” Người dùng có thể sử dụng và tra cứu nhanh chóng nơi ở mong muốn, cũng như đặt phòng một cách dễ dàng hơn, kết nối khách hàng và chủ khách sạn,…
Trang 6Giảng viên hướng dẫn: TS Nguyễn Tấn Thuận Sinh viên thực hiện: Phan Thị Thanh Thảo Mã SV: 1911505310258
1 Tên đề tài
Xây dựng website hỗ trợ tìm kiếm và đặt phòng khách sạn
2 Các số liệu, tài liệu ban đầu
- Dựa trên qui định upload tài liệu, các qui tắc đặt câu hỏi - Ngôn ngữ PHP
- Công nghệ Laravel Framework
3 Nội dung chính của đồ án
- Chương 1: Tổng quan đề tài - Chương 2: Cơ sở lý thuyết - Chương 3: Phân tích thiết kế hệ thống - Chương 4: Kết quả triển khai hệ thống - Kết luận và hướng phát triển
4 Các sản phẩm dự kiến
- Xây dựng website hỗ trợ tìm kiếm và đặt phòng khách sạn - File báo cáo hoàn chỉnh
5 Ngày giao đồ án: 05/09/2023 6 Ngày nộp đồ án: 21/01/2024
Đà Nẵng, ngày tháng năm 2024
TS Nguyễn Tấn Thuận
Trang 7Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến quý thầy cô đã giúp đỡ chúng em thực hiện đề tài này Đặc biệt là TS Nguyễn Tấn Thuận đã tận tình giúp đỡ em trong suốt quá trình thực hiện đề tài tốt nghiệp này
Đồng thời, em cũng xin cảm ơn quý thầy cô thuộc ngành Công nghệ thông tin khoa Công nghệ số, trường Đại học Sư phạm Kỹ thuật - Đại học Đà Nẵng đã truyền đạt những kiến thức cần thiết và những kinh nghiệm quý báu cho chúng em trong suốt thời gian 4 năm trên giảng đường để em có thể thực hiện tốt đề tài này Đặc biệt, em xin gởi lời cảm ơn chân thành tới TS Hoàng Thị Mỹ Lệ, TS Nguyễn Tấn Thuận, cùng ThS Lê Vũ - giáo viên chủ nhiệm lớp 19T2 đã giúp đỡ em rất nhiều trong quá trình học tập và công việc
Trong quá trình thực hiện đề tài, do kiến thức và thời gian còn hạn chế nên không thể tránh khỏi những sai sót Vì vậy em mong quý thầy, cô thông cảm và góp ý để em có thể hoàn thiện đề tài Và những lời góp ý đó có thể giúp em có thể tránh được những sai lầm sau này
Em xin chân thành cảm ơn!
Trang 8Em xin cam đoan :
1 Những nội dung trong luận văn này do chúng em thực hiện dưới sự hướng dẫn của cô/thầy TS.Nguyễn Tấn Thuận
2 Mọi tham khảo trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình ,thời gian, địa điểm công bố
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, chúng em xin chịu hoàn toàn trách nhiệm
Sinh viên thực hiện
Phan Thị Thanh Thảo
Trang 9NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN i
NHẬN XÉT CỦA NGƯỜI PHẢN BIỆN ii
DANH SÁCH CHỮ VIẾT TẮT TIẾNG VIỆT iv
DANH SÁCH CHỮ VIẾT TẮT TIẾNG ANH i
MỞ ĐẦU 1
Chương 1 CƠ SỞ LÝ THUYẾT 1
1.1 Ngôn ngữ lập trình PHP 1
1.1.1 PHP là gì? 1
1.1.2 Tại sao nên sử dụng PHP? 1
1.2 Giới thiệu về Laravel framework 2
1.2.1 Tổng quan về Laravel Framework 2
1.2.2 Ưu điểm của Laravel 3
1.2.3 Nhược điểm của Laravel Framework 4
1.2.4 Các thành phần cơ bản của Laravel Framework 4
1.3 Tổng quan về hệ quản trị cơ sở dữ liệu MySQL 5
1.3.1 Ưu điểm của MySQL 6
1.3.2 Nhược điểm của MySQL 6
1.3.3 Các mối quan hệ và ràng buộc trong MySQL 7
1.4 Bootstrap và Responsive 7
Trang 102.2.2 Các yêu cầu chức năng 9
2.2.3 Yêu cầu phi chức năng 11
2.3 Biểu đồ Use-case 11
2.3.1 Đăng ký và đăng nhập 11
2.3.2 Quản lý tài khoản 12
2.3.3 Xem danh sách và tìm kiếm phòng khách sạn 12
2.3.4 Đặt phòng khách sạn 13
2.3.5 Use case Quản lý đặt phòng khách sạn 13
2.3.6 Use case Quản lý người dùng 14
2.3.7 Quản lý phân quyền 14
2.3.8 Quản lý phòng khách sạn 15
2.3.9 Quản lý chương trình khuyến mãi 15
2.3.10 Quản lý dịch vụ nâng cao 16
2.4 Scenarito cho Use case và Sơ đồ hoạt động 19
2.4.1 Scenario Use-case “Đăng ký và đăng nhập” 19
2.4.2 Scenario Use-case “Quản lý tài khoản” 20
2.4.3 Scenario Use-case “Xem danh sách và tìm kiếm phòng khách sạn” 22
2.4.4 Scenario Use-case “Đặt phòng khách sạn” 23
Trang 112.4.6 Scenario Use-case “Quản lý người dùng” 26
2.4.7 Scenario Use-case “Quản lý phân quyền” 27
2.4.8 Scenario Use-case “Quản lý phòng khách sạn” 29
2.4.9 Scenario Use-case “Quản lý chương trình khuyến mãi” 30
2.4.10 Scenario Use-case “Quản lý các dịch vụ nâng cao” 31
2.4.11 Scenario Use-case “Quản lý đơn đặt phòng” 33
2.4.12 Scenario Use-case “Quản lý tin tức” 34
2.4.13 Scenario Use-case “Quản lý phản hồi khách hàng” 35
2.4.14 Scenario Use-case “Quản lý lịch sử hoạt động” 37
2.4.15 Scenario Use-case “Thống kê” 38
2.6 Thiết kế giao diện 42
2.6.1 Đăng ký tài khoản 42
Trang 122.6.12 Quản lý dịch vụ nâng cao 51
2.6.13 Thống kê 52
2.7 Thiết kế bảng cơ sở dữ liệu 53
2.7.1 Bảng quản trị viên (admin) 53
2.7.2 Bảng lịch sử hoạt động (audits) 53
2.7.3 Bảng Đơn đặt phòng (Bookings) 54
2.7.4 Bảng chi tiết đơn đặt phòng (booking_detail) 55
2.7.5 Bảng Dịch vụ nâng cao (cost_booking) 55
2.7.6 Bảng Chi phí phát sinh (cost_overrun) 55
2.7.7 Bảng phản hồi khách hàng (feedbacks) 56
2.7.8 Bảng tin tức (news) 56
2.7.9 Bảng quyền (permissions) 57
2.7.10 Bảng phân quyền (role_has_permissions) 57
2.7.11 Bảng giá khuyến mãi (price_manager) 57
2.7.19 Bảng Điểm đặc trưng của phòng (tags) 61
2.7.20 Bảng tài khoản người dùng (users) 62
Trang 133.2 Giao diện chương trình 65
3.2.1 Giao diện trang chủ 65
3.2.2 Giao diện trang Đăng nhập 66
3.2.3 Giao diện Danh sách loại phòng 66
3.2.4 Giao diện Danh sách các phòng khách sạn 67
3.2.5 Giao diện Trang tin tức 68
3.2.6 Giao diện Trang liên hệ 69
3.2.7 Giao diện Quản lý hồ sơ 69
3.2.8 Giao diện Quản lý đơn đặt phòng 70
3.2.9 Giao diện trang Dashboard 70
3.2.10 Giao diện Quản lý khách hàng 71
3.2.11 Giao diện Quản lý phân quyền 71
3.2.12 Giao diện Quản lý loại phòng 72
3.2.13 Giao diện Quản lý Dịch vụ 72
3.2.14 Giao diện Quản lý phòng 73
3.2.15 Giao diện Quản lý giá khuyến mãi 73
3.2.16 Giao diện Quản lý dịch vụ nâng cao 74
3.2.17 Giao diện Quản lý đơn đặt phòng 74
3.2.18 Giao diện Quản lý Bảng tin 75
3.2.19 Giao diện Quản lý lịch sử hoạt động 75
3.2.20 Giao diện Quản lý Thống kê 76
KẾT LUẬN & HƯỚNG PHÁT TRIỂN 77
TÀI LIỆU THAM KHẢO 78
Trang 14Bảng 2.1: Scenario Use-case “Đăng ký và đăng nhập” 19
Bảng 2.2: Scenario Use-case “Quản lý tài khoản” 20
Bảng 2.3: Scenario Use-case “Xem danh sách và tìm kiếm phòng khách sạn” 22
Bảng 2.4: Scenario Use-case “Đặt phòng khách sạn” 23
Bảng 2.5: Scenario Use-case “Quản lý đặt phòng khách sạn” 25
Bảng 2.6: Scenario Use-case “Quản lý người dùng” 26
Bảng 2.7: Scenario Use-case “Quản lý phân quyền” 27
Bảng 2.8: Scenario Use-case “Quản lý phòng khách sạn” 29
Bảng 2.9: Scenario Use-case “Quản lý dịch vụ nâng cao” 31
Bảng 2.10: Scenario Use-case “Quản lý đơn đặt phòng” 33
Bảng 2.11: Scenario Use-case “Quản lý tin tức” 34
Bảng 2.12: Scenario Use-case “Quản lý phản hồi khách hàng” 35
Bảng 2.13: Scenario Use-case “Quản lý lịch sử hoạt động” 37
Bảng 2.14: Scenario Use-case “Thống kê” 38
Bảng 2.15: Bảng quản trị viên (admin) 53
Bảng 2.16: Lịch sử hoạt động (audits) 53
Bảng 2.17: Đơn đặt phòng (Bookings) 54
Bảng 2.18: Chi tiết đơn đặt phòng (booking_details) 55
Bảng 2.19: Dịch vụ nâng cao (cost_booking) 55
Bảng 2.20: Chi phí phát sinh (cost_overrun) 55
Bảng 2.21: Bảng phản hồi khách hàng (feedbacks) 56
Bảng 2.22: Bảng tin tức (news) 56
Bảng 2.23: Bảng quyền (permissions) 57
Bảng 2.24: Bảng phân quyền (role_has_permissions) 57
Bảng 2.25: Bảng giá khuyến mãi (price_manager) 57
Bảng 2.26: Bảng nhóm quyền (Roles) 58
Trang 15Bảng 2.33: Bảng Điểm đặc trưng của phòng (tags) 61
Bảng 2.34: Bảng tài khoản người dùng (users) 62
Bảng 2.35: Bảng bình chọn (vote_booking) 63
Bảng 2.36: Bảng quan hệ nhiều – nhiều giữa nhãn và phòng (room_tag) 63
Trang 16Hình 1.1: Sơ đồ hoạt động của PHP 2
Hình 1.2: Giới thiệu về Laravel 3
Hình 1.3: Mô hình MVC trong Laravel 5
Hình 1.4: Hệ quản trị cơ sở dữ liệu MySQL 6
Hình 1.5: Giới thiệu về Bootstrap 8
Hình 2.1: Use case đăng ký và đăng nhập 11
Hình 2.2: Use case Quản lý tài khoản 12
Hình 2.3: Use case Xem danh sách và tìm kiếm phòng 12
Hình 2.4: Use case Đặt phòng khách sạn 13
Hình 2.5: Use case Quản lý đặt phòng khách sạn 13
Hình 2.6: Usecase Quản lý người dùng 14
Hình 2.7: Use case Quản lý phân quyền 14
Hình 2.8: Use case Quản lý phòng khách sạn 15
Hình 2.9: Use case Quản lý chương trình khuyến mãi 15
Hình 2.10: Use case Quản lý dịch vụ nâng cao 16
Hình 2.11: Use case quản lý đơn đặt phòng 16
Hình 2.12: Use case Quản lý tin tức 17
Hình 2.13: Use case Quản lý phản hồi khách hàng 17
Hình 2.14: Use case Quản lý lịch sử hoạt động 18
Hình 2.15: Use case Thống kê 18
Hình 2.16: Activity “Đăng ký và đăng nhập” 20
Hình 2.17: Activity “Quản lý tài khoản” 21
Hình 2.18: Activity “Xem danh sách và tìm phòng khách sạn” 23
Hình 2.19: Activity “Đặt phòng khách sạn” 24
Hình 2.20: Activity “Quản lý Đơn đặt phòng” 25
Hình 2.21: Activity “Quản lý người dùng” 27
Hình 2.22: Activity “ Quản lý phân quyền” 28
Trang 17Hình 2.24: Scenario Use-case “Quản lý chương trình khuyến mãi” 30
Hình 2.25: Activity “Quản lý chương trình khuyến mãi” 31
Hình 2.26: Activity “Quản lý dịch vụ nâng cao” 32
Hình 2.27: Activity “Quản lý đơn đặt phòng” 34
Hình 2.28: Activity “Quản lý tin tức” 35
Hình 2.29: Activity “Quản lý phản hồi” 36
Hình 2.30: Activity “Quản lý li9chj sử hoạt động” 37
Hình 2.31: Activity “Thống kê” 38
Hình 2.32: Sequence “Đăng ký tài khoản” 39
Hình 2.33: Sequence “Đăng nhập” 39
Hình 2.34: Sequence “Tìm kiếm phòng khách sạn” 40
Hình 2.35: Sequence “Thêm mới phòng khách sạn” 40
Hình 2.36: Sequence “Thêm phòng vào đơn đặt phòng” 41
Hình 2.37: Sequence “Thanh toán” 41
Hình 2.38: Giao diện “Đăng ký tài khoản” 42
Hình 2.39: Giao diện “Đăng nhập” 43
Hình 2.40: Giao diện “Tìm phòng khách sạn” 44
Hình 2.41: Giao diện “Xem danh sách phòng khách sạn” 45
Hình 2.42: Giao diện “Đặt phòng – Thêm phòng vào hoá đơn” 46
Hình 2.43: Giao diện “Đặt phòng – Thanh toán” 47
Hình 2.44: Giao diện “Đặt phòng – Hoàn thành thanh toán” 48
Hình 2.45: Giao diện “Quản lý phòng khách sạn” 49
Hình 2.46: Giao diện “Quản lý phân quyền” 50
Hình 2.47: Giao diện “Quản lý đơn đặt phòng khách sạn” 50
Hình 2.48: Giao diện “Quản lý tin tức” 51
Hình 2.49: Giao diện “Quản lý dịch vụ nâng cao” 51
Hình 2.50: Giao diện “Thống kê” 52
Hình 2.51: Sơ đồ ERD 64
Trang 18Hình 3.2: Giao diện “Trang Đăng nhập” 66
Hình 3.3: Giao diện “Danh sách loại phòng” 66
Hình 3.4: Giao diện “Danh sách các phòng khách sạn” 67
Hình 3.5: Giao diện “Trang tin tức” 68
Hình 3.6: Giao diện “Trang liên hệ” 69
Hình 3.7: Giao diện “Quản lý hồ sơ” 69
Hình 3.8: Giao diện “Quản lý đơn đặt phòng” 70
Hình 3.9: Giao diện “Quản lý trang Dashboard” 70
Hình 3.10: Giao diện “Quản lý khách hàng” 71
Hình 3.11: Giao diện “Quản lý phân quyền” 71
Hình 3.12: Giao diện “Quản lý loại phòng” 72
Hình 3.13: Giao diện “Quản lý dịch vụ” 72
Hình 3.14: Giao diện “Quản lý Phòng khách sạn” 73
Hình 3.15: Giao diện “Quản lý giá khuyến mãi” 73
Hình 3.16: Giao diện “Quản lý dịch vụ nâng cao” 74
Hình 3.17: Giao diện “Quản lý đơn đặt phòng” 74
Hình 3.18: Giao diện “Quản lý Bảng tin” 75
Hình 3.19: Giao diện “Quản lý lịch sử hoạt động” 75
Hình 3.20: Giao diện “Quản lý Thống kê” 76
Trang 19Stt Chữ viết tắt Giải nghĩa
1 CNTT Công nghệ thông tin 2 CSDL Cơ sở dữ liệu
Trang 20Stt Chữ viết tắt Giải nghĩa Nghĩa tiếng Việt
1 HTML Hyper Text Markup
Language Ngôn ngữ đánh dấu siêu văn bản
2 ERD Entity Relationship
Diagram Sơ đồ thực thể quan hệ
3 PHP Personal Home Page
4 MVC Model-View-Controller Mô hình phát triển hệ thống MVC
5 SQL Structured Query
Language Ngôn ngữ truy vấn cấu trúc
Trang 21MỞ ĐẦU
Công nghệ thông tin ngày càng phát triển, đóng một phần quan trọng không chỉ trong nền kinh tế – văn hóa – xã hội, thậm chí còn trong các ngành khoa học công nghệ Máy tính điện tử hiện nay cũng không còn là phương tiện quý hiếm mà đang ngày càng trở thành một công cụ đắc lực trợ giúp con người Con người không ngừng khai thác các tài nguyên được cập nhật trên hệ thống mạng Internet, hay cũng có thể đăng tải và tìm kiếm những tài nguyên mình cần
Công nghệ thông tin và đặc biệt là Internet đã giúp cho con người thay đổi cách sống, cách liên lạc, cách làm việc, cách tiếp cận các nguồn thông tin đa dạng và nhanh chóng Mạng Internet ra đời là trợ thủ đắc lực giúp cho những người có nhu cầu tìm kiếm các tài nguyên nói chung, hay tìm kiếm các phòng khách sạn nói riêng trở nên dễ dàng hơn bao giờ hết Với người có nhu cầu thuê phòng khách sạn, việc tìm kiếm theo hình thức truyền thống sẽ rất khó khăn, mất thời gian và công sức để tìm những nơi phù hợp với tiêu chí của mình Đối với người cho thuê, việc tiếp cận với khách hàng gặp khá nhiều khó khăn do vị trí, cách thức truyền đạt hạn chế Giờ đây hệ thống mạng ra đời, chỉ với một chiếc máy tính được kết nối mạng là chúng ta có thể đăng tin và tìm kiếm các phòng khách sạn ở bất cứ địa điểm nào, giá cả phù hợp với nhu cầu một cách dễ dàng
Từ những lý do trên, em quyết định chọn đề tài “Xây dựng website hỗ trợ tìm kiếm và đặt phòng khách sạn” Với mong muốn tạo ra trang website, hỗ trợ người dùng tìm kiếm các phòng khách sạn phù hợp với nhu cầu
1 Mục tiêu đề tài
“Xây dựng website hỗ trợ tìm kiếm và đặt phòng khách sạn TAHO” là một website đặt phòng trực tuyến cung cấp cho doanh nghiệp và cá nhân nền tảng kinh doanh phù hợp với xu hướng của ngành công nghiệp 4.0 Ngoài ra, website mong muốn cung cấp và phục vụ khách hàng các chức năng đặt phòng tiện lợi, hiện đại cùng với trải nghiệm đặt phòng tốt nhất
2 Đối tượng nghiên cứu và phạm vi nghiên cứu a Đối tượng nghiên cứu
Phân tích thiết kế chức năng tìm kiếm, đặt phòng khách sạn
Trang 22b Phạm vi nghiên cứu
Đề tài được áp dụng tại Đà Nẵng và sau này có thể mở rộng phạm vi ra các thành phố/ tỉnh khác trên cả nước
3 Phương pháp nghiên cứu
• Phương pháp nghiên cứu lý thuyết thu thập thông tin qua internet, tài liệu, sách để tìm được các cơ sở lý thuyết liên quan vấn đề mình nghiên cứu
• Phương pháp triển khai thực nghiệm: xây dựng website
4 Giải pháp công nghệ
• Ngôn ngữ lập trình: PHP – Laravel Framework • Hệ quản trị cơ sở dữ liệu: MySQL
• Công cụ hỗ trợ: StartUML, Visual Studio Code
5 Cấu trúc của đồ án tốt nghiệp
Cấu trúc đồ án tốt nghiệp gồm các phần như sau: - Mở đầu: Nghiên cứu, tìm hiểu và đưa ra lý do chọn đề tài, mục tiêu và mục đích khi xây dựng và phát triển đề tài Xác định rõ phạm vi và đối tượng hướng đến, giải pháp công nghệ để triển khai, xây dựng đề tài, đồng thời phân tích đặc tả yêu cầu nghiệp vụ
- Chương I: Cơ sở lý thuyết Tìm hiểu, giới thiệu tổng quát các kiến thức về ngôn ngữ lập trình PHP, TypeScript, Laravel Framework, Bootstrap 5 và hệ quản trị cơ sở dữ liệu MySQL
- Chương II: Phân tích thiết kế hệ thống Phân tích các tác nhân và chức năng của từng tác nhân, yêu cầu phi chức năng của hệ thống Thiết kế sơ đồ use-case, sơ đồ hoạt động, sơ đồ ERD Thiết kế cơ sở dữ liệu Xây dựng kịch bản cho từng use-case trong hệ thống
- Chương III: Xây dựng giao diện và chức năng của hệ thống - Kết luận và Hướng phát triển: Kết luận chung cho các chương trong đồ án Trình bày những vấn đề đã giải quyết đồng thời trình bày hướng phát triển
Trang 23Thực chất PHP là ngôn ngữ kịch bản nhúng trong HTML, nói một cách đơn giản đó là một trang HTML có nhúng mã PHP, PHP có thể được đặt rải rác trong HTML
PHP là một ngôn ngữ lập trình được kết nối chặt chẽ với máy chủ, là một công nghệ phía máy chủ (Server-Side) và không phụ thuộc vào môi trường (cross- platform) Đây là hai yếu tố rất quan trọng, thứ nhất khi nói công nghệ phía máy chủ tức là nói đến mọi thứ trong PHP đều xảy ra trên máy chủ, thứ hai, chính vì tính chất không phụ thuộc môi trường cho phép PHP chạy trên hầu hết trên các hệ điều hành như Windows, Unix và nhiều biển thể của nó Đặc biệt các mã kịch bản PHP viết trên máy chủ này sẽ làm việc bình thường trên máy chủ khác mà không cần phải chỉnh sửa hoặc chỉnh sửa rất ít
Khi một trang Web muốn được dùng ngôn ngữ PHP thì phải đáp ứng được tất cả các quá trình xử lý thông tin trong trang Web đó, sau đó đưa ra kết quả ngôn ngữ HTML
Khác với ngôn ngữ lập trình, PHP được thiết kế để chỉ thực hiện điều gì đó sau khi một sự kiện xảy ra (ví dụ, khi người dùng gửi một biểu mẫu hoặc chuyển tới một URL
Để thiết kế Web động có rất nhiều ngôn ngữ lập trình khác nhau để lựa chọn, mặc dù cấu hình và tính năng khác nhau nhưng chúng vẵn đưa ra những kết quả giống
nhau Chúng ta có thể lựa chọn cho mình một ngôn ngữ: ASP, PHP, Java, Perl và
Trang 24một số loại khác nữa Vậy tại sao chúng ta lại nên chọn PHP Rất đơn giản, có những lí do sau mà khi lập trình Web chúng ta không nên bỏ qua sự lựa chọn tuyệt vời này
PHP được sử dụng làm Web động vì nó nhanh, dễ dàng, tốt hơn so với các giải pháp khác PHP có khả năng thực hiện và tích hợp chặt chẽ với hầu hết các cơ sở dữ liệu có sẵn, tính linh động, bền vững và khả năng phát triển không giới hạn Đặc biệt PHP là mã nguồn mở do đó tất cả các đặc tính trên đều miễn phí, và chính vì mã nguồn mở sẵn có nên cộng đồng các nhà phát triển Web luôn có ý thức cải tiến nó, nâng cao để khắc phục các lỗi trong các chương trình này
PHP vừa dễ với người mới sử dụng vừa có thể đáp ứng mọi yêu cầu của các lập trình viên chuyên nghiệp, mọi ý tuởng của các bạn PHP có thể đáp ứng một cách xuất sắc
Hình 1.1: Sơ đồ hoạt động của PHP
1.2 Giới thiệu về Laravel framework
Được phát triển dựa trên mô hình MVC, Laravel là một PHP Framework mã nguồn mở miễn phí với cú pháp rõ ràng, mạch lạc
Như đã chia sẻ ở bài viết trước, Framework hoặc “Software Framework” (tạm dịch: khung phần mềm) là “bộ khung” cung cấp đa số các kiểu mẫu thiết kế phù hợp với ứng dụng bạn sắp thực hiện, các thư viện, API, trình biên dịch Framework được cấu thành từ các đoạn code
MVC (Model-View-Controller) là mô hình phân bố source code thành 3 phần Mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các thành phần khác Cụ thể là:
Trang 25Model : Đây là nơi chứa những nghiệp vụ tương tác với dữ liệu hoặc hệ quản trị
cơ sở dữ liệu (mysql, mssql…) Thành phần Model bao gồm các class/function xử lý nhiều nghiệp vụ như kết nối database, truy vấn dữ liệu, thêm – xóa – sửa dữ liệu, …
View : Đây là nơi chứa những giao diện như nút bấm, khung nhập, menu, hình
ảnh, … Thành phần View sẽ đảm nhiệm nhiệm vụ hiển thị dữ liệu và giúp người dùng tương tác với hệ thống
Controller : Đây là nơi tiếp nhận những yêu cầu xử lý được gửi từ người dùng
Thành phần Controller sẽ gồm những class/ function xử lý nhiều nghiệp vụ logic giúp lấy đúng dữ liệu thông tin cần thiết và hiển thị dữ liệu đó ra cho người dùng qua lớp View
Hình 1.2: Giới thiệu về Laravel
• Tiếp cận các tính năng mới nhất mà PHP cung cấp Ưu điểm này đặc biệt hữu ích với người dùng Namespaces, Interfaces, Overloading, Anonymous functions và Shorter array syntax
• Tham khảo nguồn tài nguyên đa dạng tài liệu khác nhau Mỗi phiên bản phát hành của Laravel đều kèm theo nguồn tài liệu phù hợp để người dùng tiện tra cứu
• Tích hợp với dịch vụ mail dựa trên nền tảng đám mây hoặc local nhờ API sạch trên thư viện SwiftMailer
Trang 26• Tốc độ xử lý nhanh, đáp ứng như cầu tạo lập website hay các dự án lớn trong thời gian ngắn
• Dễ sử dụng nhờ tuân theo mẫu thiết kế mô hình 3 lớp MVC dễ hiểu • Tính bảo mật cao
• Hỗ trợ các cache backend như Memcached và Redis out-of-the-box • Công cụ tích hợp cho dòng lệnh – Artisan
• Tạo liên kết đến các route được đặt tên • Giảm đáng kể chu kỳ phát triển sản phẩm vì Laravel giúp tích hợp nhanh hơn
cùng sự hỗ trợ của cộng đồng Laracasts
• Không có sự liên kết giữa các phiên bản Ứng dụng có thể bị đình trệ, ngừng hoạt động hoặc phá vỡ nếu người dùng cố cập nhật code
• Làm chậm tốc độ tải trang vì Laravel quá nặng cho ứng dụng di động • Không hỗ trợ tính năng thanh toán
• Khái niệm route: Route trong Larvel cũng như các framework khác đều có
chức năng là định ra các dạng resquest (hiểu nôm na là url) định sẵn và cũng có các action (hành động) do chúng ta định nghĩa cho nó
• Các loại route trong Laravel: Laravel là một framework hỗ trợ rất đa dạng về
route, và cũng rất dễ sử dụng Nó gồm có các loại chính: o Route::get nhận resquest với phương thức GET o Route::post nhận resquest với phương thức POST o Route::put nhận resquest với phương thức PUT o Route::delete nhận resquest với phương thức DELETE
• View
o Khái niệm: Các view trong Laravel được lưu trữ trong thư mục
resources/views Có thể tạo thêm các thư mục trong thư mục resources/views đểphân cấp quản lý Các view có thể chứa mã HTML, CSS, Javascript phục vụ cho hiển thị nội dung cho người dùng
Trang 27o Tạo View trong Laravel: View trong Laravel không tạo được bằng
câu lệnh php artisan mà chỉ đơn giản là tạo một file mới trong các thư
mục con của resources/views với cấu trúc tên file như sau: tên-
view.blade.php
• Controller: Thực hiện điều hướng giữa Model và View sau khi nhận request từ
trình duyệt web o Để tạo mới một Controller ta sử dụng câu lệnh: php artisan make:
controller MyController o Sau khi thực hiện, nó sẽ tạo ra một file MyController.php trong thư mục
app/Http/Controllers Khi một yêu cầu gửi đến hệ thống Laravel sẽ tìm trong route và route sẽ gọi đến một hàm trong một Controller theo cú
pháp như sau: Route::get('base URI','controller@method');4
o Khi làm việc với Route::resource thì controller laravel hỗ trợ 8 action: index, create, store, show, edit, update, destroy nhưng trong controller không nhất thiếtphải tạo đủ 8 action này
Hình 1.3: Mô hình MVC trong Laravel
1.3 Tổng quan về hệ quản trị cơ sở dữ liệu MySQL
MySQL là ứng dụng cơ sở dữ liệu mã nguồn mở phổ biến nhất hiện nay và được sử dụng phối hợp với PHP Trước khi làm việc với MySQL cần xác định các nhu cầu cho ứng dụng
MySQL là cơ sở dữ có trình giao diện trên Windows hay Linux, cho phép người sử dụng có thể thao tác các hành động liên quan đến nó Việc tìm hiểu từng công nghệ trước khi bắt tay vào việc viết mã kịch bản PHP, việc tích hợp hai công nghệ PHP và MySQL là một công việc cần thiết và rất quan trọng
Trang 28Hình 1.4: Hệ quản trị cơ sở dữ liệu MySQL
Ngoài những lợi ích đã nêu ở trên, MySQL cũng còn một số hạn chế phải kể đến như MySQL có thể bị khai thác để chiếm quyền điều khiển Hơn thế nữa, MySQL
Trang 29không được tích hợp để sử dụng cho các hệ thống lớn cần quản lý lượng dữ liệu khổng lồ Ví dụ như các hệ thống siêu thị trên toàn quốc, ngân hàng, quản lý thông tin dân số cả nước,
Các ràng buộc(constraint) SQL được sử dụng để chỉ định các quy tắc cho dữ liệu trong bảng Các ràng buộc sau thường được sử dụng trong SQL:
• NOT NULL – Đảm bảo rằng một cột không thể có giá trị NULL • UNIQUE – Đảm bảo rằng tất cả các giá trị trong một cột là khác nhau • PRIMARY KEY – Xác định duy nhất từng hàng trong bảng
• FOREIGN KEY – Xác định duy nhất một hàng / bản ghi trong bảng khác • CHECK – Đảm bảo rằng tất cả các giá trị trong một cột thỏa mãn một điều kiện
Một khía cạnh khác là responsive web design làm cho trang web cung cấp được trải nghiệm tuyệt vời cho người dùng trên nhiều thiết bị, kích thước màn hình khác nhau Một trang có thể hoạt động tốt bất kể sự biến đổi sẽ cung cấp một trải nghiệm
Trang 30người dùng tốt và nhất quán hơn một trang được thiết kế cho một loại thiết bị và kích thước màn hình cụ thể
Hình 1.5: Giới thiệu về Bootstrap
Trang 31Website Booking Hotel là một website đặt phòng trực tuyến cung cấp cho doanh nghiệp và cá nhân nền tảng kinh doanh phù hợp với xu hướng của ngành công nghiệp 4.0 Ngoài ra, website còn cung cấp và phục vụ khách hàng các chức năng đặt phòng tiện lợi, hiện đại cùng với trải nghiệm đặt phòng tốt nhất
2.2 Đặc tả yêu cầu phần mềm
❖ Đề tài gồm ba tác nhân chính • Người dùng (User)
• Quản lý (Admin) • Hệ thống (System)
❖ Người dùng (User) • Xem danh sách phòng, xem chi tiết thông tin của phòng khách sạn • Tìm kiếm phòng khách sạn (lọc theo tên, loại phòng,…)
• Xem giá phòng, số sao đánh giá của phòng, khuyến mãi
Trang 32• Đặt phòng khách sạn online • Quản lý hồ sơ cá nhân • Xem lịch sử đặt phòng • Đăng nhập, đăng xuất, đổi mật khẩu
❖ Quản lý (Admin) • Xem danh sách thành viên • Tìm kiếm thành viên • Quản lý đặt phòng • Quản lý thanh toán • Quản lý khuyến mãi • Quản lý hồ sơ cá nhân • Đăng nhập, đăng xuất, đổi mật khẩu • Thống kê
- Thống kê doanh thu theo năm - Thống kê doanh thu theo tháng • Quản lý tài khoản
- Quản lý tài khoản - Quản lý phân quyền • Quản lý phòng khách sạn
- Quản lý phòng - Quản lý loại phòng - Quản lý dịch vụ - Quản lý điểm đặc trưng - Quản lý giá khuyến mãi - Quản lý chi phí phát sinh • Quản lý Đơn đặt phòng
- Quản lý Đặt phòng - Quản lý Phòng đến hạn • Quản lý tin tức
• Quản lý đánh giá
Trang 33❖ Hệ thống (System) • Gửi thông tin đơn đặt phòng • Gửi nội dung phản hồi • Gửi thông báo
• Hiển thị thông báo • Gửi email xác nhận đăng ký phòng/ tài khoản
• Giao diện, đẹp mắt, đơn giản, dễ sử dụng • Đảm bảo tính bảo mật, an toàn
Trang 342.3.2 Quản lý tài khoản
Hình 2.2: Use case Quản lý tài khoản
Hình 2.3: Use case Xem danh sách và tìm kiếm phòng
Trang 352.3.4 Đặt phòng khách sạn
Hình 2.4: Use case Đặt phòng khách sạn
Hình 2.5: Use case Quản lý đặt phòng khách sạn
Trang 362.3.6 Use case Quản lý người dùng
Hình 2.6: Usecase Quản lý người dùng
Hình 2.7: Use case Quản lý phân quyền
Trang 372.3.8 Quản lý phòng khách sạn
Hình 2.8: Use case Quản lý phòng khách sạn
Hình 2.9: Use case Quản lý chương trình khuyến mãi
Trang 382.3.10 Quản lý dịch vụ nâng cao
Hình 2.10: Use case Quản lý dịch vụ nâng cao
Hình 2.11: Use case quản lý đơn đặt phòng