Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh ngành du lịch, dịch vụ lưu trú và nhu cầu công tác dài ngày ngày càng phát triển, yêu cầu về chất lượng phục vụ và công tác quản lý tại các cơ sở lưu trú đòi hỏi tính chính xác, kịp thời và chuyên nghiệp. Để duy trì hiệu quả hoạt động và năng lực cạnh tranh, các khách sạn cần xây dựng mô hình quản lý chặt chẽ nhằm tối ưu hóa quy trình tiếp đón, lưu trú và thanh toán.

Đề tài "Xây dựng hệ thống quản lý khách sạn" được sinh viên Cù Thị Phương Thảo (Lớp D12CNPM1, Khóa 2017 – 2022, Khoa Công nghệ Thông tin – Trường Đại học Điện lực) thực hiện dưới sự hướng dẫn của giảng viên Phương Văn Cảnh trong khuôn khổ học phần Đồ án lập trình .NET.

Mục tiêu và nhiệm vụ nghiên cứu

  1. Rèn luyện và củng cố kiến thức chuyên môn về lập trình ứng dụng trên nền tảng .NET và công nghệ truy vấn dữ liệu LINQ to SQL.
  2. Tìm hiểu và khảo sát quy trình nghiệp vụ thực tế tại khách sạn (đăng ký phòng, nhận phòng, cung cấp dịch vụ, trả phòng và lập hóa đơn thanh toán).
  3. Thực hiện phân tích, thiết kế hệ thống thông tin quản lý bao gồm sơ đồ phân rã chức năng, biểu đồ Use Case, đặc tả ca sử dụng, biểu đồ tuần tự và mô hình dữ liệu.
  4. Xây dựng phần mềm hoàn chỉnh phục vụ các thao tác quản lý danh mục, hỗ trợ nghiệp vụ lễ tân, quản lý phòng, dịch vụ và tài khoản người dùng.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Quy trình quản lý nghiệp vụ khách sạn (quản lý lưu trú, phòng nghỉ, khách hàng, dịch vụ, tài khoản) và công nghệ lập trình C# kết hợp LINQ to SQL với hệ quản trị cơ sở dữ liệu SQL Server.
  • Phạm vi nghiên cứu: Tập trung vào các nghiệp vụ trọng tâm của mô hình khách sạn vừa và nhỏ, bao gồm: đăng nhập/đăng xuất, phân quyền tài khoản (Admin/User), quản lý khách hàng, quản lý danh mục phòng và tình trạng phòng, quản lý dịch vụ và quy trình thuê/trả phòng kết hợp lập hóa đơn.

Cơ sở lý thuyết và phương pháp

Cơ sở lý thuyết

Nghiên cứu dựa trên nền tảng công nghệ .NET Framework và mô hình ánh xạ đối tượng - quan hệ (Object-Relational Mapping - O/RM) thông qua công nghệ LINQ to SQL:

  • Ngôn ngữ tích hợp truy vấn (LINQ): Cầu nối giữa mô hình lập trình hướng đối tượng trong C#/Visual Basic và mô hình dữ liệu quan hệ. LINQ hỗ trợ kiểm tra kiểu dữ liệu tại thời điểm biên dịch (compile-time checking) và hỗ trợ công cụ trực quan trong Visual Studio.
  • LINQ to SQL: Thành phần của .NET Framework 3.5 trở lên, cho phép mô hình hóa cơ sở dữ liệu quan hệ SQL Server thành các lớp đối tượng (classes). Hỗ trợ các thao tác CRUD (Create, Read, Update, Delete), giao dịch (Transaction) và thực thi Stored Procedures.
  • Thư viện và không gian tên (Namespaces): Sử dụng System.Linq cho thao tác dữ liệu quan hệ, đối tượng bộ nhớ và XML; cấu trúc tập hợp triển khai giao diện IEnumerable<T>.

