Đồ Án Cuối Kỳ: Website Đặt Phòng Khách Sạn Trực Tuyến Sử Dụng NodeJS

Đồ án nghiên cứu cuối kỳ môn phát triển ứng dụng web với nodejs đề tài website đặt phòng khách sạn trực tuyến, thiết kế chi tiết, tính toán kỹ thuật theo tiêu chuẩn, đánh giá tính

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Đồ Án Tốt Nghiệp

2023

69
2
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

ĐỒ ÁN ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

TÓM TẮT

1. CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI

1.1. Lý do chọn đề tài

1.2. Đối tượng nghiên cứu

1.3. Đối tượng khảo sát

1.4. Giới hạn và phạm vi nghiên cứu

1.5. Mục tiêu nghiên cứu

1.6. Phương pháp nghiên cứu

1.7. Ý nghĩa lý luận và thực tiễn của đề tài

2. CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ YÊU CẦU

2.1. Tổng quan về hệ thống

2.2. Xác định yêu cầu

2.2.1. Khảo sát hệ thống

2.2.2. Khảo sát thực tế

2.3. Phân tích hiện trạng

2.4. Sơ đồ phân cấp chức năng

2.5. Đặc tả yêu cầu

2.5.1. Đặc tả chức năng

2.5.2. Đánh giá khả năng

2.5.3. Các tác nhân của hệ thống

2.6. Phân tích yêu cầu

2.6.1. Biểu đồ Use Case Tổng quát

2.6.1.1. Usecase đặt phòng khách sạn
2.6.1.2. Usecase quản lý thông tin cá nhân
2.6.1.3. Usecase quản lý thông tin phòng khách sạn
2.6.1.4. Usecase Quản lý khách hàng
2.6.1.5. Usecase Quản lý thống kê doanh thu, đặt phòng

2.6.2. Biểu đồ Activity Diagrams

2.6.2.1. Biểu đồ Activity đặt phòng
2.6.2.2. Biểu đồ Activity Quản lý thông tin cá nhân

2.6.3. Biểu đồ Sequence Diagrams

2.6.3.1. Biểu đồ tuần tự chọn phòng

2.7. Phân tích hệ thống

2.7.1. Mô tả Class Diagrams

2.7.2. Mô tả ERD

2.7.3. Mô tả cơ sở dữ liệu mức vật lý

2.7.3.1. Cơ sở dữ liệu User
2.7.3.2. Cơ sở dữ liệu Room type
2.7.3.3. Cơ sở dữ liệu Room
2.7.3.4. Cơ sở dữ liệu Booking Room

3. CHƯƠNG 3: GIAO DIỆN NGƯỜI DÙNG UI/ UX

3.1. Phòng khách sạn

3.2. Đặt phòng khách sạn

4. CHƯƠNG 4: HIỆN THỰC HÓA CHỨC NĂNG

4.1. Giao diện Client

4.1.1. Phòng khách sạn

4.1.2. Chi tiết phòng

4.1.3. Đặt phòng khách sạn

4.1.4. Đặt phòng thành công

4.1.5. Xem thông tin cá nhân

4.1.6. Chỉnh sửa thông tin cá nhân

4.1.7. Xem lịch sử đặt phòng

4.2. Giao diện Admin

4.2.1. Trang điều khiển

4.2.2. Quản lý khách hàng

4.2.3. Quản lý loại phòng

4.2.4. Quản lý phòng

4.2.5. Quản lý đặt phòng

5. CHƯƠNG 5: KẾT QUẢ NHẬN ĐƯỢC

5.1. Những kết quả đạt được

5.2. Nhược điểm

5.3. Hướng phát triển, định hướng mở rộng

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng quan website đặt phòng khách sạn trực tuyến NodeJS

Việc phát triển một website đặt phòng khách sạn trực tuyến với NodeJS là giải pháp công nghệ đáp ứng trực tiếp nhu cầu du lịch và nghỉ dưỡng đang gia tăng. Trong bối cảnh công nghệ thông tin là lĩnh vực mũi nhọn, việc ứng dụng web giúp tối ưu hóa quy trình kinh doanh và nâng cao trải nghiệm khách hàng. Đồ án của nhóm sinh viên Đại học Tôn Đức Thắng đã chỉ ra rằng, một hệ thống như vậy không chỉ giúp khách hàng tiết kiệm thời gian, chủ động lựa chọn phòng ốc mà còn hỗ trợ các chủ khách sạn quản lý hiệu quả hơn. Mục tiêu cốt lõi là xây dựng một nền tảng với giao diện thân thiện, quy trình đặt phòng đơn giản và thông tin minh bạch. Nền tảng này cho phép người dùng xem chi tiết phòng, giá cả và tình trạng phòng trống theo thời gian thực. Đối với nhà quản lý, hệ thống cung cấp công cụ để kiểm soát đơn đặt, quản lý thông tin khách hàng và thống kê doanh thu. Việc lựa chọn công nghệ phù hợp, đặc biệt là MERN stack booking app (MongoDB, Express.js, ReactJS, NodeJS), là yếu tố quyết định đến sự thành công của dự án. Công nghệ này cho phép xây dựng một hệ thống linh hoạt, hiệu suất cao và có khả năng mở rộng. Nền tảng Javascript đồng bộ từ backend đến frontend giúp đơn giản hóa quá trình phát triển và bảo trì. Ý nghĩa thực tiễn của đề tài là tạo ra một sản phẩm giải quyết bài toán thực tế, từ đó giúp doanh nghiệp quảng bá hình ảnh, giảm chi phí marketing và tiếp cận một lượng lớn khách hàng tiềm năng. Hơn nữa, việc thu thập phản hồi của khách hàng qua website cũng là kênh thông tin quý giá để cải thiện chất lượng dịch vụ.

