CHƯƠNG 1: GIỚI THIỆU 1.1 Tổng quan Ngày nay, xã hội ngày càng phát triển mạnh mẽ về mọi mặt, đặc biệt là công nghệ thông tin, hầu hết các ứng dụng tin học đã được áp dụng trong mọi nghiên cứu khoa học cũng như đời sống xã hội. Nó đã trở thành công cụ hữu ích để điều hành, quản lý, lưu trữ và xử lý thông tin đem lại hiệu quả cao. Cùng với sự bùng nổ internet toàn cầu cũng như sự phát triển không có điểm dừng của ngành công nghệ thông tin với xã hội ngành du lịch cũng không ngừng phát triển đặc biệt là các dịch vụ du lịch và bán sản phẩm du lịch. Việt Nam nói riêng và cả thế giới nói chung đã được thiên nhiên ưu đãi ban tặng cho rất nhiều danh lam thắng cảnh cũng như là các địa điểm du lịch đẹp, hấp dẫn, đa dạng và phong phú.
Hiện nay trên thực tế dịch vụ du lịch đang rất phát triển vì thế thu hút được nhiều người đi du lịch ở các điểm du lịch trong và ngoài nước. Nhưng hầu hết những người đi du lịch chưa nắm bắt được đầy đủ các thông tin cơ bản về những địa điểm trong chuyến du lịch của mình cũng như là để chuẩn bị các đồ dùng cần thiết, thiết yếu trong chuyến đi du lịch. Vì thế sẽ gây ra tâm lý hoang mang và bỡ ngỡ cho chuyến đi du lịch của mình. Trước những yêu cầu thực tế đó việc xây dựng một website du lịch và dịch vụ bán sản phẩm du lịch là nhu cầu cần thiết đối với khách du lịch hiện nay.
Website du lịch và dịch vụ bán sản phẩm du lịch tuy không còn mới mẻ nhưng vẫn rất cần thiết để cải thiện ngành du lịch hiện nay ngày càng phát triển hơn. Nhờ vào hệ thống website khách du lịch có thể tiếp cận các thông tin cơ bản về những địa điểm du lịch cũng như là chuẩn bị các vật dụng cần thiết cho chuyến đi của mình một cách nhanh chóng. Thông qua hệ thống website khách du lịch cũng có thể đăng bài, bình luận và đánh giá địa điểm trong chuyến du lịch của mình để chia sẻ kinh nghiệm hoặc khi khách du lịch đó có hiểu biết về địa điểm đó. Từ những chuyến đi và kinh nghiệm thực tế được các khách du lịch chia sẻ từ đó bạn cũng có thể dễ dàng tạo lịch Phạm Thanh Duy - 16043751 Trịnh Đức Duy - 16018731 1 Báo cáo khóa luận tốt nghiệp chuyên ngành Kỹ thuật phần mềm trình cho chuyến đi của mình ngay trên website.
Ngoài ra khách du lịch cũng còn có thể mua các đồ dùng cần thiết cho chuyến đi du lịch và thanh toán các đồ dùng đó thông qua website. Thông qua website thì việc quản lý các địa điểm và sản phẩm dịch vụ cũng dễ dàng được quản lý hơn. Việc website cho phép thống kê được các địa điểm được yêu thích nhất, các sản phẩm dịch vụ được bán chạy nhất và doanh thu thu được từ việc bán sản phẩm sẽ giúp cho chúng ta có những chiến lược kinh doanh phù hợp hơn. Vì thế tài liệu này sẽ trình bày, phân tích chi tiết về hệ thống website du lịch và dịch vụ bán sản phẩm.
Các chương được trình bày trong tài liệu nhằm mục đích làm rõ hơn các lý thuyết và công nghệ cần thiết để xây dựng nên đề tài, các phân tích thiết kế chi tiết và chi tiết cài đặt cấu hình phần mềm hệ thống sẽ giúp chúng ta đánh giá được đề tài về độ bảo mật, sự ràng buộc và độ tin cậy của hệ thống.2 Mục tiêu đề tài - Tạo ra website du lịch và dịch vụ bán sản phẩm cho phép người dùng nắm bắt thông tin cơ bản và chuẩn bị đồ dùng cần thiết cho chuyến đi, đăng bài, tạo bộ sưu tập, bình luận, tạo lịch trình các chuyến đi của chính mình. - Thông báo thông tin địa điểm thông qua lịch được đặt sẵn thông qua email. - Website có thêm dịch vụ mua sản phẩm liên quan, cần thiết cho chuyến đi du lịch của mình.3 Phạm vi đề tài Thực hiện các chức năng: - Khách vãng lai: + Đăng nhập/Đăng ký. + Tìm kiếm và xem chi tiết thông tin địa điểm.
+ Tìm kiếm và xem thông tin sản phẩm dịch vụ. + Xem bài đăng. + Xem nội dung bình luận. Phạm Thanh Duy - 16043751 Trịnh Đức Duy - 16018731 2 Báo cáo khóa luận tốt nghiệp chuyên ngành Kỹ thuật phần mềm + Quản lý giỏ hàng (xem, thêm, xóa, cập nhật).
- Thành viên: thực hiện được các chức năng của khách vãng lai và thực hiện thêm các chức năng: + Cập nhật thông tin cá nhân. + Đặt/Thanh toán sản phẩm dịch vụ. + Xem lịch sử đặt/thanh toán sản phẩm. + Quản lý bài đăng (đăng bài, xóa bài).
+ Tương tác bài đăng. + Đánh giá địa điểm/sản phẩm. + Tạo lịch trình các chuyến đi. + Xem lịch trình đã tạo.
- Admin (Quản lý): thực hiện được các chức năng của guest (khách vãng lai), các chức năng của member (thành viên) và thực hiện thêm các chức năng: + Quản lý sản phẩm dịch vụ. + Thống kê sản phẩm được bán chạy nhất, doanh thu sản phẩm. + Duyệt bài đăng. - Hệ thống: + Gửi email thông báo tạo lịch trình chuyến đi.
+ Tích hợp với các mạng xã hội (Facebook, Google). + Liên kết ví điện tử (Paypal). + Tạo công cụ Crawl Data các địa điểm, sản phẩm từ các trang khác. Thực hiện với các công nghệ: - Front-end: Sử dụng HTML, CSS, JavaScript, Bootstrap kết hợp với framework ReactJS để tạo giao diện cho website.
- Back-end: Sử dụng NodeJS Platform để thực hiện và triển khai các chức năng cho website. - Database: Sử dụng cở sở dữ liệu NoSQL MongoDB. Phạm Thanh Duy - 16043751 Trịnh Đức Duy - 16018731 3 Báo cáo khóa luận tốt nghiệp chuyên ngành Kỹ thuật phần mềm - Sử dụng Socket.io Library để thực hiện các tương tác trên thời gian thực. - Triển khai website sử dụng dịch vụ điện toán đám mây Heroku.4 Mô tả yêu cầu chức năng - Khách vãng lai: có thể vào trang website tìm kiếm các địa điểm du lịch.
Có thể chọn một địa điểm để xem thông tin chi tiết về khu vực, hình ảnh, mô tả, các điểm đến du lịch,… Ngoài ra, khách vãng lai còn có thể nhìn thấy những bài đăng của những người khác khi họ chia sẻ những kinh nghiệm và các đồ dùng cần thiết về chuyến đi. Thông qua những chia sẻ đó, khách vãng lai có thể dựa vào đó và tìm kiếm những sản phẩm để xem qua và lựa chọn sản phẩm phù hợp cho chuyến đi và thêm chúng vào giỏ hàng của mình. Trong trường hợp khách vãng lai muốn mua thì cần phải đăng nhập vào hệ thống để thanh toán. Nếu chưa có tài khoản đăng nhập thì họ có thể đăng ký tài khoản hoặc sử dụng liên kết mạng xã hội (facebook, google) của mình để trở thành thành viên của website.
- Thành viên: Sau khi trở thành thành viên của website, người dùng có thể thực hiện các chức năng tạo lịch trình cho chuyến đi của mình. Lịch trình được tạo bao gồm các thông tin cơ bản như tên chuyến đi, thời gian, điểm đến, điểm đi. Sau đó lịch trình sẽ được thông báo qua gmail cho người dùng để tiện theo dõi, ngoài ra người dùng cũng có thể coi trực tiếp lịch trình đã tạo ngay trên website. Để thực hiện được việc mua sản phẩm trên website thì người dùng phải hoàn tất việc thanh toán.
Người dùng có thể thanh toán bằng hai cách: thanh toán trực tiếp khi nhận được hàng hoặc thanh toán qua cổng điện tử paypal, sau khi xác nhận đã nhận được đơn hàng thì người dùng có thể đánh giá chất lượng của sản phẩm đó. Người dùng có thể bình chọn đánh giá những địa điểm mà người dùng muốn đánh giá trên website. Ngoài ra nếu người dùng muốn bày tỏ cảm xúc hoặc chia sẻ kinh nghiệm của mình về chuyến đi người dùng có thể đăng bài chia sẻ lên website. Những thành viên khác có thể xem các bài chia sẻ trên website và bình luận ý kiến Phạm Thanh Duy - 16043751 Trịnh Đức Duy - 16018731 4 Báo cáo khóa luận tốt nghiệp chuyên ngành Kỹ thuật phần mềm của mình về nội dung của người viết.
Người dùng cũng có thể thực hiện cập nhật thông tin cá nhân của mình ngay trên website. - Admin: Thực hiện chức năng quản lý thông tin của các sản phẩm trên hệ thống và duyệt bài đăng của các thành viên trên website. Bên cạnh đó còn có chức năng thống kê các sản phẩm bán chạy, doanh thu thu được trong ngày/tháng/năm. - System: Gửi thông tin về lịch trình mà người dùng đã tạo đến gmail mà thành viên đã đăng ký để dễ dàng theo dõi lịch trình chuyến đi của mình.
Hệ thống cho phép người dùng đăng nhập bằng tài khoản mạng xã hội thông qua các API của trang mạng xã hội (facebook, google) cung cấp. Khi người dùng thực hiện thanh toán bằng paypal thì hệ thống sẽ gọi đến cổng thanh toán thông qua API được cung cấp để người dùng có thể thanh toán. Bên cạnh đó còn có các con bot tự động crawl dữ liệu các địa điểm, sản phẩm từ các trang liên quan về website. Phạm Thanh Duy - 16043751 Trịnh Đức Duy - 16018731 5 Báo cáo khóa luận tốt nghiệp chuyên ngành Kỹ thuật phần mềm CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 ReactJS [1] ReactJS là một thư viện UI phát triển tại Facebook để hỗ trợ việc xây dựng những thành phần (components) UI có tính tương tác cao, có trạng thái và có thể tái sử dụng lại được.
Một trong những điểm hấp dẫn của ReactJS là thư viện này không chỉ hoạt động trên phía client, mà còn được render trên server và có thể kết nối với nhau. ReactJS so sánh sự thay đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít thay đổi nhất trên DOM. Virtual DOM: Công nghệ DOM ảo giúp tăng hiệu năng cho ứng dụng. Việc chỉ node gốc mới có trạng thái và khi nó thay đổi sẽ tái cấu trúc lại toàn bộ, đồng nghĩa với việc DOM tree cũng sẽ phải thay đổi một phần, điều này sẽ ảnh hưởng đến tốc độ xử lý của ứng dụng.
ReactJS sử dụng Virtual DOM (DOM ảo) để cải thiện vấn đề này. Virtual DOM là một object Javascript, mỗi object chứa đầy đủ thông tin cần thiết để tạo ra một DOM, khi dữ liệu thay đổi nó sẽ tính toán sự thay đổi giữa object và tree thật, điều này sẽ giúp tối ưu hoá việc re-render DOM tree thật. ReactJS còn sử dụng cơ chế one-way data binding – luồng dữ liệu 1 chiều. Dữ liệu được truyền từ parent đến child thông qua props.