Phương pháp nghiên cứu

  • Phương pháp khảo sát hiện trạng: Nghiên cứu cơ cấu tổ chức khách sạn (Ban giám đốc, Phòng kinh doanh, Phòng kế toán, Bộ phận lễ tân, Nhà phòng, Dịch vụ, An ninh) và phân tích luồng công việc thực tế từ khâu tiếp đón đến thanh toán.
  • Phương pháp phân tích và thiết kế hướng đối tượng: Sử dụng ngôn ngữ mô hình hóa UML để xây dựng sơ đồ phân rã chức năng, biểu đồ ca sử dụng (Use Case Diagram), đặc tả chi tiết từng ca sử dụng và biểu đồ trình tự (Sequence Diagram).
  • Phương pháp thực nghiệm phát triển phần mềm: Thiết kế cơ sở dữ liệu quan hệ trên Microsoft SQL Server, lập trình giao diện người dùng (GUI) và hiện thực hóa các tầng xử lý nghiệp vụ trên môi trường Visual Studio bằng ngôn ngữ C#.

Thiết kế và triển khai hệ thống

Yêu cầu kỹ thuật và môi trường vận hành

Thành phần Yêu cầu kỹ thuật theo tài liệu
Phần cứng tối thiểu CPU Intel Core i5-8400 trở lên
Hệ điều hành Microsoft Windows 10 trở lên
Hệ quản trị CSDL Microsoft SQL Server
Môi trường phát triển Microsoft Visual Studio (hỗ trợ .NET Framework và LINQ)
Yêu cầu phi chức năng Giao diện thân thiện, bảo mật phân quyền, an toàn dữ liệu, sao lưu và phục hồi

Phân quyền người dùng

Hệ thống thiết lập 2 nhóm tài khoản với quyền hạn phân định rõ ràng:

  • Quản trị viên (Admin): Nắm toàn quyền điều hành hệ thống, bao gồm quản lý người dùng (thêm, sửa, xóa tài khoản nhân viên), quản lý danh mục phòng, khách hàng, dịch vụ và giám sát quy trình thuê/trả phòng.
  • Nhân viên (User): Thực hiện các nghiệp vụ tiếp tân và phục vụ (quản lý thông tin khách hàng, tra cứu phòng, cập nhật dịch vụ, thực hiện thủ tục thuê/trả phòng, in hóa đơn), không có quyền can thiệp vào danh mục quản lý tài khoản.

Cơ chế truy vấn và thao tác dữ liệu bằng LINQ to SQL

Các thao tác dữ liệu chính trong hệ thống được hiện thực hóa qua cú pháp khai báo LINQ và thực thi lưu vết bằng phương thức SubmitChanges():

// 1. Hiển thị danh sách khách hàng lên DataGridView
List<Khach> list = new List<Khach>();
var query = (from n in db.Khaches select n);
list = query.ToList<Khach>();
DataGridView1.DataSource = list;

// 2. Tìm kiếm phòng theo loại phòng
var query1 = (from phong in db.Phongs 
              where phong.LoaiP == cbb_loai.Text 
              select phong);
list = query1.ToList<Phong>();
DataGridView1.DataSource = list;

// 3. Thêm mới bản ghi khách hàng
Khach khachs = new Khach();
khachs.CMT = txt_cmt.Text;
khachs.Hoten = txt_ten.Text;
khachs.Diachi = txt_dchi.Text;
khachs.GT = cbb_gtinh.Text;
khachs.SDT = txt_dt.Text;
db.Khaches.InsertOnSubmit(khachs);
db.SubmitChanges();

// 4. Tìm kiếm liên kết dữ liệu giữa nhiều bảng (Khach và ThueP)
var queryJoin = (from kh in db.Khaches 
                 join th in db.ThuePs on kh.CMT equals th.CMT 
                 where th.CMT == txt_input.Text 
                 select th);
khachBindingSource.DataSource = queryJoin.ToList();

Nội dung chính theo từng chương

Chương 1: Tìm hiểu về LINQ to SQL

Chương này tập trung trình bày tổng quan về kỹ thuật LINQ và mô hình LINQ to SQL trong .NET Framework:

  • Khái niệm và vai trò của LINQ: Ra đời từ phiên bản Visual Studio 2008 và .NET Framework 3.5, LINQ đóng vai trò chuẩn hóa ngôn ngữ truy vấn trên nhiều nguồn dữ liệu (SQL Server, XML, ADO.NET Datasets, Objects) thông qua cú pháp đồng nhất trong C# và Visual Basic.
  • Cơ chế hoạt động của LINQ to SQL: Cung cấp cơ chế O/RM để mô hình hóa các bảng dữ liệu thành các lớp đối tượng. LINQ biên dịch các biểu thức truy vấn thành câu lệnh T-SQL tương ứng và chỉ thực thi ghi nhận thay đổi xuống cơ sở dữ liệu khi phương thức SubmitChanges() được gọi.
  • Cú pháp và toán tử truy vấn: Cấu trúc câu lệnh gồm ba thành phần (nguồn dữ liệu, biểu thức truy vấn, thực thi truy vấn). Sử dụng các từ khóa from, where, select, join, group by, orderby và các hàm kết hợp (Sum, Min, Max, Average, Take, Skip, First, FirstOrDefault, Last, LastOrDefault).