1.1. Lý do và mục tiêu phát triển hệ thống booking online

Lý do chính để phát triển hệ thống booking online xuất phát từ nhu cầu thực tiễn của thị trường. Áp lực công việc cao dẫn đến nhu cầu du lịch, nghỉ dưỡng tăng mạnh. Khách hàng cần một công cụ tiện lợi để tìm kiếm và đặt phòng nhanh chóng, tránh tình trạng hết phòng hoặc phải chờ đợi lâu. Tài liệu nghiên cứu cho thấy mục tiêu chính là tạo ra một trang web giúp khách hàng "chủ động hơn trong việc tìm chỗ nghỉ dưỡng". Về phía doanh nghiệp, một website chuyên nghiệp giúp quảng bá thương hiệu, quản lý hoạt động kinh doanh hiệu quả và giảm chi phí vận hành. Các mục tiêu cụ thể bao gồm: xây dựng giao diện UI/UX đẹp mắt, dễ sử dụng; cung cấp thông tin phòng đầy đủ, chính xác; đơn giản hóa quy trình đặt phòng và thanh toán; và cung cấp cho quản trị viên một trang dashboard để quản lý toàn diện hệ thống quản lý khách sạn (PMS).

1.2. Phân tích công nghệ MERN stack cho ứng dụng đặt phòng

Việc lựa chọn stack công nghệ là nền tảng cho sự thành công của dự án. Đồ án đã sử dụng các công cụ như Visual Studio Code, NodeJS, Express.js, và MongoDB. Đây là các thành phần cốt lõi của MERN stack, một lựa chọn phổ biến cho các ứng dụng web hiện đại. NodeJSExpress.js đảm nhiệm phần lập trình backend, cho phép xây dựng các API RESTful mạnh mẽ và hiệu quả. MongoDB, một cơ sở dữ liệu NoSQL, cung cấp sự linh hoạt trong việc lưu trữ dữ liệu phi cấu trúc như thông tin phòng, người dùng và lịch sử đặt phòng. Phía frontend, dù tài liệu không nêu rõ nhưng ReactJS là mảnh ghép hoàn hảo, tạo ra giao diện người dùng tương tác cao. Sự kết hợp này tạo nên một hệ thống đồng bộ bằng JavaScript, giúp tăng tốc độ phát triển và dễ dàng bảo trì mã nguồn website đặt phòng.

II. Thách thức khi lập trình website đặt phòng khách sạn

Xây dựng một website đặt phòng khách sạn trực tuyến với NodeJS phải đối mặt với nhiều thách thức cả về kỹ thuật và nghiệp vụ. Một trong những vấn đề cốt lõi là việc quản lý phòng khách sạn trong thời gian thực. Hệ thống phải đảm bảo rằng khi một khách hàng đang tiến hành đặt phòng, phòng đó sẽ được tạm khóa để tránh tình trạng hai người cùng đặt một phòng (double booking). Vấn đề này đòi hỏi xử lý đồng bộ và quản lý trạng thái phức tạp, có thể cần đến công nghệ như Socket.io để cập nhật real-time. Thách thức thứ hai là bảo mật thông tin. Hệ thống lưu trữ dữ liệu nhạy cảm của người dùng như thông tin cá nhân và chi tiết thanh toán. Do đó, việc triển khai các cơ chế xác thực người dùng an toàn, ví dụ như JWT (JSON Web Token), và mã hóa dữ liệu là bắt buộc. Ngoài ra, việc tích hợp các cổng thanh toán của bên thứ ba cũng là một bài toán phức tạp, đòi hỏi tuân thủ các tiêu chuẩn bảo mật PCI DSS và xử lý các giao dịch không thành công một cách an toàn. Về hiệu năng, website cần có tốc độ phản hồi nhanh, đặc biệt là chức năng tìm kiếm và lọc, ngay cả khi cơ sở dữ liệu có hàng ngàn khách sạn và phòng. Việc tối ưu hóa truy vấn cơ sở dữ liệu MongoDB và caching là rất quan trọng. Cuối cùng, việc thiết kế một giao diện người dùng (UI/UX) trực quan, không gây "bội thực thông tin" như các trang web hiện có (Agoda, Traveloka) cũng là một thách thức lớn được nêu trong tài liệu nghiên cứu.

