1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website đặt phòng trực tuyến

163 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Xây dựng website đặt phòng trực tuyến
Tác giả Nguyễn Văn Lâm, Lê Minh Tường
Người hướng dẫn TS. Huỳnh Xuân Phụng
Trường học Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh
Chuyên ngành Công nghệ thông tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 163
Dung lượng 15,31 MB

Cấu trúc

  • PHẦN 1: MỞ ĐẦU (20)
    • 1.1. GIỚI THIỆU ĐỀ TÀI (20)
    • 1.2. LÍ DO CHỌN ĐỀ TÀI (20)
    • 1.3. MỤC TIÊU ĐỀ TÀI (21)
    • 1.4. ĐỐI TƯỢNG NGHIÊN CỨU (22)
    • 1.5. PHẠM VI NGHIÊN CỨU (23)
    • 1.6. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN (24)
    • 1.7. QUẢN LÝ DỰ ÁN (25)
  • PHẦN 2: NỘI DUNG (32)
  • CHƯƠNG 1. KHẢO SÁT HIỆN TRẠNG (32)
    • 1.1. Các ứng dụng tương tự đề tài và ưu nhược điểm của các ứng dụng đó (Tham khảo tiểu luận chuyên ngành, trang 5) (32)
    • 1.2. Yêu cầu bài toán của đề tài (Tham khảo Tiểu luận chuyên ngành, trang 9) (32)
    • 1.3. Kịch bản của các đối tượng sử dụng (Tham khảo tiểu luận chuyên ngành, trang 10) (32)
  • CHƯƠNG 2. XÁC ĐỊNH YÊU CẦU (33)
    • 2.1. Yêu cầu chức năng (33)
    • 3.2. Phía chủ nhà (Vendor) (37)
    • 3.3. Phía Quản trị viên (Admin) (38)
    • 3.4. Phía Hướng dẫn viên (Guider) (38)
  • CHƯƠNG 4. LƯỢC ĐỒ USECASE (40)
    • 4.1. Danh sách các Actor (40)
    • 4.2. Lược đồ Usecase (41)
    • 4.3. Lược đồ Usecase chi tiết (42)
    • 4.4. Đặc tả Usecase (50)
  • CHƯƠNG 5. LƯỢC ĐỒ LỚP (CLASS DIAGRAM) (60)
  • CHƯƠNG 6. LƯỢC ĐỒ TUẦN TỰ (SEQUENCE DIAGRAM) (61)
    • 6.1. Đăng ký (Tham khảo Tiểu luận chuyên ngành, trang 43) (61)
    • 6.2. Đăng nhập (Tham khảo Tiểu luận chuyên ngành, trang 44) (61)
    • 6.3. Đổi mật khẩu (Tham khảo Tiểu luận chuyên ngành, trang 45) (61)
    • 6.4. Quên mật khẩu (Tham khảo Tiểu luận chuyên ngành, trang 46) (61)
    • 6.5. Quản lý thông tin cá nhân (Tham khảo Tiểu luận chuyên ngành, trang 47) (61)
    • 6.6. Đặt phòng (Tham khảo Tiểu luận chuyên ngành, trang 48) (61)
    • 6.7. Cập nhật trạng thái thanh toán (Vendor) (62)
    • 6.8. Thêm phòng vào danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, (63)
  • trang 50) (32)
    • 6.9. Xoá phòng khỏi danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, (63)
  • trang 51) (63)
    • 6.10. Tạo phòng mới (Tham khảo Tiểu luận chuyên ngành, trang 52) (63)
    • 6.11. Cập nhật phòng (Tham khảo Tiểu luận chuyên ngành, trang 53) (63)
    • 6.12. Xoá phòng (Tham khảo Tiểu luận chuyên ngành, trang 54) (63)
    • 6.13. Đánh giá địa điểm (Tham khảo Tiểu luận chuyên ngành, trang 55) (63)
    • 6.15. Cập nhật trạng thái của người dùng (63)
    • 6.16. Tạo danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 57) (64)
    • 6.17. Cập nhật danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 58) (64)
    • 6.18. Xoá danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 59) (64)
    • 6.19. Phản hồi đánh giá (Review & Rating) (Tham khảo Tiểu luận chuyên ngành, (64)
  • trang 60) (63)
    • 6.20. Cập nhật trạng thái thanh toán (Guider) (64)
    • 6.21. Thống kê doanh thu (Vendor) (65)
    • 6.22. Thống kê doanh thu (Guider) (66)
    • 6.23. Tạo bài đăng hướng dẫn viên (67)
    • 6.24. Cập nhật bài đăng hướng dẫn viên (68)
    • 6.25. Xoá bài đăng hướng dẫn viên (69)
    • 6.26. Tạo lịch trình cho bài đăng hướng dẫn viên (70)
    • 6.27. Cập nhật lịch trình cho bài đăng hướng dẫn viên (70)
    • 6.28. Cập nhật đơn đặt phòng (71)
    • 6.29. Huỷ đơn đặt phòng (72)
    • 6.30. Xoá đơn đặt phòng (73)
    • 6.31. Tạo yêu cầu trở thành hướng dẫn viên (74)
    • 6.32. Tạo yêu cầu trở thành chủ nhà (75)
    • 6.33. Xử lý yêu cầu trở thành hướng dẫn viên (76)
    • 6.37. Trả lời bình luận bài đánh giá (79)
    • 6.38. Đặt lịch hướng dẫn viên (80)
    • 6.39. Cập nhật lịch đặt hướng dẫn viên (80)
    • 6.40. Xoá lịch đặt hướng dẫn viên (81)
    • 6.41. Huỷ lịch đặt hướng dẫn viên (81)
    • 6.42. Tạo báo cáo (82)
    • 6.43. Tạo bài đánh giá (82)
    • 6.44. Cập nhật bài đánh giá (83)
    • 6.45. Xoá bài đánh giá (83)
  • CHƯƠNG 7. LƯỢC ĐỒ HOẠT ĐỘNG (ACTIVITY DIAGRAM) (84)
    • 7.1. Đăng ký (Tham khảo Tiểu luận chuyên ngành, trang 62) (84)
    • 7.2. Đăng nhập (Tham khảo Tiểu luận chuyên ngành, trang 63) (84)
    • 7.3. Đổi mật khẩu (Tham khảo Tiểu luận chuyên ngành, trang 63) (84)
    • 7.4. Quên mật khẩu (Tham khảo Tiểu luận chuyên ngành, trang 64) (84)
    • 7.5. Quản lý thông tin cá nhân (Tham khảo Tiểu luận chuyên ngành, trang 65) (84)
    • 7.6. Đặt phòng (Tham khảo Tiểu luận chuyên ngành, trang 66) (84)
    • 7.7. Cập nhật trạng thái thanh toán (Vendor) (84)
    • 7.8. Thêm phòng vào danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, (85)
  • trang 67) (64)
    • 7.9. Xoá phòng khỏi danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, (85)
  • trang 68) (85)
    • 7.10. Tạo phòng mới (Tham khảo Tiểu luận chuyên ngành, trang 68) (85)
    • 7.11. Cập nhật phòng (Tham khảo Tiểu luận chuyên ngành, trang 69) (85)
    • 7.12. Xoá phòng (Tham khảo Tiểu luận chuyên ngành, trang 69) (85)
    • 7.13. Đánh giá địa điểm (Tham khảo Tiểu luận chuyên ngành, trang 70) (85)
    • 7.14. Cập nhật vai trò của người dùng (85)
    • 7.15. Cập nhật trạng thái của người dùng (Tham khảo Tiểu luận chuyên ngành, (86)
  • trang 70) (86)
    • 7.16. Tạo danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 71) (86)
    • 7.17. Cập nhật danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 71) (86)
    • 7.18. Xoá danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 72) (86)
    • 7.19. Phản hồi đánh giá (Review & Rating) (Tham khảo Tiểu luận chuyên ngành, (86)
  • trang 72) (0)
    • 7.20. Cập nhật trạng thái thanh toán (Guider) (86)
    • 7.21. Thống kê doanh thu (Vendor) (87)
    • 7.22. Thống kê doanh thu (Guider) (87)
    • 7.23. Tạo bài đăng hướng dẫn viên (88)
    • 7.24. Cập nhật bài đăng hướng dẫn viên (88)
    • 7.25. Xoá bài đăng hướng dẫn viên (89)
    • 7.26. Tạo lịch trình cho bài đăng hướng dẫn viên (89)
    • 7.27. Cập nhật lịch trình cho bài đăng hướng dẫn viên (90)
    • 7.28. Cập nhật đơn đặt phòng (90)
    • 7.29. Huỷ đơn đặt phòng (91)
    • 7.30. Xoá đơn đặt phòng (91)
    • 7.31. Tạo yêu cầu trở thành hướng dẫn viên (92)
    • 7.32. Tạo yêu cầu trở thành chủ nhà (92)
    • 7.33. Xử lý yêu cầu trở thành hướng dẫn viên (93)
    • 7.37. Trả lời bình luận bài đánh giá (95)
    • 7.38. Đặt lịch hướng dẫn viên (95)
    • 7.39. Cập nhật lịch đặt hướng dẫn viên (96)
    • 7.40. Xoá lịch đặt hướng dẫn viên (96)
    • 7.41. Huỷ lịch đặt hướng dẫn viên (97)
    • 7.42. Tạo báo cáo (97)
    • 7.43. Tạo bài đánh giá (98)
    • 7.44. Cập nhật bài đánh giá (98)
    • 7.45. Xoá bài đánh giá (99)
  • CHƯƠNG 8. BIỂU ĐỒ QUAN HỆ THỰC THỂ (ENTITY RELATIONSHIP DIAGRAM) (100)
  • CHƯƠNG 9. THIẾT KẾ CƠ SỞ DỮ LIỆU (101)
    • 9.1. Sơ đồ cơ sở dữ liệu (101)
    • 9.2. Mô tả các bảng (102)
  • CHƯƠNG 10. KIẾN TRÚC HỆ THỐNG (109)
  • CHƯƠNG 11. CÁC CÔNG NGHỆ SỬ DỤNG (110)
    • 11.1. NextJS (Tham khảo Tiểu luận chuyên ngành, trang 81) (110)
    • 11.2. Typescript (110)
    • 11.3. Ngôn ngữ lập trình Golang (Tham khảo Tiểu luận chuyên ngành, trang 84) (111)
    • 11.4. Gin framework (Tham khảo Tiểu luận chuyên ngành, trang 85) (111)
    • 11.5. MySQL và thư viện Gorm (Tham khảo Tiểu luận chuyên ngành, trang 86) (111)
    • 11.6. Redis (111)
    • 11.7. Mô Hình Web API – Clean Architecture (Tham khảo Tiểu luận chuyên ngành, trang 86) (113)
  • CHƯƠNG 12. THIẾT KẾ GIAO DIỆN (114)
    • 12.1. Giao diện Người dùng (114)
    • 12.2. Giao diện Chủ nhà (134)
    • 12.3. Giao diện Hướng dẫn viên (136)
    • 12.4. Giao diện Quản trị viên (142)
  • CHƯƠNG 13. CÀI ĐẶT HỆ THỐNG (146)
    • 13.1. Truy cập bằng web đã được triển khai (146)
    • 13.2. Yêu cầu hệ thống (146)
    • 13.3. Cài đặt phần mềm (146)
  • CHƯƠNG 14. KIỂM THỬ (147)
    • 14.1. Kế hoạch kiểm thử (Tham khảo Tiểu luận chuyên ngành, trang 111) (147)
    • 14.2. Chiến lược thực hiện (Tham khảo Tiểu luận chuyên ngành, trang 112) (147)
    • 14.3. Kết quả kiểm thử (Tham khảo Tiểu luận chuyên ngành, trang 114) (147)
    • 14.4. Kiểm thử tự động (147)
    • 14.5. Kiểm thử đơn vị (151)
  • PHẦN 3: KẾT LUẬN (158)
    • 1.1. Đánh giá chỉ tiêu (158)
    • 1.2. Kết quả đạt được (159)
    • 1.3. Ưu điểm (159)
    • 1.4. Nhược điểm (160)
    • 1.5. Hướng phát triển (160)