Chương 2: Khảo sát hệ thống và xác định yêu cầu

Nội dung chương 2 mô tả chi tiết mô hình hoạt động thực tế của khách sạn nhằm xác lập bài toán phần mềm:

  • Mục tiêu và phạm vi: Xây dựng phần mềm hỗ trợ xử lý nghiệp vụ lưu trú cốt lõi cho các khách sạn có quy mô vừa và nhỏ; đảm bảo tính tiện lợi, hỗ trợ lưu trữ danh mục và thống kê.
  • Khảo sát cơ cấu tổ chức: Phân tích chức năng của từng bộ phận:
    • Ban giám đốc: Điều hành toàn diện các hoạt động kinh doanh.
    • Phòng kinh doanh & Phòng kế toán: Lập kế hoạch tài chính, quản trị thu chi, tính lương và kê khai thuế định kỳ.
    • Bộ phận lễ tân & Nhà phòng: Tiếp nhận khách, quản lý chìa khóa, kiểm tra hiện trạng buồng phòng, dọn dẹp vệ sinh trước và sau khi khách lưu trú.
    • Bộ phận dịch vụ & An ninh: Cung cấp tiện ích (spa, massage, nhà hàng, thuê xe, giặt ủi) và bảo đảm an toàn, quản lý bãi đỗ xe.
  • Quy trình hoạt động: Tiếp nhận khách $\rightarrow$ Lễ tân kiểm tra phòng trống trên hệ thống $\rightarrow$ Điền thông tin đăng ký $\rightarrow$ Khách sử dụng dịch vụ $\rightarrow$ Lễ tân tổng hợp phiếu dịch vụ và lập hóa đơn thanh toán $\rightarrow$ Kế toán lưu hồ sơ thu chi.

Chương 3: Phân tích thiết kế hệ thống

Chương 3 trình bày các mô hình phân tích chi tiết trước khi bước vào giai đoạn cài đặt:

  • Phân loại người dùng và danh mục chức năng: Định nghĩa 2 nhóm tác nhân (Admin và User) tương ứng với 6 khối chức năng chính: Đăng nhập/Đăng xuất, Quản lý tài khoản, Quản lý khách hàng, Quản lý phòng, Quản lý dịch vụ, Quản lý thuê/trả phòng.
  • Biểu đồ Use Case và đặc tả: Chi tiết hóa 18 ca sử dụng:
    • Gói tài khoản: Đăng nhập, Thêm tài khoản, Sửa tài khoản, Xóa tài khoản (xử lý các luồng sự kiện trùng tài khoản, không tìm thấy tài khoản).
    • Gói khách hàng: Thêm, Sửa, Xóa, Tra cứu thông tin khách hàng dựa trên họ tên hoặc số CMND.
    • Gói phòng: Cập nhật đặt phòng, Thêm phòng, Xóa phòng, Tra cứu trạng thái phòng (loại phòng, giá thuê, tiện nghi, tình trạng trống/đang ở).
    • Gói dịch vụ: Thêm danh mục dịch vụ, Cập nhật giá/loại dịch vụ, Xóa dịch vụ, Tra cứu dịch vụ khi khách có yêu cầu.
    • Gói thuê/trả phòng: Tiếp nhận đăng ký, kiểm tra khách cũ/mới qua CMND, cập nhật số lần đến ở, trả phòng, xuất hóa đơn và lập 02 bản biên lai thanh toán có chữ ký xác nhận.
  • Biểu đồ tương tác: Thiết kế biểu đồ trình tự (Sequence Diagram) cho chức năng đăng nhập, mô tả tương tác giữa người dùng, giao diện đăng nhập (ManHinhDangNhap), khối điều khiển và cơ sở dữ liệu.

Chương 4: Lập trình