2.1. Vấn đề quản lý trạng thái phòng và dữ liệu người dùng

Quản lý trạng thái phòng là bài toán trung tâm của một hệ thống booking. Hệ thống phải xử lý chính xác các trạng thái: trống, đang được giữ, đã đặt, đang bảo trì. Theo phân tích từ các biểu đồ Usecase trong tài liệu, luồng đặt phòng cần kiểm tra tình trạng phòng ngay tại thời điểm người dùng xác nhận. Thách thức nằm ở việc xử lý các phiên giao dịch đồng thời. Về dữ liệu người dùng, việc thiết kế một schema hợp lý trong MongoDB cho collection User là rất quan trọng. Schema này không chỉ chứa thông tin đăng nhập mà còn cả lịch sử đặt phòng và các thông tin cá nhân khác, đòi hỏi phải có cơ chế phân quyền và bảo mật nghiêm ngặt để đảm bảo chỉ nhân viên có thẩm quyền mới có thể truy cập danh sách khách hàng.

2.2. Yêu cầu về bảo mật giao dịch và hiệu năng hệ thống

Bảo mật là yêu cầu phi chức năng hàng đầu. Hệ thống phải đảm bảo an toàn cho mọi giao dịch. Quá trình thanh toán qua cổng thanh toán phải được thực hiện qua kết nối HTTPS, và không được lưu trữ thông tin thẻ tín dụng nhạy cảm trên máy chủ. Việc áp dụng JWT (JSON Web Token) cho xác thực người dùng giúp bảo vệ các API đặt phòng khỏi truy cập trái phép. Về hiệu năng, website phải tải nhanh và phản hồi tức thì. Tài liệu đề cập đến nhược điểm "dễ bị lag khi có lượng lớn người truy cập", cho thấy việc tối ưu hóa hiệu năng là một yêu cầu cấp thiết. Điều này bao gồm việc tối ưu hóa truy vấn tới cơ sở dữ liệu NoSQL, sử dụng chỉ mục (indexing) trong MongoDB, và áp dụng các kỹ thuật caching để giảm tải cho máy chủ.

III. Bí quyết xây dựng backend website đặt phòng với NodeJS

Để xây dựng backend cho một website đặt phòng khách sạn trực tuyến với NodeJS, phương pháp tiếp cận có hệ thống là chìa khóa. Nền tảng của backend là Express.js, một framework tối giản nhưng mạnh mẽ của NodeJS. Express.js được sử dụng để định tuyến các yêu cầu HTTP, xử lý middleware và xây dựng một API RESTful. Cấu trúc của API phải được thiết kế một cách logic, phân chia rõ ràng các endpoint cho từng tài nguyên như users, hotels, rooms, và bookings. Mỗi endpoint sẽ hỗ trợ các phương thức CRUD (Create, Read, Update, Delete) tương ứng. Ví dụ, POST /api/bookings sẽ tạo một đơn đặt phòng mới, trong khi GET /api/rooms?hotelId=123 sẽ trả về danh sách các phòng của một khách sạn cụ thể. Về cơ sở dữ liệu, MongoDB là lựa chọn tối ưu nhờ tính linh hoạt của schema, cho phép dễ dàng lưu trữ các thông tin phòng với các tiện nghi đa dạng. Mô hình dữ liệu được thiết kế dựa trên Biểu đồ ERD, trong đó các collection User, Room, RoomType, và BookingRoom được liên kết với nhau thông qua các ID tham chiếu. Việc thiết kế này giúp cho việc truy vấn thông tin trở nên hiệu quả. Quá trình lập trình backend cũng bao gồm việc triển khai logic nghiệp vụ phức tạp, chẳng hạn như kiểm tra phòng trống, tính tổng giá tiền bao gồm thuế và dịch vụ, và gửi email xác nhận cho khách hàng sau khi đặt phòng thành công.

3.1. Thiết kế API RESTful cho quản lý phòng khách sạn

Một API RESTful được thiết kế tốt là xương sống của hệ thống. Dựa trên sơ đồ phân cấp chức năng, các API cần được chia thành hai nhóm chính: API cho người dùng (client) và API cho quản trị viên (admin). API cho client sẽ bao gồm các chức năng như tìm kiếm khách sạn, xem chi tiết phòng, và tạo đơn đặt phòng. API cho admin sẽ phục vụ cho việc quản lý phòng khách sạn, quản lý khách hàng, và xem thống kê doanh thu. Việc sử dụng các chuẩn HTTP status code (200 OK, 201 Created, 400 Bad Request, 401 Unauthorized) là rất quan trọng để client có thể xử lý kết quả trả về một cách chính xác. Các endpoint cần được bảo vệ, ví dụ như các API quản trị chỉ có thể được truy cập bởi người dùng có vai trò admin, được xác thực thông qua middleware kiểm tra JWT.