Nội dung

Cập nhật vai trò của người dùng Tham khảo Tiểu luận chuyên ngành, trang 56 .... Cập nhật trạng thái của người dùng Tham khảo Tiểu luận chuyên ngành, trang 70 .... Với những tính năng bổ

NỘI DUNG

1.2 Yêu cầu bài toán của đề tài (Tham khảo Tiểu luận chuyên ngành, trang 9) 1.3 Kịch bản của các đối tượng sử dụng (Tham khảo tiểu luận chuyên ngành, trang 10)

KHẢO SÁT HIỆN TRẠNG

XÁC ĐỊNH YÊU CẦU

Yêu cầu chức năng

Mục tiêu của đề tài là xây dựng đặt phòng trực tuyến, nơi người dùng có thể trải nghiệm đặt phòng online Hệ thống website sẽ cung cấp các chức năng sau:

- Các chức năng đăng ký, đăng nhập, quên mật khẩu, đổi mật khẩu và quản lý trang thông tin cá nhân và xem thông tin của các chủ nhà khác

- Các chức năng đăng ký, đăng nhập, đăng xuất, quên mật khẩu, đổi mật khẩu và quản lý trang thông tin cá nhân và xem thông tin của các chủ nhà, hướng dẫn viên khác

- Hiển thị danh sách phòng: Cho phép người dùng xem các phòng hiện có trên hệ thống

- Chi tiết phòng: Cung cấp thông tin chi tiết về từng phòng, bao gồm hình ảnh, mô tả, giá và các thông tin khác liên quan

- Yêu thích theo dõi phòng: Cho phép người dùng thêm phòng vào danh sách yêu thích và quản lý danh sách yêu thích của mình

- Đặt phòng: Cho phép người dùng đặt phòng trực tiếp trên trang web và hỗ trợ xác nhận đặt phòng qua email

- Huỷ đặt phòng: Cho phép người dùng huỷ đặt phòng trực tiếp trên website trước khi xác nhận đặt phòng

- Đánh giá và bình luận: Cho phép người dùng đánh giá và bình luận các đia điểm sau khi đã hoàn tất thủ tục trả phòng

- Quản lý danh sách đặt phòng: Cho phép người dùng xem và quản lý các đơn đặt phòng của mình và đối với chủ nhà sẽ quản lý đơn đặt phòng trên từng địa điểm

- Tìm kiếm và lọc: Cung cấp chức năng tìm kiếm lọc để người dùng có thể dễ dàng tìm kiếm phòng theo một số tiêu chí

- Tích hợp hệ thống thanh toán: Đảm bảo có tích hợp phương thức thanh toán cả

- Quản lý người dùng: Cho phép quản trị viên quản lý thông tin người dùng và trạng thái kích hoạt tài khoản

- Thống kê: Cho phép chủ nhà theo dõi và đánh giá dữ liệu thống kê của chính họ để từ đó đưa ra chiến lược kinh doanh phù hợp với người dùng

- Đăng bài viết: Chức năng này cho phép người dùng đăng các bài viết liên quan đến du lịch, điểm đến, kinh nghiệm du lịch, hoặc thông tin về các hướng dẫn viên

- Tương tác với bài viết: Người dùng có thể tương tác với các bài viết bằng cách like, comment, hoặc chia sẻ để trao đổi thông tin và kinh nghiệm

- Quản lý bài viết cá nhân: Cho phép người dùng quản lý các bài viết mà họ đã đăng bằng cách chỉnh sửa, xóa hoặc thêm vào danh sách ưa thích

- Đăng tin cho thuê hướng dẫn viên: Người dùng có thể đăng thông tin về việc cần thuê hướng dẫn viên cho các chuyến đi du lịch của họ

- Quản lý tin đăng cho thuê hướng dẫn viên: Cho phép người dùng quản lý các tin đăng đã đăng, bao gồm chỉnh sửa, xóa hoặc đánh dấu trạng thái

- Đặt lịch hướng dẫn viên: Người dùng có thể đặt lịch hướng dẫn viên cho các chuyến đi của mình thông qua giao diện trực tuyến

- Quản lý lịch đặt hướng dẫn viên cá nhân: Cho phép người dùng xem và quản lý các lịch đặt hướng dẫn viên của họ, bao gồm xem, chỉnh sửa hoặc hủy đặt lịch

- Hệ thống chat bot: Hệ thống chatbot hỗ trợ người dùng tra cứu những thông tin cần thiết về website

- Chia sẻ lên Mạng xã hội: chia sẻ địa chỉ của bài đăng cho thuê phòng, bài đăng hướng dẫn viên, bài đánh giá lên các nền tảng Mạng xã hội như Facebook, Twitter, Mail, …

- Yêu cầu: gửi yêu cầu trở thành hướng dẫn viên hoặc chủ nhà, được quản lý và xử lý bởi quản trị viên

- Báo cáo: báo cáo bài viết, địa điểm, bài đăng hướng dẫn viên, được quản lý và xử lý bởi quản trị viên

2.2 Yêu cầu phi chức năng

- Giao diện trực quan, sinh động, dễ thao tác: Hệ thống cung cấp cho người dùng một giao diện và chức năng thân thiện, hình ảnh và biểu tượng trực quan

- Hiệu suất: Website phải nhanh chóng tải và phản hồi, với thời gian tải trang không quá 10 giây

- Bảo mật: Dữ liệu người dùng, bao gồm thông tin cá nhân và thanh toán, phải được bảo vệ khỏi các mối đe dọa bảo mật

- Khả năng mở rộng: Hệ thống cần có khả năng mở rộng để xử lý tăng trưởng người dùng và dữ liệu mà không làm giảm hiệu suất

- Dễ dàng bảo trì: Mã nguồn cần được tổ chức một cách rõ ràng và có tài liệu đầy đủ để thuận tiện cho việc bảo trì

- Độ tin cậy: Hệ thống phải hoạt động ổn định với tỉ lệ downtime thấp, đảm bảo truy cập liên tục cho người dùng

CHƯƠNG 3 PHÂN TÍCH CHỨC NĂNG 3.1 Phía người dùng (User)

Bảng 3 1 Chức năng phía người dùng

6 Quản lí tài khoản cá nhân

7 Gửi báo cáo (tài khoản, địa điểm, bài đăng, tour, bình luận) lên cho Admin

8 Yêu cầu trở thành Hướng dẫn viên, Chủ nhà

9 Tìm kiếm và xem thông tin phòng

11 Quản lý đơn đặt phòng

12 Hỗ trợ xác nhận đặt phòng thành công qua mail

15 Tương tác với bài viết

16 Quản lý bài viết cá nhân

17 Cộng đồng review dịch vụ

18 Tương tác với bài review dịch vụ

19 Quản lý bài review cá nhân

20 Hệ thống chatbot hỗ trợ người dùng

21 Đặt lịch hướng dẫn viên

22 Quản lý lịch đặt hướng dẫn viên

23 Quản lý danh sách địa điểm yêu thích

24 Chia sẻ địa điểm, bài đăng lên Mạng xã hội

25 Tìm kiếm và xem thông tin bài đăng hướng dẫn viên

Phía chủ nhà (Vendor)

Bảng 3 2 Chức năng phía chủ nhà

6 Quản lí tài khoản cá nhân

7 Gửi báo cáo (tài khoản, địa điểm, bài đăng, tour, bình luận) lên cho Admin

8 Tìm kiếm và xem thông tin phòng

10 Quản lý đơn đặt phòng

11 Hỗ trợ xác nhận đặt phòng thành công qua mail

14 Tương tác với bài viết

15 Quản lý bài viết cá nhân

16 Cộng đồng review dịch vụ

17 Tương tác với bài review dịch vụ

18 Quản lý bài review cá nhân

19 Hệ thống chatbot hỗ trợ người dùng

22 Quản lý danh sách địa điểm yêu thích

23 Chia sẻ địa điểm, bài đăng lên Mạng xã hội

24 Tìm kiếm và xem thông tin bài đăng hướng dẫn viên

25 Đăng ký và quản lý địa điểm

Phía Quản trị viên (Admin)

Bảng 3 3 Chức năng phía Quản trị viên

3 Quản lý tài khoản cá nhân

4 Quản lý quyền truy cập của người dùng

5 Quản lý và xử lý báo cáo của người dùng

6 Quản lý và xử lý yêu cầu của người dùng

7 Tìm kiếm và xem thông tin phòng

8 Cộng đồng review dịch vụ

9 Hệ thống chatbot hỗ trợ người dùng xử lý thắc mắc

10 Chia sẻ địa điểm, bài đăng lên Mạng xã hội

11 Tìm kiếm và xem thông tin bài đăng hướng dẫn viên

Phía Hướng dẫn viên (Guider)

Bảng 3 4 Chức năng phía Quản trị viên

6 Quản lí tài khoản cá nhân

7 Gửi báo cáo (tài khoản, địa điểm, bài đăng, tour, bình luận) lên cho Admin

8 Tìm kiếm và xem thông tin phòng

10 Quản lý đơn đặt phòng

11 Hỗ trợ xác nhận đặt phòng thành công qua mail

14 Tương tác với bài viết

15 Quản lý bài viết cá nhân

16 Cộng đồng review dịch vụ

17 Tương tác với bài review dịch vụ

18 Quản lý bài review cá nhân

19 Hệ thống chatbot hỗ trợ người dùng

20 Đặt lịch hướng dẫn viên

21 Quản lý lịch đặt hướng dẫn viên

22 Quản lý danh sách địa điểm yêu thích

