Sinh viên thực hiện: Đinh Ngọc Trang Mã SV: 1811505310148 Lớp: 18T1 Nội dung chính: Quá trình xây dựng website Tra cứu giá tour du lịch - Vuivivu gồm: - Khảo sát những website của các do
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
ĐỒ ÁN TỐT NGHIỆP
ĐẠI HỌCNGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
Trang 2Đà Nẵng, tháng 06/2022
Trang 3ĐẠI HỌC ĐÀ NẴNG 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 4NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN
Trang 5NHẬN XÉT CỦA NGƯỜI PHẢN BIỆN
Trang 6TÓM TẮT
Tên đề tài: Xây dựng website Tra cứu giá tour du lịch - Vuivivu
Sinh viên thực hiện: Đinh Ngọc Trang
Mã SV: 1811505310148 Lớp: 18T1
Nội dung chính:
Quá trình xây dựng website Tra cứu giá tour du lịch - Vuivivu gồm:
- Khảo sát những website của các doanh nghiệp cung cấp dịch vụ du lịch
ở Việt Nam
- Phân tích thiết kế các chức năng của hệ thống
- Thiết kế bộ cào dữ liệu tự động từ các website cung cấp dịch vụ du lịch
- Xây dựng hệ thống tự động cào dữ liệu và cơ sở dữ liệu để lưu dữ liệucào
- Kiểm thử, ghi log và cài đặt lên server
- Thiết kế giao diện cho các chức năng
- Phân tích thiết kế cơ sơ dữ liệu của website
- Xây dựng hệ thống website
- Kiểm thử và cài đặt
- Hoàn thành bài báo cáo
Trang 7TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ
Giảng viên hướng dẫn: TS Phạm Tuấn
Sinh viên thực hiện: Đinh Ngọc Trang Mã SV: 1811505310148
1 Tên đề tài:
Xây dựng Website Tra cứu giá tour du lịch - Vuivivu
2 Các số liệu, tài liệu ban đầu:
- Tài liệu lập trình: https://laravel.com/docs/8.x
3 Nội dung chính của đồ án:
Quá trình xây dựng website Tra cứu giá tour du lịch - Vuivivu gồm:
- Khảo sát nghiệp vụ thực tế
- Phân tích thiết kế các chức năng của hệ thống
- Cào và lưu trữ dữ liệu
- Thiết kế giao diện cho các chức năng
- Phân tích thiết kế cơ sơ dữ liệu
- File báo cáo hoàn chỉnh
Trang 9LỜI NÓI ĐẦU
Lời đầu tiên, em không biết nói gì hơn ngoài bày tỏ sự biết ơn sâu sắc đến cácthầy cô bộ môn Trong suốt chặng đường học tập và làm đồ án tốt nghiệp em đã luônnhận được sự hướng dẫn, giúp đỡ tận tình của thầy cô
Đặc biệt, em xin bày tỏ sự kính trọng và lòng biết ơn sâu sắc nhất đến thầy giáohướng dẫn Phạm Tuấn, thầy là người đã trực tiếp hướng dẫn, giúp đỡ cho em để em cóthể hoàn thành đồ án này Trong quá trình học tập và nghiên cứu, nếu em có những saisót gì, kính mong thầy cô bỏ qua cho em!
Tuy em đã cố gắng tìm hiểu, phân tích, cài đặt và kiểm thử hệ thống tuy nhiên saisót là điều không thể tránh khỏi Em rất mong nhận được sự thông cảm và góp ý từquý thầy cô
Em xin kính chúc các thầy cô luôn luôn khỏe mạnh và ngày một thành công hơntrên con đường giảng dạy của mình
Em xin trân trọng cảm ơn !
Sinh viên thực hiệnĐinh Ngọc Trang
i
Trang 10CAM ĐOAN
Em xin cam đoan :
1. Đồ án tốt nghiệp Website tra cứu giá tour du lịch - Vuivivu là công trìnhnghiên cứu của bản thân mình dưới sự hướng dẫn của thầy giáo PhạmTuấn
2. Những phần có sử dụng tài liệu tham khảo có trong đồ án đã được liệt kê
và nêu rõ ra tại phần tài liệu tham khảo
3. Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, em xinchịu hoàn toàn trách nhiệm
Sinh viên thực hiệnĐinh Ngọc Trang
ii
Trang 11MỤC LỤC
NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN
NHẬN XÉT CỦA NGƯỜI PHẢN BIỆN
TÓM TẮT
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
YLỜI NÓI ĐẦU i
CAM ĐOAN ii
MỤC LỤC iii
DANH MỤC BẢNG BIỂU ix
DANH MỤC HÌNH VẼ x
DANH MỤC CHỮ VIẾT TẮT TIẾNG VIỆT xiii
DANH MỤC CHỮ VIẾT TẮT TIẾNG ANH xiv
MỞ ĐẦU 1
1 Mục tiêu đề tài 2
2 Đối tượng nghiên cứu và phạm vi nghiên cứu 2
a Đối tượng nghiên cứu 2
b Phạm vi nghiên cứu 2
3 Phương pháp nghiên cứu 2
4 Giải pháp công nghệ 3
5 Cấu trúc đồ án 3
Chương 1 TỔNG QUAN 4
1.1 Lí do chọn đề tài 4
1.2 Mục đích đề tài 4
1.3 Phạm vi đề tài và đối tượng nghiên cứu 5
1.3.1 Thông tin cần quản lý 5
iii
Trang 121.4 Đặc tả yêu cầu nghiệp vụ (Business Requirments) 6
1.4.1 Khách hàng vãng lai 6
1.4.2 Nhân viên 6
1.4.3 Quản lý 6
Chương 2 CƠ SỞ LÝ THUYẾT 7
2.1 Ngôn ngữ lập trình 7
2.1.1 Ngôn ngữ lập trình PHP 7
2.1.1.1 Khái niệm 7
2.1.1.2 Đặc điểm 7
2.1.2 Ngôn ngữ lập trình Python 8
2.1.2.1 Khái niệm 8
2.1.2.2 Đặc điểm 9
2.2 Cơ sở dữ liệu 9
2.2.1 MySQL 9
2.2.1.1 Khái niệm 9
2.2.1.2 Đặc điểm 10
2.2.2 MongoDB 10
2.2.2.1 Khái niệm 10
2.2.2.2 Đặc điểm 11
2.2.2.3 Hạn chế 11
2.3 Laravel Framework 12
2.3.1 Khái niệm 12
2.3.2 Mô hình MVC 13
Chương 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 15
3.1 Đặc tả yêu cầu phần mềm (Software Requirements) 15
iv
Trang 133.1.1 Khách hàng vãng lai : 15
3.1.2 Nhân viên : 15
3.1.3 Quản lý : 16
3.2 Sơ đồ Use-case 17
3.3 Kịch bản cho Use-case 18
3.3.1 Actor Khách hàng vãng lai 18
3.3.1.1 Use-case: Tra cứu tour 18
3.3.2 Actor Nhân viên 18
3.3.2.1 Use-case Cập nhật thông tin cá nhân 18
3.3.2.2 Use-case Thêm mới bài đăng 19
3.3.2.3 Use-case Thêm mới banner 19
3.3.2.4 Use-case Thêm mới quảng cáo 20
3.3.2.5 Use-case Chỉnh sửa bài đăng 21
3.3.2.6 Use-case Chỉnh sửa banner 21
3.3.2.7 Use-case chỉnh sửa quảng cáo 22
3.3.2.8 Use-case Quản lý hiển thị banner 22
3.3.2.9 Use-case Quản lý hiển thị quảng cáo 23
3.3.2.10 Use-case Xóa bài đăng 23
3.3.2.11 Use-case Xóa banner 24
3.3.2.12 Use-case Xóa quảng cáo 25
3.3.3 Actor Quản lý 25
3.3.3.1 Use-case Thêm mới nhân viên 25
3.3.3.2 Use-case cập nhật thông tin nhân viên 26
3.3.3.3 Use-case Quản lý quyền truy cập nhân viên 26
3.3.3.4 Use-case Xóa nhân viên 27
v
Trang 143.3.3.5 Use-case Xem lịch sử cào 27
3.3.3.6 Use-case Thống kê người dùng 28
3.3.3.7 Use-case Thống kê loại người dùng & thiết bị của người dùng 28
3.3.3.8 Use-case Truy xuất dữ liệu người dùng 29
3.4 Sơ đồ hoạt động 30
3.4.1 Actor Khách hàng vãng lai 30
3.4.1.1 Use-case Tìm kiếm tour du lịch 30
3.4.2 Actor Nhân viên 30
3.4.2.1 Use-case Đăng nhập 30
3.4.2.2 Use-case Cập nhật thông tin cá nhân 30
3.4.2.3 Use-case Đổi mật khẩu 31
3.4.2.4 Use-case thêm bài đăng 31
3.4.2.5 Use-case thêm banner 31
3.4.2.6 Use-case thêm quảng cáo 32
3.4.2.7 Use-case Sửa bài đăng 32
3.4.2.8 Use-case Sửa banner 32
3.4.2.9 Use-case Sửa quảng cáo 33
3.4.2.10 Use-case Quản lý hiển thị banner 33
3.4.2.11 Use-case Quản lý hiện thị quảng cáo 33
3.4.2.12 Use-case Xóa bài đăng 33
3.4.2.13 Use-case Xóa banner 33
3.4.2.14 Use-case Xóa quảng cáo 34
3.4.3 Actor Quản lý 34
3.4.3.1 Use-case Thêm nhân viên 34
3.4.3.2 Use-case Sửa thông tin nhân viên 34
vi
Trang 153.4.3.3 Use-case Xóa nhân viên 34
3.4.3.4 Use-case Quản lý trạng thái nhân viên 35
3.4.3.5 Use-case Xem lịch sử cào dữ liệu 35
3.4.3.6 Use-case Thống kê người truy cập 35
3.4.3.7 Use-case Thống kê loại người dùng và thiết bị của người dùng .35 3.4.3.8 Use-case Xuất dữ liệu thống kê người truy cập 35
3.5 Sơ đồ ERD 36
3.6 Sơ đồ Relationship Database trong Hệ quản trị MySQL 36
3.7 Sơ đồ cào dữ liệu 37
3.8 Sơ đồ luồng dữ liệu 37
Chương 4 XÂY DỰNG CHƯƠNG TRÌNH 38
4.1 Công cụ xây dựng chương trình 38
4.2 Giao diện chương trình 38
4.2.1 Giao diện trang người dùng 38
4.2.1.1 Giao diện trang chủ 38
4.2.1.2 Giao diện trang tour 39
4.2.1.3 Giao diện trang tìm kiếm tour 40
4.2.1.4 Giao diện trang bài viết 41
4.2.1.5 Giao diện trang chi tiết bài viết 42
4.2.2 Giao diện trang quản trị 43
4.2.2.1 Giao diện trang đăng nhập 43
4.2.2.2 Giao diện trang quản lý 44
4.2.2.3 Giao diện trang thông tin cá nhân 45
4.2.2.4 Giao diện trang quản lý nhân viên 46
4.2.2.5 Giao diện trang lịch sử cào dữ liệu 48
vii
Trang 164.2.2.6 Giao diện trang quản lý danh mục 48
4.2.2.7 Giao diện trang quản lý banner 50
4.2.2.8 Giao diện trang quảng lý quảng cáo 51
4.2.2.9 Giao diện trang quản lý bài đăng 54
4.2.2.10 Giao diện trang thống kê 56
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 59
4.3 Kết luận 59
4.4 Hướng phát triển 59
TÀI LIỆU THAM KHẢO 60
viii
Trang 17DANH MỤC BẢNG BIỂU
Bảng 3.1: Kịch bản cho usecase Tìm kiếm 18
Bảng 3.2: Kịch bản cho usease Cập nhật thông tin cá nhân 18
Bảng 3.3: Kịch bản cho usecase Thêm mới bài đăng 19
Bảng 3.4: Kịch bản cho usecase Thêm mới banner 19
Bảng 3.5: Kịch bản cho usecase Thêm mới quảng cáo 20
Bảng 3.6: Kịch bản cho usecase Chỉnh sửa bài đăng 21
Bảng 3.7: Kịch bản cho usecase Chỉnh sửa banner 21
Bảng 3.8: Kịch bản cho usecase Chỉnh sửa quảng cáo 22
Bảng 3.9: Kịch bản cho usecase Quản lý hiển thị banner 22
Bảng 3.10: Kịch bản cho use-case Quản lý hiển thị quảng cáo 23
Bảng 3.11: Kịch bản cho use-case Xóa bài đăng 23
Bảng 3.12: Kịch bản cho use-case Xóa banner 24
Bảng 3.13: Kịch bản cho use-case Xóa quảng cáo 25
Bảng 3.14: Kịch bản cho use-case Thêm mới nhân viên 25
Bảng 3.15: Kịch bản cho use-case Cập nhật thông tin nhân viên 26
Bảng 3.16: Kịch bản cho use-case Quản lý quyền truy cập nhân viên 26
Bảng 3.17: Kịch bản cho use-case Xóa nhân viên 27
Bảng 3.18: Kịch bản cho use-case Xem lịch sử cào 27
Bảng 3.19: Kịch bản cho use-case Thống kê người dùng 28
Bảng 3.20: Kịch bản cho use-case Thống kê loại người dùng & thiết bị 28
Bảng 3.21: Kịch bản cho use-case truy xuất dữ liệu người dùng 29
ix
Trang 18DANH MỤC HÌNH VẼ
Hình 1.1: Hình ảnh trang tìm tour của website: travel.com.vn 4
Hình 1.2: Thông tin cần quản lý 5
Hình 2.1: Ngôn ngữ lập trình PHP 7
Hình 2.2: Ngôn ngữ lập trình Python 8
Hình 2.3: Hệ quản trị cơ sở dữ liệu MySQL 10
Hình 2.4: Cơ sở dữ liệu noSql - MongoDB 11
Hình 2.5: Mô tả Laravel 12
Hình 2.6:Mô hình MVC trong Laravel 12
Hình 3.1: Use-case Diagram 17
Hình 3.2: Sơ đồ hoạt động cho usecase Tìm kiếm tour du lịch 30
Hình 3.3: Sơ đồ hoạt động cho usecase Đăng nhập 30
Hình 3.4: Sơ đồ hoạt động cho usecase Cập nhật thông tin cá nhân 30
Hình 3.5: Sơ đồ hoạt động cho usecase Đổi mật khẩu 31
Hình 3.6: Sơ đồ hoạt động cho usecase Thêm bài đăng 31
Hình 3.7: Sơ đồ hoạt động cho usecase thêm banner 31
Hình 3.8: Sơ đồ hoạt động cho usecase thêm quảng cáo 32
Hình 3.9: Sơ đồ hoạt động cho usecase Sửa bài đăng 32
Hình 3.10: Sơ đồ hoạt động cho usecase Sửa banner 32
Hình 3.11: Sơ đồ hoạt động cho usecase Sửa quảng cáo 33
Hình 3.12: Sơ đồ hoạt động cho usecase Quản lý hiển thị banner 33
Hình 3.13: Sơ đồ hoạt động cho usecase Quản lý hiển thị quảng cáo 33
Hình 3.14: Sơ đồ hoạt động cho usecase Xóa bài đăng 33
Hình 3.15: Sơ đồ hoạt động cho usecase Xóa banner 33
Hình 3.16: Sơ đồ hoạt động cho usecase Xóa quảng cáo 34
x
Trang 19Hình 3.17: Sơ đồ hoạt động cho usecase Thêm nhân viên 34
Hình 3.18: Sơ đồ hoạt động cho usecase Sửa thông tin nhân viên 34
Hình 3.19: Sơ đồ hoạt động cho usecase Xóa nhân viên 34
Hình 3.20: Sơ đồ hoạt động cho usecase Quản lý trạng thái nhân viên 35
Hình 3.21: Sơ đồ hoạt động cho usecase Xem lịch sử cào dữ liệu 35
Hình 3.22: Sơ đồ hoạt động cho usecase Thống kê người truy cập 35
Hình 3.23: Sơ đồ hoạt động cho usecase Thống kê loại người dùng & thiết bị 35
Hình 3.24: Sơ đồ hoạt động cho usecase Xuất dữ liệu thống kê người truy cập 35
Hình 3.25: Sơ đồ ERD 36
Hình 3.26: Sơ đồ Relationship Database trong hệ quản trị MySQL 36
Hình 3.27: Sơ đồ cào dữ liệu 37
Hình 3.28: Sơ đồ luồng dữ liệu 37
Hình 4.1: Giao diện trang chủ 38
Hình 4.2: Giao diện trang tour 39
Hình 4.3: Giao diện trang tìm kiếm tour 40
Hình 4.4: Giao diện trang bài viết 41
Hình 4.5: Giao diện trang chi tiết bài viết 42
Hình 4.6: Giao diện trang quản trị - Đăng nhập 43
Hình 4.7: Giao diện trang quản trị - Đăng nhập sai mật khẩu 43
Hình 4.8: Giao diện quản trị - Đăng nhập tài khoản bị khóa 43
Hình 4.9: Giao diện xác thực email 44
Hình 4.10: Giao diện trang quản lý ( nhân viên) 44
Hình 4.11: Giao diện trang quản lý (quản lý) 44
Hình 4.12: Giao diện thông tin cá nhân 45
Hình 4.13: Giao diện kết quả khi đổi thông tin cá nhân 45
Hình 4.14: Giao diện kết quả khi đổi mật khẩu 45
Hình 4.15: Giao diện tạo mới nhân viên 46
Hình 4.16: Giao diện tất cả nhân viên 46
Hình 4.17: Giao diện chỉnh sửa nhân viên 47
Hình 4.18: Giao diện Khóa/Mở khóa nhân viên 47
xi
Trang 20Hình 4.19: Giao diện xóa nhân viên 47
Hình 4.20: Giao diện trang lịch sử cào dữ liệu 48
Hình 4.21: Giao diện tạo mới danh mục 48
Hình 4.22: Giao diện tất cả danh mục 49
Hình 4.23: Giao diện chỉnh sửa danh mục 49
Hình 4.24: Giao diện kết quả xóa danh mục 49
Hình 4.25: Giao diện tạo mới banner 50
Hình 4.26: Giao diện tất cả banner 50
Hình 4.27: Giao diện chỉnh sửa banner 50
Hình 4.28: Giao diện Ẩn/ Hiện banner 51
Hình 4.29: Giao diện xóa banner 51
Hình 4.30: Giao diện tạo mới quảng cáo 51
Hình 4.31: Giao diện tất cả quảng cáo 52
Hình 4.32: Giao diện tạo chỉnh sửa quảng cáo 52
Hình 4.33: Giao diện Ẩn/Hiện quảng cáo 53
Hình 4.34: Giao diện xóa quảng cáo 53
Hình 4.35: Giao diện tạo mới bài đăng 54
Hình 4.36: Giao diện tất cả bài đăng 54
Hình 4.37: Giao diện chỉnh sửa bài đăng 55
Hình 4.38: Giao diện xóa bài đăng thành công 55
Hình 4.39: Giao diện thống kê người dùng và lượt xem 56
Hình 4.40: Giao diện thống kê trong khoảng thời gian 57
Hình 4.41: File dữ liệu thống kê khi chọn xuất dữ liệu 58
Hình 4.42: Giao diện thống kê loại người dùng & thiết bị 58
xii
Trang 21DANH MỤC CHỮ VIẾT TẮT TIẾNG VIỆT
Stt Chữ viết tắt Giải nghĩa
xiii
Trang 22DANH MỤC CHỮ VIẾT TẮT TIẾNG ANH
Stt Chữ viết tắt Giải nghĩa Nghĩa tiếng Việt
Language Ngôn ngữ đánh dấu siêu văn bản
2 CSS Cascading Style Sheets Tập tin định kiểu theo tầng
3 PHP Hypertext Preprocessor
4 SQL Structured Query Language Ngôn ngữ truy vấn mang tính cấu
trúc
6 SMTP Simple Mail Transfer
Protocol
Giao thức truyền tải thư tín đơngiản hóa
7 ERD Entity Relationship Diagram Mô hình mối quan hệ thực thể
8 NoSQL Non-relational Data
Management System
Hệ thống quản lý dữ liệu khôngquan hệ
9 RDBMS Relational Database
Management System Hệ quản trị cơ sỡ dữ liệu quan hệ
10 JSON JavaScript Object Notation
11 MVC Model-View-Controller
xiv
Trang 23WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
MỞ ĐẦU
Hiện nay, kinh tế và mức sống của nhân dân trong nước càng ngày càng đượcnâng cao kéo theo đó nhu cầu đi du lịch, tham quan cũng được quan tâm hơn bao giờhết Tuy nhiên việc tìm kiếm những tour du lịch chất lượng, giá cả phải chăng và phùhợp với điều kiện, thời gian của khách du lịch đề ra là việc không hề dễ dàng
Để đáp ứng được nhu cầu du lịch cao của người dân thì tại địa bàn TP Đà Nẵngnói riêng và cả Nước nói chung đã có rất nhiều công ti du lịch lữ hành đứng ra tổ chứcnhiều tour du lịch thú vị, chất lượng Nhưng với số lượng công ti cung cấp dịch vụ dulịch, lữ hành thì khiến cho khách du lịch lạc vào một ma trận các tour du lịch với mọimức giá, chất lượng Việc chọn một tour du lịch phù hợp với túi tiền, thời gian mà lạichất lượng, đầy đủ điểm đến thú vị trở nên khó khăn với khách du lịch hơn bao giờhết
Vì vậy, Em mong muốn xây dựng website Tra cứu giá tour du lịch - Vuivivu đểgiúp khách du lịch dễ dàng tra cứu và xem thông tin của những tour du lịch từ nhữngwebsite, công ti tổ chức dịch vụ du lịch cùng một lúc Giúp tiết kiệm thời gian, côngsức và chọn được tour du lịch ưng ý nhất cho kì nghỉ của người dùng
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 1
Trang 24WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
1 Mục tiêu đề tài
Xây dựng hệ thống website Tra cứu giá tour du lịch - Vuivivu giúp:
- Khách hàng vãng lai:
o Xem được thông tin tour du lịch hiện có trên hệ thống
o Tra cứu tour du lịch trên nhiều nhà cung cấp dịch vụ du lịch chỉ với mộtlượt tìm kiếm
o Xem các thông tin quảng cáo, khuyến mãi cho dịch vụ du lịch
o Xem các Bài đăng hướng dẫn du lịch
- Nhân viên:
o Đăng thông tin quảng cáo, khuyến mãi
o Quản lý thông tin quảng cáo, khuyến mãi
o Đăng Bài đăng
o Quản lý Bài đăng
- Quản lý:
o Quản lý nhân viên
o Quản lý danh mục Bài đăng
o Xem lịch sử cào dữ liệu
o Thống kê lượt truy cập
o Truy xuất dữ liệu lượt truy cập
2 Đối tượng nghiên cứu và phạm vi nghiên cứu
a Đối tượng nghiên cứu
Áp dụng cho tất cả những khách hàng có nhu cầu đi du lịch có sử dụng internet
b Phạm vi nghiên cứu
Tất cả các tour du lịch từ trong nước cho tới nước ngoài được các công ti du lịchViệt Nam cung cấp
3 Phương pháp nghiên cứu
- Khảo sát, nghiên cứu hoạt động thực tế
- Lên ý tưởng giải quyết vấn đề đặt ra
- Nghiên cứu áp dụng các giải pháp công nghệ
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 2
Trang 25WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
- Phân tích, thiết kế hệ thống
- Xây dựng, kiểm thử và cài đặt hệ thống
4 Giải pháp công nghệ
- Cơ sở dữ liệu : SQL, MongoDB
- Ngôn ngữ lập trình : PHP, Python, Html, Css, JavaScript
- Framework : Laravel, Jquery, Bootstrap 4
- Dịch vụ đám mây : Heroku, AWS s3
- Dịch vụ gửi mail : Sendgrid SMTP service
- Dịch vụ theo dõi website : Google Analytics
- Chương 2: 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,ngôn ngữ lập trình Python, Laravel Framwork; hệ quản trị cơ sở dữ liệu MYSQL, hệquản trị cơ sở dữ liệu - Nosql MongoDB
- Chương 3: 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ứcnăng của hệ thống
• Thiết kế sơ đồ use-case
• Xây dựng kịch bản cho từng use-case trong hệ thống
• Xây dựng sơ đồ ERD, kết quả relationship trong hệ quản trị cơ sở dữ liệu
• Xây dựng các sơ đồ hoạt động
• Thiết kế cơ sở dữ liệu
• Xây dựng các chức năng cho hệ thống
- Chương 4: Trình bày giao diện và kết quả làm được
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 3
Trang 26WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
- Chương 5: Kết luận chung cho các chương trong đồ án Trình bày những vấn đề đãgiải quyết cũng như chưa quyết được, từ đó đưa ra các hướng phát triển
Tuy nhiên, với vô vàn những nhà tổ chức du lịch và tour du lịch tràn lan ở trênmạng internet thì việc tìm được một nhà cung cấp tour du lịch và tour du lịch chấtlượng thì lại không dễ dàng cho một người không quen đi du lịch một chút nào
Nhận thấy những khó khăn, bất cập đấy em quyết định sẽ xây dựng website giúpviệc tra cứu thông tin tour du lịch được nhanh chóng và dễ dàng hơn
Hình 1.1: Hình ảnh trang tìm tour của website: travel.com.vn
1.2 Mục đích đề tài
Xây dựng hệ thống website Tra cứu giá tour du lịch - Vuivivu giúp:
- Khách hàng vãng lai:
o Xem được thông tin tour du lịch hiện có trên hệ thống
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 4
Trang 27WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
o Tra cứu tour du lịch trên nhiều nhà cung cấp dịch vụ du lịch chỉ với mộtlượt tìm kiếm
o Xem các thông tin quảng cáo, khuyến mãi cho dịch vụ du lịch
o Xem các Bài đăng hướng dẫn du lịch
- Nhân viên:
o Đăng thông tin quảng cáo, khuyến mãi
o Quản lý thông tin quảng cáo, khuyến mãi
o Đăng Bài đăng
o Quản lý Bài đăng
- Quản lý:
o Quản lý nhân viên
o Quản lý danh mục Bài đăng
o Xem lịch sử cào dữ liệu
o Thống kê lượt truy cập
o Truy xuất dữ liệu lượt truy cập
1.3 Phạm vi đề tài và đối tượng nghiên cứu
Áp dụng cho tất cả những khách hàng có nhu cầu đi du lịch có sử dụng internet
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 5
Trang 28WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
1.3.1 Thông tin cần quản lý
Hình 1.2: Thông tin cần quản lý
1.4 Đặc tả yêu cầu nghiệp vụ (Business Requirments)
1.4.1 Khách hàng vãng lai
- Được phép xem tin tức
- Được phép xem quảng cáo
- Được phép xem banner
- Được phép tìm kiếm tour theo tên, mức giá
Danh mục bài viết
Thêm, sửa, xóa
Bài viết
Thêm
sửa, xóa
Quảng cáo
Thêm
sửa, xóa, trạng thái
Lịch sử cào
4 Theo năm
Trang 29WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
- Được phép cập nhật quảng cáo
1.4.3 Quản lý
- Được phép cập nhật thông tin cá nhân
- Được phép cập nhật nhân viên
- Được phép cập nhật thông tin nhân viên
- Được phép cập nhập nhật danh mục
- Được phép xem lịch sử cào
- Được phép xem thống kê người truy cập
- Được phép truy xuất dữ liệu người truy cập
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 7
Trang 30WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
Hình 2.3: Ngôn ngữ lập trình PHP
2.1.1.2 Đặc điểm
- PHP rất đơn giản và dễ sử dụng
- PHP có thể kết nối cơ sở dữ liệu hiệu quả và giúp quá trình tải ứng dụng nhanh hơn
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 8
Trang 31WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
- PHP sẽ bảo mật hơn nếu sử dụng các Framwork
- Nó quen thuộc hơn đối với các nhà phát triển và hỗ trợ trực tuyến đang được cung cấpcho người mới bắt đầu
- PHP có khả năng tích hợp linh hoạt với các ngôn ngữ lập trình khác
- PHP là nguồn mở và miễn phí
- PHP rất nhẹ và có nhiều Framework có sẵn để lập trình website
- PHP giúp cho quá trình phát triển website trở nên nhanh hơn
2.1.2 Ngôn ngữ lập trình Python
2.1.2.1 Khái niệm
Python được sáng tạo bởi Guido van Rossum vào cuối những năm 1980s, đây làmột ngôn ngữ lập trình cực kỳ phổ biến được sử dụng để phát triển website và thiết kếnhiều ứng dụng khác nhau
Python là ngôn ngữ lập trình hướng đối tượng đa năng Ngôn ngữ này sở hữu cấutrúc dữ liệu cấp cao mạnh mẽ và hệ thống thư viện lớn Python sử dụng cơ chế cấpphát bộ nhớ tự động với cú pháp đơn giản và rõ ràng, giúp người học dễ tiếp cận vàlàm quen, kể cả đối với những người mới bắt đầu học lập trình
Hình 2.4: Ngôn ngữ lập trình Python
2.1.2.2 Đặc điểm
- Ngôn ngữ Python sử dụng chủ yếu các từ khóa bằng tiếng Anh, và hạn chế sử dụngcác từ khóa thuộc ngôn ngữ khác Python cũng phân biệt các kiểu chữ hoa hay chữthường
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 9
Trang 32WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
- Python sử dụng lùi đầu dòng (indentation) như dấu cách hay tab để tạo các khối lệnh.Các khối lệnh con sẽ ở vị trí thụt lùi đầu dòng vào sâu hơn so với khối lệnh cha mà nótrực thuộc
- Ngữ pháp đơn giản, dễ đọc
- Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng (object-oriented)
- Hỗ trợ module và hỗ trợ gói (package)
- Xử lý lỗi bằng ngoại lệ (Exception)
- Kiểu dữ liệu động ở mức cao
- Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình
- Có khả năng tương tác với các module khác viết trên C/C++ (Hoặc Java cho Jython,hoặc Net cho IronPython)
- Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface)
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 10
Trang 33WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
Hình 2.5: Hệ quản trị cơ sở dữ liệu MySQL
2.2.1.2 Đặc điểm
- MySQL là phần mềm quản lý dữ liệu thông qua cơ sở dữ liệu và mỗi một cơ sở dữ liệuđều có bảng quan hệ chứa dữ liệu riêng biệt
- MySQL có cơ chế quản lý sử dụng riêng giúp cho mỗi người sử dụng đều có thể quản
lý cùng lúc một hay nhiều cơ sở dữ liệu khác nhau
- MySQL tương thích tốt với môi trường PHP, giúp hệ thống hoạt động mạnh mẽ
2.2.2 MongoDB
2.2.2.1 Khái niệm
MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql
và được hàng triệu người sử dụng MongoDB là một database hướng tài liệu(document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảngnhư CSDL quan hệ nên truy vấn sẽ rất nhanh
Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (nhưMySQL hay SQL Server ) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng
ta sẽ dùng khái niệm là collection thay vì bảng So với RDBMS thì trong MongoDBcollection ứng với table, còn document sẽ ứng với row , MongoDB sẽ dùng cácdocument thay cho row trong RDBMS
Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệulưu trữ không cần tuân theo một cấu trúc nhất định Thông tin liên quan được lưu trữcùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 11
Trang 34WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
Hình 2.6: Cơ sở dữ liệu noSql - MongoDB.
2.2.2.2 Đặc điểm
- Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trongRDBMS nên khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem
có thỏa mãn các ràng buộc dữ liệu như trong RDBMS
- MongoDB rất dễ mở rộng (Horizontal Scalability) Trong MongoDB có một khái niệmcluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống tachỉ cần thêm một node với vào cluster
- Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thôngtin đạt hiệu suất cao nhất
- Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơnhẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) Với một lượng dữ liệu đủlớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần
Trang 35WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
- Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổ cứng, màsau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổcứng điêù này sẽ là nhược điểm vì sẽ có nguy cơ bị mất dữ liệu khi xảy ra các tìnhhuống như mất điện
Hình 2.8:Mô hình MVC trong Laravel
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 13
Trang 36WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
2.3.2 Mô hình MVC
MVC là từ viết tắt bởi 3 từ Model – View – Controller Đây là mô hình thiết kế
sử dụng trong kỹ thuật phần mềm Mô hình source code thành 3 phần, tương ứng mỗi
từ Mỗi từ tương ứng với một hoạt động tách biệt trong một mô hình
Model (M):
Là bộ phận có chức năng lưu trữ toàn bộ dữ liệu của ứng dụng Bộ phận này làmột cầu nối giữa 2 thành phần bên dưới là View và Controller Model thể hiện dướihình thức là một cơ sở dữ liệu hoặc có khi chỉ đơn giản là một file XML bình thường.Model thể hiện rõ các thao tác với cơ sở dữ liệu như cho phép xem, truy xuất, xử lý dữliệu,…
View (V):
Đây là phần giao diện (theme) dành cho người sử dụng Nơi mà người dùng cóthể lấy được thông tin dữ liệu của MVC thông qua các thao tác truy vấn như tìm kiếmhoặc sử dụng thông qua các website
Thông thường, các ứng dụng web sử dụng MVC View như một phần của hệthống, nơi các thành phần HTML được tạo ra Bên cạnh đó, View cũng có chức năngghi nhận hoạt động của người dùng để tương tác với Controller Tuy nhiên, Viewkhông có mối quan hệ trực tiếp với Controller, cũng không được lấy dữ liệu từController mà chỉ hiển thị yêu cầu chuyển cho Controller mà thôi
Controller (C):
Controller đóng vai trò trung gian giữa Model và View Thông tin người dùng
từ View được gửi cho Controller xử lý, sau đó Controller tương tác với Model để lấy
dữ liệu được yêu cầu, sau cùng Controller trả dữ liệu này về cho View Nói đơn giảnhơn, Controller là lớp điều khiển, có chức năng điều khiển các hành vi, yêu cầu
Luồng xử lý trong MVC
- Khi một yêu cầu của từ máy khách (Client) gửi đến Server Thì bị Controller trongMVC chặn lại để xem đó là URL request hay sự kiện
- Sau đó, Controller xử lý input của user rồi giao tiếp với Model trong MVC
- Model chuẩn bị data và gửi lại cho Controller
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 14
Trang 37WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
- Cuối cùng, khi xử lý xong yêu cầu thì Controller gửi dữ liệu trở lại View và hiển thịcho người dùng trên trình duyệt
SVTH: Đinh Ngọc Trang GVHD: TS Phạm Tuấn 15
Trang 38WEBSITE TRA CỨU GIÁ TOUR DU LỊCH - VUIVIVU
Tour du lịch theo giá
Tour du lịch theo nơi bán