3.2. Xây dựng cơ sở dữ liệu NoSQL với MongoDB cho booking

Việc sử dụng MongoDB làm cơ sở dữ liệu NoSQL mang lại nhiều lợi thế. Tài liệu gốc đã mô tả chi tiết các collection chính bao gồm User, Room type, Room, và Booking Room. Collection Room chứa các thông tin như tên phòng, giá, mô tả, hình ảnh, và trạng thái phòng. Collection Booking Room lưu lại thông tin về mỗi lần đặt phòng, bao gồm ID người dùng, ID phòng, ngày nhận/trả phòng và tổng chi phí. Thiết kế này cho phép truy vấn lịch sử đặt phòng của một người dùng hoặc kiểm tra tình trạng phòng trong một khoảng thời gian nhất định một cách hiệu quả. Sự linh hoạt của MongoDB cũng giúp dễ dàng mở rộng hệ thống trong tương lai, ví dụ như thêm các dịch vụ đi kèm hoặc các chương trình khuyến mãi mà không cần phải thay đổi cấu trúc cơ sở dữ liệu một cách cứng nhắc.

IV. Hướng dẫn tích hợp các tính năng quan trọng cho website

Một website đặt phòng khách sạn trực tuyến với NodeJS thành công không chỉ dựa vào backend mạnh mẽ mà còn cần các tính năng then chốt để phục vụ người dùng. Quá trình tích hợp này đòi hỏi sự kết hợp nhịp nhàng giữa frontend và backend. Tính năng quan trọng hàng đầu là xác thực người dùng và quản lý phiên đăng nhập. Sử dụng JWT (JSON Web Token) là một phương pháp hiện đại và an toàn. Khi người dùng đăng nhập, server sẽ tạo một token chứa thông tin của người dùng và gửi về cho client. Client sẽ lưu trữ token này và đính kèm vào mỗi yêu cầu gửi lên server sau đó, giúp server xác thực người dùng mà không cần lưu trữ session. Tiếp theo là việc tích hợp cổng thanh toán. Đây là một bước phức tạp nhưng bắt buộc. Quy trình bao gồm việc chuyển hướng người dùng đến trang thanh toán của nhà cung cấp (VNPAY, Momo), xử lý kết quả trả về (thành công hay thất bại), và cập nhật trạng thái đơn hàng trong cơ sở dữ liệu NoSQL. Một tính năng quan trọng khác là tìm kiếm và lọc. Người dùng cần có khả năng tìm kiếm khách sạn theo địa điểm, ngày tháng, số lượng người, và lọc kết quả theo khoảng giá, hạng sao, hoặc tiện nghi. Điều này đòi hỏi backend phải xây dựng một API đặt phòng linh hoạt, có khả năng xử lý nhiều tham số truy vấn và tối ưu hóa trên MongoDB để trả về kết quả nhanh chóng. Cuối cùng, giao diện quản trị (Admin Dashboard) là công cụ không thể thiếu để vận hành khách sạn, cho phép quản lý phòng, xem danh sách đơn đặt, và thống kê doanh thu.

4.1. Quy trình xác thực người dùng an toàn bằng JWT

Quy trình xác thực người dùng bằng JWT bắt đầu khi người dùng gửi thông tin đăng nhập (email/mật khẩu). Backend sẽ kiểm tra thông tin này với dữ liệu trong collection User của MongoDB. Nếu hợp lệ, backend sẽ tạo một JWT chứa userIdrole (vai trò, ví dụ: 'user' hoặc 'admin'), ký bằng một khóa bí mật (secret key) và gửi lại cho client. Client (thường là một ứng dụng ReactJS) lưu token này (trong localStorage hoặc cookies) và gửi nó trong header Authorization của mỗi request tiếp theo. Một middleware trên Express.js sẽ giải mã token này để xác thực và cấp quyền truy cập vào các tài nguyên tương ứng.

4.2. Tích hợp cổng thanh toán và xử lý giao dịch online

Tích hợp cổng thanh toán là một chức năng nghiệp vụ phức tạp. Khi người dùng chọn thanh toán, backend sẽ tạo một yêu cầu thanh toán với các thông tin như mã đơn hàng, số tiền, và nội dung, sau đó tạo một URL thanh toán duy nhất từ API của nhà cung cấp dịch vụ (ví dụ: VNPAY). Người dùng được chuyển hướng đến URL này để thực hiện thanh toán. Sau khi hoàn tất, nhà cung cấp sẽ gọi lại một URL callback trên server của ứng dụng, mang theo kết quả giao dịch. Backend phải xác minh tính toàn vẹn của dữ liệu trả về (thông qua chữ ký số) trước khi cập nhật trạng thái đơn đặt phòng trong hệ thống booking.