23 Chia sẻ địa điểm, bài đăng lên Mạng xã hội

24 Tìm kiếm và xem thông tin bài đăng hướng dẫn viên

25 Đăng tin cho thuê hướng dẫn viên

26 Quản lý tin cho thuê hướng dẫn viên

LƯỢC ĐỒ USECASE

Danh sách các Actor

Hình 4 1 Danh sách các Actor

Lược đồ Usecase

Lược đồ Usecase chi tiết

4.3.1 Đặt phòng (Tham khảo Tiểu luận chuyên ngành, trang 20)

4.3.2 Quản lý đơn đặt phòng

Hình 4 3 Lược đồ Usecase Quản lý đơn đặt phòng

4.3.3 Quản lý tài khoản (Tham khảo Tiểu luận chuyên ngành, trang 20)

4.3.4 Chia sẻ địa điểm, bài đăng lên mạng xã hội

Hình 4 4 Lược đồ Usecase Chia sẻ địa điểm, bài đăng lên mạng xã hội

Hình 4 5 Lược đồ Usecase Quản lý báo cáo

4.3.6 Quản lý tin đăng cho thuê chỗ ở (Tham khảo Tiểu luận chuyên ngành, trang 22)

4.3.7 Quản lý lịch đặt hướng dẫn viên

Hình 4 6 Lược đồ Usecase Quản lý lịch đặt hướng dẫn viên

4.3.8 Quản lý danh sách địa điểm yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 23)

Hình 4 7 Lược đồ Usecase Quản lý bài viết

4.3.10 Tương tác với bài viết

Hình 4 8 Lược đồ Usecase Tương tác với bài viết

Hình 4 9 Lược đồ Usecase Quản lý yêu cầu

Hình 4 10 Lược đồ Usecase Quản lý phòng

Hình 4 11 Lược đồ Usecase Thống kê doanh thu

Hình 4 12 Lược đồ Usecase Quản lý thanh toán

4.3.15 Quản lý tin đăng cho thuê hướng dẫn viên

Hình 4 13 Lược đồ Usecase Quản lý tin đăng cho thuê hướng dẫn viên

Hình 4 14 Lược đồ Usecase Thống kê doanh thu

Hình 4 15 Lược đồ Usecase Quản lý thanh toán

4.3.18 Quản lý quyền truy cập của người dùng (Tham khảo Tiểu luận chuyên ngành, trang 24)

Hình 4 16 Lược đồ Usecase Hệ thống Chatbot

Đặc tả Usecase

4.4.1 Đăng ký (Tham khảo Tiểu luận chuyên ngành, trang 25)

4.4.2 Đăng nhập (Tham khảo Tiểu luận chuyên ngành, trang 26)

4.4.3 Đổi mật khẩu (Tham khảo Tiểu luận chuyên ngành, trang 27)

4.4.4 Quên mật khẩu (Tham khảo Tiểu luận chuyên ngành, trang 28)

4.4.5 Quản lý thông tin cá nhân (Tham khảo Tiểu luận chuyên ngành, trang 29) 4.4.6 Đăng xuất (Tham khảo Tiểu luận chuyên ngành, trang 31)

4.4.7 Đặt phòng (Tham khảo Tiểu luận chuyên ngành, trang 32)

4.4.8 Quản lý đơn đặt phòng

Bảng 4 1 Đặc tả usecase Quản lý đơn đặt phòng

Name Quản lý đơn đặt phòng

Goal Người dùng quản lý đơn đặt phòng cá nhân

Pre-conditions Người dùng đã đăng nhập vào hệ thống

Post-conditions Người dùng quản lý được đơn đặt phòng cá nhân

Main Flow 1 Truy cập vào chức năng quản lý đơn đặt phòng

Alternative 1a Chọn vào Details để xem thông tin cụ thể của đơn

1b Nhấn nút Xoá hoặc Huỷ để thực hiện thao tác với đơn 1c Thực hiện lọc theo ý muốn

4.4.9 Chia sẻ địa điểm, bài đăng lên mạng xã hội

Bảng 4 2 Đặc tả usecase Chia sẻ địa điểm, bài đăng lên mạng xã hội

Name Chia sẻ địa điểm, bài đăng lên mạng xã hội

Goal Người dùng chia sẻ thông tin về địa điểm hoặc bài đăng lên mạng xã hội

Actors User, Vendor, Guider, Admin

Pre-conditions Người dùng đã đăng nhập vào hệ thống và đang xem thông tin về một địa điểm hoặc bài đăng

Post-conditions Thông tin được chia sẻ lên mạng xã hội

Main Flow 1 Truy cập trang chi tiết của địa điểm

2 Chọn biểu tượng chia sẻ

3 Chọn nền tảng hoặc phương thức chia sẻ

Alternative 1a Truy cập trang chi tiết của bài đăng

Bảng 4 3 Đặc tả usecase Quản lý báo cáo

Name Quản lý báo cáo

Goal Admin quản lý các báo cáo trong hệ thống

Pre-conditions Admin đã đăng nhập vào hệ thống

Post-conditions Báo cáo được xử lý và cập nhật trong hệ thống

Main Flow 1 Admin truy cập vào phần quản lý báo cáo

2 Hệ thống hiển thị danh sách các báo cáo

3 Admin xem chi tiết báo cáo

4 Admin xử lý báo cáo (xác minh, phản hồi, hoặc đánh dấu đã giải quyết)

5 Hệ thống cập nhật trạng thái báo cáo

6 Hệ thống gửi thông báo cho người báo cáo về kết quả xử lý (nếu cần)

4.4.11 Đặt lịch hướng dẫn viên

Bảng 4 4 Đặc tả usecase Đặt lịch hướng dẫn viên

Name Đặt lịch hướng dẫn viên

Goal Người dùng đặt lịch hướng dẫn viên thành công

Pre-conditions Người dùng đã đăng nhập vào hệ thống

Post-conditions Người dùng đặt lịch thành công

Main Flow 1 Chọn hướng dẫn viên muốn đặt

4 Điền thông tin đặt lịch

Exception 4A Thông tin không đầy đủ

4A1 Hệ thống báo lỗi cho người dùng

4.4.12 Quản lý lịch đặt hướng dẫn viên

Bảng 4 5 Đặc tả usecase Quản lý lịch đặt hướng dẫn viên

Name Quản lý lịch đặt hướng dẫn viên

Goal Người dùng quản lý đơn đặt phòng cá nhân

Pre-conditions Người dùng đã đăng nhập vào hệ thống

Post-conditions Người dùng quản lý được đơn đặt phòng cá nhân

Main Flow 6 Truy cập vào chức năng quản lý đơn đặt phòng

Alternative 1a Chọn vào Details để xem thông tin cụ thể của đơn

1b Nhấn nút Xoá hoặc Huỷ để thực hiện thao tác với đơn

1c Thực hiện lọc theo ý muốn

4.4.13 Quản lý danh sách địa điểm yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 34)

Bảng 4 6 Đặc tả usecase Quản lý bài viết

Name Quản lý bài viết

Goal Người dùng quản lý được bài viết

Actors User, Vendor, Guider, Admin

Pre-conditions Người dùng đăng nhập thành công vào hệ thống

Post-conditions Người dùng quản lý được bài viết cá nhân

Main Flow 1 Truy cập vào trang bài viết cá nhân

4 Nhập nội dung chỉnh sửa

3a1 Xác nhận xoá 2a Chọn chia sẻ khoảnh khắc 2a1 Nhập thông tin bài viết 2a2 Chọn Lưu

Exception 5A Lưu lỗi do tải lên ảnh hoặc video bị lỗi

5B Lưu lỗi do nhập thiếu thông tin

4.4.15 Tương tác với bài viết

Bảng 4 7 Đặc tả usecase Tương tác với bài viết

Name Tương tác với bài viết

Goal Người dùng tương tác với bài viết thành công

Actors User, Vendor, Guider, Admin

Pre-conditions Người dùng đăng nhập thành công vào hệ thống

Post-conditions Người dùng tương tác thành công với bài viết

Main Flow 1 Chọn bài viết cụ thể để xem chi tiết

2 Chọn Like/Dislike để thích/bỏ thích

3a1 Chọn gửi 3a2 Xác nhận xoá 3b Chọn reply bình luận 3b1 Nhập bình luận 3b2 Chọn gửi

Exception 3A Lỗi do vi phạm ngôn từ khi bình luận

Bảng 4 8 Đặc tả usecase Quản lý yêu cầu

Name Quản lý yêu cầu

Goal Admin quản lý các yêu cầu trong hệ thống

Pre-conditions Admin đã đăng nhập vào hệ thống

Post-conditions Yêu cầu được xử lý và cập nhật trong hệ thống

Main Flow 3 Admin truy cập vào phần quản lý yêu cầu

4 Hệ thống hiển thị danh sách các yêu cầu

5 Admin xem chi tiết yêu cầu

6 Admin xử lý yêu cầu

Alternative 3A Chọn biểu tượng để xử lý yêu cầu

Exception 3A Lỗi hệ thống khi cập nhật trạng thái yêu cầu

4A Lỗi hệ thống khi cập nhật trạng thái yêu cầu

4.4.17 Quản lý phòng (Tham khảo Tiểu luận chuyên ngành, trang 35)

Bảng 4 9 Đặc tả usecase Thống kê doanh thu

Name Thống kê doanh thu

Goal Hướng dẫn viên xem được thống kê doanh thu

Pre-conditions Guider đăng nhập thành công vào hệ thống

Post-conditions Guider xem được thống kê doanh thu

Main Flow 1 Chọn vào mục Thống kê doanh thu

2 Lọc và chọn khoảng thời gian để xem thống kê

Bảng 4 10 Đặc tả usecase Quản lý thanh toán

Name Quản lý thanh toán

Goal Chủ nhà quản lý được lượt thanh toán

Main Flow 1 Chọn vào mục Quản lý thanh toán

2 Chọn vào biểu tượng để cập nhật trạng thái thanh toán

4.4.20 Quản lý tin cho thuê hướng dẫn viên

Bảng 4 11 Đặc tả usecase Quản lý tin cho thuê hướng dẫn viên

Name Quản lý tin cho thuê hướng dẫn viên

Goal Guider quản lý tin cho thuê cá nhân

Pre-conditions Guider đăng nhập thành công vào hệ thống

Post-conditions Guider quản lý thành công tin cho thuê cá nhân

Main Flow 1 Chọn chức năng quản lý bài đăng cá nhân

2 Chọn bài đăng cụ thể

3 Nhập thông tin chỉnh sửa

Alternative 2a Tìm kiếm và lọc

2b Chọn xoá 2b1 Xác nhận xoá 2c Chọn thêm bài đăng mới 2c1 Nhập thông tin ở các bước 2c2 Chọn tạo

3a Chọn chỉnh sửa chính sách 3a1 Nhập thông tin chỉnh sửa 3a2 Chọn Lưu

