Do đó, việc sử dụng website quản lý phòng và đặt phòng có tích hợp một cổng thanh toán trực tuyến giúp cải thiện trải nghiệm mua sắm của khách hàng và giúp các khách sạn thuận tiện hơn t
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
Đà Nẵng, 01/2024
ĐỒ ÁN TỐT NGHIỆP
ĐẠI HỌC NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI: XÂY DỰNG WEBSITE QUẢN LÝ ĐẶT PHÒNG
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
Đà Nẵng, 01/2024
ĐỒ ÁN TỐT NGHIỆP
ĐẠI HỌC NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI: XÂY DỰNG WEBSITE QUẢN LÝ ĐẶT PHÒNG
Trang 3Đà Nẵng, ngày tháng năm 2024
Giảng viên hướng dẫn
NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN
Trang 5TÓM TẮT
Tên đề tài: Xây dựng website quản lý đặt phòng khách sạn Vinpearl Sinh viên thực hiện: Lê Bá Nhật
Mã SV: 1911505310244 Lớp: 19T2 Đề tài yêu cầu xây dựng một website để quản lý đặt phòng trong khách sạn Website này có thể giúp quản lý khách sạn quản lý thông tin đặt phòng, quản lý tình trạng phòng và thanh toán các dịch vụ liên quan đến khách sạn Đề tài yêu cầu sử dụng các công nghệ và ngôn ngữ phù hợp, đảm bảo tính bảo mật và ổn định của hệ thống
Trang 63 Nội dung chính của đồ án:
Quá trình xây dựng website quản lý đặt phòng: - Thu thập thông tin tài liệu liên quan và khảo sát thực tế - Phân tích thiết kế các chức năng của hệ thống
- Phân tích thiết kế cơ sở dữ liệu - Xây dựng hệ thống website - Kiểm thử phần mềm
- Hoàn thành báo cáo tổng hợp
4 Các sản phẩm dự kiến:
- Website quản lý đặt phòng khách sạn - File báo cáo hoàn chỉnh
5 Ngày giao đồ án: 10/10/2023 6 Ngày nộp đồ án: 21/01/2024
Đà Nẵng, ngày tháng năm 2024
Trang 7i
Lời đầu tiên, em xin gởi lời cảm ơn chân thành đến quý thầy cô đã giúp đỡ chúng
em thực hiện đề tài này Đặc biệt là ThS Trần Bửu Dung đã tận tình giúp đỡ chúng
em trong xuất quá trình thực hiện đề tài tốt nghiệp này Đồng thời, chúng em cũng xin cảm ơn quý thầy cô thuộc Khoa Công nghệ số - Trường Đại học Sư Phạm Kỹ Thuật Đà Nẵng đã truyền đạt những kiến thức cần thiết và những kinh nghiệm để em có thể thực hiện tốt đề tài này Đặc biệt, em xin gởi lời cảm ơn chân
thành tới TS Hoàng Thị Mỹ Lệ cùng toàn thể các thầy cô đã giúp đỡ chúng em rất
nhiều trong quá trình học tập và công việc Trong quá trình thực hiện đề tài, do kiến thức và thời gian còn hạn chế nên không thể tránh khỏi những sai sót Vì vậy em mong quý thầy, cô thông cảm và góp ý để em có thể hoàn thiện đề tài Và những lời góp ý đó có thể giúp chúng em có thể tránh được những sai sót sau này
Em xin chân thành cảm ơn!
Trang 8Em/ Chúng em xin cam đoan : 1 Những nội dung trong luận văn này do chúng em thực hiện dưới sự hướng dẫn
của cô ThS Trần Bửu Dung 2 Mọi tham khảo trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công
trình ,thời gian, địa điểm công bố 3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, chúng em
xin chịu hoàn toàn trách nhiệm
Sinh viên thực hiện
Lê Bá Nhật
Trang 9iii
NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN i
NHẬN XÉT CỦA NGƯỜI PHẢN BIỆN ii
2 Đối tượng nghiên cứu và phạm vi nghiên cứu 2
a Đối tượng nghiên cứu 2
b Phạm vi nghiên cứu 2
3 Phương pháp nghiên cứu 2
4 Giải pháp công nghệ 2
5 Cấu Trúc đồ án 3
Chương 1: CƠ SỞ LÝ THUYẾT 4
1.1 Tổng quan giới thiệu về Golang 4
1.1.1 Giới thiệu về Golang 4
1.1.2 Ưu điểm 5
1.1.3 Nhược điểm 5
1.2 Tổng quan giới thiệu về React 6
1.2.1 Giới thiệu về React 6
1.2.2 Ưu điểm 6
1.2.3 Nhược điểm 7
1.3 Tổng quan giới thiệu PostgreSQL 7
1.3.1 Giới thiệu về PostgreSQL 7
1.3.2 Ưu điểm 9
1.3.3 Nhược điểm 10
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 11
2.1 Khảo sát yêu cầu 11
2.1.1 Hoạt động nghiệp vụ 11
2.1.2 Liệt kê người dùng và yêu cầu 11
2.2 Phân tích hệ thống 12
Trang 102.6.2 Thiết kế bảng cơ sở dữ liệu 33
Chương 3: XÂY DỰNG CHƯƠNG TRÌNH 41
3.1 Công cụ xây dựng chương trình 41
3.1.1 Visual Studio Code 41
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 57
TÀI LIỆU THAM KHẢO 58
Trang 11Hình 1.2 Giới thiệu về React JS 6
Hình 1.3 Giới thiệu về PostgreSQL 7
Hình 2.14 Quản lý hóa đơn 29
Hình 2.15 Quản lý doanh thu 30
Hình 2.16 Quản lý tài khoản 31
Hình 2.17 Sơ đồ ERD 32
Hình 2.18 Mô hình chức năng đặt phòng 32
Hình 2.19 Bảng nhân viên 33
Trang 12Hình 3.3 Giao diện đăng ký 44
Hình 3.4 Giao diện đăng nhập 46
Hình 3.5 Giao diện trang chủ 47
Hình 3.6 Giao diện danh sách phòng 48
Hình 3.7 Giao diện thông tin đặt phòng 49
Hình 3.8 Giao diện phòng đã đặt 49
Hình 3.9 Giao diện chỉnh sửa trang cá nhân 50
Hình 3.10 Giao diện nhân viên xác nhận đặt phòng 50
Hình 3.11 Giao diện nhân viên xác nhận thanh toán 51
Hình 3.12 Giao diện hóa đơn sau khi xác nhận thanh toán 52
Hình 3.13 Giao diện quản lý thông tin khách hàng 53
Hình 3.14 Giao diện quản lý thông tin nhân viên 53
Hình 3.15 Giao diện quản lý thông tin phòng 54
Hình 3.16 Giao diện quản lý thông tin dịch vụ 54
Hình 3.17 Giao diện quản lý thông tin tài khoản 55
Hình 3.18 Giao diện quản lý doanh thu từng ngày 55
Hình 3 19 Giao diện quản lý doanh thu theo tuần 56
Hình 3 20 Giao diện quản lý doanh thu theo tháng 56
Trang 13vii
DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT
STT Chữ viết tắt Mô tả Nghĩa tiếng việt
một ngôn ngữ lập trình được sáng tạo và thiết kế bởi các nhân viên của Google
hệ đối tượng
thư viện JavaScript mã nguồn mở được phát triển bởi Facebook
Trang 14MỞ ĐẦU
Thực tế hiện nay, việc quản lý khách sạn vẫn còn tồn tại nhiều vướng mắc và khó khăn Các khách sạn thường sử dụng các công cụ quản lý phòng và đặt phòng như bảng tính hoặc sổ tay để ghi lại thông tin của khách hàng và phòng trống Tuy nhiên, phương pháp này không hiệu quả và dễ xảy ra sai sót trong việc quản lý phòng và đặt phòng
Với sự phát triển không ngừng của ngành du lịch và khách sạn, việc sử dụng website quản lý phòng và đặt phòng trở nên cần thiết hơn bao giờ hết Website quản lý phòng và đặt phòng sẽ giúp cho các khách sạn tăng cường hiệu quả quản lý, giảm thiểu thời gian và chi phí và cải thiện trải nghiệm của khách hàng
Ngoài ra, với sự phổ biến của kênh bán hàng trực tuyến, một số khách sạn đã thực hiện việc đặt phòng trực tuyến Tuy nhiên, các phương thức đặt phòng trực tuyến hiện nay vẫn còn khá phức tạp và không đồng nhất Do đó, việc sử dụng website quản lý phòng và đặt phòng có tích hợp một cổng thanh toán trực tuyến giúp cải thiện trải nghiệm mua sắm của khách hàng và giúp các khách sạn thuận tiện hơn trong việc quản lý và khai thác dịch vụ đặt phòng của mình
Đề tài "xây dựng website quản lý đặt phòng khách sạn" là một đề tài vô cùng thú vị và hữu ích Website này được phát triển để giúp các khách sạn quản lý việc thuê và đặt phòng một cách dễ dàng và tiện lợi hơn
1 Mục tiêu đề tài
Đề tài "Xây dựng website quản đặt phòng khách sạn" nhằm giúp các khách sạn và nhà nghỉ quản lý việc thuê và đặt phòng dễ dàng hơn, góp phần nâng cao hiệu quả làm việc và cải thiện trải nghiệm của khách hàng Nó sẽ cung cấp một công cụ quản lý hiệu quả, giúp giảm thiểu sai sót và tiết kiệm thời gian và chi phí của các doanh nghiệp trong ngành khách sạn và du lịch
Mục tiêu cụ thể của đề tài này bao gồm: − Thiết kế và phát triển website quản lý đặt phòng khách sạn đáp ứng nhu cầu và yêu cầu của khách hàng và doanh nghiệp trong ngành khách sạn và du lịch
− Đưa ra một giải pháp quản lý phòng và đặt phòng tối ưu, giảm thiểu các sai sót xảy ra trong quá trình quản lý
− Tăng cường khả năng quản lý và giảm thiểu chi phí vận hành của các khách sạn và nhà nghỉ, cải thiện hiệu quả kinh doanh của họ
Trang 15− Cải thiện trải nghiệm của khách hàng, giúp khách hàng dễ dàng tìm kiếm thông tin, đặt phòng nhanh chóng và thanh toán trực tuyến một cách an toàn và thuận tiện Do đó, một trong mục tiêu quan trọng của đề tài là xây dựng một website quản lý phòng và đặt phòng khách sạn hiệu quả, giúp tối ưu hoá quy trình quản lý, tăng tốc độ đặt phòng và thanh toán, giúp cho các doanh nghiệp trong ngành khách sạn và du lịch có thể cạnh tranh được với các đối thủ khác trên thị trường
2 Đối tượng nghiên cứu và phạm vi nghiên cứu a Đối tượng nghiên cứu
Đối tượng nghiên cứu của đề tài "xây dựng website quản lý đặt phòng khách sạn" là các khách sạn, nhà nghỉ, các cơ sở lưu trú và các chủ doanh nghiệp trong lĩnh vực ngành du lịch và khách sạn
Cụ thể, đối tượng nghiên cứu trong đề tài này sẽ bao gồm những người quản lý, nhân viên lễ tân, nhân viên quản lý phòng và tài chính của các cơ sở lưu trú Ngoài ra, đối tượng nghiên cứu cũng sẽ bao gồm các khách hàng sử dụng dịch vụ đặt phòng khách sạn, bao gồm các chuyên gia trong lĩnh vực du lịch, nhân viên công ty du lịch, các nhóm tham quan, và khách du lịch cá nhân
b Phạm vi nghiên cứu
Khách sạn Vinpearl - 341 Trần Hưng Đạo, An Hải Bắc, quận Sơn Trà, thành phố Đà Nẵng
3 Phương pháp nghiên cứu
− Nghiên cứu tài liệu và khảo sát thị trường: Tổng hợp các nghiên cứu liên quan đến website quản lý đặt phòng khách sạn đã được công bố trước đó Đồng thời, đánh giá nhu cầu sử dụng của khách hàng và doanh nghiệp trong ngành khách sạn và du lịch − Thiết kế và phát triển website: Xác định các yêu cầu hệ thống, đưa ra các giải pháp thiết kế hệ thống Xây dựng và phát triển website quản lý đặt phòng khách sạn trên nhiều nền tảng, bao gồm desktop, web và thiết bị di động
− Kiểm thử hệ thống: Tiến hành kiểm thử website, đảm bảo tính năng và độ tin cậy của hệ thống
− Đánh giá, cải tiến và triển khai: Tiến hành đánh giá các kết quả đạt được và đưa ra các phương án cải tiến, nâng cao chất lượng website Triển khai website và hướng dẫn sử dụng cho khách hàng và doanh nghiệp
4 Giải pháp công nghệ
− Hệ thống quản trị cở sở dữ liệu: PostgreSQL − Nền tảng, ngôn ngữ lập trình: Reactjs, Golang
Trang 165 Cấu Trúc đồ án
Cấu trúc đồ án bao gồm những phần sau:
Chương 1: Cơ sở lý thuyết
Tìm hiểu, giới thiệu tổng quát các kiến thức về ngôn ngữ lập trình Golang - Reactjs, và hệ quản trị cơ sở dữ liệu PostgreSQL
Chương 2: Phân tích thiết kế hệ thống
Phân tích các tác nhân và chức năng của từng tác nhân của hệ thống Thiết kế sơ đồ use-case, sơ đồ hoạt động, sơ đồ ERD Thiết kế cơ sở dữ liệu Xây dựng kịch bảng cho từng use-case hệ thống
Chương 3: Xây dựng chương trình
Xây dựng giao diện và chức năng của hệ thống
Kết luận và Hướng phát triển
Kết luận chung cho các chương trong đồ án Trình bày những vấn đề đã giải quyết đồng thời trình bày hướng phát triển
Trang 17Chương 1: CƠ SỞ LÝ THUYẾT
1.1 Tổng quan giới thiệu về Golang
1.1.1 Giới thiệu về Golang
Hình 1.1 Giới thiệu về ngôn ngữ Golang
Golang (Go Language) là một ngôn ngữ lập trình được sáng tạo và thiết kế bởi các nhân viên của Google Tuy nhiên, Golang tồn tại như một dự án mã nguồn mở chứ không thuộc về quyền sở hữu của Google Golang được xây dựng để việc lập trình trở nên dễ đọc, đơn giản, hiệu quả và đạt được hiệu suất cao
- Golang còn được biết đến như là một ngôn ngữ static typed Điều này có nghĩa là mọi thứ thuộc về Golang đều phải có kiểu dữ liệu và nó trái ngược với các ngôn ngữ dynamic typed như Python hoặc Javascript
- Golang tương tự như Java hay C++ bởi nó cũng là một ngôn ngữ được sử dụng cho mục đích lập trình Tuy nhiên, tính đơn giản chính là điểm khiến cho Golang trở nên khác biệt so với các ngôn ngữ lập trình khác Nó sở hữu những cú pháp khá tinh gọn và có mức độ tương đồng rất lớn với C++ Do đó, việc học Golang không còn là điều khó khăn nếu bạn đã quá quen thuộc với C++
- Golang cũng có nhiều điểm chung với Java đặc biệt là khả năng xây dựng và phát triển các ứng dụng cross-platform Điều này giúp các lập trình viên sử dụng Golang dễ dàng hòa nhập được vào cộng đồng lập trình cho dù nó là ngôn ngữ "sinh sau đẻ muộn"
- Golang đến từ tên miền của website chính thức là Golang.org, giúp việc tìm kiếm thông tin về ngôn ngữ lập trình Golang trở nên đơn giản hơn
Trang 181.1.2 Ưu điểm
- Hiệu suất cao: + Golang được tối ưu hóa cho hiệu suất, với thời gian biên dịch nhanh và mã máy hiệu quả
+ Có garbage collector hiệu quả, giúp quản lý bộ nhớ một cách hiệu quả mà không làm ảnh hưởng đến hiệu suất
- Đa nhiệm nhẹ: + Hỗ trợ đa nhiệm nhẹ (goroutines) giúp xử lý hàng nghìn goroutines mà không làm suy giảm hiệu suất
- Xử lý đồng thời (Concurrency): + Cung cấp các cơ chế xử lý đồng thời thông qua goroutines và channels, giúp dễ dàng thực hiện các tác vụ đa nhiệm và xử lý sự kiện
- Tính đơn giản và dễ đọc: + Cú pháp đơn giản và có cấu trúc rõ ràng giúp làm cho mã nguồn dễ đọc và bảo trì
- Kiểm soát rõ ràng về gói và phạm vi: + Quản lý các phạm vi thông qua cách sử dụng gói (package) giúp kiểm soát mã nguồn và đảm bảo tính sắp xếp
- Hỗ trợ tự động đa kênh (Garbage Collection) + Golang có garbage collector tích hợp giúp tự động quản lý bộ nhớ, giảm gánh nặng cho người lập trình
1.1.3 Nhược điểm
- Không hỗ trợ Generics (đa hình tham số): + Mặc dù đã có các cải tiến trong các phiên bản mới, nhưng Golang vẫn chưa hỗ trợ đầy đủ tính năng Generics, điều này có thể làm tăng độ phức tạp của mã nguồn trong một số trường hợp
- Thiếu mô hình kế thừa truyền thống: + Golang không hỗ trợ mô hình kế thừa truyền thống của các ngôn ngữ như Java hoặc C++ Thay vào đó, nó sử dụng các interfaces để đạt được mục tiêu tương tự
- Cộng đồng chưa lớn như một số ngôn ngữ khác: + So với một số ngôn ngữ khác như Java hoặc Python, cộng đồng Golang có vẻ nhỏ hơn, điều này có thể làm giảm sức mạnh của việc chia sẻ và tái sử dụng mã nguồn
- Thư viện của Golang không phong phú bằng một số ngôn ngữ khác:
Trang 19+ Mặc dù càng ngày càng có nhiều thư viện được phát triển, nhưng so với một số ngôn ngữ khác, thư viện của Golang có thể chưa phong phú
1.2 Tổng quan giới thiệu về React
1.2.1 Giới thiệu về React
Hình 1.2 Giới thiệu về React JS
- React (còn được gọi là Reactjs hay React.js) là một Thư viện javascript được tạo ra bởi sự cộng tác giữa Facebook và Instagram Nó cho phép những nhà phát triển web tạo ra giao diện người dùng nhanh chóng Phần Views của Reactjs thường được hiển thị bằng việc chủ yếu dung các component mà chứa các component cụ thể hoặc các thẻ HTML Một trong những đặc trưng duy nhất của Reactjs là việc render dữ liệu không những có thể thực hiện ở tầng server mà còn ở tầng client - Nó cũng sử dụng khái niệm là Virtual DOM (DOM ảo) Virtual DOM tạo ra bản cache cấu trúc dữ liệu của ứng dụng trên bộ nhớ Sau đó, ở mỗi vòng lặp, nó liệt kê những thay đổi và sau đó là cập nhật lại sự thay đổi trên DOM của trình duyệt một cách hiệu quả Điều này cho phép ta viết các đoạn code như thể toàn bộ trang được render lại dù thực tế là Reactjs chỉ render những component hay subcomponent nào thực sự thay đổi
1.2.2 Ưu điểm
- Hiệu suất cao: + ReactJS sử dụng Virtual DOM để tối ưu hóa hiệu suất bằng cách cập nhật chỉ những phần cần thiết của DOM thực sự
+ Component-Based: + Phát triển dựa trên kiến trúc component, giúp quản lý mã nguồn dễ dàng, tái sử dụng linh hoạt và phát triển mô-đun
- JSX - Cú pháp gần với HTML: + JSX giúp việc viết mã nguồn trở nên dễ đọc và dễ hiểu hơn, đồng thời giúp kiểm soát tốt hơn với HTML
- Thư viện mạnh mẽ:
Trang 20+ React có một cộng đồng lớn và phát triển nhanh chóng, điều này dẫn đến sự xuất hiện của nhiều thư viện hỗ trợ và công cụ phát triển (ví dụ như Redux, React Router)
- Hỗ trợ cộng đồng lớn: + Được sử dụng rộng rãi và có cộng đồng đông đảo, giúp giải quyết vấn đề nhanh chóng và có nhiều tài nguyên học tập
- React Native: + Cho phép phát triển ứng dụng di động sử dụng React Native, chia sẻ mã nguồn giữa ứng dụng web và ứng dụng di động
1.2.3 Nhược điểm
- Học khái niệm mới: + Cho những người mới học, có thể cần một thời gian để làm quen với khái niệm component và JSX
- Chỉ giải quyết phần giao diện người dùng: + React giải quyết chỉ một phần của vấn đề, chủ yếu tập trung vào giao diện người dùng, vì vậy bạn cần sử dụng thêm thư viện hoặc framework khác để xử lý các phần khác của ứng dụng như routing hoặc quản lý trạng thái toàn cục - Có quá nhiều lựa chọn:
+ Với nhiều thư viện và công cụ khác nhau, có thể làm cho việc lựa chọn trở nên khó khăn và tốn thời gian
- Tích hợp lược đồ phức tạp: + Trong một số trường hợp, việc tích hợp React vào dự án hiện tại có thể đòi hỏi công sức nhiều hơn so với việc sử dụng một framework đầy đủ tính năng - Nhược điểm của JSX:
+ Mặc dù JSX mang lại nhiều lợi ích, nhưng cũng có thể làm tăng độ phức tạp của mã nguồn và có thể khó đọc đối với những người mới học
1.3 Tổng quan giới thiệu PostgreSQL
1.3.1 Giới thiệu về PostgreSQL
Hình 1.3 Giới thiệu về PostgreSQL
Trang 21+ PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ-đối tượng (object- relational database management system) có mục đích chung, hệ thống cơ sở dữ liệu mã nguồn mở tiên tiến nhất hiện nay.
+ PostgreSQL được phát triển dựa trên POSTGRES 4.2 tại phòng khoa học máy tính Berkeley, Đại học California
+ PostgreSQL được thiết kế để chạy trên các nền tảng tương tự UNIX Tuy nhiên, PostgreSQL sau đó cũng được điều chỉnh linh động để có thể chạy được trên nhiều nền tảng khác nhau như Mac OS X, Solaris và Windows
khả dụng theo license của PostgreSQL, một license nguồn mở tự do Theo đó, bạn sẽ được tự do sử dụng, sửa đổi và phân phối PostgreSQL dưới mọi hình thức
+ PostgreSQL không yêu cầu quá nhiều công tác bảo trì bởi có tính ổn định cao Do đó, nếu bạn phát triển các ứng dụng dựa trên PostgreSQL, chi phí sở hữu sẽ thấp hơn so với các hệ thống quản trị dữ liệu khác
+ PostgreSQL hoạt động như một hệ quản trị dữ liệu mang tính mở, phù hợp để mọi doanh nghiệp khai thác Đây là một hệ quản trị tương thích với hầu hết các nền tảng, ứng dụng đa ngôn ngữ, phần mềm phổ biến
+ Ngày nay, PostgreSQL là một phần quan trọng của ngành dữ liệu GIS cho tổ chức chính phủ, ngành ngân hàng, thương mại, công nghệ web, PostgreSQL hoàn toàn không bị quản lý bởi bất kỳ tổ chức nào Tuy vậy, việc không bị quản lý bởi bất kỳ tổ chức nào đôi khi lại là yếu điểm của PostgreSQL
+ Kiểu dữ liệu:+ Nguyên hàm: Số nguyên, số, chuỗi, Boolean+ Cấu trúc: Date/Time, Array, Phạm vi, UUID+ Document: JSON/JSONB, XML, Key-value (Hstore)+ Hình học: Điểm, Đường thẳng, Vòng tròn, Đa giác+ Tùy chỉnh: Composite, Các kiểu tùy chỉnh
+ Toàn vẹn dữ liệu:+ UNIQUE, NOT NULL+ Primary Keys
+ Foreign Keys+ Ràng buộc loại trừ+ Khóa hàm số/ Explicit Locks, Khóa khuyến nghị/ Advisory Locks+ Đồng quy, hiệu suất:
Trang 22+ Lập danh mục: B-tree, Multicolumn, Expressions, Partial+ Lập danh mục nâng cao: GiST, SP-Gist, KNN Gist, GIN, BRIN, Bloom filters
+ Trình lập kế hoạch / trình tối ưu hóa truy vấn phức tạp, quét index-only, thống kê số liệu trên nhiều cột
+ Giao tác, Giao tác dạng nest (thông qua lưu điểm)+ Điều khiển đồng thời nhiều phiên bản (MVCC)+ Truy vấn đọc song song
+ Phân vùng bảng+ Tất cả các mức độ giao dịch độc lập được xác định trong tiêu chuẩn SQL, bao gồm cả Serializable
+ Độ tin cậy, phục hồi sau thảm hoạ+ Ghi nhật ký ghi trước (Write-ahead Logging - WAL)+ Replication: Không đồng bộ, Đồng bộ, Logical+ Khôi phục điểm-theo-thời gian (Point-in-time-recovery - PITR), active standbys
+ Không gian bảng+ Bảo mật
+ Xác thực: GSSAPI, SSPI, LDAP, SCRAM-SHA-256, Certificate và các hình thức khác
+ Hệ thống kiểm soát truy cập mạnh mẽ+ Bảo mật cấp độ cột và hàng
+ Khả năng mở rộng:+ Phương pháp lưu trữ+ Ngôn ngữ thủ tục: PL / PGSQL, Perl, Python (và nhiều ngôn ngữ khác)+ Trình wrapper dữ liệu ngoài: kết nối với các cơ sở dữ liệu hoặc luồng khác với giao diện SQL chuẩn
+ Và nhiều tiện ích mở rộng cung cấp chức năng bổ sung, bao gồm cả PostGIS+ Tìm kiếm văn bản:
+ Hỗ trợ các bộ ký tự quốc tế, ví dụ: thông qua ICU collations+ Tìm kiếm văn bản đầy đủ
1.3.2 Ưu điểm
+ Dễ sử dụng+ Cho phép chạy các trang web, ứng dụng web động với LAMP
Trang 23+ Lưu nhật ký đã viết trước đó để sử dụng như một cơ sở dữ liệu với khả năng sửa lỗi tốt
+ Có sẵn mã nguồn miễn phí theo giấy phép nguồn mở, cho phép chỉnh sửa và triển khai tùy theo nhu cầu
+ Có khả năng đối tượng hóa dữ liệu+ Được hỗ trợ bởi một cộng đồng đông đảo và nhiều kinh nghiệm+ Giảm thiểu việc bảo trì hệ thống
1.3.3 Nhược điểm
người dùng khi muốn tiếp cận với đầy đủ tính năng
tốc độ nên sẽ yêu cầu nhiều công việc hơn so với MySQL
Trang 24CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
2.1 Khảo sát yêu cầu
2.1.3.2 Yêu cầu của nhân viên
- Nhận đặt phòng: Tiếp nhận và xác nhận thông tin đặt phòng - Check-in và check-out: Thực hiện quy trình nhận phòng và trả phòng - Cung cấp thông tin: Hỗ trợ khách hàng với thông tin về dịch vụ, tiện ích và địa điểm
2.1.3.3 Yêu cầu của quản lý ( Admin)
- Quản lý đặt phòng: Theo dõi tình trạng đặt phòng, quản lý số lượng phòng - Quản lý nhân sự: Gán và quản lý nhiệm vụ của nhân viên, xác nhận lịch làm việc
- Báo cáo và thống kê: Xem và phân tích dữ liệu về doanh thu, tỉ lệ lấp đầy phòng
Trang 25- Quản lý hệ thống: Cài đặt và cấu hình hệ thống - Quản lý người dùng: Tạo, chỉnh sửa và xóa tài khoản người dùng - Bảo mật hệ thống: Đảm bảo an toàn thông tin và quản lý quyền truy cập
- Khách hàng + Đăng nhập + Đăng ký + Cập nhật thông tin + Tìm và đặt phòng + Yêu cầu các dịch vụ phòng + Thực hiện thanh toán - Nhân viên Lễ tân
+ Đăng nhập + Đăng ký + Cập nhật thông tin + Xác nhận đặt phòng và check-in khách hàng + Cung cấp thông tin về phòng và dịch vụ + Thực hiện thủ tục check-out
+ In hóa đơn đặt phòng cho khách hàng - Quản lý (Admin)
+ Quản lý thông tin nhân viên + Quản lý thông tin khách hàng + Quản lý dịch vụ
+ Quản lý thông tin phòng + Quản lý thông tin đặt phòng + Quản lý hóa đơn
+ Quản lý doanh thu
Trang 26+ Quản lý tài khoản + Phân quyền chức năng cho các tài khoản người dùng
− Xử lý: Bước 1: Khách hàng khởi chạy chương trình Bước 2: Khách hàng nhập thông tin tài khoản và mật khẩu đã được đăng ký Bước 3: Nhấn nút “Đăng nhập”
Bước 4: Hệ thống kiểm tra và đi tới giao diện trang chủ nếu đăng kí thành công hoặc hiển thị thanh thông báo “đăng nhập lỗi” nếu sai tài khoản hoặc mật khẩu
Trang 272.3.1.2 Tìm phòng và thanh toán
− Vào: Trang chủ của trang web − Ra: Màn hình các thao tác − Xử lý:
Bước 1: Khách hàng đăng nhập vào hệ thống hoặc tạo tài khoản mới Bước 2 Tìm kiếm phòng dựa trên ngày nhận và trả phòng, số lượng khách, và các yêu cầu khác
Bước 3: Xem danh sách các phòng và chọn loại phòng mong muốn Bước 4: Nhập thông tin đặt phòng và xác nhận giá
Bước 5: Chọn phương thức thanh toán và thực hiện thanh toán an toàn Bước 6: Nhận xác nhận đặt phòng và thông tin chi tiết qua email hoặc ứng dụng di động
2.3.2 Nhân viên lễ tân
2.3.2.1 Đăng nhập
- Vào: Tên đăng nhập, mật khẩu đăng nhập - Ra: Hiển thị màn hình trang chủ hoặc thống báo “Đăng nhập lỗi” nếu sai mật khẩu
- Xử lý: Bước 1: Lễ tân khởi chạy chương trình Bước 2: Lễ tân nhập thông tin tài khoản và mật khẩu đã được cung cấp Bước 3: Nhấn nút “Đăng nhập”
Bước 4: Hệ thống kiểm tra và đi tới giao diện trang chủ nếu đăng kí thành công hoặc hiển thị thanh thông báo “đăng nhập lỗi” nếu sai tài khoản hoặc mật khẩu
2.3.2.2 Xác nhận đặt phòng
- Vào: Click vào đường dẫn “Quản lý đặt phòng ” - Ra: Màn hình các thao tác
- Xử lý: Bước 1: Nhân viên kích chuột vào đường dẫn “Quản lý đặt phòng” Bước 2: Hệ thống hiển thị giao diện với các thao tác dành cho thông tin của danh sách đặt phòng của khách hàng hiện có tại khách sạn bao gồm xác nhận đặt phòng, xác nhận thanh toán, hủy
Bước 3: Nhân viên chọn một trong các thao tác và bắt đầu sử dụng
Trang 28Bước 4: Bấm nút “Xác nhận đặt phòng” để lưu kết quả và nút “Thoát” để rời khỏi giao diện
2.3.2.3 Xác nhận thanh toán
- Vào: Click vào đường dẫn “Quản lý đặt phòng ” - Ra: Màn hình các thao tác
- Xử lý: Bước 1: Nhân viên kích chuột vào đường dẫn “Quản lý đặt phòng” Bước 2: Hệ thống hiển thị giao diện với các thao tác dành cho thông tin của danh sách đặt phòng của khách hàng hiện có tại khách sạn bao gồm xác nhận đặt phòng, xác nhận thanh toán, hủy
Bước 3: Nhân viên chọn một trong các thao tác và bắt đầu sử dụng Bước 4: Bấm nút “Xác nhận thanh toán” để lưu kết quả và nút “Thoát” để rời khỏi giao diện
2.3.2.4 Check-in và check out
Bước 1: Nhân viên lễ tân đăng nhập vào hệ thống Bước 2: Kiểm tra danh sách đặt phòng và xác nhận thông tin với khách hàng Bước 3: Thực hiện quy trình check-in với việc cung cấp thẻ phòng và thông tin về dịch vụ khác
Bước 4: Ghi chú về các yêu cầu đặc biệt của khách hàng Bước 5: Thực hiện quy trình check-out, xác nhận thanh toán và gửi hóa đơn qua email
Bước 1: Quản lý khởi chạy chương trình Bước 2: Quản lý nhập thông tin tài khoản và mật khẩu đã được cung cấp Bước 3: Nhấn nút “Đăng nhập”
Bước 4: Hệ thống kiểm tra và đi tới giao diện trang chủ nếu đăng kí thành công hoặc hiển thị thanh thông báo “đăng nhập lỗi” nếu sai tài khoản hoặc mật khẩu
Trang 292.3.3.2 Cập nhật thông tin quản lý phòng
- Vào: Click vào đường dẫn “ quản lý Phòng ” - Ra: Màn hình các thao tác
- Xử lý: Bước 1: Kiểm quản lý kích chuột vào đường dẫn “ quản lý Phòng” Bước 2: Hệ thống hiển thị giao diện với các thao tác dành cho thông tin của các phòng hiện có tại khách sạn bao gồm thêm, sửa, xóa
Bước 3: Quán lý chọn một trong các thao tác và bắt đầu sử dụng Bước 4: Bấm nút “Lưu” để lưu kết quả và nút “Thoát” để rời khỏi giao diện
2.3.3.3 Cập nhật thông tin nhân viên
- Vào: Click vào đường dẫn “Quản lý nhân viên ” - Ra: Màn hình các thao tác
- Xử lý: Bước 1: Kiểm quản lý kích chuột vào đường dẫn “Quản lý nhân viên” Bước 2: Hệ thống hiển thị giao diện với các thao tác dành cho thông tin của danh sách nhân viên hiện có tại khách sạn bao gồm thêm, sửa, xóa
Bước 3: Quán lý chọn một trong các thao tác và bắt đầu sử dụng Bước 4: Bấm nút “Lưu” để lưu kết quả và nút “Thoát” để rời khỏi giao diện
2.3.3.4 Cập nhật thông tin khách hàng
- Vào: Click vào đường dẫn “Quản lý khách hàng ” - Ra: Màn hình các thao tác
- Xử lý: Bước 1: Kiểm quản lý kích chuột vào đường dẫn “Quản lý khách hàng” Bước 2: Hệ thống hiển thị giao diện với các thao tác dành cho thông tin của danh sách khách hàng hiện có tại khách sạn bao gồm thêm, sửa, xóa
Bước 3: Quán lý chọn một trong các thao tác và bắt đầu sử dụng Bước 4: Bấm nút “Lưu” để lưu kết quả và nút “Thoát” để rời khỏi giao diện
2.3.3.5 Cập nhật thông tin dịch vụ
- Vào: Click vào đường dẫn “Quản lý dịch vụ ” - Ra: Màn hình các thao tác
- Xử lý: Bước 1: Kiểm quản lý kích chuột vào đường dẫn “Quản lý dịch vụ”
Trang 30Bước 2: Hệ thống hiển thị giao diện với các thao tác dành cho thông tin của danh sách dịch vụ hiện có tại khách sạn bao gồm thêm, sửa, xóa
Bước 3: Quán lý chọn một trong các thao tác và bắt đầu sử dụng Bước 4: Bấm nút “Lưu” để lưu kết quả và nút “Thoát” để rời khỏi giao diện
2.3.3.6 Cập nhật thông tin đặt phòng
- Vào: Click vào đường dẫn “Quản lý đặt phòng ” - Ra: Màn hình các thao tác
- Xử lý: Bước 1: Kiểm quản lý kích chuột vào đường dẫn “Quản lý đặt phòng” Bước 2: Hệ thống hiển thị giao diện với các thao tác dành cho thông tin của danh sách đặt phòng của khách hàng hiện có tại khách sạn bao gồm xác nhận đặt phòng, xác nhận thanh toán, hủy
Bước 3: Quán lý chọn một trong các thao tác và bắt đầu sử dụng Bước 4: Bấm nút “Lưu” để lưu kết quả và nút “Thoát” để rời khỏi giao diện
2.3.3.7 Cập nhật thông tin hóa đơn
- Vào: Click vào đường dẫn “Quản lý hóa đơn ” - Ra: Màn hình các thao tác
- Xử lý: Bước 1: Kiểm quản lý kích chuột vào đường dẫn “Quản lý hóa đơn” Bước 2: Hệ thống hiển thị giao diện với các thao tác dành cho thông tin của danh sách hóa đơn hiện có tại khách sạn bao gồm xem chi tiết, sửa, xóa Bước 3: Quán lý chọn một trong các thao tác và bắt đầu sử dụng
Bước 4: Bấm nút “Lưu” để lưu kết quả và nút “Thoát” để rời khỏi giao diện
2.3.3.8 Cập nhật thông tin tài khoản
- Vào: Tên đăng nhập, họ tên, mật khẩu - Ra: Tài khoản người dùng
- Xử lý: Bước 1: Quản trị viên chọn khách sạn, khu vực cần thêm người dùng Bước 2: Nhập thông tin tên đăng nhập, họ tên và mật khẩu của tài khoản Bước 3: Bấm nút “Hoàn tất” để lưu kết quả
2.3.3.9 Cập nhật các tài khoản người dùng
- Vào: Tên đăng nhập, họ tên, mật khẩu
Trang 31- Ra: Tài khoản người dùng - Xử lý:
Bước 1: Quản trị viên chọn khách sạn, khu vực cần thêm người dùng Bước 2: Nhập thông tin tên đăng nhập, họ tên và mật khẩu của tài khoản Bước 3: Bấm nút “Hoàn tất” để lưu kết quả
Trang 32Hình 2.4 Đăng ký khách hàng
Trang 332.4.1.3 Tìm kiếm và đặt phòng
Hình 2.5 Tìm kiếm đặt phòng
Trang 342.4.2 Nhân viên lễ tân
2.4.2.1 Đăng nhập
Hình 2.6 Đăng nhập nhân viên
Trang 352.4.2.2 Xác nhận đặt phòng
Hình 2.7 Xác nhận đặt phòng