V. Kết quả hiện thực hóa website đặt phòng từ lý thuyết

Dự án website đặt phòng khách sạn trực tuyến với NodeJS đã được hiện thực hóa thành công, chuyển đổi từ các sơ đồ thiết kế và phân tích yêu cầu thành một sản phẩm có thể hoạt động. Kết quả được thể hiện rõ qua hai giao diện chính: Giao diện người dùng (Client) và Giao diện quản trị (Admin). Giao diện Client, được thiết kế dựa trên wireframe trong Figma, mang lại trải nghiệm mượt mà cho người dùng cuối. Các chức năng cốt lõi như xem danh sách phòng, xem chi tiết phòng, và thực hiện đặt phòng đều hoạt động trơn tru. Quá trình đặt phòng được đơn giản hóa, người dùng chỉ cần điền các thông tin cần thiết và nhận xác nhận thành công. Trang thông tin cá nhân cho phép người dùng xem và chỉnh sửa thông tin cũng như tra cứu lịch sử các lần đặt phòng trước đó. Giao diện này đã đáp ứng được mục tiêu ban đầu là tạo ra một trang web "dễ nhìn và dễ sử dụng". Phía Giao diện Admin là một hệ thống quản lý khách sạn (PMS) thu nhỏ, cung cấp các công cụ mạnh mẽ cho nhân viên. Trang điều khiển (Dashboard) hiển thị các số liệu thống kê quan trọng. Các mục quản lý phòng khách sạn, quản lý loại phòng, quản lý khách hàng và quản lý đặt phòng được tổ chức một cách khoa học, giúp nhân viên dễ dàng thực hiện các thao tác nghiệp vụ hàng ngày. Việc có một mã nguồn website đặt phòng hoàn chỉnh là kết quả đáng ghi nhận, chứng minh năng lực áp dụng lý thuyết vào thực tiễn của nhóm phát triển.

5.1. Giao diện người dùng Client và quy trình đặt phòng

Giao diện Client được xây dựng với mục tiêu tối ưu hóa trải nghiệm người dùng. Trang chủ hiển thị nổi bật các khách sạn và chương trình khuyến mãi. Chức năng tìm kiếm cho phép người dùng nhanh chóng tìm được phòng phù hợp. Trang chi tiết phòng cung cấp đầy đủ thông tin, hình ảnh và các tiện ích. Quy trình đặt phòng được thực hiện qua các bước rõ ràng: chọn phòng, điền thông tin cá nhân, và xác nhận. Sau khi đặt phòng thành công, hệ thống hiển thị thông báo và gửi email xác nhận. Giao diện cũng được thiết kế đáp ứng (responsive), đảm bảo hiển thị tốt trên nhiều thiết bị khác nhau, đây là một ưu điểm quan trọng của MERN stack booking app.

5.2. Trang quản trị Admin và hệ thống quản lý khách sạn

Trang quản trị là trung tâm điều hành của website. Nó cho phép người quản lý có cái nhìn tổng quan về tình hình kinh doanh thông qua các biểu đồ thống kê. Chức năng quản lý phòng khách sạn cho phép thêm, sửa, xóa thông tin và hình ảnh của từng phòng. Mục quản lý đặt phòng hiển thị danh sách tất cả các booking, cho phép nhân viên xác nhận hoặc hủy đơn đặt. Hệ thống này giúp số hóa các nghiệp vụ truyền thống, giảm thiểu sai sót và nâng cao hiệu quả quản lý. Đây là một thành phần thiết yếu của một hệ thống booking hoàn chỉnh.

VI. Đánh giá và hướng phát triển website đặt phòng tương lai

Việc hoàn thành website đặt phòng khách sạn trực tuyến với NodeJS đã đạt được nhiều kết quả tích cực, tuy nhiên vẫn còn không gian để cải tiến và phát triển. Ưu điểm lớn nhất của hệ thống là sự tiện lợi, giao diện thân thiện và tốc độ xử lý nhanh. Việc cho phép khách hàng đăng ký thành viên và bảo mật thông tin đã xây dựng được lòng tin ban đầu. Tuy nhiên, tài liệu cũng thẳng thắn nhìn nhận các nhược điểm. Hệ thống có thể bị chậm khi lượng truy cập lớn, cho thấy cần tối ưu hóa hơn nữa về mặt hiệu năng. Việc chưa tích hợp nhiều cổng thanh toán phổ biến như Momo hay ZaloPay cũng là một hạn chế cần khắc phục để tăng sự tiện lợi cho người dùng Việt Nam. Hướng phát triển trong tương lai rất rõ ràng. Trước hết, cần tiếp tục sửa lỗi và cải tiến hiệu năng hệ thống, có thể thông qua việc sử dụng caching, tối ưu hóa truy vấn MongoDB, hoặc nâng cấp hạ tầng server. Tiếp theo, việc mở rộng các tính năng là cần thiết. Có thể bổ sung hệ thống đánh giá và bình luận cho khách sạn, chức năng tìm kiếm nâng cao sử dụng bản đồ, hoặc tích hợp các dịch vụ đi kèm như đặt tour du lịch, thuê xe. Việc phát triển một ứng dụng di động (mobile app) sử dụng chung API RESTful với website cũng là một định hướng chiến lược để tiếp cận nhiều người dùng hơn. Cuối cùng, việc ứng dụng các công nghệ mới như GraphQL thay cho REST hoặc sử dụng Socket.io để xây dựng các tính năng thời gian thực (như chat hỗ trợ) sẽ giúp hệ thống booking trở nên cạnh tranh và hiện đại hơn.