4a Chọn chỉnh sửa tiện nghi 4a1 Nhập thông tin chỉnh sửa

4a2 Chọn Lưu 5a Nhập thông tin lịch trình 5a1 Chọn Tạo

6a Lọc lịch trình 7a Chọn chỉnh sửa lịch trình cụ thể 7a1 Nhập thông tin chỉnh sửa 7a2 Chọn Lưu

8a Chọn xoá lịch trình cụ thể 8a1 Xác nhận xoá

Exception 4A Lỗi khi tải lên hình ảnh (kích thước quá lớn hoặc định dạng không hỗ trợ) 4B Thông tin bắt buộc bị thiếu

Bảng 4 12 Đặc tả usecase Thống kê doanh thu

Name Thống kê doanh thu

Goal Hướng dẫn viên xem được thống kê doanh thu

Pre-conditions Guider đăng nhập thành công vào hệ thống

Post-conditions Guider xem được thống kê doanh thu

Main Flow 3 Chọn vào mục Thống kê doanh thu

4 Lọc và chọn khoảng thời gian để xem thống kê

Bảng 4 13 Đặc tả usecase Quản lý thanh toán

Name Quản lý thanh toán

Goal Hướng dẫn viên quản lý được lượt thanh toán

Pre-conditions Guider đăng nhập thành công vào hệ thống

Post-conditions Guider xem và cập nhật được trạng thái của lượt thanh toán

Main Flow 3 Chọn vào mục Quản lý thanh toán

4 Chọn vào biểu tượng để cập nhật trạng thái thanh toán

4.4.23 Quản lý quyền truy cập của người dùng (Tham khảo Tiểu luận chuyên ngành, trang 36)

Bảng 4 14 Đặc tả usecase Hệ thống Chatbot

Goal Người dùng có thể tra cứu những thông tin, bao gồm những thông tin liên quan đến trang web

Actors User, Vendor, Guider, Admin

Pre-conditions Người dùng đã đăng nhập vào hệ thống

Post-conditions Người dùng giải đáp được những thắc mắc của mình

Main Flow 1 Nhấn vào biểu tượng Chatbot trên websitet

2 Nhập nội dung câu hỏi vào ô input

3 Nhấn vào biểu tượng Gửi

4 Hệ thống hiển thị câu trả lời

Exception 4A Câu hỏi vi phạm chính sách ngôn từ Hệ thống báo lỗi

4B Hệ thống gặp lỗi và báo lỗi

LƯỢC ĐỒ LỚP (CLASS DIAGRAM)

LƯỢC ĐỒ TUẦN TỰ (SEQUENCE DIAGRAM)

Cập nhật trạng thái thanh toán (Vendor)

Hình 6 1 Sequence Diagram Cập nhật trạng thái thanh toán (Vendor)

Xoá phòng khỏi danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành,

6.10 Tạo phòng mới (Tham khảo Tiểu luận chuyên ngành, trang 52)

6.11 Cập nhật phòng (Tham khảo Tiểu luận chuyên ngành, trang 53)

6.12 Xoá phòng (Tham khảo Tiểu luận chuyên ngành, trang 54)

6.13 Đánh giá địa điểm (Tham khảo Tiểu luận chuyên ngành, trang 55)

6.14 Cập nhật vai trò của người dùng (Tham khảo Tiểu luận chuyên ngành, trang 56)

6.15 Cập nhật trạng thái của người dùng

Hình 6 2 Sequence Diagram Cập nhật trạng thái của người dùng

Đánh giá địa điểm (Tham khảo Tiểu luận chuyên ngành, trang 55)

6.14 Cập nhật vai trò của người dùng (Tham khảo Tiểu luận chuyên ngành, trang 56)

Cập nhật trạng thái của người dùng

Hình 6 2 Sequence Diagram Cập nhật trạng thái của người dùng

Tạo danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 57)

6.18 Xoá danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 59) 6.19 Phản hồi đánh giá (Review & Rating) (Tham khảo Tiểu luận chuyên ngành, trang 60)

6.20 Cập nhật trạng thái thanh toán (Guider)

Hình 6 3 Sequence Diagram Cập nhật trạng thái thanh toán (Guider)

Xoá danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 59)

6.20 Cập nhật trạng thái thanh toán (Guider)

Hình 6 3 Sequence Diagram Cập nhật trạng thái thanh toán (Guider)

Cập nhật trạng thái thanh toán (Guider)

Hình 6 3 Sequence Diagram Cập nhật trạng thái thanh toán (Guider)

Thống kê doanh thu (Vendor)

Hình 6 4 Sequence Diagram Thống kê doanh thu (Vendor)

Thống kê doanh thu (Guider)

Hình 6 5 Sequence Diagram Thống kê doanh thu (Guider)

Tạo bài đăng hướng dẫn viên

Hình 6 6 Sequence Diagram Tạo bài đăng hướng dẫn viên

Cập nhật bài đăng hướng dẫn viên

Hình 6 7 Sequence Diagram Cập nhật bài đăng hướng dẫn viên

Xoá bài đăng hướng dẫn viên

Hình 6 8 Sequence Diagram Xoá bài đăng hướng dẫn viên

Tạo lịch trình cho bài đăng hướng dẫn viên

Hình 6 9 Sequence Diagram Tạo lịch trình cho bài đăng hướng dẫn viên

Cập nhật lịch trình cho bài đăng hướng dẫn viên

Hình 6 10 Sequence Diagram Cập nhật lịch trình cho bài đăng hướng dẫn viên

Cập nhật đơn đặt phòng

Hình 6 11 Sequence Diagram Cập nhật đơn đặt phòng

Huỷ đơn đặt phòng

Hình 6 12 Sequence Diagram Huỷ đơn đặt phòng

Xoá đơn đặt phòng

Hình 6 13 Sequence Diagram Xoá đơn đặt phòng

Tạo yêu cầu trở thành hướng dẫn viên

Hình 6 14 Sequence Diagram Tạo yêu cầu trở thành hướng dẫn viên

Tạo yêu cầu trở thành chủ nhà

Hình 6 15 Sequence Diagram Tạo yêu cầu trở thành chủ nhà

Xử lý yêu cầu trở thành hướng dẫn viên

Hình 6 16 Sequence Diagram Xử lý yêu cầu trở thành hướng dẫn viên

6.34 Xử lý yêu cầu trở thành chủ nhà

Hình 6 17 Sequence Diagram Xử lý yêu cầu trở thành chủ nhà

6.35 Thích/Bỏ thích bài đánh giá

Hình 6 18 Sequence Diagram Thích/Bỏ thích bài đánh giá

6.36 Bình luận bài đánh giá

Hình 6 19 Sequence Diagram Bình luận bài đánh giá

Trả lời bình luận bài đánh giá

Hình 6 20 Sequence Diagram Trả lời bình luận bài đánh giá

Đặt lịch hướng dẫn viên

Hình 6 21 Sequence Diagram Đặt lịch hướng dẫn viên

Cập nhật lịch đặt hướng dẫn viên

Hình 6 22 Sequence Diagram Cập nhật lịch đặt hướng dẫn viên

Xoá lịch đặt hướng dẫn viên

Hình 6 23 Sequence Diagram Xoá lịch đặt hướng dẫn viên

Huỷ lịch đặt hướng dẫn viên

Hình 6 24 Sequence Diagram Huỷ lịch đặt hướng dẫn viên

Tạo báo cáo

Hình 6 25 Sequence Diagram Tạo báo cáo

Tạo bài đánh giá

Hình 6 26 Sequence Diagram Tạo bài đánh giá

Cập nhật bài đánh giá

Hình 6 27 Sequence Diagram Cập nhật bài đánh giá

Xoá bài đánh giá

Hình 6 28 Sequence Diagram Xoá bài đánh giá

LƯỢC ĐỒ HOẠT ĐỘNG (ACTIVITY DIAGRAM)

Quản lý thông tin cá nhân (Tham khảo Tiểu luận chuyên ngành, trang 65)

7.7 Cập nhật trạng thái thanh toán (Vendor)

Hình 7 1 Activity Diagram Cập nhật trạng thái thanh toán (Vendor)

Cập nhật trạng thái thanh toán (Vendor)

Hình 7 1 Activity Diagram Cập nhật trạng thái thanh toán (Vendor)

Xoá phòng khỏi danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành,

7.10 Tạo phòng mới (Tham khảo Tiểu luận chuyên ngành, trang 68)

7.11 Cập nhật phòng (Tham khảo Tiểu luận chuyên ngành, trang 69)

7.12 Xoá phòng (Tham khảo Tiểu luận chuyên ngành, trang 69)

7.13 Đánh giá địa điểm (Tham khảo Tiểu luận chuyên ngành, trang 70)

7.14 Cập nhật vai trò của người dùng

Hình 7 2 Activity Diagram Cập nhật vai trò của người dùng

Cập nhật vai trò của người dùng

Hình 7 2 Activity Diagram Cập nhật vai trò của người dùng

Cập nhật trạng thái của người dùng (Tham khảo Tiểu luận chuyên ngành,

7.16 Tạo danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 71)

7.17 Cập nhật danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành,

Cập nhật danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 71)

Cập nhật trạng thái thanh toán (Guider)

Hình 7 3 Activity Diagram Cập nhật trạng thái thanh toán (Guider)

Thống kê doanh thu (Vendor)

Hình 7 4 Activity Diagram Thống kê doanh thu (Vendor)

Thống kê doanh thu (Guider)

Hình 7 5 Activity Diagram Thống kê doanh thu (Guider)

Tạo bài đăng hướng dẫn viên

Hình 7 6 Activity Diagram Tạo bài đăng hướng dẫn viên

Cập nhật bài đăng hướng dẫn viên

Hình 7 7 Activity Diagram Cập nhật bài đăng hướng dẫn viên

Xoá bài đăng hướng dẫn viên

Hình 7 8 Activity Diagram Xoá bài đăng hướng dẫn viên

Tạo lịch trình cho bài đăng hướng dẫn viên

Hình 7 9 Activity Diagram Tạo lịch trình cho bài đăng hướng dẫn viên

Cập nhật lịch trình cho bài đăng hướng dẫn viên

Hình 7 10 Activity Diagram Cập nhật lịch trình cho bài đăng hướng dẫn viên

Cập nhật đơn đặt phòng

Hình 7 11 Activity Diagram Cập nhật đơn đặt phòng

Huỷ đơn đặt phòng

Hình 7 12 Activity Diagram Huỷ đơn đặt phòng

Xoá đơn đặt phòng

Hình 7 13 Activity Diagram Xoá đơn đặt phòng

Tạo yêu cầu trở thành hướng dẫn viên

Hình 7 14 Activity Diagram Tạo yêu cầu trở thành hướng dẫn viên

Tạo yêu cầu trở thành chủ nhà

