Giới thiệu dự án
Giới thiệu “Website Nice Travel”
Mặc dù dịch covid-19 vẫn đang diễn biến phức tạp và ảnh hưởng đến nhiều ngành dịch vụ, trong đó có du lịch, nhưng niềm đam mê du lịch của mọi người vẫn rất mạnh mẽ Khi dịch bệnh được kiểm soát, xu hướng du lịch dự kiến sẽ gia tăng đáng kể.
Trong bối cảnh dịch bệnh phức tạp, mọi người có thể dễ dàng tìm hiểu thông tin về các tour du lịch, bao gồm giá cả và địa điểm, ngay trên website mà không cần phải ra ngoài Khi dịch bệnh được kiểm soát, chúng ta có thể đặt tour để tận hưởng những chuyến du lịch cùng bạn bè và gia đình.
Hiện nay công nghệ 4.0 nên việc đặt tour du lịch cũng không quá khó khăn với mọi người, họ có thể lên website đặt tour mọi lúc mọi nơi.
Dựa trên nhu cầu thực tế và sở thích du lịch ngày càng tăng, nhóm chúng tôi quyết định phát triển "Website Nice Travel" để cung cấp những hành trình thú vị cho mọi người.
Nền tảng công nghệ
Web ap: Sử dụng Angular JS, Html, Css, Bootstrap…
Restful Web Service: Sử dụng framework Spring Boot.
Công cụ lập trình & công nghệ sử dụng
Frameworks: Spring Boot, Hibernate, JPA, Angular JS.
Tool: Eclipse, Microsoft SQL Server, Visual Studio Code.
Giới thiệu hệ quản trị cơ sở dữ liệu
Microsoft phát triển hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) hoạt động theo mô hình khách chủ, cho phép nhiều người dùng truy xuất dữ liệu đồng thời.
Mục đích sử dụng SQL Server:
Xây dựng cơ sở dữ liệu.
Duy trì cơ sở dữ liệu.
Hỗ trợ các thao tác dữ liệu: truy vấn, phân tích dữ liệu, tạo báo cáo, trích xuất và tổng hợp dữ liệu.
Giới thiệu ngôn ngữ lập trình (Java)
Java là một ngôn ngữ lập trình đa nền tảng, cho phép lập trình viên viết mã một lần và chạy trên mọi hệ điều hành với sự hỗ trợ của môi trường Java Development Kit (JDK) Đặc điểm nổi bật của Java bao gồm tính hướng đối tượng, bảo mật cao, khả năng xử lý mạnh mẽ, hỗ trợ lập trình phân tán và đa luồng Hơn nữa, Java hoàn toàn miễn phí, làm cho nó trở thành lựa chọn phổ biến cho các nhà phát triển.
Trong Java, mọi thứ đều được xem như một đối tượng, điều này giúp ngôn ngữ này dễ dàng mở rộng và bảo trì Mô hình đối tượng là nền tảng cho Java, tạo điều kiện thuận lợi cho việc phát triển ứng dụng.
Java là một ngôn ngữ lập trình độc lập, khác với nhiều ngôn ngữ như C và C++, khi được biên dịch, Java không chuyển đổi thành ngôn ngữ máy cụ thể cho từng nền tảng Thay vào đó, Java được biên dịch thành mã byte, cho phép nó chạy trên bất kỳ nền tảng nào thông qua máy ảo Java (JVM).
Đơn giản - Java được thiết kế để dễ học Nếu bạn hiểu khái niệm cơ bản về OOP Java, sẽ rất dễ để trở thành master về java.
Java cung cấp tính năng bảo mật vượt trội, cho phép phát triển các hệ thống miễn nhiễm với virus và giả mạo Hệ thống xác thực của Java dựa trên các kỹ thuật mã hóa khóa công khai, đảm bảo an toàn cho dữ liệu và thông tin người dùng.
Trình biên dịch Java tạo ra định dạng tệp đối tượng kiến trúc trung lập, cho phép mã biên dịch có thể thực thi trên nhiều bộ vi xử lý khác nhau Điều này được thực hiện nhờ sự hỗ trợ của hệ điều hành Java, mang lại tính linh hoạt và khả năng tương thích cao cho các ứng dụng Java.
Java có kiến trúc tập trung và không phụ thuộc vào các khía cạnh thực hiện, điều này giúp Java trở nên khả chuyển Trình biên dịch của Java được phát triển bằng ANSI C, một tập con của POSIX.
Java là một ngôn ngữ lập trình mạnh mẽ, giúp loại bỏ các tình huống dễ xảy ra lỗi thông qua việc kiểm tra lỗi ngay tại thời gian biên dịch và thực hiện kiểm tra lỗi trong quá trình chạy chương trình.
Java hỗ trợ tính năng đa luồng, cho phép lập trình viên phát triển các ứng dụng có khả năng thực hiện nhiều tác vụ đồng thời Điều này giúp tạo ra các ứng dụng tương tác mượt mà và hiệu quả hơn.
Thông dịch - Mã byte Java được dịch trực tiếp tới các máy tính gốc và không được lưu trữ ở bất cứ đâu.
Hiệu năng cao - Với việc sử dụng trình biên dịch Just-In-Time,
Java cho phép thực hiện hiệu năng cao.
Phân tán - Java được thiết kế cho môi trường phân tán của
Java được coi là ngôn ngữ lập trình năng động hơn C hoặc C++ nhờ khả năng thích ứng với môi trường phát triển Các chương trình Java có khả năng mang theo một lượng lớn thông tin trong quá trình thực thi, cho phép xác minh và xử lý các truy cập đến đối tượng ngay tại thời điểm chạy.
Các thư viện hỗ trợ
1.6.1 Giới thiệu công nghệ Spring
Spring là một framework phát triển ứng dụng Java phổ biến, được hàng triệu lập trình viên tin dùng Nó hỗ trợ việc xây dựng các ứng dụng với hiệu suất cao và dễ dàng trong việc kiểm thử.
Spring nhẹ (nhẹ: kích thước nhỏ, version cơ bản chỉ khoảng 2MB).
Spring là mã nguồn mở, được phát triển, chia sẻ và có cộng đồng người dùng lớn hơn.
Spring Framework được xây dựng dựa trên 2 nguyên tắc design chính là: Dependency Injection (DI) và Aspect Oriented Programming (AOP).
Các tính năng cốt lõi của Spring hỗ trợ phát triển ứng dụng Java Desktop, mobile và Java Web Mục tiêu chính của Spring là đơn giản hóa quá trình phát triển các ứng dụng J2EE thông qua việc sử dụng mô hình POJO (Plain Old Java Object).
Sử dụng POJOs cho phép lập trình viên dễ dàng hơn trong việc phát triển ứng dụng mà không cần phải làm việc với EJB, các luồng chạy hay cấu hình phức tạp Điều này giúp đơn giản hóa quy trình lập trình và nâng cao hiệu quả công việc.
Spring tổ chức theo kiểu module.
Spring hỗ trợ sử dụng khá nhiều công nghệ như ORM Framework, các logging framework, JEE, các thư viện tạo lịch trình (Quartz và JDK timer),
Module Web của Spring được thiết kế theo mô hình MVC nên nó cung cấp đầy đủ các tính năng giúp thay thế các web framework khác như Struts.
Một số project khác của Spring:
Spring MVC: Dành cho việc xây dựng ứng dụng trên nền tảng web.
Spring Boot: là một framework giúp phát triển cũng như chạy ứng dụng một cách nhanh chóng.
Spring Batch: giúp tạo các lịch trình (scheduling) và tiến trình (processing) cho các công việc xử lý theo mẻ (batch job).
Spring Social: kết nối ứng dụng của bạn với API bên thứ ba của Facebook, Twitter, Linkedin… (Ví dụ: đăng nhập bằng Facebook, Gmail, Twitter…).
Một số project khác như: Spring IO, Spring Cloud, Spring Mobile, Spring for Android, Spring Session.
Angular là một framework JavaScript do Google phát triển, chuyên dùng để xây dựng các ứng dụng một trang (SPA) bằng JavaScript, HTML và TypeScript Framework này cung cấp nhiều tính năng tích hợp như animation, dịch vụ HTTP, cũng như các thành phần như auto-complete, navigation, toolbar và menu Mã nguồn được viết bằng TypeScript sẽ được biên dịch thành JavaScript và hiển thị trong trình duyệt Để học Angular, bạn cần nắm vững các kiến thức cơ bản liên quan.
JQuery là một Javascript Framework – 1 thư viện nền tảng hỗ trợ việc lập trình Javascript được dễ dàng.
jQuery tích hợp nhiều module đa dạng, bao gồm cả module hiệu ứng và module truy vấn selector Hiện nay, jQuery được sử dụng trên 99% tổng số website trên toàn cầu.
Các module phổ biến của jQuery bao gồm:
Attributes – Xử lý các thuộc tính của đối tượng HTML
Effect – xử lý hiệu ứng
Event – xử lý sự kiện
Form – xử lý sự kiện liên quan tới form
DOM – xử lý Data Object Model
Selector trong jQuery không phải là một ngôn ngữ lập trình độc lập mà là một công cụ kết hợp với JavaScript, giúp xử lý luồng lách giữa các đối tượng HTML jQuery cho phép thực hiện nhiều tác vụ phức tạp một cách dễ dàng hơn, nhờ vào các API hỗ trợ duyệt tài liệu HTML, tạo hoạt ảnh, xử lý sự kiện và thao tác AJAX Nó tương thích tốt với nhiều trình duyệt khác nhau, và một trong những đối thủ chính của jQuery là các JS Framework.
Bootstrap là một Framework bao gồm HTML, CSS và Javascript template dùng để phát triển website chuẩn Responsive.
Bootstrap streamlines the web design process by providing essential components such as typography, forms, buttons, tables, grids, navigation, and image carousels, making it faster and easier to create websites.
Bootstrap là bộ công cụ mã nguồn mở miễn phí giúp xây dựng mẫu website hoàn chỉnh Nó cung cấp các thuộc tính giao diện như kích thước, màu sắc, độ cao và độ rộng, cho phép các designer sáng tạo ra nhiều sản phẩm mới mẻ một cách tiết kiệm.
10 thời gian khi làm việc với framework này trong quá trình thiết kế giao diện website
1.6.5 Giới thiệu Restful Web Service
RESTful Web Services are web services designed based on the REST architecture, which has gained widespread adoption as an alternative to SOAP and WSDL-based web services These services are lightweight, making them easy to scale and maintain.
Khái niệm REST (REpresentational State Transfer) được giới thiệu lần đầu vào năm 2000 trong luận văn tiến sĩ của Roy Thomas Fielding, người đồng sáng lập giao thức HTTP Trong luận văn, ông đã trình bày chi tiết về các ràng buộc và quy ước cần thiết để xây dựng một hệ thống REST hiệu quả.
REST là một kiến trúc thiết kế Web services tập trung vào tài nguyên hệ thống và cách thức truyền tải các trạng thái tài nguyên qua HTTP, hỗ trợ nhiều ngôn ngữ lập trình khác nhau Trong những năm gần đây, REST đã trở thành mô hình thiết kế dịch vụ phổ biến nhất, ảnh hưởng sâu sắc đến ngành công nghiệp và gần như thay thế SOAP và WSDL nhờ vào sự đơn giản và dễ sử dụng của nó.
REST là một bộ quy tắc để tạo ra một ứng dụng Web Service, mà nó tuân thủ 4 nguyên tắc thiết kế cơ bản sau:
Sử dụng các phương thức HTTP một cách rõ ràng
Hiển thị cấu trúc thư mục như các Urls
Truyền tải JavaScript Object Notation (JSON), XML hoặc cả hai
Apache Maven is a project management tool that enables developers to manage versioning, dependencies (libraries used in projects), build processes, and automatically download Javadoc and source files.
Khảo sát hiện trạng
Hiện trạng thực tế
Các trang web du lịch đang phát triển nhanh chóng với lượng người truy cập ngày càng tăng, phản ánh nhu cầu du lịch ngày càng cao của mọi người Để khám phá các tour du lịch, người dùng chỉ cần một thiết bị như máy tính, điện thoại hoặc iPad và chuẩn bị sẵn sàng cho những chuyến đi sau dịch.
Mô hình nghiệp vụ của hệ thống
2.2.1 Sơ đồ cơ cấu tổ chức
2.2.2 Chức năng từng bộ phận
Quản trị viên là người chịu trách nhiệm trực tiếp về việc quản lý và vận hành trang web, bao gồm việc quản lý tài khoản, khách hàng, nhân viên, thống kê doanh số và đảm bảo bảo mật thông tin trên website.
Nhân viên: Quản lý trang web, quản lý đơn hàng và các chuyến đi.
Khách hàng: Xem các tour du lịch, yêu thích tour, đặt tour, quản lý thông tin cá nhân.
Người dùng tìm tour mong muốn, chọn “Đặt ngay”, sau đó “Thanh toán” và hoàn thành các xác nhận cần thiết.
2.2.3.2 Quản lý tour du lịch
Khách hàng có thể vào trang cá nhân để kiểm tra các tour đã đặt của mình.
Nhân viên khi muốn thêm một tour mới thì chọn quản lý tour, thêm các thông tin cần thiết (điểm đến, giờ khởi hành ) và chọn nút “Thêm”.
Thống kê doanh thu 6 tháng gần nhất, theo ngày tháng năm.
Thống kê danh sách tour du lịch khách hàng yêu thích.
Thống kê khách hàng đăng kí tài khoản trong ngày hôm nay so với ngày hôm sau.
Thống kê số lượng tour đã đặt và còn lại bao nhiêu tour.
Tạo tài khoản: Người dùng mới sẽ được đăng ký tài khoản khi có nhu cầu và đăng bán tour du lịch (nhân viên), đặt tour (khách hàng).
Chức năng quản lý tour trên website cho phép nhân viên và admin tạo tour mới, chỉnh sửa thông tin và trạng thái của tour hiện có, cũng như xóa tour khi không còn kinh doanh nữa.
Quản lý tài khoản khách hàng (Nhân viên, Admin): Nhân viên và admin có quyền quản lý thông tin tài khoản của khách hàng.
Quản lý tài khoản (Admin): Admin có quyền quản lý thông tin tài khoản của khách hàng và nhân viên.
Quản lý tour đã thích (Khách hàng): Khách hàng có thể quản lý tour yêu thích của mình.
Chức năng thanh toán (Khách hàng): Khi thực hiện thanh toán, khách hàng được chọn hình thức thanh toán và tiến hành thanh toán.
Hệ thống chạy đứng, tốt, ổn định.
Giao diện thân thiện, dể dùng.
Đáp ứng hầu hết các yêu cầu của người dùng.
Cung cấp phân quyền cho các loại người có trách nhiệm: Admin,nhân viên, khách hàng.
Phân tích & thiết kế hệ thống
Sơ đồ phân cấp chức năng
Activity diagram
3.2.7 Quản lý tour du lịch
Mô hình nguồn dữ liệu DFD
3.3.1 Biểu đồ DFD mức ngữ cảnh
Dựa vào yêu cầu bài toán, ta có các actor sau: quản trị viên (Admin), nhân viên(Staff), khách hàng(user).
3.3.3.2 Xác định các User case
(Admin) Đăng nhập, quản lý tài khoản khách hàng và nhân viên, quản lý tour du lịch, thống kê doanh thu.
Nhân viên (Staff) Đăng nhập, chỉnh sửa thông tin tài khoản, quản lý khách hàng, quản lý các tour du lịch Khách hàng
Tạo tài khoản, chỉnh sửa thông tin tài khoản, đăng nhập, xem thông tin tour, tìm kiếm tour, đặt tour
3.3.3.3 Xây dựng biểu đồ User case tổng quát a Quản trị viên:
Mô tả: Cung cấp chức năng hiển thị thông tin chi tiết các tour du lịch trên website.
Kích hoạt: Người dùng click vào thanh menu “ Tour du lịch”.
Khi người dùng chọn một tour du lịch, mã tour (id) sẽ được gửi đến trang xem chi tiết để hiển thị thông tin tour đã chọn Hệ thống sẽ truy cập vào cơ sở dữ liệu để lấy thông tin tour tương ứng với mã id đó Sau khi có dữ liệu, thông tin tour du lịch sẽ được hiển thị trên website Nếu người dùng nhấn "Yêu thích" hoặc "Đặt ngay", mã tour sẽ được chuyển đến trang "Đặt tour du lịch" để tiếp tục quy trình đặt chỗ.
Thông tin đầu ra của tour du lịch cung cấp chi tiết về từng hành trình, giúp khách hàng dễ dàng tìm hiểu và lựa chọn tour phù hợp với yêu cầu của mình.
Mô tả: Giúp người dùng nhanh chóng tìm được tour du lịch đang muốn tìm kiếm.
Kích hoạt: Người dùng nhập vào ô trên menu tìm kiếm theo địa điểm, theo giá….
Quá trình xử lý yêu cầu người dùng bắt đầu bằng việc xác định địa điểm và giá tour mong muốn Tiếp theo, hệ thống sẽ tìm kiếm trong cơ sở dữ liệu để tìm ra các tour du lịch có tên địa điểm tương ứng và phù hợp với khoảng giá mà người dùng đã đặt ra Kết quả là danh sách các tour du lịch phù hợp với nhu cầu tìm kiếm của người dùng.
Thông tin đầu ra: Hiển thị các tour du lịch phù hợp với yêu cầu người dùng đã tìm kiếm.
Cung cấp chức năng đăng ký tài khoản cho nhân viên và khách hàng, giúp người dùng dễ dàng đặt những chuyến du lịch tuyệt vời cho bản thân hoặc gia đình.
Kích hoạt: Khi người dùng nhấp vào đăng ký.
Quá trình đăng ký tài khoản bắt đầu bằng việc người dùng điền vào một biểu mẫu thông tin cần thiết Hệ thống sẽ kiểm tra xem username và email đã tồn tại hay chưa, đồng thời xác minh dữ liệu nhập vào Khi người dùng nhấn nút "Sign up", thông tin sẽ được gửi lên server để kiểm tra tính hợp lệ Nếu thông tin hợp lệ, một email xác nhận sẽ được gửi đến địa chỉ email mà người dùng đã cung cấp, và chỉ sau khi xác nhận, người dùng mới có thể đăng nhập vào tài khoản.
Thông tin đầu ra: Sau khi ấn xác nhận, người dùng sẽ được đưa đến trang đăng nhập để thực hiện đăng nhập vào website.
Chức năng đăng nhập cho phép người dùng truy cập vào danh sách các tour du lịch, tìm kiếm những điểm đến yêu thích và dễ dàng đặt tour theo sở thích của mình.
Kích hoạt: Khi người dùng click vào chức năng “Đăng nhập”, đặt tour du lịch, yêu thích tour du lịch.
Quá trình xử lý: o Hệ thống sẽ yêu cầu người dùng nhập “username” và
Kiểm tra tính hợp lệ của "username" và "password" trong cơ sở dữ liệu để đảm bảo người dùng có thể đăng nhập thành công Nếu người dùng quên mật khẩu, họ sẽ được chuyển đến trang quên mật khẩu để khôi phục Trong trường hợp người dùng chưa có tài khoản, hệ thống sẽ chuyển họ đến trang đăng ký tài khoản mới.
Thông tin đầu ra: Chuyển thẳng đến trang chủ nếu người dùng đăng nhập thành công.
Mô tả: Cho phép khách hàng đặt tour du lịch theo ý muốn.
Kích hoạt: Người dùng nhấn chọn nút “Đặt ngay”.
Sau khi nhấn "Đặt ngay", thông tin tài khoản và chi tiết chuyến đi sẽ được hiển thị Người dùng cũng có thể điều chỉnh số lượng hành khách theo từng độ tuổi, vì giá vé sẽ thay đổi tùy thuộc vào độ tuổi của từng người.
Thông tin đầu ra: o Thông báo đã đặt tour. o Nếu người dùng không thanh toán sẽ chuyển đến trang danh sách các tour đã đặt.
3.3.3.4.6 Yêu thích tour du lịch
Mô tả: Cho phép người dùng lưu tour du lịch mà mình yêu thích.
Kích hoạt: Khi người dùng click vào biểu tượng “Yêu thích”.
Quá trình xử lý: o Sau khi click yêu thích, kiểm tra đăng nhập hay chưa. o Hệ thống sẽ lưu thông tin dữ liệu chuyến đi và người dùng.
Thông tin đầu ra: Thông báo yêu thích tour thành công.
Mô tả: Thanh toán tour du lịch mình đã đặt.
Kích hoạt: Khi người dùng click vào chức năng “Thanh toán”.
Sau khi nhấn nút thanh toán, người dùng sẽ được chuyển đến trang thanh toán, nơi hiển thị chi tiết tour và số tiền cần thanh toán Tại đây, người dùng cần kiểm tra lại thông tin trước khi chọn nút thanh toán để hoàn tất giao dịch.
Thông tin đầu ra: o Thông báo thanh toán thành công. o Chuyền về trang thông tin các tour đã đặt.
3.3.3.4.8 Xem các tour đã đặt
Mô tả: Cho phép người dùng quản lý, xem các tour mình đã đặt và xem thanh toán hay chưa, có thể hủy tour.
Kích hoạt: Người dùng nhấn chọn trên menu chỗ “Các tour đã đặt”.
Quá trình xử lý tour đã đặt bắt đầu khi người dùng nhấn vào nút “tour đã đặt” để xem thông tin các tour đã đặt Nếu muốn hủy tour, người dùng có thể chọn nút hủy tour, nhưng chỉ áp dụng khi tour chưa được thanh toán Khi nhấn vào một tour cụ thể, thông tin chi tiết về tour cùng với trạng thái thanh toán sẽ được hiển thị.
Thông tin đầu ra: Hiển thị các thông tin chi tiết các tour đã đặt.
Mô tả: Cho phép người dùng cập nhật thông tin cá nhân của mình.
Kích hoạt: Người dùng bấm vào “Tài khoản của tôi”.
Quá trình xử lý thông tin cá nhân bao gồm các bước sau: đầu tiên, hệ thống yêu cầu người dùng nhập các thông tin cần cập nhật Sau đó, hệ thống sẽ kiểm tra tính hợp lệ của các thông tin này Cuối cùng, hệ thống sẽ kết nối với cơ sở dữ liệu để thực hiện việc cập nhật thông tin.
Thông tin đầu ra: Thông báo cập nhật thành công.
Mô tả: Cho phép quản trị viên quản lý các thông tin được công khai của người dùng.
Kích hoạt: Quản trị viên đăng nhập và chọn trang quản lý khách hàng.
Quá trình xử lý bao gồm việc kiểm tra tính hợp lệ của dữ liệu nhập để thực hiện các thao tác như cập nhật và xóa từ quản trị viên, đồng thời kết nối với cơ sở dữ liệu để cập nhật thông tin một cách hiệu quả.
Thông tin đầu ra: Hiển thị các thông tin, thống kê danh sách khách hàng.
Mô tả: Cho phép quản trị viên quản lý các thông tin của nhân viên.
Kích hoạt: Quản trị viên đăng nhập và chọn trang quản lý nhân viên.
Quá trình xử lý dữ liệu bắt đầu bằng việc kiểm tra tính hợp lệ của dữ liệu nhập, nhằm thực hiện các thao tác như cập nhật, xóa hoặc thêm tài khoản từ quản trị viên Sau đó, hệ thống kết nối với cơ sở dữ liệu để cập nhật thông tin một cách chính xác và hiệu quả.
Thông tin đầu ra: Hiển thị các thông tin, thống kê danh sách nhân viên.
Mô tả: Cho phép quản trị viên quản lý các tour du lịch.
Kích hoạt: Quản trị viên đăng nhập và chọn trang quản lý tour du lịch.
Quá trình xử lý dữ liệu bao gồm việc kiểm tra tính hợp lệ của dữ liệu nhập vào, nhằm thực hiện các thao tác như cập nhật, xóa hoặc thêm tour du lịch từ phía quản trị viên Đồng thời, hệ thống cũng cần kết nối với cơ sở dữ liệu để đảm bảo thông tin được cập nhật chính xác.
Thông tin đầu ra: Hiển thị các thông tin, thống kê danh sách tour du lịch.
Mô tả: Cho phép quản trị viên quản lý doanh thu theo tháng, theo ngày.
Kích hoạt: Quản trị viên đăng nhập sẽ hiện lên trang chủ quản trị viên.
Thông tin đầu ra: Hiển thị thống kê doanh thu theo biểu đồ
Xem trước tour du lịch
Account (ID, username, fullname, password, email, gender, address,phone, img, id_card, role_Id, created_date, verification_code, is_enable, provider)
Travel_types (ID, type, description, slug, is_deleted)
Travel (ID, name, type_id, departure_place, place, price, img, created_date, start_date, end_date, quantity, hour, slug, is_deleted, quantity_new)
Travel_detail (ID, time, description, travel_Id, is_deleted)
Age_type (ID, description, is_deleted)
Price_detail (ID, price, travel_Id, age_id, is_deleted)
Booking (ID, account_Id, created_date, address, phone, total_price, pay_boolean, is_deleted)
Booking_detail (ID, booking_Id, travel_Id, price)
Payment (ID, booking_Id, pay_time, total_price)
Quy ước: Primary key: (gạch chân, in đậm) ID, Foreign: (in đậm) ID.
Account (ID, username, fullname, password, email, gender, address,phone, img, id_card, role_Id, created_date, verification_code, is_enable, provider)
Travel_types (ID, type, description, slug, is_deleted)
Travel (ID, name, type_id, departure_place, place, price, img, created_date, start_date, end_date, quantity, hour, slug, is_deleted, quantity_new)
Travel_detail (ID, time, description, travel_Id, is_deleted)
Age_type (ID, description, is_deleted)
Price_detail (ID, price, travel_Id, age_id, is_deleted)
Booking (ID, account_Id, created_date, address, phone, total_price, pay_boolean, is_deleted)
Booking_detail (ID, booking_Id, travel_Id, price)
Payment (ID, booking_Id, pay_time, total_price)
Mô tả Kiểu dữ liệu
1 ID Mã vai trò int Khóa chính x
STT Thuộc tính Mô tả Kiểu dữ liệu Khóa Not nul l
1 ID Mã tài khoản int Khóa chính
2 username Tên đăng nhập varchar(50) x
3 fullname Họ và tên người nvarchar(225)
5 email Email người dùng varchar(100) x
8 phone số điện thoại varchar(20)
10 id_card chứng minh nhân dân, CCCD varchar(50)
11 role_id vai trò int Khóa ngoại
12 created_date ngày tạo date x
Mã xác thực cho tạo tài khoản, quên mật khẩu varchar(64)
14 is_enable Tài khoản đang hoạt động hay ngừng hoạt động bit x
15 provider Loại tài khoản varchar(15)
Thời gian thay đổi mật khẩu date
Mô tả Kiểu dữ liệu Khóa Not null
1 ID Mã loại tour int Khóa chính x
2 type Tên loại tour nvarchar(225) x
4 slug viết không dấu của tên loại tour varchar(255) x
5 is_deleted loại tour đã xóa là 1 còn tour còn hoạt bit
STT Thuộc tính Mô tả Kiểu dữ liệu Khóa Not null
1 ID Mã tour du lịch int Khóa chính
2 name Tên chuyến đi nvarchar(225) x
3 type_id Loại tour int Khóa ngoại
4 departure_place Địa điểm khởi hành nvarchar(225) x
5 place Địa điểm tập trung nvarchar(225) x
8 created_date Ngày tạo chuyến đi date x
9 start_date Ngày bắt đầu chuyến đi date x
10 end_date Ngày kết thúc chuyến đi date x
11 quantity Số lượng khách của chuyến đi int x
12 hour Giờ tập trung int x
13 slug Tên không dấu của chuyến đi varchar(255) x
14 is_deleted Chuyến đi đã xóa hay chưa bit x
15 quantity_new Số lượng còn lại bao nhiêu sau khi đặt tour int x
Mô tả Kiểu dữ liệu Khóa Not null
1 ID Mã tour chi tiết int Khóa chính x
3 description Mô tả nvarchar(max)
4 travel_Id Mã tour du lịch int Khóa ngoại
5 is_deleted Nếu tour chi tiết đã xóa thì là True còn chưa xóa thì False. bit x
Mô tả Kiểu dữ liệu
1 ID Mã tour yêu thích int Khóa chính x
2 account_Id Mã tài khoản người dùng int Khóa ngoại
3 travel_Id Mã tour du lịch int Khóa ngoại
Mô tả Kiểu dữ liệu Khóa Not null
1 ID Mã loại tuổi int Khóa chính x
3 is_deleted Nếu loại tuổi đã xóa thì là True còn chưa xóa thì False. bit x
Mô tả Kiểu dữ liệu Khóa Not null
1 ID Mã giá chi tiết cho từng độ tuổi int Khóa chính x
3 travel_Id Mã tour du lịch int Khóa ngoại
4 age_id Mã loại tuổi int Khóa ngoại
5 is_deleted Nếu giá chi tiết đó đã xóa thì là True còn bit x
STT Thuộc tính Mô tả Kiểu dữ liệu Khóa Not null
1 ID Mã booking int Khóa chính x
2 account_Id Mã tài khoản int Khóa ngoại
3 created_date Ngày booking date x
4 address Địa chỉ người dùng nvarchar(225)
5 phone Số điện thoại varchar(20) x
6 total_price Tổng tiền decimal(12,3) x
7 pay_boolean Đã thanh toán hay chưa bit x
8 is_deleted Nếu hủy booking sẽ là True bit x
Mô tả Kiểu dữ liệu Khóa Not null
1 ID Mã booking chi tiết int Khóa chính x
2 booking_Id Mã booking int Khóa ngoại
3 travel_Id Mã tour int Khóa ngoại
5 quantity Số lượng đặt int x
Mô tả Kiểu dữ liệu Khóa Not null
1 ID Mã thanh toán int Khóa chính x
2 booking_Id Mã booking int Khóa ngoại
3 pay_time Thời gian thanh toán date x
4 total_price Tổng tiền decimal(12,3) x
Một vai trò thì có một hoặc nhiều tài khoản, một tài khoản chỉ có một vai trò.
Một tài khoản có một hoặc nhiều tour du lịch, một tour du lịch chỉ có một tài khoản.
Một tài khoản có một hoặc nhiều đơn hàng, một đơn hàng chỉ có một tài khoản.
Một đơn hàng thì có nhiều thanh toán, một thanh toán chỉ có một đơn hàng.
Mỗi đơn hàng có một chi tiết đơn hàng, một chi tiết đơn hàng thuộc một đơn hàng
Mỗi tour có một hoặc nhiều chi tiết đơn hàng, một chi tiết đơn hàng chỉ thuộc một tour.
Một tour được một hoặc nhiều lượt yêu thích, mỗi lượt yêu thích chỉ thuộc một tour.
Mỗi tour có một chi tiết tour, một chi tiết tour chỉ thuộc một tour
Mỗi tour chỉ thuộc một loại tour, một loại tour có một hoặc nhiều tour.
Mỗi tour có một hoặc nhiều chi tiết giá, một chi tiết giá chỉ thuộc một tour.
Mỗi loại tuổi có một hoặc nhiều chi tiết giá, một chi tiết giá chỉ thuộc một loại tuổi.
Thiết kế giao diện
Yêu cầu hệ thống
Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2019.
Công cụ lập trình: Eclipse, Spring Tool Suite, Intellij, Visual Studio Code.
Trình duyệt web: Chrome, Cốc cốc
Giao diện
Hiển thị đầu tiên khi người dùng chưa đăng nhập.
Thanh tìm kiếm ta có thể tìm kiếm các tour du lịch
Trên giao diện trang chủ sẽ có sẵn các tour du lịch trên màn hình, click xem chi tiết sẽ dẫn đến trang xem chi tiết tour.
4.2.7 Chỉnh sửa thông tin cá nhân
Trên góc phải chọn tài khoản và xem “Thông tin cá nhân” khi đăng nhập tài khoản admin ta sẽ xem được giao diện admin.
Chúng tôi cung cấp thông tin chi tiết về doanh thu hàng ngày, số lượng tour đã đặt, và tỷ lệ khách hàng đăng ký so với tháng trước Bên cạnh đó, bạn cũng có thể theo dõi tổng doanh thu của năm nay so với năm trước, cùng với thống kê doanh thu theo từng ngày và tháng.
60 năm tùy chọn, danh sách số lượng tour đã đặt được bao nhiêu so với số lượng ban đầu, top 3 tour du lịch được yêu thích nhất,
4.2.9 Giao diện quản lý khách hàng
Giao diện quản lý tour
4.3.1 Giao diện quản lý nhân viên
Kiểm thử website & sửa lỗi
Test plan
1 Nghiên cứu tài liệu 7 ngày 2/10/2021 7/10/2021 Thảo, Dân,
1 Phân tích và thiết kế tài liệu đặc tả
2 Kế hoạch viết test case, báo cáo
5 Quản lý khách hàng 1 ngày 7/10/2021 7/10/2021 Nhật
6 Quản lý nhân viên Nhật
7 Quản lý tour du lịch 1 ngày 8/10/2021 8/10/2021 Thảo
8 Quản lý doanh thu 1 ngày 7/10/2021 7/10/2021 Thảo
5 Quản lý khách hàng 1 ngày 10/10/2021 10/10/2021 Nhật
6 Quản lý nhân viên Nhật
7 Quản lý tour du lịch 1 ngày 10/10/2021 10/10/2021 Thảo
8 Quản lý doanh thu 1 ngày 11/10/2021 11/10/2021 Thảo
4 Báo cáo kết quả test 1 ngày 12/10/2021 12/10/2021 Tuấn, Nhật
Test case
DỮ LIỆU MẪU KẾT QUẢ
1 Đăng nhập sai tên đăng nhập hoặc mật khẩu ps1404, abcef, 123456
Thông báo đăng nhập không thành công
Thông báo đăng nhập không thành công
2 Đăng nhập đúng tên tài khoản và mật khẩu tên tài khoản: admin mật khẩu:
Chuyển hướng về trang chủ
Chuyển hướng về trang chủ
DỮ LIỆU MẪU KẾT QUẢ
1 Đăng ký với email đã có nicetravelcompany@g mail.com
Thông báo email đã được sử dụng
Thông báo email đã được sử dụng
2 Đăng ký với username đã tồn tại admin, staff, user Thông báo username đã được sử dụng
Thông báo username đã được sử dụng
3 Nhập thông không hợp lệ khi đăng ký
12admin, ;”staff Thông báo dữ liệu đã nhập không hợp lệ
Thông báo dữ liệu đã nhập không hợp lệ
4 Nhập thông hợp lệ khi đăng ký tuanpc, thaontp Gửi mail xác thực tài khoản
Gửi mail xác thực tài khoản
Chuyển hướng đến trang đăng nhập
Chuyển hướng đến trang đăng nhập
DỮ LIỆU MẪU KẾT QUẢ
1 Nhập email chưa đăng ký tài khoản lấy lại mật khẩu abc@gmail.com, 123@fpt.edu.vn
Không tìm thấy tài khoản với email đã nhập
Không tìm thấy tài khoản với email đã nhập
2 Nhập email đúng lấy lại mật khẩu tuanpc.1902@gmail.c om nicetravelcompa ny@gmail.com sẽ gửi một liên kết đặt lại mật khẩu đến email vừa nhập.
Gửi một liên kết đặt lại mật khẩu đến email vừa nhập
3 Nhấp vào xác thực đặt lại mật khẩu
Chuyển hướng đến trang đặt lại mật khẩu
Chuyển hướng đến trang đặt lại mật khẩu
4 Nhập mật khẩu mới trùng với mật khẩu cũ
123 Thông báo không thể đặt mật khẩu trùng với mật khẩu cũ
Thông báo không thể đặt mật khẩu trùng với mật khẩu cũ
5 Đặt lại mật khẩu mới thành công
1234 Chuyển hướng sang trang đăng nhập
Chuyển hướng sang trang đăng nhập
DỮ LIỆU MẪU KẾT QUẢ
1 Nhập thông tin chỉnh sửa tài khoản không hợp lệ abc;@mail.com Thông báo thông tin vừa nhập không hợp lệ
Thông báo thông tin vừa nhập không hợp lệ
2 Nhập thông tin chỉnh sửa tài khoản hợp lệ
Cập nhật tài khoản và chuyển hướng về trang thông tin tài khoản
Cập nhật tài khoản và chuyển hướng về trang thông tin tài khoản
3 Nhập mật khẩu trùng với mật khẩu cũ khi đổi mật khẩu
123 Thông báo không được đặt mật khẩu trùng với mật khẩu cũ
Thông báo không được đặt mật khẩu trùng với mật khẩu cũ
4 Nhập mật khẩu cũ sai
12 Thông báo mật khẩu cũ không chính xác
Thông báo mật khẩu cũ không chính xác
5 Nhập lại mật khẩu không trùng với mật khẩu mới
123 và 132 Thông báo mật khẩu không trùng khớp
Thông báo mật khẩu không trùng khớp
6 Nhập mật khẩu hợp lệ và nhập lại trùng khớp
Cập nhật mật khẩu và chuyển hướng đến trang thông tin tài khoản
Cập nhật mật khẩu và chuyển hướng đến trang thông tin tài khoản
5.2.5 Màn hình tour du lịch
TRÔNG ĐỢI ển thị ban đầu
1 Hiển thị ban đầu a Xác nhận bố cục Bố cục giao diện giống hình ảnh màn hình giao diện trang chủ.
Ok b Xác nhận danh sách sản phẩm
Nếu số lượng tour du lịch vượt quá 8, phân trang sẽ được
67 hiển thị. c Xác nhận tên khách hàng
Tên khách hàng được hiển thị theo tên tài khoản đăng nhập.
2 Chức năng tìm kiếm a Tìm kiếm theo địa điểm đi
Khi khách hàng nhập thông tin tìm kiếm theo địa điểm tại TP Hồ Chí Minh, danh sách tour du lịch sẽ được hiển thị dựa trên điều kiện tìm kiếm Nếu số lượng tour du lịch vượt quá 8, hệ thống sẽ tự động phân trang để người dùng dễ dàng duyệt qua các lựa chọn.
OK b Tìm kiếm theo địa điểm đến
Khi khách hàng nhập thông tin vào khung tìm kiếm theo địa điểm đến tại Hà Nội, danh sách các tour du lịch sẽ được hiển thị dựa trên điều kiện tìm kiếm Nếu số lượng tour vượt quá 8, hệ thống sẽ tự động phân trang để dễ dàng duyệt xem.
Khi khách hàng tìm kiếm tour du lịch theo khoảng giá trên 3.000.000 đồng, danh sách các tour sẽ được hiển thị dựa trên thông tin đã nhập Nếu số lượng tour vượt quá 8, hệ thống sẽ tự động phân trang để người dùng dễ dàng xem thêm các lựa chọn.
OK d Tìm kiếm theo ngày
Khi khách hàng nhập thông tin tìm kiếm theo ngày, danh sách tour du lịch sẽ được hiển thị dựa trên điều kiện tìm kiếm đã nhập Nếu số lượng tour du lịch vượt quá 8, hệ thống sẽ tự động phân trang để người dùng dễ dàng duyệt qua.
3 Chức năng yêu thích tour a Nhấn nút button
Khi khách hàng nhấn vào button thì tour du lịch đó sẽ hiển thị vào danh sách tour du lịch yêu thích của họ
4 Chức năng đặt tour a Nhấn button “Giỏ hàng”
Khi khách hàng nhấn vào nút, họ sẽ được chuyển đến trang đặt chỗ Tại đây, khách hàng có thể thêm số lượng người theo từng độ tuổi, với giá tiền tương ứng khác nhau Sau khi hoàn tất việc chọn tất cả các yêu cầu cho đơn hàng, hãy nhấn xác nhận.
“Đặt ngay” thì đơn của khách hàng đã được xác nhận
5 Chức năng hủy tour a Nhấn vào button
Khi khách hàng nhấn vào button
“Hủy tour” bên trang quản lý tài khoản -> các tour đã đặt Lưu ý chỉ được hủy những tour chưa thanh toán.
5.2.6 Test case quản lý tổng quan
DỮ LIỆU MẪU KẾT QUẢ
70 a Xác nhận bố cục Bố cục giao diện giống hình ảnh màn hình giao diện trang chủ admin.
Ok b Xác nhận tên admin
Tên admin được hiển thị theo tên tài khoản đăng nhập.
OK c Kết quả tour hôm nay
Hiển thị số khách hàng OK
Hiển thị doanh thu OK
Hiển thị tour yêu thích OK
2 Thống kê doanh thu a Theo ngày tháng năm
Hiển thị biểu đồ doanh thu theo ngày tháng năm tùy chọn
5.2.7 Test case quản lý- Quản lý tour
DỮ LIỆU MẪU KẾT QUẢ
1 Hiển thị ban đầu a Xác nhận bố cục Bố cục giao diện giống hình ảnh màn hình giao diện quản lý tour.
Tên admin được hiển thị theo tên tài khoản đăng nhập.
2 Chức năng thêm xóa, sửa,edit a Thêm tour Nhấn vào nút thêm mới tour, lướt xuống form thêm sản phẩm.
OK b Cập nhật tour Nhấn vào dòng tour trên bảng muốn cập nhật chuyển xuống form và điền thông tin muốn cập nhật
OK c Chức năng xóa tour
Nhấn vào button”delete” sẽ thực hiện update trạng thái thành đã xóa.
Tổng kết
Tổng kết
Dưới sự hỗ trợ tận tình của thầy Nguyễn Đỗ Anh Khoa và các thầy cô giáo, nhóm em đã vượt qua nhiều khó khăn để tìm hiểu thực tiễn hoạt động và giải quyết các vấn đề nghiệp vụ liên quan đến trang web du lịch Nhờ đó, chúng em đã hoàn thành đồ án tốt nghiệp đúng thời hạn và đạt được các mục tiêu đề ra trong báo cáo thực tập tốt nghiệp.
Phân tích và thiết kế database.
Nắm được 1 ngôn ngữ lập trình.
Xây dựng cơ sở dữ liệu và giao diện cho chương trình bằng hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2019 và Java
Thống kê doanh thu theo khoảng thời gian được chọn một cách nhanh chóng và chính xác.
Ứng dụng biểu đồ và thống kê: để giao diện dễ nhìn hơn so với các số liệu.
Nhóm có nhiều thuận lợi, bao gồm sự hướng dẫn nhiệt tình từ giảng viên, tạo điều kiện cho các thành viên hiểu ý nhau và lắng nghe ý kiến của nhau Đặc biệt, nhóm trưởng luôn thấu hiểu và tận tâm trong việc phân chia công việc, giúp mọi người phối hợp hiệu quả hơn.
Chương trình gặp nhiều hạn chế, bao gồm việc không thể hoạt động khi không có internet và thiếu kinh nghiệm trong phát triển dự án, dẫn đến khó khăn trong tổ chức và thời gian thực hiện Thời gian dành cho dự án không đủ so với quy mô đề ra, khiến nhóm chưa thể tìm hiểu và áp dụng công nghệ mới một cách đầy đủ Hơn nữa, tình hình dịch bệnh đã hạn chế cơ hội gặp mặt trực tiếp giữa các thành viên để trao đổi về dự án, trong khi họ còn phải cân bằng giữa công việc và việc thực hiện dự án, dẫn đến nhiều thiếu sót.
Hướng phát triển
Trong quá trình thực hiện dự án, chúng em đã gặp không ít khó khăn và thiếu sót là điều khó tránh khỏi Vì vậy, sau khi hoàn thành dự án, chúng em rất mong nhận được những nhận xét và góp ý từ quý thầy cô để có thể cải thiện và phát triển trang web Chúng em dự định bổ sung và phát triển các chức năng cần thiết như hoàn tiền khi hủy tour sau khi thanh toán và cho phép khách hàng đặt tour với số lượng người lớn.
Chúng tôi đang tìm kiếm giải pháp để lưu trữ thông tin chi tiết của từng cá nhân trong dự án Đồng thời, chúng tôi sẽ học hỏi từ các đồng nghiệp và những người có kinh nghiệm trong ngành du lịch để hiểu rõ hơn về quy trình nghiệp vụ của một trang web du lịch Việc này sẽ giúp chúng tôi cải thiện công tác quản lý, từ đó hoàn thiện kỹ thuật và phát triển sản phẩm một cách mạnh mẽ, hướng tới thương mại hóa hiệu quả.