Nguyên tắc thiết kế hệ thống Một hệ thông quản lý khách sạn hiệu quả cần đảm bảo các nguyên tắc quan trọng như tính chính xác và bảo mật dữ liệu, thân thiện với người dùng, cũng như khả
Trang 1
TRUONG DAI HOC SU PHAM KY THUAT TP.HCM
KHOA CONG NGHE THONG TIN
XAY DUNG HE THONG QUAN LY KHACH SAN
(HOTEL MANAGEMENT SYSTEM)
TIEU LUAN CUOI KY MÔN LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
GIÁO VIÊN HƯỚNG DẪN
TS LÊ VĨNH THỊNH
KHOA 2023 — 2027
Trang 2
TRUONG DAI HOC SU PHAM KY THUAT TP.HCM
KHOA CONG NGHE THONG TIN
XAY DUNG HE THONG QUAN LY KHACH SAN
(HOTEL MANAGEMENT SYSTEM)
TIEU LUAN CUOI KY MÔN LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
GIÁO VIÊN HƯỚNG DẪN
TS LÊ VĨNH THỊNH
KHOA 2023 — 2027
Trang 3MUC LUC
1 Tính cấp thiết của để tải 5 St St 121121111121 1111212112211 212 reg 1
2 Mue dich ctta dé tai.ccccccccccccccccscscsccsssescevevececscsssesessvevevacsssssesesevevevecstesetssvevevevevenesees 1
3 Cach tiếp cận và phương pháp nghiên cứu - 2-2 1 191 E15E1115221121211 221 te 1
4 Phân tích những công trình có liên quan - 0 222211121 12211 22111211551 211 118111122 2
5 Kết quả dự kiến đạt được - ST T211 211111111 Tnhh ea 2
0: 908))9 8000 c1 Ả ÔÔỒÔỎ 3
1 CHƯƠNG I1: CƠ SỞ LÝ LUẬN :22222112222211112211110112111112101 11.11 re 3
1.1 Khái niệm hệ thông quản lý khách sạn + 22s 2E E2112127111221271215E 1x xe 3 1.2 Các thành phần chính của hệ thông 22 S1 E2 E2E1218211212717121121 121111 te 3 I0 0/081 8‹.1 8 0 SGHaÝÝÝݣɣỶÁ 3
I 6u 6i, o6 90D HH ai 3
2 CHƯƠNG 2: THIẾT KẾ CÂU TRÚC HỆ THÓNG QUẢN LÝ KHÁCH SẠN 4 2.1 Cầu trúc hệ thông thê hiện qua classdiapram 22 2s E2 2521121271112 2 e2 4 1.1 Cấu trúc lớp Person - 2 1s 12911 21121111111 1 1112121111211 111112 reg 5 eo c.G ỶẢỶẢ 6 1.3 Cau trúc lớp Receptionist 5s 211121 11211211211 1211121212121 12g r tru 7 neo c sẽ áăấỶÝÝỶ 8 1.5 Cau 0i n'ä4ẢÝắÝỶẢ 10
2 CHUONG 3: PHAN TICH GIAO DIEN HE THONG QUAN LY KHACH SAN 12 2.1 Giao diện của khách hàng c2 020122111211 121 1111122110111 1811 112111112811 8tr 12 2.2 Giao diện của nhân vIÊH - 0000025125113 111111111111 T TK kg g5 1515111111152 14
DB iiicccccssecesccsscccccccccecesscessseseesttesetttestututatsccesecesausteesecesesaustenteceeess Giao diện của quan ly
ch n ng 1n k1 111111111 C15111 1119111 k C11116 1111611160111 11611 1611111151111 1 1111161116111 9121151611 xEt 20
Trang 4DANH MUC HINH ANH
1 Cau tric hé théng thé hién qua classdiagram 0 cccccccsccccesscseesesesseeseseeeees 4
1 Giao diện Make ReservatIon ccccccccseseseeccevececsecuuceesececeeauaaeneess 12
2 Giao điện S€TVICG L TQ TT SH n1 1111111 1110161151115 1 111111 vu 11551111113 sa 13
3 Giao điện LOBIH c0 22022211211 121 12111 111811111 1111111111 111 1E HH ch 14
4 Giao diện Đăng ký Khách Hàng 2 0 2211221221122 12 2212811521212 xe 15
5 Giao dién Thanh toane 0.00 icecceeecececcecccecccccecccecccscccececcseesausaeseceeevansnees 16
6 Giao dién Chi tiết khách hảng 52 S1 1E 91 EE1511522212115111121121 1 te 18
7 Giao diện Request — Room Booking c2 2211222112 21132121 19
8 Giao diện Request — S€FVIC€ - L0 2002011211111 111 1122110111011 111 2011111121 20
9 Giao diện Thêm phòng - 12 122122211211 121 141111112112 111811518212 21
10 Giao diện Quan ly nhân viên — Employee Registration 22
11 Giao diện Quản lý nhân viên — Employee Detalls -c 52-55: 22
12 Giao diện Quản lý nhân viên — Xóa nhân viên 2522222 s2 c2 s52 23
Trang 5PHAN MO DAU
1 Tính cấp thiết của đề tài
Trong thời đại công nghệ số, ngành khách sạn đang đối mặt với sự cạnh tranh khốc liệt và đòi hỏi nâng cao chất lượng dịch vụ Việc quản lý khách sạn thủ công thường gây ra nhiều sai sót, tiêu tốn thời gian và tài nguyên, làm giảm hiệu suất vận hành Do đó, xây dựng một hệ thống quản lý khách sạn tự động và hiệu quả là rất cần thiết Hệ thống không chỉ giúp tối ưu hóa quy trình quản lý mà còn tăng cường trải nhiệm khách hàng, từ đó nâng cao vị thế của khách sạn trong thị trường
2 Mục đích của đề tài
© Hỗ trợ quản lý hiệu quả: Tự động hóa các quy trình quản lý như đặt phòng, check-in/check-out, và quản lý dịch vụ
© Cải thiện chất lượng dịch vụ: Đáp ứng nhanh chóng yêu cầu của khách
hàng, giúp nâng cao su hai long va tao dung uy tin
e Tối ưu hóa vận hành: Giảm thiểu sai sót trong quản lý, tăng tốc độ xử lý công việc và sử dụng tài nguyên hiệu quả
e© Cung cấp thông tin phân tích: Tạo các báo cáo chỉ tiết về tình hình kinh doanh, hỗ trợ nhà quản lý đưa ra quyết định chiến lược
3 Cách tiếp cận và phương pháp nghiên cứu
Phương pháp nghiên cửu
« Tài liệu hóa: Tìm hiểu các tài liệu về hệ thống quản lý khách sạn và các
nguyên tắc phát triển phần mềm
Trang 6« Thực tiễn: Thu thập ý kiến từ các khách sạn hoặc chuyên gia để thiết kế hệ thống sát với nhu cầu thực tế
« Phân tích và thử nghiệm: Xây dựng các mô hình thử nghiệm đề đánh giá hiệu quả của hệ thống trước khi triển khai thực tế
4 Phân tích những công trình có liền quan
Hệ thống quản lý truyền thống: Thường chỉ tập trung vào các chức năng cơ bản như đặt phòng hoặc thanh toán, không tích hợp đầy đủ các dịch vụ khác
Hệ thống hiện đại: Tích hợp công nghệ cao như trí tuệ nhân tạo (AI) hoặc điện toán đám mây, nhưng có chí phí cao và phức tạp trong triển khai
Diem khác biệt của đề tài: Đề tài hướng tới một hệ thông đơn giản, dễ sử dụng
va chi phí thấp, phù hợp với cả các khách sạn vừa và nhỏ
5 Kết quả dự kiến đạt được
e_ Hệ thống quản lý khách sạn hoàn chỉnh: Bao gồm các chức năng như đặt phòng, quản lý dịch vụ, báo cáo và quản lý khách hàng
® Nâng cao hiệu quả vận hành: Giảm thời p1an xử lý công việc và tang khả năng phục vụ khách hàng
e Báo cáo phân tích chỉ tiết: Cung cấp các thông tin về hiệu suất, doanh thu
và phản hồi của khách hảng
e Tính linh hoạt và mở rộng: Hệ thống có thể nâng cấp thêm các tính năng mới khi cần thiết, phù hợp với sự phát triên của khách sạn
Trang 7PHAN NOI DUNG
1 CHƯƠNG 1: CƠ SỞ LÝ LUẬN
1.1 Khái niệm hệ thống quản lý khách sạn
Hé théng quan ly khach san (Hotel Management System) la mét phần mềm hỗ trợ tự động hóa các quy trình vận hành của khách sạn Hệ thống này giúp quản lý toàn điện các hoạt động như đặt phòng, quản lý khách hàng, dịch vụ và báo cáo kinh doanh Với sự phát triển của công nghệ, hệ thống quản lý khách sạn đóng vai trò quan trọng trong việc nâng cao hiệu quả quản lý, cải thiện chất lượng dịch vụ và đáp ứng nhu cầu ngay cang cao của khách hàng
1.2 Các thành phần chính của hệ thống
Hệ thống quản lý khách sạn bao gồm các thành phần cốt lõi như quản lý phòng, đặt phòng, khách hàng và dịch vụ Chức năng quản lý phòng giúp theo dối trạng thái phòng (trống, đặt trước, bảo trì), trong khi quản lý đặt phòng đảm bảo thông tin về lịch trình lưu trú được lưu trữ chính xác Ngoài ra, hệ thống còn hỗ trợ quản ly dich vu bé sung như ăn uống, giặt là và tạo báo cáo chỉ tiết về doanh thu, tỷ lệ lấp đầy phòng để nha quan ly dua ra quyét định chiến lược
1.3 Nguyên tắc thiết kế hệ thống
Một hệ thông quản lý khách sạn hiệu quả cần đảm bảo các nguyên tắc quan trọng như tính chính xác và bảo mật dữ liệu, thân thiện với người dùng, cũng như khả năng mở rộng và linh hoạt Giao diện cần được thiết kế đơn gian dé người dùng dễ dàng tương tác, đồng thời hệ thống phải đảm bảo an toàn dữ liệu khách hàng, tránh các
rủi ro an ninh mạng
1.4 Lợi ích và thách thức
Việc triển khai hệ thống quản lý khách sạn mang lại nhiều lợi ích như tăng hiệu quả công việc, giảm thiểu sai sót trong quản lý thủ công và cải thiện trải nghiệm khách hàng Tuy nhiên, quá trình này cũng đối mặt với những thách thức như chỉ phí triển khai ban đầu, khó khăn trong việc đào tạo nhân viên sử dụng hệ thông và yêu cầu bảo mật cao đối với dữ liệu khách hảng
Trang 82.1 Cau tric hé thong thé hién qua classdiagram
Mobile { get; se
& Name | get, set |
4& Password | get,
Trang 9L6ép Person đóng vai trò là lớp cha, cung cấp các thuộc tính chung cho tất cả các đối tượng liên quan đến hệ thống như nane (tên), gender (giới tính), va mobile (số điện thoại) Các thuộc tính này được đóng gói thông qua các phương thức getter và setter Ngoài ra, lớp này còn có các phương thức như ^adropatabase() để lưu thông tin vao co so dit ligu va PrintDetails() để hiển thị thông tin chỉ tiết của đối tượng
Đây là nên tảng giúp tái sử dụng mã và đảm bảo tính kế thừa cho các lớp con
Ba lớp kế thừa từ nerson là Manager, Receptionist, và Guest, mỗi lớp đều mở rộng các chức năng phù hợp với vai trò cụ thé:
Manager: Quan ly khách sạn, có thêm các thuộc tinh nhu email, password, va username để xác thực và quản lý truy cập Phương thức nổi bật như setManagers () hỗ trợ lây thông tin về các nhà quản lý
Receptionist: Lễ tân, có cấu trúc tương tự Manager, nhưng chuyên xử lý các nhiém vu nhu check-in va check-out
Guest: Đại diện cho khách hàng, với các thuộc tính bỗ sung như address (địa chi), dob (ngay sinh), nationality (quốc tịch) và roomra (mã phòng) Các phương
thức chính bao gồm savecues+t() để lưu thông tin khách và seteuestDetaiis() để
truy vấn thông tin
Lớp soon được thiết kế để quản lý thông tin liên quan đến các phòng trong khách sạn Các thuộc tính như roomNo (số phòng), roomType (loại phòng), bedType (loại giường), và price (giá) giúp theo dõi chỉ tiết từng phòng Phương thức AddToDatabase() va DeleteRoom() hỗ trợ thêm và xóa phòng khỏi cơ sở dữ liệu Ngoai ra, GetAl1Rooms() cho phép truy xuất danh sách các phòng hiện có, giúp quản
lý hiệu quả hơn
Sơ đồ thể hiện nguyên tắc kế thừa trong lập trình hướng đối tượng, với lớp Person la trung tam để tái sử dụng mã Các lớp Manager, Receptionist, Và Guest được tủy biến cho các chức năng cụ thể, trong khi lớp Room hoạt động độc lập dé quan
ly thông tin phòng Cấu trúc này không chỉ đảm bảo tính linh hoạt mà còn dễ mở rộng,
cho phép bồ sung thêm chức năng hoặc lớp mới nếu cần
1.1.Cấu trúc lớp Person
Các thuộc tính: Lớp person có ba thuộc tính riêng tư (private) là name, mobi 1e,
5
Trang 10va gender Viéc dong g61 (encapsulation) được thực hiện qua các thuộc tính công khai
Trang 11(puolic) có øetter và setter, cho phép truy cập hoặc thay đôi giá trị bên ngoài lớp nhưng vẫn đảm bảo tính bảo mật và kiểm soát
Phương thức khởi tạo (Constructor): Phương thức khởi tạo Person (string name, string mobile, string gender) được sử dụng để khởi tạo các gia ta ban dau cho đối tượng khi được tạo Điều này đảm bảo rằng mọi đối tuwong Person đều có thông tin cần thiết ngay khi được khởi tạo
Tính đa hình (Polymorphism) Hai phương thức PrintDetails() va AddToDatabase() được khai báo là virtual, cho phép các lớp con (nếu có) ghi đẻ (override) để thay đổi hoặc mở rộng chức năng Hiện tại, hai phương thức này chỉ chứa các đoạn mã ghi chú (comment), gợi ý rằng chúng sẽ được hoàn thiện trong các lớp kế thừa hoặc trong tương lai
Ứng dụng trong hệ thống: Lớp serson đóng vai trò làm lớp cha cơ bản, cung
cấp các thuộc tính và phương thức chung để kế thừa trong các lớp con như Hanager, Receptionist, và quest Ví dụ, mỗi loại người trong khách sạn có thể sử dụng hoặc
mở rộng các phương thức như AddroDatabase()› để lưu thông tin vào cơ sở dữ liệu theo cách riêng biệt
Tính mở rộng: Thiết kế này thể hiện rõ tính linh hoạt của lập trình hướng đối tượng, cho phép mở rộng mà không cần sửa đôi trực tiếp mã của lớp cha Điều này giúp để đảng bảo trì và phát triển hệ thống
1.2.Cấu trúc lớp Manager
password, ngoài các thuộc tính kế thừa từ lớp cha Person (name, mobile, gender) Các
thuộc tính này được truy cập vả thay đổi thông qua các phương thức getter va setter céng khai (public) Diéu nay đảm bảo tính đóng gói (encapsulation), giúp bảo vệ dữ liệu bên trong đối tượng khỏi sự truy cập trực tiếp từ bên ngoài
Phương thức khởi tạo Manager: Nhận các tham số đầu vào bao gồm name,
dụng mã của lập trình hướng đối tượng, tránh việc phải viết lại logic xr ly cdc thuộc tinh chung
Trang 12x Lớp Manager bố sung các phương thức phục vụ thao tác với cơ sở dữ liệu, bao
Kế thừa và Đa hình (Inheritance và Polymorphism): Lớp Manager kế thừa từ Iép cha Person, tan dung các thuộc tính và phương thức như Name, Mobile, Gender, va
AddToDatabase()› Ghi đè phương thức addropatabase() để mở rộng chức năng lưu
trữ thông tin quản lý vào cơ sở dữ liệu Đây là một ví dụ điển hình về đa hình động (runtime polymorphism)
1.3 Cau tric lép Receptionist
Thuộc tính: LỚP Receptionist bỗ sung ba thuộc tính email, username, Và
password để chứa thông tin liên quan đến nhân viên lễ tân Các thuộc tính này có phương thức getter và setter công khai, cho phép truy cập và thay đổi giá trị của chúng
từ bên ngoài lớp
Emai1: Địa chỉ email của nhân viên lễ tân
0sername: Tên đăng nhập của nhân viên lễ tân
Password: Mật khẩu của nhân viên lễ tân
Phương thức khởi tạo (Constructor): Phương thức khởi tạo Receptionist nhận
vào các tham sỐ name, mobile, email, gender, username, va password, Cac tham s6
khởi tạo các thuộc tính kế thừa từ lớp cha, trong khi email, username, va password
được khởi tạo trong lớp Receptionist
Trang 13Phuong thire xu ly co so dit ligu: Lop Receptionist cung cấp các phương thức
để thao tác với cơ sở đữ liệu, chủ yếu là các thao tác với thông tin nhân viên lễ tân: AddToDatabase (): Phuong thức này phi đè phương thức AddToDatabase() trong lớp cha Nó thực hiện truy vấn INSERT INTO employee để thêm thông tin nhân viên lễ tân vào cơ sở dữ liệu Dữ liệu được thêm vào bảng employee với các trường như
ename, mobile, gender, emailid, username, va pass
DeleteFromDatabase(): Đây là một phương thức tĩnh dùng để xóa thông tin
nhân viên lễ tân khỏi cơ sở dữ liệu theo employeeTd Phương thức thực hiện truy van DELETE trong SQL để xóa một nhân viên khỏi bảng employee
GetEmployees (): Phương thức này thực hiện truy van SELECT * FROM employee
dé lay toàn bộ danh sách nhân viên lễ tân từ cơ sở dữ liệu và trả về dưới dạng một
Đa hình (Polymorphism): Lép Receptionist phí đẻ phương thức
hiện hành động cụ thể của mình khi sử dụng các phương thức chung từ lớp cha
1.4 Cấu trúc lớp Guest
Thuộc tính lớp suest có các thuộc tính riêng biệt để lưu trữ thông tin chi tiết
của khách hàng, bao gồm:
nationality: Quốc tịch của khách hàng
dob: Ngay sinh của khách hàng
idProof: Giay tờ tùy thân của khách hàng
address: Dia chi cua khach hang
Trang 14checkInDate: Ngay khách hàng nhận phòng
xoomr3: Mã phòng mà khách hàng đã đặt
Các thuộc tính này được khởi tạo thông qua phương thức khởi tạo euest, đồng thời lớp cũng cung cấp các phương thức getter và setter để truy cập và thay đối giá trị của các thuộc tính
Phương thức khởi tạo (Constructor): Phương thức khởi tạo cuest nhận vào
nhiều tham số như name, mobile, nationality, gender, dob, idProof, address,
checkTnDate, và roomrd Các tham số này được sử dụng để thiết lập các giá trị cho các thuộc tính của lớp cuest và lớp cha Person (qua tt khéa base)
Phương thức lưu thông tin khách hàng: Lớp suest có hai phương thức tĩnh saveguest để lưu thông tin khách hàng vào cơ sở đữ liệu:
SaveGuest (Guest guest, string roomNo): Phuong thức này thực hiện hai hành động trong một truy vấn SQL: lưu thông tin khách hàng vào bảng e¿stomer và cập
nhật trạng thái phòng trong bang rooms thanh "YES" (da đặt)
checkoutDate): Phương thức nảy lưu thông tin về một đặt phòng vào bang
creservation, voi thông tin về loại giường, loại phòng, ngảy nhận phòng và ngày trả phòng
Cả hai phương thức này đều sử dụng truy vấn SQL dạng chuỗi để thực hiện các
thao tác chèn dữ liệu vào cơ sở dữ liệu và có cơ chế xử lý lỗi với thông báo cho người
dùng nếu gặp sự cố trong quá trình thực hiện
Phương thức truy vấn dữ liệu: Lớp cuest cung cấp các phương thức để lấy đữ liệu từ cơ sở dữ liệu:
GetGuestDetails(string query): Phương thức này nhận một truy van SQL dang chuỗi và thực hiện truy vấn đữ liệu từ cơ sở dữ liệu, sau đó trả về kết quả dưới
dạng
DataTable
GetCheckOutDetai1s (string condition = ""): Phương thức này lấy thông tin
chỉ tiết của khách hàng đang ở lại khách sạn (hoặc đã trả phòng, nếu có điều kiện lọc condition) Thông tin trả vé la su két hop gitra bang customer va bang rooms dé lay các thông tin về phòng, giá phòng, và các thông tin khác của khách hàng
10
Trang 15Phương thức thyc thi cau Ilénh SQL: ExecuteQuery(string query): Phuong thức này thực thi một câu lệnh SQL mà không trả về dữ liệu, thường dùng cho các thao tac nhu INSERT, UPDATE, hodc DELETE
Bao mat va xu ly 16i: Cac phuong thire trong lép Guest sử dụng cơ chế xử lý lỗi thông qua khối try-catcn, giúp bắt và hiển thị lỗi khi có sự cố xảy ra trong quá trinh thực hiện truy vấn hoặc kết nối cơ sở dữ liệu Điều này g1úp người dùng nhận được thông báo cụ thê về lỗi gap phải
1.5 Cấu trúc lớp Room
Lớp Room có các thuộc tính sau:
roomNo: Số phòng (mã phòng)
roomType: Loại phòng (ví dụ: Sinple, Double, Suite, etc )
bedType: Loai giuong trong phong (vi dy: King, Queen, Twin, etc.)
price: Gia phòng
Các thuộc tính này được định nghĩa dưới dạng private và có phương thức getter
va setter dé truy xuất và thay đôi giá trị của chúng
Phương thức khởi tạo (Constructor): Phương thức khởi tạo Room nhận các tham
số như roomNo, roomType, bedType, và price để thiết lập các giá trị cho các thuộc tính của đối tượng phòng Điều này giúp tạo ra các đối tượng aoen với thông tin cy thé khi khởi tạo
Phương thức thêm phòng vào cơ sở đữ liệu: AddToDatabase (): Phương thức này thực hiện việc thêm một phòng mới vào cơ sở dữ liệu thông qua câu lệnh SQL 1NsEar Các giá trị từ các thuộc tính của lớp aoem được đưa vào câu truy van để thêm một dong mdi vao bang rooms Sau khi thực thi, thông báo thành công được hiển thị
Phương thức truy vấn phòng:
GetA11Rooms (): Phương thức này thực hiện một truy van SQL SELECT * FROM roons để lấy tất cả các phòng trong hệ thống và trả về kết quả dưới dạng Dataser Dataset là đôi tượng chứa dữ liệu trả về từ cơ sở dữ liệu