Hình 7 15 Activity Diagram Tạo yêu cầu trở thành chủ nhà

Xử lý yêu cầu trở thành hướng dẫn viên

Hình 7 16 Activity Diagram Xử lý yêu cầu trở thành hướng dẫn viên

7.34 Xử lý yêu cầu trở thành chủ nhà

Hình 7 17 Activity Diagram Xử lý yêu cầu trở thành chủ nhà

7.35 Thích/Bỏ thích bài đánh giá

Hình 7 18 Activity Diagram Thích/Bỏ thích bài đánh giá

7.36 Bình luận bài đánh giá

Hình 7 19 Activity Diagram Bình luận bài đánh giá

Trả lời bình luận bài đánh giá

Hình 7 20 Activity Diagram Trả lời bình luận bài đánh giá

Đặt lịch hướng dẫn viên

Hình 7 21 Activity Diagram Đặt lịch hướng dẫn viên

Cập nhật lịch đặt hướng dẫn viên

Hình 7 22 Activity Diagram Cập nhật lịch đặt hướng dẫn viên

Xoá lịch đặt hướng dẫn viên

Hình 7 23 Activity Diagram Xoá lịch đặt hướng dẫn viên

Huỷ lịch đặt hướng dẫn viên

Hình 7 24 Activity Diagram Huỷ lịch đặt hướng dẫn viên

Tạo báo cáo

Hình 7 25 Activity Diagram Tạo báo cáo

Tạo bài đánh giá

Hình 7 26 Activity Diagram Tạo bài đánh giá

Cập nhật bài đánh giá

Hình 7 27 Activity Diagram Cập nhật bài đánh giá

Xoá bài đánh giá

Hình 7 28 Activity Diagram Xoá bài đánh giá

BIỂU ĐỒ QUAN HỆ THỰC THỂ (ENTITY RELATIONSHIP DIAGRAM)

Hình 8 1 Biểu đồ quan hệ thực thể (ERD)

THIẾT KẾ CƠ SỞ DỮ LIỆU

Sơ đồ cơ sở dữ liệu

Bảng 9 1 Các bảng trong cơ sở dự liệu

Mô tả các bảng

9.2.1 Accounts (Tham khảo Tiểu luận chuyên ngành, trang 74)

9.2.2 Amenities (Tham khảo Tiểu luận chuyên ngành, trang 75)

9.2.3 Booking Rating (Tham khảo Tiểu luận chuyên ngành, trang 75)

9.2.4 Bookings (Tham khảo Tiểu luận chuyên ngành, trang 75)

9.2.5 Bookings Detail (Tham khảo Tiểu luận chuyên ngành, trang 76)

9.2.6 Payment Method (Tham khảo Tiểu luận chuyên ngành, trang 76)

9.2.7 Payment Status (Tham khảo Tiểu luận chuyên ngành, trang 76)

9.2.8 Payments (Tham khảo Tiểu luận chuyên ngành, trang 76)

9.2.9 Place Wishlist (Tham khảo Tiểu luận chuyên ngành, trang 77)

9.2.10 Places (Tham khảo Tiểu luận chuyên ngành, trang 77)

9.2.11 Policies (Tham khảo Tiểu luận chuyên ngành, trang 77)

9.2.12 Reports (Tham khảo Tiểu luận chuyên ngành, trang 78)

9.2.13 Requests (Tham khảo Tiểu luận chuyên ngành, trang 78)

9.2.14 Verify Emails (Tham khảo Tiểu luận chuyên ngành, trang 78)

9.2.15 Wishlists (Tham khảo Tiểu luận chuyên ngành, trang 78)

- Bảng này lưu trữ thông tin đặt tour hướng dẫn viên

 `id`: Khóa chính của bảng, kiểu dữ liệu là int, tự động tăng

 `booking_id`: Khóa ngoại tham chiếu đến bảng bookings, kiểu dữ liệu là int

 `full_name`: Họ và tên, kiểu dữ liệu là varchar

 `phone`: Số điện thoại, kiểu dữ liệu là varchar

 `email`: Email, kiểu dữ liệu là varchar

 `type`: Loại người đặt tour (1: người đặt tour, 2: người đi cùng), kiểu dữ liệu là int

 `created_at`: Thời gian tạo bản ghi, kiểu dữ liệu là timestamp

 `updated_at`: Thời gian cập nhật bản ghi, kiểu dữ liệu là timestamp

 `guest_name`: Tên người đi cùng, kiểu dữ liệu là varchar

 `content_to_vendor`: Nội dung ghi chú, kiểu dữ liệu là varchar

 `total_price`: Tổng tiền, kiểu dữ liệu là float

 `time_to`: Thời gian trả tour, kiểu dữ liệu là varchar

 `time_from`: Thời gian nhận tour, kiểu dữ liệu là varchar

 `number_of_guest`: Số lượng người đi cùng, kiểu dữ liệu là int

- Bảng này lưu trữ thông tin về lịch làm việc của các hướng dẫn viên

 `id`: Khóa chính của bảng, kiểu dữ liệu là int, tự động tăng

 `post_guide_id`: Khóa ngoại của bảng post_guides, kiểu dữ liệu là int

 `guider_id`: Khóa ngoại của bảng guiders, kiểu dữ liệu là int

 `note`: Ghi chú, kiểu dữ liệu là varchar

 `date_from`: Thời điểm bắt đầu, kiểu dữ liệu là datetime

 `date_to`: Thời điểm kết thúc, kiểu dữ liệu là datetime

 `price_per_person`: Giá cho mỗi người, kiểu dữ liệu là int

 `status`: Trạng thái, kiểu dữ liệu là tinyint(1)

 `created_at`: Thời gian tạo bản ghi, kiểu dữ liệu là datetime

 `updated_at`: Thời gian cập nhật bản ghi, kiểu dữ liệu là datetime

 `max_guest`: Số lượng khách tối đa, kiểu dữ liệu là int

- Bảng này lưu trữ thông tin về các bình luận của người dùng

 `id`: Khóa chính của bảng, kiểu dữ liệu là int, tự động tăng

 `content`: Nội dung bình luận, kiểu dữ liệu là varchar

 `image`: Đường dẫn ảnh đính kèm, kiểu dữ liệu là varchar

 `videos`: Đường dẫn video đính kèm, kiểu dữ liệu là varchar

 `account_id`: Khóa ngoại của bảng accounts, kiểu dữ liệu là int

 `created_at`: Thời gian tạo bản ghi, kiểu dữ liệu là timestamp, mặc định là

 `post_review_id`: Khóa ngoại của bảng post_reviews, kiểu dữ liệu là int

- Bảng này lưu trữ thông tin về việc người dùng thích hoặc không thích các bài đăng đánh giá

 `id`: Khóa chính của bảng, kiểu dữ liệu là int, tự động tăng

 `account_id`: Khóa ngoại của bảng accounts, kiểu dữ liệu là int

 `post_review_id`: Khóa ngoại của bảng post_reviews, kiểu dữ liệu là int

 `status`: Trạng thái thích (1: thích; 2: bỏ thích), kiểu dữ liệu là tinyint

 `created_at`: Thời gian tạo bản ghi, kiểu dữ liệu là timestamp, mặc định là thời điểm hiện tại

 `updated_at`: Thời gian cập nhật bản ghi, kiểu dữ liệu là timestamp, tự động cập nhật khi có thay đổi

- Bảng này lưu trữ thông tin về các bài đăng hướng dẫn

 id: Khóa chính của bảng, kiểu dữ liệu là int, tự động tăng

 post_owner_id: Khóa ngoại của bảng accounts, kiểu dữ liệu là int, tham chiếu đến người đăng bài

 topic_id: Khóa ngoại của bảng topics, kiểu dữ liệu là int, tham chiếu đến chủ đề của bài đăng

 title: Tiêu đề của bài đăng, kiểu dữ liệu là varchar

 description: Mô tả chi tiết về bài đăng, kiểu dữ liệu là text

 cover: Ảnh bìa của bài đăng, kiểu dữ liệu là varchar

 lat: Vĩ độ (latitude), kiểu dữ liệu là double

 lng: Kinh độ (longitude), kiểu dữ liệu là double

 created_at: Thời gian tạo bài đăng, kiểu dữ liệu là timestamp, mặc định là thời điểm hiện tại

 updated_at: Thời gian cập nhật bài đăng, kiểu dữ liệu là timestamp, tự động cập nhật khi có thay đổi

 country: Quốc gia của địa chỉ, kiểu dữ liệu là varchar

 state: Tỉnh/thành phố của địa chỉ, kiểu dữ liệu là varchar

 district: Quận/huyện của địa chỉ, kiểu dữ liệu là varchar

 address: Địa chỉ chi tiết, kiểu dữ liệu là varchar

 languages: Ngôn ngữ hướng dẫn, kiểu dữ liệu là varchar

 schedule: Lịch trình hướng dẫn, kiểu dữ liệu là varchar

- Bảng này lưu trữ thông tin về các đánh giá của bài đăng

 `id`: Khóa chính của bảng, kiểu dữ liệu là int, tự động tăng

 `post_owner_id`: Khóa ngoại của bảng accounts, kiểu dữ liệu là int, tham chiếu đến người đăng bài

 `title`: Tiêu đề của đánh giá, kiểu dữ liệu là varchar

 `topic`: Chủ đề của đánh giá, kiểu dữ liệu là int

 `content`: Nội dung chi tiết của đánh giá, kiểu dữ liệu là text

 `img`: Ảnh minh họa cho đánh giá, kiểu dữ liệu là varchar

 `videos`: Video liên quan đến đánh giá, kiểu dữ liệu là varchar

 `lat`: Vĩ độ (latitude), kiểu dữ liệu là double

 `lng`: Kinh độ (longitude), kiểu dữ liệu là double

 `created_at`: Thời gian tạo đánh giá, kiểu dữ liệu là timestamp, mặc định là thời điểm hiện tại

 `updated_at`: Thời gian cập nhật đánh giá, kiểu dữ liệu là timestamp, tự động cập nhật khi có thay đổi

 `country`: Quốc gia của địa chỉ, kiểu dữ liệu là varchar

 `state`: Tỉnh/thành phố của địa chỉ, kiểu dữ liệu là varchar

 `district`: Quận/huyện của địa chỉ, kiểu dữ liệu là varchar

- Bảng này lưu trữ thông tin về các phản hồi của bình luận

 `content`: Nội dung của phản hồi, kiểu dữ liệu là varchar

 `image`: Ảnh minh họa cho phản hồi, kiểu dữ liệu là varchar

 `videos`: Video liên quan đến phản hồi, kiểu dữ liệu là varchar

 `account_id`: Khóa ngoại của bảng accounts, kiểu dữ liệu là int, tham chiếu đến tài khoản của người phản hồi

 `created_at`: Thời gian tạo phản hồi, kiểu dữ liệu là timestamp, mặc định là thời điểm hiện tại

 `updated_at`: Thời gian cập nhật phản hồi, kiểu dữ liệu là timestamp, tự động cập nhật khi có thay đổi

