Chương 1. Mục tiêu Mục tiêu chính của đề tài là xây dựng một ứng dụng đặt phòng khách sạn online trên nền tảng ứng dụng di động. Đồng thời triển khai xây dựng ứng dụng hỗ trợ vận hành chuỗi khách sạn cùng các nghiệp vụ vận hành bám sát thực tế nhất cho một chuỗi khách sạn từ khâu đặt phòng đến khâu tiếp nhận khách đến, dịch vụ ăn uống, hỗ trợ nghiệp vụ kế toán, xây dựng thuật toán phân loại các phân khúc khách hàng nhằm triển khai các chiến lược marketing phù hợp với từng nhóm khách hàng. Pham vi Pham vi của dé tài sẽ bao gồm các công việc chính như sau: Xây dung ứng dụng đặt phòng khách sạn trực tuyến một cách dé dàng nhất.
~+ Xây dựng hệ thống CRM quản lý nội dung thông tin khách sạn, thông tin khách hàng, đơn đặt hàng một cách tối ưu. ©© Trực quan hóa dir liệu các đơn đặt phòng, thời gian cư trú của khách hàng, thông tin các dịch vụ khác của khách hàng, báo cáo tài chính. Đối tượng sử dụng + Khách hàng có nhu cau tìm phòng khách san V Ứng dụng trên nén tảng di động và website giúp người dùng dé dang đặt phòng khách sạn trên mọi nên tảng. V Cung cấp giao diện thân thiện, dé dùng và dễ tiếp cận với mọi đối tượng khách hàng, với các chức năng như tìm phòng khách sạn theo vi trí, tình trạng khách.
~ Nhân viên khối vận hành w Thao tác các nghiệp vụ từ tạo don đặt phòng cho khách, xếp phòng, cập nhật trạng thái đơn đặt phòng (checkin, checkout, cancel.), cập nhật các dịch vụ ăn uống, sinh hoạt của khách vào hệ thống, theo dõi thông tin khách hàng. w Theo dõi các báo cáo về thông tin đơn đặt phòng, báo cáo lịch cư trú của khách. ~ Nhân viên khối văn phòng (sale, marketing, finance) w Quản lý các thông tin về khách sạn, thông tin phòng khách san, giá phòng các ưu đãi và chính sách tăng giá. w Quản lý các thông tin về khách sạn, thông tin phòng khách san, giá phòng, các ưu đãi và chính sách tăng giá.
s Theo dõi báo cáo doanh thu của khách sạn. VY Theo dõi thông tin khách hàng cùng các phân khúc khách hàng khác nhau, từ đó đưa ra các giải pháp marketing phù hợp nhất. Phuong pháp thực hiện Việc thực hiện dự án có thé được chia thành một loạt các bước quan trọng để đảm bảo rằng đáp ứng được yêu cầu. Dưới đây là các bước phương pháp thực hiện dự án: ~ Xác định Yêu Cầu: w Xác định các chức năng chính cần có, từ ứng dụng va website đặt phòng khách sạn, đến hệ thống CRM quản lý thông tin khách sạn và đơn đặt phòng.
©©_ Xác định nghiệp vu: w Nghiệp vụ tìm phòng và đặt phòng, xác nhận đặt phòng, thanh toán và kiểm tra lịch sử đặt phòng. SS Nghiệp vụ vận hành quản lý các thông tin đặt phòng. Nghiệp vụ kế toán quản lý doanh thu tài chính. Nghiệp vụ sale quan lý thông tin khách sạn, giá phòng và các chính sách tăng giảm giá, khuyến mãi.
+ Thiết kế cơ sở dữ liệu: ` Xây dựng cơ sở dữ liệu sử dụng cơ sở dữ liệu quan hệ PostgreSQL. V Xây dựng các bảng để lưu các thông tin về khách sạn, loại phòng, khách hàng, đơn đặt phòng, bảng giá, các dịch vụ đi kèm. ~+ Phat triển giao diện người dùng: w Xây dung giao diện ứng dụng đặt phòng thân thiện va dé sử dụng. Thao tác nhanh gọi từ bước tìm khách sạn đến bước đặt phòng và thanh toán, đem lại trải nghiệm tốt nhất cho khách hàng.
V Xây dựng giao diện hệ thống CRM dễ thao tác và dé sử dụng. ~ Triển khai và kiểm thử: w_ Triển khai hệ thống và thực hiện các bước kiểm thử chất lượng dé đảm bao tính 6n định và an toàn. V Kiểm thử tích hợp và kiểm thử hệ thống dé đảm bảo tất cả các thành phan hoạt động hiệu quả với nhau. _ Theo dõi và tối ưu hóa: w Thiết lập các công cụ theo dõi hiệu suất để đánh giá sự sử dụng của người dùng và hiệu suất hệ thống.
V Dựa vào phản hồi từ người dùng và dữ liệu theo dõi dé tối ưu hóa trải nghiệm người dùng và cải thiện tính ôn định. Flutter Đây là công cụ dùng để triển khai ứng dụng di động của đề tài. Với rất nhiều ưu điểm trong việc thiết kế giao diện ứng dụng trên cả 2 nền tang là Android va IOS. Flutter Flutter là một framework mã nguồn mở dành cho di động được phát hành vào tháng 5 năm 2017 bởi Google.
Nói một cách dễ hiéu, Flutter cho phép tạo một ứng dụng di động chỉ với một codebase trên iOS và Android bằng một ngôn ngữ lập trình và một cơ sở mã duy nhất. [1] Flutter bao gồm hai phần quan trọng: - SDK (Bộ công cụ phát triển phần mềm): Là một tập hợp các công cụ giúp phát triển các ứng dụng của mình. - Framework (Thư viện giao diện người dùng dựa trên các tiện ích con): Tập hợp các phan giao diện người dùng mà có thé tái sử dụng (nút, đầu vào văn bản, thanh trượt, v.), từ đó có thể cá nhân hóa cho nhu cầu của riêng mình. Nếu ban đang tìm kiếm các phương pháp thay thé dé phát triển ứng dung Android, bạn nên cân nhắc thử Flutter của Google, một framework dựa trên ngôn ngữ lập trình Dart.
Các ứng dụng được xây dựng với Flutter hau như không thé phân biệt với những ứng dụng được xây dựng bang cách sử dụng Android SDK, cả về giao điện và hiệu suất. Hơn nữa, với những tỉnh chỉnh nhỏ, chúng có thê chạy trên thiết bị iOS. Chạy ở 60 fps, giao diện người dùng được tạo ra với Flutter thực thi tốt hơn nhiều so với những ứng dụng được tạo ra với các framework phát triển đa nền tảng khác chăng hạn như React Native và Ionic. Một số lí do khiến bạn có thé hứng thú với Flutter.
Flutter sử dụng Dart, một ngôn ngữ nhanh, hướng đối tượng với nhiều tính năng hữu ích như mixin, generic, isolate, va static type. Flutter có các thành phan UI của riêng nó, cùng với một co chế dé kết xuất chúng trên nền tang Android va iOS. Hầu hết các thành phan giao diện người dùng, đều san dùng, phù hợp với các nguyên tắc của Material Design. Các ứng dụng Flutter có thể được phát triển bằng cách sử dụng IntelliJ IDEA, một IDE rất giống với Android Studio.
Các đặc điểm nồi bật nhất của Flutter: e Fast Development: Tính năng Hot Reload hoạt động trong milliseconds dé hién thi giao diện tới ban. Sử dung tập hợp các widget có thể customizable để xây dựng giao diện trong vài phút. Ngoài ra Hot Reload còn giúp bạn thêm các tính năng, fix bug tiết kiệm thời gian hơn mà không cần phải thông qua máy ảo, máy android hoặc iOS. e Expressive and Flexible UI: Có rất nhiều các thành phan dé xây dựng giao diện của Flutter vô cùng đẹp mắt theo phong cách Material Design và Cupertino, hỗ trợ nhiều các APIs chuyền động, smooth scrolling.
e Native Performance: Cac widget cua flutter két hop cac su khac biét cua các nền tang vi dụ như scrolling, navigation, icons, font để cung cap một hiệu năng tốt nhất tới iOS va Android. Kiến trúc Clean Architecture 2. Giới thiệu Clean Architecture là một kiến trúc phần mềm được đề xuất bởi tác giả Robert C. Martin trong cuốn sách "Clean Architecture: A Craftsman's Guide to Software Structure and Design".
Kiến trúc này được thiết kế dé tách biệt giữa các lớp và giảm thiểu sự phụ thuộc giữa chúng. [2] Theo clean architecture, phần mềm nên được chia thành các lớp phụ thuộc lẫn nhau theo cấp độ trừu tượng và độ ôn định. Kiến trúc này đề xuất sử dụng Dependency Inversion Principle (nguyên tắc đảo ngược phụ thuộc) dé giảm thiểu sự phụ thuộc giữa các lớp. Điều này cho phép các lớp có thé dé dàng thay đổi mà không gây anh hưởng đến các lớp khác.
Clean architecture cũng đề xuất sử dụng các công nghệ tương thích với mục tiêu của kiến trúc này, chang hạn như các hệ thống quản lý phụ thuộc (dependency management systems) và các framework với khả năng tách biệt lớp (layer separation). |_| Enterprise Business Rules | | Application Business Rules Hình 2.2 Mô tả kiến trúc clean architecture 2. Tầng Entities Tầng entities là một trong những tang quan trọng của kiến trúc Clean Architecture. Tang này chứa các đối tượng (objects) và các cấu trúc dit liệu (data structures) của hệ thống.
Entities biểu diễn các khái niệm cốt lõi của hệ thống và chứa các thuộc tính và phương thức liên quan đến chúng. Chúng có thé bao gồm các đối tượng như khách hàng, sản phẩm, đơn hàng, v. Cac entities có thé được sử dụng dé thực hiện các hành động (actions) hoặc thực hiện các thao tác trên cơ sở đữ liệu. Entities là thành phần trung tâm của kiến trúc Clean Architecture và được định nghĩa và triển khai độc lập với các lớp khác của hệ thống.
Điều này giúp tách biệt các phần khác nhau của hệ thống và cho phép chúng ta thay đổi hoặc cập nhật các phần mà không ảnh hưởng đến các phần khác. Các entities cũng có thể chứa các phương thức và thuộc tính liên quan đến việc kiểm tra tính hợp lệ (validity) của các đối tượng, đảm bảo tính nhất quán và độ tin cậy của hệ thống. 11 - Tang entities là một phần quan trong trong Clean Architecture và giúp tách biệt và đơn giản hóa các thành phần của hệ thống, cải thiện tính mở rộng và bảo trì của hệ thống trong thời gian dài. Tang Repository Tang repository là một trong những tang quan trong của kiến trúc Clea Architecture.
Tang này chứa các logic dé truy cập và lưu trữ đữ liệu trong hệ thống. Tầng repository có trách nhiệm thực hiện các hoạt động đọc và ghi dữ liệu vào cơ sở dữ liệu hoặc bất kỳ hệ thống lưu trữ nào khác. Tầng này cung cấp một giao diện để tầng use case (hay còn gọi là tầng services) có thể giao tiếp với đữ liệu, bao gồm các phương thức đề thêm, sửa, xóa và truy vấn dữ liệu. Tầng repository cũng giúp tách biệt tầng use case khỏi các chỉ tiết về cơ sở dữ liệu và cách lưu trữ.
Điều này cho phép chúng ta dễ dàng thay đổi cơ sở đữ liệu hoặc hệ thống lưu trữ mà không ảnh hưởng đến các tầng khác trong hệ thống. - Một điểm đáng lưu ý khi triển khai tang repository là cần xác định rõ kiểu dé liệu mà tang này truy cập và thao tác, cũng như cách mà tầng này phải sử dụng để lưu trữ và truy xuất đữ liệu. Thông thường, tầng repository sử dụng các công nghệ lưu trữ như cơ sở đữ liệu quan hệ (relational database), cơ sở dữ liệu NoSQL hoặc các hệ thống lưu trữ khác.