6.1. Những kết quả đạt được và ưu điểm của mã nguồn

Kết quả chính là một mã nguồn website đặt phòng hoạt động được với các chức năng cơ bản hoàn chỉnh. Ưu điểm nổi bật là cấu trúc code được tổ chức theo mô hình MVC, đảm bảo tính clean code và dễ bảo trì. Việc sử dụng một ngôn ngữ chung là JavaScript cho cả lập trình backend (NodeJS) và frontend (ReactJS) giúp đơn giản hóa quá trình phát triển. Hệ thống đã thành công trong việc giải quyết bài toán nghiệp vụ cốt lõi là cho phép người dùng đặt phòng và quản trị viên quản lý hệ thống.

6.2. Nhược điểm và định hướng mở rộng hệ thống booking

Nhược điểm chính được xác định là vấn đề hiệu năng khi có tải cao và hạn chế về phương thức thanh toán. Để khắc phục, hướng phát triển cần tập trung vào việc tối ưu hóa API đặt phòng và cơ sở dữ liệu. Định hướng mở rộng bao gồm việc bổ sung các tính năng xã hội hóa (đánh giá, chia sẻ), cá nhân hóa trải nghiệm người dùng (gợi ý khách sạn dựa trên lịch sử), và tích hợp thêm nhiều dịch vụ của bên thứ ba. Việc phát triển một hệ thống quản lý khách sạn (PMS) đầy đủ tính năng hơn cũng là một mục tiêu dài hạn để cung cấp một giải pháp toàn diện cho các đối tác khách sạn.

10/07/2025
Đồ án cuối kỳ môn phát triển ứng dụng web với nodejs đề tài website đặt phòng khách sạn trực tuyến

Trích đoạn nội dung tài liệu

CHƯƠNG 1 – GIỚI THIỆU ĐỀ TÀI 1.1 Lý do chọn đề tài Công nghệ thông tin là một trong những lĩnh vực đi đầu trong sự phát triển của nền kinh tế nhiều nước trên thế giới hiện. Những nước đang phát triển nắm bắt cơ hội đó đã và đang tập trung đẩy mạnh lĩnh vực này, Việt Nam chúng ta cũng không ngoại lệ. Với nhiều thành quả thành công trong xã hội, công nghệ thông tin được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau, trở thành một phần không thể thiếu và là yếu tố quan trọng trong sự phát triển của nền kinh tế - xã hội, an ninh – quốc phòng. Việc áp dụng công nghệ thông tin vào trong đời sống sẽ làm thay đổi cách làm việc, nâng cao hiệu suất lao động, nâng cao dân trí,… Vì thế, công nghệ thông tin trở thành nền kinh tế mũi nhọn của nước ta trong những năm tới đây.

Việc phát triển nhanh chóng của lĩnh vực công nghệ thông tin, các nhà quản lý, nhà kinh doanh trong lĩnh vực này đã tận dụng điều này trong xã hội hiện nay. Việc con người muốn có sự giải trí hoặc thích đi khám phá thế giới xung quanh ngày càng trở nên cao. Vậy nên, các nhà kinh doanh của các công ty lớn đã nhận ra và hiểu được mong muốn của con người đã xây dựng nên một trang website giúp được con người trở nên thuận tiện, tiện lợi hơn trong đời sống. Ngoài ra, việc xây dựng trang website là hình thức truyền tải thông tin nhanh chóng, hiệu quả và phù hợp với thực tại bây giờ.

Những khách hàng có nhu cầu đặt,thuê phòng khách sạn một cách nhanh chóng và trực tiếp thuê thông qua website trực tuyến, giúp cho khách hàng tiết kiệm được rất nhiều thời gian và tiện lợi trong việc thuê được phòng khách sạn mà mình mong muốn. Qua quá trình học tập trên lớp và cũng như tìm hiểu nhu cầu của thị trường, nhóm chúng em đã áp dụng những kiến thức trong lớp và kiến thức thực tế để xây dựng nên hệ thống “Website đặt phòng khách sạn trực tuyến” với sự hướng dẫn tận tình và chi tiết của giáo viên. Ngoài ra, khi làm báo cáo này còn giúp em và các thành viên trong nhóm nâng cao khả năng lập trình và được nhiều bài học cho các trang web sau. Vì kiến thức và kinh nghiệm lập trình, thiết kế còn hạn hẹp nên phần mềm 2 của nhóm chúng em chưa thực sự thu hút được khách hàng cũng như còn có nhiều thiếu sót trong quá trình làm.

