LỜI MỞ ĐẦU.3 LỜI CAM ĐOAN. GIỚI THIỆU TỔNG QUAN. Mục tiêu đề tài. Giới hạn và phạm vi của đề tài.
Kết quả đạt được. KIẾN THỨC NỀN TẢNG. Mô hình MVC. Công cụ sử dụng.
Visual studio code. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG. Khảo sát hệ thống. Giới thiệu sơ bộ về đơn vị khảo sát.
Thực hiện khảo sát. Các chức năng của hệ thống. Yêu cầu chức năng. Yêu cầu hệ thống.
Yêu cầu phi chức năng. Phân tích hệ thống. Vai trò người dùng. Biểu đồ use-case.
Biểu đồ tuần tự. Biểu đồ hoạt động. Thiết kế hệ thống. Thiết kế cơ sở dữ liệu.
Thiết kế giao diện. GIAO DIỆN CHƯƠNG TRÌNH. Trang quản trị. Giao diện trang chủ quản trị.
Giao diện thêm chuyến bay. Giao diện quản lý banner. Trang đặt vé. Giao diện trang chủ đặt vé.
Giao diện đăng nhập khách hàng. Giao diện tìm kiếm chuyến bay đã đặt. Giao diện kết quả tìm kiếm chuyến bay.67 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.68 TÀI LIỆU THAM KHẢO.69 Ý KIẾN ĐÁNH GIÁ CỦA GIẢNG VIÊN HƯỚNG DẪN. GIỚI THIỆU TỔNG QUAN 1.
Mục tiêu đề tài - Nắm được quy trình nghiệp vụ phát triển một ứng dụng web cho phép quản lý việc đặt vé máy bay và các dịch vụ liên quan. Tối ưu hóa trải nghiệm người dùng trên mọi thiết bị, từ máy tính đến điện thoại di động. - Triển khai và cài đặt ứng dụng trong thực tế. Giới hạn và phạm vi của đề tài Trong phạm vi đề tài này em sẽ nghiên cứu các vấn đề: - Nghiên cứu về công tác quản lý quy trình đặt vé, đi sâu vào nghiên cứu và phân tích một hệ thống thông tin để xây dựng ứng dụng.
- Ứng dụng được xây dựng bằng ngôn ngữ lập trình NodeJs sử dụng framework Express để xử lý dữ liệu người dùng và ngôn ngữ lập trình ReactJs để xây dựng giao diện người dùng, cơ sở dữ liệu lưu trữ bằng MongoDB. Kết quả đạt được Đồ án quản lý đặt vé sau khi thực hiện đạt được các kết quả sau: - Website admin + Quản lý tài khoản người dùng + Quản lý chuyến bay + Quản lý máy bay + Quản lý banner + Quản lý tin tức + Quản lý sân bay + Quản lý khách sạn + Quản lý phòng khách sạn - Website người dùng + Tìm kiếm chuyến bay + Đặt xe đưa đón tại sân bay + Tìm kiếm khách sạn, tìm kiếm taxi + Đọc tin tức + Thêm yêu thích bài viết, bình luận bài viết 13 + Đặt phòng khách sạn hoặc homestay + Thanh toán trực tuyến - Hoàn thành báo cáo đồ án tốt nghiệp. KIẾN THỨC NỀN TẢNG 2. Khái niệm NodeJs là là một môi trường runtime chạy JavaScript đa nền tảng và có mã nguồn mở, được sử dụng để chạy các ứng dụng web bên ngoài trình duyệt của client.
Nền tảng này được phát triển bởi Ryan Dahl vào năm 2009, được xem là một giải pháp hoàn hảo cho các ứng dụng sử dụng nhiều dữ liệu nhờ vào mô hình hướng sự kiện (event-driven) không đồng bộ. Đặc trưng - Không đồng bộ: Tất cả các API của NodeJS đều không đồng bộ (none- blocking), nó chủ yếu dựa trên nền của NodeJS Server và chờ đợi Server trả dữ liệu về. Việc di chuyển máy chủ đến các API tiếp theo sau khi gọi và cơ chế thông báo các sự kiện của Node.js giúp máy chủ để có được một phản ứng từ các cuộc gọi API trước (Realtime). - Chạy rất nhanh: NodeJs được xây dựng dựa vào nền tảng V8 Javascript Engine nên việc thực thi chương trình rất nhanh.
- Đơn luồng nhưng khả năng mở rộng cao: Node.js sử dụng một mô hình luồng duy nhất với sự kiện lặp. cơ chế tổ chức sự kiện giúp các máy chủ để đáp ứng một cách không ngăn chặn và làm cho máy chủ cao khả năng mở rộng như trái ngược với các máy chủ truyền thống mà tạo đề hạn chế để xử lý yêu cầu.js sử dụng một chương trình đơn luồng và các chương trình tương tự có thể cung cấp dịch vụ cho một số lượng lớn hơn nhiều so với yêu cầu máy chủ truyền thống như Apache HTTP Server. - Không đệm: NodeJS không đệm bất kì một dữ liệu nào và các ứng dụng này chủ yếu là đầu ra dữ liệu. - Có giấy phép: NodeJS đã được cấp giấy phép bởi MIT License.
Những ứng dụng nên viết bằng Node.JS NodeJS được sử dụng để xây dựng rất nhiều loại ứng dụng khác nhau, trong đó phổ biến nhất gồm có: - Ứng dụng trò chuyện trong thời gian thực: Nhờ vào cấu trúc không đồng bộ đơn luồng, Node.JS rất thích hợp cho mục đích xử lý giao tiếp trong thời gian thực. Nền tảng này có thể dễ dàng mở rộng quy mô và thường dùng để tạo ra các 15 chatbot. Bên cạnh đó, các tính năng liên quan đến ứng dụng trò chuyện như: chat nhiều người, thông báo đẩy,… cũng có thể dễ dàng được bổ sung nhờ NodeJS. - Internet of Things (IoT): Các ứng dụng IoT thường bao gồm nhiều bộ cảm biến phức tạp để gửi những phần dữ liệu nhỏ.JS là một lựa chọn lý tưởng để xử lý các yêu cầu đồng thời này với tốc độ cực nhanh.
- Truyền dữ liệu: Netflix là một trong số những công ty lớn trên thế giới chuyên sử dụng Node.JS cho mục đích truyền dữ liệu. Sở dĩ vì đây là một nền tảng nhẹ và cực nhanh, đồng thời còn cung cấp một API chuyên dùng để stream. - Các SPA (Single-page application) phức tạp: Trong SPA, toàn bộ ứng dụng được load vào trong một trang duy nhất, do đó sẽ có một số request được thực hiện trong nền. Vòng lặp sự kiện (event loop) của Node.JS cho phép xử lý các request theo hướng non-blocking.
- Các ứng dụng REST dựa trên API: JavaScript được sử dụng trong cả frontend lẫn backend của trang. Do đó một server có thể dễ dàng giao tiếp với frontend qua REST API bằng Node. Bên cạnh đó, Node.JS còn cung cấp nhiều package như Express.js hay Koa để việc xây dựng ứng dụng web trở nên dễ dàng hơn bao giờ hết. Đặc điểm NodeJS - Tốc độ cực nhanh: Được xây dựng dựa trên engine JavaScript V8 của Google Chrome, do đó các thư viện của nó có khả năng thực thi code chỉ rất nhanh.
- Lập trình không đồng bộ: Mọi API của Node.JS đều có tính không đồng bộ (non- blocking), do đó một server dựa trên Node.JS không cần phải đợi API trả về dữ liệu. - Không có buffering: Node.JS giúp tiết kiệm thời gian xử lý file khi cần upload âm thanh hoặc video vì các ứng dụng này không bao giờ buffer dữ liệu mà chỉ xuất dữ liệu theo từng phần (chunk).JS sử dụng mô hình đơn luồng với vòng lặp sự kiện. Do đó các ứng dụng có thể xử lý số lượng request lớn hơn rất nhiều so với các server truyền thống như Apache HTTP Server. Khái niệm Express.js là một framework được xây dựng trên nền tảng của Nodejs.
Nó cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile. Expressjs hỗ trợ các method HTTP và midleware tạo ra API vô cùng mạnh mẽ và dễ sử dụng. Mô hình hoạt động Hình 2. Nhiệm vụ của Express JS trong quá trình phát triển Node JS Node cung cấp module http có thể sử dụng để kiểm tra các đường dẫn, phân tích cú pháp và cung cấp nội dung.
Nhưng khi bắt đầu xây dựng nhiều đường dẫn hơn, điều này trở nên lặp đi lặp lại và là một quá trình phức tạp. Express JS đơn giản hóa quy trình bằng cách cung cấp các phương thức hỗ trợ và tạo đường dẫn hiệu quả cho phần mềm trung gian (middleware). Nó cung cấp tất cả các công cụ bạn sẽ cần để tạo đường dẫn, phân tích cú pháp, tạo trang HTML, làm việc với các middleware và kết nối với cơ sở dữ liệu. Mô hình hoạt động của Middleware Hình trên mô tả hoạt động của Middleware, khi có request gửi lên server, middleware như CORS, CSRF, Auth tham gia và thay đổi trước khi gửi lại response.
Trong Express Framework, hoạt động của hệ thống được thực hiện thông qua việc sử dụng Middleware - một phần mềm trung gian giữa các yêu cầu và xử lý của ứng dụng. Mỗi đường dẫn mà bạn xác định trong Express JS đều có khả năng tích hợp Middleware để thực hiện các chức năng cụ thể. Middleware trong Express Framework có thể được coi như những chức năng đơn giản, có khả năng thực hiện một nhiệm vụ cụ thể. Chẳng hạn, khi tạo một Middleware được đặt tên là "validateEmail" để kiểm tra tính hợp lệ của địa chỉ email, ta có thể áp dụng Middleware này cho một đường dẫn cụ thể.
Khi một yêu cầu đi qua đường dẫn đó, Middleware sẽ kích hoạt và thực hiện chức năng xác thực địa chỉ email. Điều quan trọng là Middleware cung cấp khả năng tái sử dụng mã mô đun trên toàn bộ ứng dụng. Bằng cách này, có thể tận dụng tính linh hoạt của Middleware để xây dựng và triển khai các chức năng xác thực, kiểm tra, hoặc xử lý dữ liệu một cách hiệu quả trên nhiều đường dẫn trong ứng dụng Express. Khái niệm MongoDB là phần mềm cơ sở dữ liệu mã nguồn mở NoSQL hỗ trợ đa nền tảng được thiết kế theo hướng đối tượng.
Các bảng (trong MongoDB gọi là collection) có cấu trúc linh hoạt cho phép dữ liệu không cần tuân theo dạng cấu trúc nào. - MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ 18 trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh. - Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server.) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng - So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row, MongoDB sẽ dùng các document thay cho row trong RDBMS. - Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định.
- Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB b. Ưu điểm và nhược điểm - Ưu điểm + Hiệu suất cao + Tính sẵn sàng cao – Nhân rộng + Khả năng mở rộng cao – Sharding + Năng động – Không có lược đồ cứng nhắc.