Chương 4 hoàn thiện việc hiện thực hóa thiết kế lên giao diện và mã nguồn phần mềm:

  • Mô hình dữ liệu: Thiết kế chi tiết các bảng dữ liệu trong SQL Server và tạo Diagram liên kết các khóa chính - khóa ngoại.
  • Thiết kế giao diện người dùng: Xây dựng hệ thống form chức năng trên Windows Forms:
    1. Giao diện Đăng nhập: Xác thực tài khoản người dùng.
    2. Giao diện Trang chủ: Thanh điều hướng trung tâm kết nối các phân hệ.
    3. Giao diện Quản lý khách: Danh sách lưới dữ liệu, các nút chức năng Thêm, Sửa, Xóa, Tìm kiếm.
    4. Giao diện Quản lý phòng & Quản lý dịch vụ: Cập nhật trạng thái phòng, bảng giá và phân loại dịch vụ.
    5. Giao diện Thuê phòng, Trả phòng & Sử dụng dịch vụ: Biểu mẫu tiếp nhận khách, tính toán thời gian lưu trú và xuất chi tiết hóa đơn.
    6. Giao diện Chức năng tìm kiếm: Hỗ trợ tra cứu đa tiêu chí cho khách hàng và phòng trống.

Kết quả và đóng góp

Kết quả đạt được

  • Hoàn thiện tài liệu khảo sát, phân tích và đặc tả hệ thống quản lý khách sạn với 18 Use Case chi tiết và sơ đồ phân rã chức năng hoàn chỉnh.
  • Xây dựng thành công ứng dụng Windows Forms trên nền tảng .NET Framework kết nối SQL Server thông qua công nghệ O/RM LINQ to SQL.
  • Ứng dụng thực hiện đầy đủ các chức năng quản trị:
    • Phân quyền vận hành độc lập giữa Quản trị viên (Admin) và Nhân viên lễ tân (User).
    • Quản lý danh mục phòng, theo dõi trạng thái phòng trống/đang thuê.
    • Quản lý thông tin khách lưu trú, hỗ trợ tự động nhận diện khách hàng cũ qua số chứng minh nhân dân.
    • Xử lý quy trình thuê phòng, ghi nhận dịch vụ phát sinh, trả phòng và in biên lai hóa đơn thanh toán 2 liên.

Đóng góp của đề tài

  • Hệ thống hóa phương pháp ứng dụng LINQ to SQL trong việc đơn giản hóa các thao tác truy vấn dữ liệu quan hệ trên C#, giảm thiểu việc viết các câu lệnh SQL thuần dạng chuỗi ký tự.
  • Cung cấp tài liệu phân tích nghiệp vụ và thiết kế phần mềm hoàn chỉnh cho mô hình khách sạn vừa và nhỏ, có thể áp dụng trực tiếp vào giảng dạy và thực hành đồ án chuyên ngành Công nghệ phần mềm.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế:
    • Phạm vi nghiệp vụ mới tập trung vào các chức năng cơ bản tại quầy (desktop app), chưa tích hợp cổng đặt phòng trực tuyến (web/mobile booking).
    • Chưa đi sâu vào các bài toán quản lý tài chính phức tạp, kiểm kê kho dịch vụ chuyên sâu hay dự trù ngân sách hàng năm do giới hạn về thời gian và kinh nghiệm thực tế của tác giả.
    • Công nghệ LINQ to SQL trong đồ án giới hạn hỗ trợ tốt nhất trên hệ quản trị Microsoft SQL Server.
  • Hướng phát triển:
    • Mở rộng hệ thống kết nối đa nền tảng (Web API, ứng dụng di động cho khách hàng tự đặt phòng).
    • Nâng cấp mô hình truy cập dữ liệu lên Entity Framework Core để hỗ trợ đa cơ sở dữ liệu.
    • Bổ sung phân hệ báo cáo thống kê chuyên sâu dạng biểu đồ trực quan về doanh thu và công suất sử dụng buồng phòng theo tháng/quý.

Giá trị tham khảo