Rất mong là được nhận sự đóng góp của thầy và các bạn để phần mềm của nhóm chúng em có sự chỉnh sửa cũng như nâng cấp và hoàn thiện nữa.2 Đối tượng nghiên cứu Người sử dụng: Những người có nhu cầu đặt phòng khách sạn. Tất cả mọi người đều có thể tham gia trang website này. Công cụ hỗ trợ: Visual code(HTML,CSS,Javascript), Nodejs, Express, MongoDB. Ngoài ra còn có một số công cụ hỗ trợ trong quá trình phân tích thiết kế như: Figma, Draw.io, Free Vector, Font Awesome,.3 Đối tượng khảo sát Người cung cấp thông tin: Quản lý và lễ tân tại các khách sạn.4 Giới hạn và phạm vi nghiên cứu Mục đích nghiên cứu: Nhằm tạo ra trang web đáp ứng nhu cầu đặt phòng khách sạn của khách hàng.

Tại đây khách hàng có thể xem chi tiết, giá cả và tình trạng phòng trống để có thể chủ động hơn trong việc tìm chỗ nghỉ dưỡng mà không lo hết phòng. Về phía quản lý có thể kiểm soát được số lượng khách hàng, đơn đặt cũng như thống kê được doanh thu của khách sạn. Phạm vi nghiên cứu: Các khách sạn ở TP.5 Mục tiêu nghiên cứu Giúp khách hàng có những trải nghiệm tuyệt vời khi tham quan một trang web đặt phòng khách sạn. Nhóm cố gắng nghiên cứu, xây dựng trang web có giao diện đẹp mắt, quy trình dễ hiểu nhất có thể, lượng thông tin trên trang web là vừa đủ.

Cải thiện tối đa sự khó dùng, “bội thực thông tin” từ các trang web trước. Giúp khách hàng có thể tìm xem được thông tin, giá cả, chủ động hơn trong việc đặt phòng. Giúp phía khách sạn dễ dàng quản lý, kiểm soát hoạt động của khách sạn. 3 Tiếp nhận những phản hồi của khách hàng về chất lượng của căn phòng khách sạn cũng như các quy trình làm việc của khách sạn thông qua website.6 Phương pháp nghiên cứu - Tìm kiếm tài liệu về xây dựng trang web sử dụng Nodejs - Tìm hiểu về Upload ảnh, mô hình MVC - Tham khảo các trang website đặt phòng khách sạn trên mạng (Agoda, Traveloka, …) - Vận dụng vào việc thiết kế và xây dựng ứng dụng Web - Thu thập những tài liệu liên quan đến nghiệp vụ quản lý Website đặt phòng khách sạn trực tuyến.

- Tham khảo tài liệu về MongoDB để đẩy dữ liệu lên trang web - Tham khảo tài liệu, tiến hành coding trên các công cụ phần mềm và hoàn thành website.7 Ý nghĩa lý luận và thực tiễn của đề tài Website được xây dựng nhằm giải quyết nhu cầu thực tiễn của khách hàng. Qua đó cũng nắm bắt được khách hàng mong muốn điều gì, từ đó đưa ra các giải pháp phù hợp cho người dùng. Giúp các doanh nghiệp và chủ khách sạn có thể quảng bá khách sạn của mình đến với các khách hàng. Mặc dù đề tài này được các doanh nghiệp đã và đang thực hiện rất thành công nhưng vẫn còn một số điểm cần được cân nhắc và chỉnh sửa.

Việc xây dựng website đặt phòng khách sạn trực tuyến nhằm mục đích khách hàng có thể lựa chọn được khách sạn kèm với dịch vụ tốt nhất, tiết kiệm được nhiều thời gian cho khách hàng và chủ doanh nghiệp có thể giảm chi phí marketing cũng như quảng bá khách sạn của mình, từ đó có nhiều khách hàng tiềm năng tới khách sạn của mình hơn. Về khách hàng, đem lại sự tiện ích cho khách hàng bằng các tính năng như thanh toán trực tuyến, đặt phòng mà không cần phải tạo tài khoản, có thể thêm một số 4 dịch vụ ngoài khách sạn, cập nhật thông tin khách sạn và hiển thị một số chức năng đã được định sẵn. Về quản lý, giúp cho người quản lý giải quyết vấn đề quản lý thông tin khách hàng, quản lý chất lượng khách sạn, người truy cập, nguồn lực tìm kiếm của khách hàng, tìm kiếm những khách sạn tiềm năng và chất lượng phù hợp với khách hàng để có thể đưa lên hệ thống. Có thể lấy khảo sát của khách hàng để phát triển trang website.