- Bảng này lưu trữ các báo cáo về đối tượng cụ thể

 `id`: Khóa chính của bảng, kiểu dữ liệu là int, tự động tăng

 `object_id`: ID của đối tượng được báo cáo, kiểu dữ liệu là int, không được NULL

 `object_type`: Loại đối tượng (1: bài đăng, 2: bình luận, 3: người dùng, v.v.), kiểu dữ liệu là int, không được NULL

 `type`: Loại báo cáo, kiểu dữ liệu là varchar

 `description`: Mô tả chi tiết về báo cáo, kiểu dữ liệu là text

 `status_id`: Trạng thái xử lý báo cáo, kiểu dữ liệu là int

 `videos`: Video liên quan đến báo cáo, kiểu dữ liệu là text

 `images`: Hình ảnh liên quan đến báo cáo, kiểu dữ liệu là text

 `created_at`: Thời gian tạo báo cáo, kiểu dữ liệu là timestamp, mặc định là thời điểm hiện tại

 `updated_at`: Thời gian cập nhật báo cáo, kiểu dữ liệu là timestamp, tự động cập nhật khi có thay đổi

 `user_id`: Khóa ngoại của bảng users, tham chiếu đến người dùng tạo báo cáo, kiểu dữ liệu là int

- Bảng này lưu trữ thông tin về việc người dùng thích hoặc không thích các bài đăng đánh giá

 `id`: Khóa chính của bảng, kiểu dữ liệu là int, tự động tăng

- Bảng này lưu trữ thông tin yêu cầu từ người dùng để trở thành hướng dẫn viên

 `id`: Khóa chính của bảng, kiểu dữ liệu là int, tự động tăng

 `user_id`: ID của người dùng, không được NULL

 `full_name`: Họ và tên đầy đủ của người yêu cầu, kiểu dữ liệu là varchar

 `username`: Tên người dùng, kiểu dữ liệu là varchar

 `email`: Địa chỉ email của người yêu cầu, kiểu dữ liệu là varchar, không được NULL

 `phone`: Số điện thoại của người yêu cầu, kiểu dữ liệu là varchar

 `dob`: Ngày sinh của người yêu cầu, kiểu dữ liệu là varchar

 `address`: Địa chỉ của người yêu cầu, kiểu dữ liệu là varchar

 `created_at`: Thời điểm tạo bản ghi, kiểu dữ liệu là timestamp, mặc định là thời điểm hiện tại

 `updated_at`: Thời điểm cập nhật bản ghi, kiểu dữ liệu là timestamp, tự động cập nhật khi có thay đổi

 `description`: Mô tả về người yêu cầu, kiểu dữ liệu là varchar

 `experience`: Kinh nghiệm của người yêu cầu, kiểu dữ liệu là varchar

 `reason`: Lý do yêu cầu, kiểu dữ liệu là varchar

 `goal_of_travel`: Mục đích của chuyến đi, kiểu dữ liệu là varchar

 `languages`: Ngôn ngữ nói được, kiểu dữ liệu là varchar

 `status`: Trạng thái của yêu cầu, kiểu dữ liệu là varchar

- Bảng này lưu trữ thông tin yêu cầu từ người dùng để trở thành nhà cung cấp dịch

 `full_name`: Họ và tên đầy đủ của người yêu cầu, kiểu dữ liệu là varchar

 `username`: Tên người dùng, kiểu dữ liệu là varchar

 `email`: Địa chỉ email của người yêu cầu, kiểu dữ liệu là varchar, không được NULL

 `phone`: Số điện thoại của người yêu cầu, kiểu dữ liệu là varchar

 `dob`: Ngày sinh của người yêu cầu, kiểu dữ liệu là varchar

 `address`: Địa chỉ của người yêu cầu, kiểu dữ liệu là varchar

 `description`: Mô tả về người yêu cầu, kiểu dữ liệu là varchar

 `experience`: Kinh nghiệm của người yêu cầu, kiểu dữ liệu là varchar

 `status`: Trạng thái của yêu cầu, kiểu dữ liệu là varchar

 `created_at`: Thời điểm tạo bản ghi, kiểu dữ liệu là timestamp, mặc định là thời điểm hiện tại

 `updated_at`: Thời điểm cập nhật bản ghi, kiểu dữ liệu là timestamp, tự động cập nhật khi có thay đổi.

KIẾN TRÚC HỆ THỐNG

- Sử dụng 1 server database MySQL

- Sử dụng 1 server Redis để caching data và chạy cronjob, task

- Tất cả server đều được host lên các dịch vụ trên Aws

- Các server sử dụng ở Aws: IAM, ECS, EC2, S3, CloudFront, RDS

Hình 10 1 Kiến trúc hệ thống

CÁC CÔNG NGHỆ SỬ DỤNG

Typescript

TypeScript là một ngôn ngữ lập trình mã nguồn mở do Microsoft phát triển, là một phiên bản mở rộng của JavaScript Nó kết hợp các tính năng của JavaScript cùng với kiểu dữ liệu tĩnh tốt hơn, giúp tăng cường tính tin cậy và dễ bảo trì của mã nguồn TypeScript trở thành một lựa chọn phổ biến cho việc phát triển ứng dụng web lớn và phức tạp

11.2.2 Kiểu dữ liệu tĩnh (Static Typing)

Một trong những đặc điểm nổi bật nhất của TypeScript là khả năng xác định kiểu dữ liệu của biến, tham số và giá trị trả về của hàm Điều này giúp phát hiện lỗi kiểu dữ liệu tại thời điểm biên dịch thay vì phải chờ đến thời điểm chạy Nhờ có kiểu dữ liệu tĩnh, mã nguồn trở nên dễ đọc hơn và dễ bảo trì hơn

11.2.3 Tích Hợp Tốt với JavaScript

TypeScript được xây dựng trên cú pháp của JavaScript, cho phép nhà phát triển dễ dàng chuyển đổi từ mã JavaScript sang TypeScript và ngược lại Điều này có nghĩa là bạn có thể sử dụng hầu hết các thư viện và frameworks JavaScript mà không gặp vấn đề lớn TypeScript cũng hỗ trợ các tính năng mới nhất của JavaScript như ES6 và ES7

11.2.4 Kiểm Tra Lỗi Tại Thời Điểm Biên Dịch

TypeScript cung cấp một quy trình biên dịch mạnh mẽ, cho phép phát hiện và báo cáo lỗi tại thời điểm biên dịch Điều này giúp giảm thiểu thời gian và công sức cần thiết để debug trong quá trình phát triển Các lỗi có thể được phát hiện và sửa chữa trước khi triển khai mã lên production, giúp tăng tính ổn định của ứng dụng

11.2.5 Code IntelliSense và Auto-completion

TypeScript tích hợp tốt với các công cụ phát triển như Visual Studio Code, cung cấp các tính năng như IntelliSense và auto-completion Điều này giúp tăng tốc độ phát triển bằng cách cung cấp gợi ý về cú pháp, tên biến, phương thức và thuộc tính khi bạn viết code

11.2.6 Mở Rộng Có Thể Điều Chỉnh (Configurable)

TypeScript cung cấp các tùy chọn cấu hình linh hoạt, cho phép bạn tinh chỉnh cách compiler hoạt động Bạn có thể cấu hình TypeScript để phù hợp với dự án cụ thể của mình và tối ưu hóa hiệu suất và trải nghiệm phát triển

11.2.7 Quản Lý Dự Án Tốt Hơn với Modules

TypeScript hỗ trợ sử dụng modules, cho phép bạn tổ chức mã của mình thành các phần nhỏ và tái sử dụng chúng một cách dễ dàng Điều này giúp quản lý dự án trở nên hiệu quả hơn và giảm thiểu sự phức tạp trong quá trình phát triển

TypeScript là một công cụ mạnh mẽ cho việc phát triển website, với sức mạnh của kiểu dữ liệu tĩnh, tích hợp tốt với JavaScript và khả năng giúp bạn xây dựng các ứng dụng web hiệu quả và dễ bảo trì Bằng cách sử dụng TypeScript, bạn có thể tăng cường sự tin cậy và hiệu suất của dự án phát triển web của mình.

Ngôn ngữ lập trình Golang (Tham khảo Tiểu luận chuyên ngành, trang 84)

MySQL và thư viện Gorm (Tham khảo Tiểu luận chuyên ngành, trang 86)

Redis

- In-Memory Storage: Redis lưu trữ dữ liệu trong bộ nhớ RAM, giúp truy xuất dữ liệu cực kỳ nhanh chóng

- Data Structures: Redis hỗ trợ nhiều cấu trúc dữ liệu khác nhau như strings, lists, sets, sorted sets, hashes, bitmaps, hyperloglogs, và streams

- Persistence: Redis hỗ trợ tính năng lưu trữ dữ liệu ra đĩa (persistence) bằng cách sử dụng các snapshot (RDB) hoặc log (AOF) để đảm bảo dữ liệu không bị mất

- Replication: Redis hỗ trợ replication, cho phép tạo ra các bản sao dữ liệu để đảm bảo tính sẵn sàng cao (high availability) và khả năng chịu lỗi (fault-tolerance)

- High Availability and Scalability: Redis có thể được cấu hình theo mô hình cluster để cải thiện khả năng mở rộng (scalability) và độ sẵn sàng (availability)

11.6.2 Ứng dụng của Redis trong dự án

- Caching: Redis thường được sử dụng để cache dữ liệu, giảm tải cho cơ sở dữ liệu chính và tăng tốc độ phản hồi của ứng dụng Ví dụ, các trang web có thể cache các trang đã được render hoặc các truy vấn cơ sở dữ liệu phức tạp

- Session Store: Redis thường được sử dụng để lưu trữ session của người dùng trong các ứng dụng web nhờ vào tốc độ truy xuất nhanh và khả năng lưu trữ dữ liệu tạm thời

- Message Broker: Redis hỗ trợ pub/sub (publish/subscribe) và stream, cho phép nó hoạt động như một message broker, giúp các thành phần trong hệ thống giao tiếp với nhau một cách hiệu quả

- Leaderboard/Counting: Với các cấu trúc dữ liệu như sorted sets, Redis là lựa chọn lý tưởng để xây dựng các hệ thống xếp hạng (leaderboards) hoặc các bộ đếm (counters)

- Real-time Analytics: Redis có thể được sử dụng để thu thập và phân tích dữ liệu thời gian thực nhờ vào tốc độ xử lý nhanh và các cấu trúc dữ liệu mạnh mẽ

11.6.3 Ưu và nhược điểm của Redis Ưu điểm:

- Tốc độ cao: Do dữ liệu được lưu trữ trong bộ nhớ

- Đa dạng cấu trúc dữ liệu: Hỗ trợ nhiều loại cấu trúc dữ liệu phức tạp