Tài liệu đồ án là nguồn tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin / Công nghệ phần mềm: Tham khảo cấu trúc trình bày báo cáo đồ án chuyên đề, phương pháp vẽ biểu đồ UML (Use Case, Sequence Diagram) và cách viết đặc tả luồng sự kiện chính/nhánh cho từng ca sử dụng.
  • Người học lập trình .NET / C#: Nắm bắt cách tổ chức dự án Windows Forms kết nối cơ sở dữ liệu SQL Server thông qua công nghệ LINQ to SQL và cách viết các câu lệnh truy vấn CRUD, Join nhiều bảng, xử lý SubmitChanges().
  • Nhà phát triển phần mềm quản lý doanh nghiệp vừa và nhỏ: Tham khảo quy trình nghiệp vụ buồng phòng, cách thiết kế cơ sở dữ liệu quản lý lưu trú và giải pháp lập phiếu thanh toán, hóa đơn dịch vụ.

Câu hỏi thường gặp

1. Đề tài sử dụng công nghệ truy xuất cơ sở dữ liệu nào và có ưu điểm gì?

Đề tài sử dụng công nghệ LINQ to SQL trong môi trường .NET Framework và Visual Studio. Công nghệ này đóng vai trò O/RM, mô hình hóa các bảng SQL Server thành các lớp đối tượng trong C#, cho phép kiểm tra lỗi truy vấn ngay khi biên dịch, cung cấp cú pháp truy vấn trực quan và chỉ đồng bộ dữ liệu khi gọi phương thức SubmitChanges().

2. Hệ thống phân chia quyền hạn của các nhóm tài khoản như thế nào?

Hệ thống phân chia thành 2 nhóm tài khoản chính:

  • Quản trị viên (Admin): Có toàn quyền điều hành hệ thống, bao gồm quyền thêm, sửa, xóa tài khoản nhân viên cùng toàn bộ các chức năng nghiệp vụ khác.
  • Nhân viên (User): Có quyền thao tác trên các chức năng nghiệp vụ (quản lý khách, phòng, dịch vụ, thuê/trả phòng, in hóa đơn) nhưng không có quyền can thiệp vào phân hệ quản lý tài khoản.

3. Quy trình đăng ký thuê phòng xử lý trường hợp khách hàng cũ như thế nào?

Khi khách hàng cung cấp tên và số CMND/Passport, nhân viên sẽ thực hiện tra cứu trên hệ thống:

  • Nếu thông tin khách hàng đã tồn tại (khách cũ), nhân viên xác nhận lại thông tin, cập nhật các thay đổi mới (số điện thoại, địa chỉ, tình trạng) và tự động tăng số lần đến ở (+1) trước khi gán phòng thuê.
  • Nếu chưa có thông tin, hệ thống sẽ mở luồng thêm mới khách hàng vào cơ sở dữ liệu.

4. Cấu hình phần cứng và phần mềm tối thiểu được đề xuất trong tài liệu là gì?

Tài liệu khảo sát yêu cầu:

  • Phần cứng: CPU Intel Core i5-8400 trở lên.
  • Phần mềm: Hệ điều hành Microsoft Windows 10 trở lên, hệ quản trị cơ sở dữ liệu Microsoft SQL Server và môi trường lập trình Microsoft Visual Studio.

5. Thủ tục trả phòng và thanh toán được thực hiện ra sao trong phần mềm?

Khi khách yêu cầu trả phòng, nhân viên tra cứu thông tin theo tên/phòng, nhấn nút "Trả phòng" và "Thanh toán". Màn hình hóa đơn xuất hiện tổng hợp tiền phòng và các dịch vụ đã sử dụng. Hệ thống hỗ trợ in 02 bản biên lai thanh toán giống nhau có chữ ký xác nhận của hai bên (01 bản giao khách hàng, 01 bản kẹp hồ sơ chuyển về bộ phận kế toán).


Kết luận

Báo cáo chuyên đề học phần Đồ án lập trình .NET với đề tài "Xây dựng hệ thống quản lý khách sạn" của tác giả Cù Thị Phương Thảo đã hoàn thành đầy đủ các mục tiêu đề ra từ khảo sát hiện trạng, phân tích thiết kế hệ thống bằng UML đến cài đặt phần mềm trên nền tảng C# và LINQ to SQL. Ứng dụng giải quyết hiệu quả các bài toán nghiệp vụ cốt lõi tại khách sạn vừa và nhỏ như quản lý buồng phòng, khách lưu trú, sử dụng dịch vụ và thanh toán hóa đơn. Toàn bộ cấu trúc đồ án được xây dựng chặt chẽ, mang lại giá trị thực tiễn và là tài liệu tham khảo chuẩn mực cho sinh viên chuyên ngành Công nghệ phần mềm.