Đạt hiệu quả về tối ưu nghiệp vụ đặt phòng khách sạn trực tuyến, tiết kiệm chi phí và nguồn lực, thời gian và công sức mà trang web mang lại cho khách hàng và người chủ doanh nghiệp. 5 CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ YÊU CẦU 2.1 Tổng quan về hệ thống Hệ thống website đặt phòng khách sạn là một công cụ, vũ khí đắc lực trong kinh doanh, đặc biệt là ở lĩnh vực khách sạn. Tuy nhiên, nhiều doanh nghiệp vẫn đang sử dụng phần mềm quản lý khách sạn với các giao diện phức tạp, khó sử dụng và thiếu tính linh hoạt. Sau khi nắm bắt được những điểm yếu trên, chúng tôi đã lên ý tưởng và cho ra hệ thống quản lý khách sạn P4nthers.

Hệ thống quản lý khách sạn P4nthers của chúng tôi bao gồm những chức năng cần thiết như: Quản lý nhân viên, quản lý đặt phòng, quản lý doanh thu. Ngoài ra còn có thêm những chức năng như: Quản lý lịch sử đặt phòng, thống kê thu nhập theo chu kì, quản lý danh sách khách hàng… Tóm lại, hệ thống của chúng tôi đáp ứng được tất cả các chức năng của một hệ thống quản lý khách sạn. Ngoài ra còn hướng đến trải nghiệm của người dùng với giao diện thân thiện, dễ sử dụng và linh hoạt trong từng mục đích.2 Xác định yêu cầu 2.1 Khảo sát hệ thống Tiêu chí khảo sát Hệ thống quản lý khách sạn P4nthers Các chức năng của hệ Đăng ký khách hàng thống Đăng nhập Tìm kiếm thông tin nhân viên, phòng Đặt phòng Chọn ngày và số phòng cần đặt Đặt dịch vụ kèm theo Xem thông tin cá nhân, phòng đã đặt Quản lý thông tin các phòng khách sạn Quản lý danh sách khách hàng 6 Quản lý lịch sử đặt phòng Thống kê thu nhập khách sạn Giao diện website Đầy đủ thông tin phòng, các chương trình khuyến mãi, giao diện thân thiện, màu sắc thống nhất hài hòa. Hình thức Website đặt phòng khách sạn hoạt động 24/24 người dùng có thể đặt phòng bất kỳ lúc nào kể cả khi không đăng nhập.

Chăm sóc khách hàng Hệ thống sẽ kết nối khách hàng đã đăng nhập với nhân viên hỗ trợ khách hàng thông qua mục chat trực tuyến. Liên kết mạng xã hội Người dùng có thể đăng nhập qua Facebook, Google account, bên cạnh đó người dùng cũng sẽ thấy các quảng cáo về khách sạn trên các nền tảng xã hội. Cách thức đặt phòng Tìm kiếm thông tin phòng cần đặt Chọn phòng cần đặt Nhập thông tin cá nhân Chọn sử dụng các chương trình khuyến mãi Thanh toán 7 Người dùng Nhân viên và khách hàng Bảng 2. 1: Khảo sát hệ thống 8 2.2 Khảo sát thực tế Kế hoạch phỏng vấn tổng quan Hệ thống: Quản lý khách sạn Người lập: Đoàn Phương Nam Ngày lập: 12/3/2023 STT Chủ đề Yêu cầu Ngày bắt Ngày kết đầu thúc 1 Quy trình Nắm rõ quy trình đặt phòng 12/3/2023 13/3/2023 quản lý khách sạn, lưu trữ thông tin phòng khách phòng còn trống, các dịch vụ, sạn tiện nghi của từng phòng khác nhau.

2 Quy trình Nắm rõ quy trình đề ra và áp 13/3/2023 14/3/2023 hoạch định dụng trong các sự kiện khuyến khuyến mãi mãi khi đặt phòng (giá phòng, và tin tức dịch vụ kèm theo, độ tuổi khuyến mãi…) 3 Quy trình Nắm được quy trình cho thuê 15/3/2023 15/3/2023 quản lý cho đặt phòng của khách sạn, các thuê phòng yêu cầu cần thiết để khách hàng sử dụng dịch vụ của khách sạn. 4 Quy trình Biết rõ quy trình thực hiện các 16/3/2023 16/3/2023 thống kê báo cáo về lượng khách vào ra, số phòng còn trống, tất cả được dựa vào dữ liệu trong hệ thống 5 Các dịch vụ, Tìm hiểu kỹ về tài nguyên 17/3/2023 17/3/2023 tiện nghi của khách sạn như là dịch vụ hiện khách sạn đang cung cấp, các tiện nghi được trang bị sẵn trong phòng Bảng 2.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