- Dễ sử dụng: API của Redis rất đơn giản và dễ sử dụng

- Hỗ trợ tính năng phong phú: Như replication, persistence, pub/sub và clustering Nhược điểm:

- Chi phí bộ nhớ cao: Do dữ liệu được lưu trữ trong RAM

- Khả năng mở rộng: Dù Redis hỗ trợ clustering, việc mở rộng có thể phức tạp hơn so với một số giải pháp cơ sở dữ liệu khác

- Dữ liệu không bền vững hoàn toàn: Nếu không được cấu hình đúng, có thể mất dữ liệu trong trường hợp sự cố hệ thống

Redis là một công cụ mạnh mẽ và linh hoạt, giúp cải thiện hiệu suất và khả năng mở rộng của ứng dụng trong nhiều kịch bản khác nhau.

THIẾT KẾ GIAO DIỆN

Giao diện Người dùng

Hình 12 1 Giao diện trang chủ

Hình 12 2 Hộp thoại lọc địa điểm

Hình 12 3 Hộp thoại lọc theo thời điểm

Hình 12 4 Hộp thoại lọc số lượng khách và số giường

Hình 12 5 Hộp thoại lọc giá phòng tối thiểu và tối đa

Hình 12 6 Hộp thoại Đăng nhập

12.1.4 Hộp thoại Đăng ký (Tham khảo Tiểu luận chuyên ngành, trang 93)

12.1.5 Hộp thoại Quên mật khẩu (Tham khảo Tiểu luận chuyên ngành, trang 94)

12.1.6 Trang Quản lý thông tin cá nhân

Hình 12 7 Trang Quản lý thông tin cá nhân

12.1.7 Trang Thông tin chủ nhà

Hình 12 8 Xem thông tin chủ nhà

Hình 12 9 Chỉnh sửa thông tin chủ nhà

Hình 12 10 Chỉnh sửa đơn đăng ký trở thành chủ nhà

12.1.8 Hộp thoại Tổng hợp bình luận của chủ nhà (Tham khảo Tiểu luận chuyên ngành, trang 95)

12.1.9 Hộp thoại Danh sách phòng của chủ nhà (Tham khảo Tiểu luận chuyên ngành, trang 96)

12.1.10 Trang Đổi mật khẩu (Tham khảo Tiểu luận chuyên ngành, trang 96)

12.1.11 Trang Chi tiết phòng (Tham khảo Tiểu luận chuyên ngành, trang 97)

Hình 12 11 Trang Chi tiết phòng 1

Hình 12 12 Trang Chi tiết phòng 2

Hình 12 13 Trang Chi tiết phòng 3

12.1.12 Trang Đặt phòng (Tham khảo Tiểu luận chuyên ngành, trang 99)

12.1.13 Trang Xác nhận đặt phòng thành công (Tham khảo Tiểu luận chuyên ngành, trang 100)

12.1.14 Trang Quản lý đặt phòng (Tham khảo Tiểu luận chuyên ngành, trang 101)

12.1.15 Trang Thông tin đặt phòng chi tiết (Tham khảo Tiểu luận chuyên ngành, trang 102)

12.1.16 Hộp thoại Danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang

12.1.17 Trang Chi tiết danh sách yêu thích (Tham khảo Tiểu luận chuyên ngành, trang 103)

12.1.18 Hộp thoại gửi báo cáo

Hình 12 14 Hộp thoại gửi báo cáo 1

Hình 12 15 Hộp thoại gửi báo cáo 2

Hình 12 16 Hộp thoại gửi báo cáo 3

12.1.19 Hộp thoại gửi yêu cầu trở thành chủ nhà

Hình 12 17 Hộp thoại gửi yêu cầu trở thành chủ nhà 1

Hình 12 18 Hộp thoại gửi yêu cầu trở thành chủ nhà 2

12.1.20 Hộp thoại gửi yêu cầu trở thành hướng dẫn viên

Hình 12 19 Hộp thoại gửi yêu cầu trở thành hướng dẫn viên 1

Hình 12 20 Hộp thoại gửi yêu cầu trở thành hướng dẫn viên 2

12.1.21 Trang cộng đồng review dịch vụ

Hình 12 21 Trang cộng đồng review dịch vụ 1

Hình 12 22 Trang cộng đồng review dịch vụ 2

12.1.22 Trang chi tiết bài review

Hình 12 23 Trang chi tiết bài review

12.1.23 Hộp thoại chia sẻ lên mạng xã hội

Hình 12 24 Hộp thoại chia sẻ lên mạng xã hội

12.1.24 Trang quản lý bài review dịch vụ cá nhân

Hình 12 25 Trang quản lý bài review dịch vụ cá nhân

12.1.25 Hộp thoại thêm và chỉnh sửa bài review dịch vụ cá nhân

Hình 12 26 Hộp thoại thêm và chỉnh sửa bài review dịch vụ cá nhân 1

Hình 12 27 Hộp thoại thêm và chỉnh sửa bài review dịch vụ cá nhân 2

Hình 12 28 Hộp thoại thêm và chỉnh sửa bài review dịch vụ cá nhân 3

12.1.26 Trang bài đăng hướng dẫn viên

Hình 12 29 Trang bài đăng hướng dẫn viên

Hình 12 30 Trang bài đăng hướng dẫn viên

12.1.27 Trang Chi tiết bài đăng hướng dẫn viên

Hình 12 31 Trang Chi tiết bài đăng hướng dẫn viên 1

Hình 12 32 Trang Chi tiết bài đăng hướng dẫn viên 2

Hình 12 33 Trang Chi tiết bài đăng hướng dẫn viên 3

Hình 12 34 Trang Chi tiết bài đăng hướng dẫn viên 4

12.1.28 Trang Đặt lịch hướng dẫn viên

Hình 12 35 Trang Đặt lịch hướng dẫn viên 1

Hình 12 36 Trang Đặt lịch hướng dẫn viên 2

12.1.29 Trang Xác nhận đặt lịch hướng dẫn viên thành công

Hình 12 37 Trang xác nhận đặt lịch hướng dẫn viên thành công

Hình 12 38 Trang thanh toán bằng Momo 1

Hình 12 39 Trang thanh toán bằng Momo 2

Giao diện Chủ nhà

12.2.1 Hộp thoại Tạo phòng mới (Tham khảo Tiểu luận chuyên ngành, trang 104) 12.2.2 Trang Quản lý phòng (Tham khảo Tiểu luận chuyên ngành, trang 106)

12.2.3 Trang Chi tiết phòng (Tham khảo Tiểu luận chuyên ngành, trang 107)

12.2.4 Trang Quản lý cơ sở vật chất của phòng (Tham khảo Tiểu luận chuyên ngành, trang 108)

12.2.5 Trang Quản lý quy định của phòng (Tham khảo Tiểu luận chuyên ngành, trang

12.2.6 Trang Quản lý thanh toán

Hình 12 41 Trang Quản lý thanh toán

12.2.7 Trang Quản lý doanh thu

Hình 12 42 Trang Quản lý doanh thu

Giao diện Hướng dẫn viên

12.3.1 Hộp thoại Tạo bài đăng mới

Hình 12 43 Hộp thoại Tạo bài đăng mới 1

Hình 12 44 Hộp thoại Tạo phòng mới 2

Hình 12 45 Hộp thoại Tạo phòng mới 3

Hình 12 46 Hộp thoại Tạo phòng mới 4

12.3.2 Trang Quản lý bài đăng

Hình 12 47 Trang Quản lý bài đăng

12.3.3 Trang Chi tiết bài đăng

Hình 12 48 Trang Chi tiết bài đăng 1

Hình 12 49 Trang Chi tiết bài đăng 2

Hình 12 50 Trang Chi tiết bài đăng 3

12.3.4 Trang Quản lý tiện ích

Hình 12 51 Trang Quản lý tiện ích

12.3.5 Trang Quản lý chính sách

Hình 12 52 Trang Quản lý chính sách

12.3.6 Trang Quản lý thanh toán

Hình 12 53 Trang Quản lý thanh toán

12.3.7 Trang Quản lý doanh thu

Hình 12 54 Trang Quản lý doanh thu

Giao diện Quản trị viên

12.4.1 Trang Quản lý tài khoản (Tham khảo Tiểu luận chuyên ngành, trang 109) 12.4.2 Trang Quản lý yêu cầu trở thành hướng dẫn viên

Hình 12 55 Trang Quản lý yêu cầu trở thành hướng dẫn viên

12.4.3 Trang Chi tiết yêu cầu trở thành hướng dẫn viên

Hình 12 56 Trang Chi tiết yêu cầu trở thành hướng dẫn viên

12.4.4 Trang Quản lý yêu cầu trở thành chủ nhà

Hình 12 57 Trang Quản lý yêu cầu trở thành chủ nhà

12.4.5 Trang Chi tiết yêu cầu trở thành chủ nhà

Hình 12 58 Trang Chi tiết yêu cầu trở thành chủ nhà

12.4.6 Trang Quản lý báo cáo

Hình 12 59 Trang Quản lý báo cáo

12.4.7 Trang Chi tiết báo cáo

Hình 12 60 Trang Chi tiết báo cáo 1

Hình 12 61 Trang Chi tiết báo cáo 2

CÀI ĐẶT HỆ THỐNG

Truy cập bằng web đã được triển khai

Yêu cầu hệ thống

Để có thể chạy được ứng dụng, máy tính phải có các yêu cầu sau:

- Front-end: Cài đặt NodeJS 18

Cài đặt phần mềm

Bước 1: Clone hoặc tải mã nguồn theo đường dẫn:

− Back-end: https://github.com/lamhieo02/ParadiseBookingApp

− Front-end: https://github.com/MinhTuongLe/paradise_booking_typescript.git

Bước 2: Cài đặt thư viện:

− Back-end: Sau khi cài đặt ngôn ngữ golang từ https://go.dev/doc/install, tiến hành chạy lệnh `go mod tidy` để cài các package cần thiết

− Front-end: Tại thư mục của source code, mở cửa sổ Terminal và gõ lệnh: npm install –global yarn để cài đặt yarn Sau đó nhập yarn để cài đặt thư viện

 Back-end: Chạy lệnh go run main.go để thực hiện chạy server

 Front-end: Trong Terminal của source code front-end, gõ lệnh yarn dev.

KIỂM THỬ

Kế hoạch kiểm thử (Tham khảo Tiểu luận chuyên ngành, trang 111)

Auto test (kiểm thử tự động) bằng Cypress là một phương pháp phổ biến và mạnh mẽ để kiểm thử ứng dụng web Dưới đây là một báo cáo tóm tắt về việc sử dụng Cypress cho kiểm thử tự động:

Cypress là một công cụ kiểm thử tự động mã nguồn mở được thiết kế dành riêng cho các ứng dụng web Nó cho phép các lập trình viên và kiểm thử viên viết các kịch bản kiểm thử để đảm bảo chất lượng của ứng dụng.

14.4.2 Các tính năng chính của Cypress

- Dễ cài đặt và cấu hình: Cypress có thể được cài đặt dễ dàng thông qua npm và cấu hình đơn giản bằng tệp cypress.json

- Thời gian thực: Cypress cung cấp giao diện người dùng thời gian thực để xem các kịch bản kiểm thử chạy và các kết quả kiểm thử

- Kiểm thử đầu cuối (end-to-end): Hỗ trợ kiểm thử từ giao diện người dùng đến backend

- Tích hợp tốt với CI/CD: Dễ dàng tích hợp vào các pipeline CI/CD để tự động hóa quá trình kiểm thử

- API mạnh mẽ: Cung cấp nhiều API mạnh mẽ để tương tác với DOM, thực hiện các thao tác như click, nhập liệu, và kiểm tra trạng thái của các phần tử.

Chiến lược thực hiện (Tham khảo Tiểu luận chuyên ngành, trang 112)

Auto test (kiểm thử tự động) bằng Cypress là một phương pháp phổ biến và mạnh mẽ để kiểm thử ứng dụng web Dưới đây là một báo cáo tóm tắt về việc sử dụng Cypress cho kiểm thử tự động:

Cypress là một công cụ kiểm thử tự động mã nguồn mở được thiết kế dành riêng cho các ứng dụng web Nó cho phép các lập trình viên và kiểm thử viên viết các kịch bản kiểm thử để đảm bảo chất lượng của ứng dụng.

14.4.2 Các tính năng chính của Cypress

- Dễ cài đặt và cấu hình: Cypress có thể được cài đặt dễ dàng thông qua npm và cấu hình đơn giản bằng tệp cypress.json

- Thời gian thực: Cypress cung cấp giao diện người dùng thời gian thực để xem các kịch bản kiểm thử chạy và các kết quả kiểm thử

- Kiểm thử đầu cuối (end-to-end): Hỗ trợ kiểm thử từ giao diện người dùng đến backend

- Tích hợp tốt với CI/CD: Dễ dàng tích hợp vào các pipeline CI/CD để tự động hóa quá trình kiểm thử

- API mạnh mẽ: Cung cấp nhiều API mạnh mẽ để tương tác với DOM, thực hiện các thao tác như click, nhập liệu, và kiểm tra trạng thái của các phần tử.

Kiểm thử tự động

Auto test (kiểm thử tự động) bằng Cypress là một phương pháp phổ biến và mạnh mẽ để kiểm thử ứng dụng web Dưới đây là một báo cáo tóm tắt về việc sử dụng Cypress cho kiểm thử tự động:

Cypress là một công cụ kiểm thử tự động mã nguồn mở được thiết kế dành riêng cho các ứng dụng web Nó cho phép các lập trình viên và kiểm thử viên viết các kịch bản kiểm thử để đảm bảo chất lượng của ứng dụng.

14.4.2 Các tính năng chính của Cypress

- Dễ cài đặt và cấu hình: Cypress có thể được cài đặt dễ dàng thông qua npm và cấu hình đơn giản bằng tệp cypress.json

- Thời gian thực: Cypress cung cấp giao diện người dùng thời gian thực để xem các kịch bản kiểm thử chạy và các kết quả kiểm thử

- Kiểm thử đầu cuối (end-to-end): Hỗ trợ kiểm thử từ giao diện người dùng đến backend

- Tích hợp tốt với CI/CD: Dễ dàng tích hợp vào các pipeline CI/CD để tự động hóa quá trình kiểm thử

- API mạnh mẽ: Cung cấp nhiều API mạnh mẽ để tương tác với DOM, thực hiện các thao tác như click, nhập liệu, và kiểm tra trạng thái của các phần tử

14.4.3 Ưu nhược điểm của Cypress

Bảng 14 1 Ưu nhược diểm của Cypress Ưu điểm Nhược điểm

✔ Cypress rất dễ cài đặt và sử dụng, không cần cấu hình phức tạp Chỉ cần chạy lệnh cài đặt và mở Cypress là có thể bắt đầu viết kiểm thử

✔ Cypress hoạt động trực tiếp trong trình duyệt, giúp các bài kiểm thử chạy nhanh hơn và ít gặp các vấn đề không ổn định thường thấy ở công cụ kiểm thử khác

✔ Cypress cung cấp công cụ debug mạnh mẽ với khả năng xem trạng thái hiện tại của ứng dụng tại mỗi bước của kiểm thử Các thông báo lỗi rõ ràng và dễ hiểu

✔ Cypress có chế độ xem thời gian thực, cho phép bạn theo dõi quá trình thực thi của các bài kiểm thử ngay khi chúng chạy, giúp phát hiện và sửa lỗi nhanh chóng

✔ Giao diện của Cypress rất trực quan và dễ sử dụng, cho phép xem các kiểm thử và kết quả một cách dễ dàng

✔ Cypress dễ dàng tích hợp với các công cụ CI/CD như Jenkins, CircleCI, Travis

CI, và các công cụ quản lý dự án khác

✔ Cypress hỗ trợ đầy đủ các loại kiểm thử như kiểm thử đơn vị, kiểm thử tích hợp, và kiểm thử end-to-end × Cypress chủ yếu hỗ trợ các trình duyệt dựa trên Chromium như Google Chrome và Microsoft Edge Hỗ trợ cho Firefox vẫn còn hạn chế và không hỗ trợ Internet Explorer × Cypress không hỗ trợ việc kiểm thử với nhiều tab trình duyệt cùng một lúc, điều này có thể gây khó khăn cho một số kịch bản kiểm thử phức tạp × Mặc dù Cypress có thể giả lập kích thước màn hình di động, nhưng nó không hỗ trợ đầy đủ các tính năng kiểm thử trên các thiết bị di động thực tế × So với một số công cụ kiểm thử khác, Cypress có ít tùy chọn mở rộng hơn và phụ thuộc nhiều vào cộng đồng để phát triển thêm các plugin và tích hợp × Cypress có thể gặp khó khăn trong việc quản lý và tái sử dụng dữ liệu giả lập (fixtures) cho các bài kiểm thử phức tạp

14.4.4 Kết quả Kiểm thử tự động của dự án

Hình 14 1 Kết quả kiểm thử 1

Hình 14 2 Kết quả kiểm thử 2

Hình 14 3 Kết quả kiểm thử 3

Hình 14 4 Kết quả kiểm thử 4

Kiểm thử đơn vị

Unit test là một phương pháp kiểm thử phần mềm trong đó các thành phần nhỏ nhất của phần mềm, gọi là đơn vị (unit), được kiểm tra độc lập Mục đích của unit test là đảm bảo rằng mỗi đơn vị phần mềm hoạt động chính xác theo thiết kế

14.5.2 Lợi ích của unit test?

- Phát hiện lỗi sớm: Unit test giúp phát hiện lỗi ngay từ giai đoạn đầu của quá trình phát triển

- Cải thiện chất lượng mã nguồn: Unit test đảm bảo rằng các đơn vị mã nguồn hoạt động đúng, từ đó giúp cải thiện chất lượng tổng thể của phần mềm

- Tài liệu mã nguồn: Unit test có thể đóng vai trò như tài liệu cho mã nguồn, giúp lập trình viên mới hiểu rõ hơn về chức năng của mã

- Dễ dàng bảo trì: Unit test giúp việc bảo trì mã nguồn trở nên dễ dàng hơn, do các lỗi có thể được phát hiện và sửa chữa nhanh chóng

14.5.3 Nhược điểm của unit test?

- Thời gian phát triển: Việc viết và duy trì các unit test đòi hỏi thêm thời gian và công sức Điều này có thể làm chậm tiến độ phát triển, đặc biệt là trong các dự án nhỏ hoặc khi đội ngũ phát triển có ít tài nguyên

- Chi phí bảo trì: Khi mã nguồn thay đổi, các unit test cũng cần được cập nhật tương ứng Việc này có thể gây ra chi phí bảo trì cao, đặc biệt khi có nhiều thay đổi lớn trong mã nguồn

- Khó khăn trong việc viết test: Đôi khi, việc viết unit test cho các module phức tạp hoặc có nhiều phụ thuộc có thể rất khó khăn Điều này đặc biệt đúng với các hệ thống có kiến trúc không rõ ràng hoặc mã nguồn viết kém chất lượng

- Không phát hiện lỗi hiệu suất: Unit test không kiểm tra được các vấn đề về hiệu suất như tốc độ xử lý, sử dụng tài nguyên, hay khả năng mở rộng của hệ thống

14.5.4 Phương pháp kiểm thử BDD (Behavior-driven Development)

Behavior-driven Development (BDD) là một phương pháp phát triển phần mềm tập trung vào việc mô tả hành vi của hệ thống dưới dạng các kịch bản kiểm thử BDD nhằm cải thiện sự giao tiếp giữa các bên liên quan (nhà phát triển, người kiểm thử, khách hàng) bằng cách sử dụng ngôn ngữ tự nhiên để mô tả các yêu cầu và hành vi của hệ thống

- Cải thiện sự giao tiếp: BDD sử dụng ngôn ngữ tự nhiên để mô tả các yêu cầu và hành vi của phần mềm, giúp cải thiện sự giao tiếp giữa các bên liên quan

- Tăng tính rõ ràng: Các yêu cầu và hành vi được mô tả một cách rõ ràng và dễ hiểu, giúp tránh hiểu lầm và thiếu sót

- Phát hiện lỗi sớm: Giống như TDD, BDD giúp phát hiện lỗi sớm trong quá trình phát triển phần mềm

- Xác định hành vi cần kiểm tra: Mô tả hành vi của hệ thống bằng ngôn ngữ tự nhiên, thường sử dụng các câu chuyện người dùng (user stories)

- Viết kịch bản kiểm tra: Sử dụng ngôn ngữ Gherkin để viết các kịch bản kiểm tra (scenarios) dựa trên hành vi đã xác định

- Triển khai kịch bản kiểm tra: Sử dụng các framework BDD để triển khai và thực hiện các kịch bản kiểm tra

Kết quả kiểm thử theo modules

Hình 14 5 Kết quả kiểm thử theo module Account

Hình 14 6 Kết quả kiểm thử theo module Amenity

Hình 14 7 Kết quả kiểm thử theo module Booking

Hình 14 8 Kết quả kiểm thử theo module Booking Guider

Hình 14 9 Kết quả kiểm thử theo module BookingRating

Hình 14 10 Kết quả kiểm thử theo module CalendarGuider

Hình 14 11 Kết quả kiểm thử theo module Comment

Hình 14 12 Kết quả kiểm thử theo module LikePostReview

Hình 14 13 Kết quả kiểm thử theo module Payment

Hình 14 14 Kết quả kiểm thử theo module Place

Ngày đăng: 18/11/2024, 16:29