



















Preview text:
HANOI UNIVERSITY OF SCIENCE AND TECHNOLOGY
SCHOOL OF ELECTRICAL AND ELECTRONIC ENGINEERING
BÁOCÁOBÀITẬPLỚNMÔN LẬPTRÌNHNÂNGCAO
BÁO CÁO ĐỒ ÁN: ỨNG DỤNG QUẢN LÝ KHÁCH SẠN
Phạm Hữu Cương — 20224303
Cuong.PH224303@sis.hust.edu.vn
Mai Mạnh Chính — 20224302
Chính.MM224302@sis.hust.edu.vn
Ngành học: Điện tử viễn thông
Chuyên ngành: Truyền thông số và Kĩ thuật đa phương tiện Supervisor: Thầy Vũ Song Tùng Hanoi, 15/06/2025 Lời Nói Đầu
Trong bối cảnh công nghệ thông tin ngày càng phát triển và được ứng dụng rộng
rãi vào đời sống xã hội, việc tin học hóa các quy trình quản lý là xu thế tất yếu
nhằm nâng cao hiệu suất công việc, giảm thiểu sai sót và tối ưu hoá nguồn lực.
Một trong những lĩnh vực đang dần chuyển mình mạnh mẽ là ngành dịch vụ
khách sạn – nơi việc quản lý phòng, khách hàng, nhân viên và các dịch vụ đi kèm
cần được tổ chức một cách khoa học, hiệu quả và chính xác.
Xuất phát từ nhu cầu thực tiễn đó, nhóm chúng em đã lựa chọn thực hiện đề tài
“Xây dựng phần mềm quản lý khách sạn” như một bài tập lớn trong học phần
Lập trình nâng cao. Thông qua đề tài này, nhóm mong muốn xây dựng một phần
mềm có giao diện trực quan, dễ sử dụng, đồng thời có thể thực hiện các chức
năng cơ bản như quản lý phòng, đặt phòng, trả phòng, lưu trữ thông tin khách hàng và nhân viên, v.v...
Trong quá trình thực hiện, nhóm đã vận dụng các kiến thức đã học về lập trình
hướng đối tượng (OOP), thiết kế giao diện người dùng (UI/UX), kết nối và xử lý
cơ sở dữ liệu (SQL Server), đồng thời rèn luyện khả năng làm việc nhóm và giải
quyết vấn đề thực tế. Báo cáo này là kết quả tổng hợp toàn bộ quá trình phân
tích, thiết kế, lập trình và kiểm thử hệ thống.
Mặc dù đã có nhiều cố gắng trong suốt quá trình thực hiện đề tài, nhưng do giới
hạn về thời gian, kiến thức và kinh nghiệm, báo cáo không thể tránh khỏi những
thiếu sót. Nhóm rất mong nhận được sự góp ý từ các thầy cô để đề tài được
hoàn thiện hơn trong tương lai.
Xin chân thành cảm ơn sự hướng dẫn tận tình của thầy Vũ Song Tùng, cũng như
sự hỗ trợ của thầy trong bộ môn đã tạo điều kiện thuận lợi để nhóm có thể
hoàn thành tốt đề tài này.
Hà Nội, 15 tháng 6 năm 2025 Contents
DANH SÁCH VIẾT TẮT i LIST OF FIGURES ii TÓM TẮT iii
PHÂN CÔNG CÔNG VIỆC v 1. MỞ ĐẦU 1
1.1 1. Đặt vấn đề . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 2. Mục tiêu đề tài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 3. Phạm vi và đối tượng áp dụng . . . . . . . . . . . . . . . . . . . . . 1
2. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 2
2.1 2.1 Ngôn ngữ Nền tảng . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 2.2 Form Đăng Nhập (Form1.cs) . . . . . . . . . . . . . . . . . . . . . 2
2.3 2.3 Công nghệ cho Ứng dụng Di động . . . . . . . . . . . . . . . . . . 3
2.4 2.4 Công nghệ cho Ứng dụng Di động . . . . . . . . . . . . . . . . . . 5
2.5 2.5 Cấu trúc Database . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.6 2.6 Class Function
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.7 2.7 Luồng xử lý chính . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.8 2.7 Giao diện người dùng . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.9 2.8 Xử lý dữ liệu
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.10 3.1 Yêu Cầu Hệ Thống . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.10.1 Yêu cầu phần cứng: . . . . . . . . . . . . . . . . . . . . . . . . 8
2.10.2 Yêu cầu phần mềm: . . . . . . . . . . . . . . . . . . . . . . . . 8
2.11 3.2 Các Bước Triển Khai . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.11.1 Chuẩn bị môi trường . . . . . . . . . . . . . . . . . . . . . . . 9
2.11.2 Cài đặt Database . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.12 3.3 Cấu Hình Ứng Dụng
. . . . . . . . . . . . . . . . . . . . . . . . . 11 2.12.1 File App.config:
. . . . . . . . . . . . . . . . . . . . . . . . . 11
2.12.2 Cấu hình kết nối database trong function.cs . . . . . . . . . . . 12
2.13 3.4.Quy Trình Triển Khai . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.14 3.5.Tạo Installer:
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.15 3.6. Kiểm Tra Sau Triển Khai
. . . . . . . . . . . . . . . . . . . . . . 14 2.15.1 Kiểm tra kết nối
. . . . . . . . . . . . . . . . . . . . . . . . . 14
2.15.2 Kiểm tra chức năng
. . . . . . . . . . . . . . . . . . . . . . . 14
2.16 3.8. Hướng Dẫn Sử Dụng . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.17 3.9.Xử Lý Sự Cố
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.18 3.10.Nâng Cấp Hệ Thống . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.19 3.11. Bảo Mật . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 REFERENCES 17 Phụ lục 18 A
Hướng dẫn Cài đặt và Sử dụng Nhanh 18 Lời cảm ơn 20
DANH SÁCH VIẾT TẮT UI
User Interface – Giao diện người dùng DB
Database – Cơ sở dữ liệu CRUD
Create, Read, Update, Delete (Tạo, Đọc, Cập nhật, Xóa) SQL
Structured Query Language – Ngôn ngữ truy vấn có cấu trúc
Integrated Development Environment – Môi trường phát triển IDE tích hợp VS
Visual Studio – IDE dùng để lập trình .NET OOP
Object-Oriented Programming – Lập trình hướng đối tượng C
C Sharp – Ngôn ngữ lập trình chính của dự án UC
UserControl – Thành phần giao diện con MSSQL
Microsoft SQL Server – Hệ quản trị cơ sở dữ liệu được sử dụng List of Figures
Figure A.1 Hàm kiểm tra trạng thái phòng
. . . . . . . . . . . . . . . . . . 19 Figure A.2
Sự kiện đăng nhập . . . . . . . . . . . . . . . . . . . . . . . . . 19 ii Tóm tắt dự án
Đề tài “Xây dựng phần mềm quản lý khách sạn” hướng đến mục tiêu xây dựng
một hệ thống phần mềm có giao diện thân thiện, giúp các khách sạn vừa và nhỏ
có thể quản lý các hoạt động như đặt phòng, trả phòng, lưu trữ thông tin khách
hàng và nhân viên một cách hiệu quả và thuận tiện.
Phần mềm được phát triển bằng ngôn ngữ lập trình C trên nền tảng .NET
Framework, sử dụng Visual Studio làm môi trường phát triển tích hợp (IDE) và
hệ quản trị cơ sở dữ liệu SQL Server để lưu trữ thông tin. Giao diện người dùng
được thiết kế bằng thư viện Guna UI nhằm tạo trải nghiệm hiện đại và dễ thao tác.
Hệ thống bao gồm các chức năng chính như: Đăng nhập bảo mật Thêm và quản lý phòng
Quản lý thông tin khách hàng Quản lý nhân viên
Thực hiện thanh toán và trả phòng
Toàn bộ hệ thống được xây dựng theo mô hình hướng đối tượng, phân chia
thành các thành phần chức năng độc lập thông qua các lớp và UserControl, giúp
dễ dàng bảo trì và mở rộng trong tương lai.
Kết quả đạt được sau quá trình triển khai cho thấy phần mềm hoạt động ổn
định, giao diện trực quan và đáp ứng tốt các yêu cầu đặt ra ban đầu. Đây là tiền
đề quan trọng để nhóm tiếp tục nghiên cứu và phát triển thêm các tính năng
nâng cao như thống kê doanh thu, đặt phòng online, tích hợp mã QR, v.v...
Phân công công việc
Số Nhiệm vụ Tên 1 Coding và làm Database Mai Mạnh Chính 2 Coding và làm Report Phạm Hữu Cương
TỔNG QUAN VỀ ĐỀ TÀI 1. Đặt vấn đề
Ngành dịch vụ lưu trú đòi hỏi việc quản lý chuyên nghiệp và chính xác. Việc ứng
dụng CNTT vào quản lý khách sạn là xu hướng tất yếu nhằm tiết kiệm nhân lực,
giảm sai sót và tăng tính hiệu quả.
2. Mục tiêu đề tài
Xây dựng một phần mềm quản lý khách sạn đơn giản, dễ sử dụng, với các chức năng chính: Quản lý phòng
Quản lý thông tin khách hàng Check-in, Check-out Quản lý nhân viên
3. Phạm vi và đối tượng áp dụng
Hệ thống phần mềm quản lý khách sạn được xây dựng nhằm phục vụ cho các
khách sạn vừa và nhỏ, quy mô từ 10–50 phòng, không yêu cầu hệ thống đặt
phòng trực tuyến hay tích hợp thanh toán điện tử. Hệ thống tập trung vào việc
số hóa các nghiệp vụ cơ bản như đặt phòng, trả phòng, quản lý thông tin khách
hàng, nhân viên và lập hóa đơn thanh toán.
Đối tượng sử dụng phần mềm bao gồm:
Nhân viên lễ tân: thao tác với các chức năng đặt – trả phòng.
Quản lý khách sạn: xem báo cáo, thống kê và quản lý nhân viên.
Khách hàng gián tiếp được phục vụ thông qua việc nhân viên nhập liệu và xử lý nhanh chóng.
Phần mềm không áp dụng cho chuỗi khách sạn lớn có yêu cầu tích hợp đa chi
nhánh, đặt phòng trực tuyến qua website hoặc mobile app. 1
2. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Chương này trình bày tổng quan về các công nghệ, ngôn ngữ và thư viện đã được
lựa chọn và áp dụng để xây dựng hệ thống quản lý công việc. Mỗi công nghệ được
giới thiệu kèm theo vai trò và cách thức nó được sử dụng để triển khai các chức
năng cụ thể của ứng dụng.
2.1 Ngôn ngữ Nền tảng
Được thể hiện qua các file có đuôi .cs
Sử dụng các tính năng của C như: Namespace Partial classes Event handling
Data types (String, Int64, etc.)
2.2 Form Đăng Nhập (Form1.cs)
Table 2.1 Sự kiện xử lý giao diện trong Form Dashboard Chức năng
Đoạn mã minh hoạ (C#)
Khởi tạo giao diện public partial class Dashboard : Form
Dashboard, ẩn toàn bộ private void DashboardLoad(objectsender,EventArgse)
user control và gọi sự uCAddRoom1.Visible = false; uCCustomerRes1.Visible = kiện Add Room false;
uCCheckOut1.Visible = false;
uCCustomerDetails1.Visible = false; uCEmployee1.Visible = false; btnAddRoom.PerformClick(); private void
btnAddRoomClick(objectsender,EventArgse) PanelMoving.Left = btnAddRoom.Left + 50;
uCAddRoom1.Visible = true; uCAddRoom1.BringToFront();
Sử dụng class function để xử lý kết nối và truy vấn database
Kiểm tra đăng nhập bằng cách truy vấn bảng employee
Nếu đăng nhập thành công, ẩn form đăng nhập và hiển thị Dashboard
2.3 Công nghệ cho Ứng dụng Di động
Table 2.2 Sự kiện khởi tạo và xử lý giao diện trong Form Dashboard Chức năng
Đoạn mã minh hoạ (C#)
Ẩn toàn bộ các thành public partial class Dashboard : Form
phần giao diện con và private void DashboardLoad(objectsender,EventArgse)
kích hoạt giao diện uCAddRoom1.Visible = false; uCCustomerRes1.Visible = thêm phòng false;
uCCheckOut1.Visible = false;
uCCustomerDetails1.Visible = false; uCEmployee1.Visible = false; btnAddRoom.PerformClick(); private void
btnAddRoomClick(objectsender,EventArgse) PanelMoving.Left = btnAddRoom.Left + 50;
uCAddRoom1.Visible = true; uCAddRoom1.BringToFront();
Dashboard là form chính chứa tất cả các User Control
Mỗi User Control được ẩn mặc định và chỉ hiển thị khi người dùng click vào nút tương ứng
Có hiệu ứng di chuyển panel để chỉ ra tab đang active 3
2.4 Công nghệ cho Ứng dụng Di động
Table 2.3 Chức năng xử lý thêm phòng trong UC_AddRoom.cs Chức năng
Đoạn mã minh hoạ (C#)
Hiển thị danh sách phòng trong DataGridView Cho phép thêm phòng mới với các thông tin: số
phòng, loại phòng, số 1.2public partial class UC_AddRoom : giường, giá UserControl
Kiểm tra dữ liệu đầu vào { function fn = new function(); String trước khi thêm vào query; database
Tự động refresh danh sách
private void UC_AddRoom_Load(object phòng sau khi thêm mới sender, EventArgs e)
{ query = "select * from rooms";
DataSet ds = fn.getData(query);
DataGridView1.DataSource = ds.Tables[0]; }
private void btnAddRoom_Click(object sender, EventArgs e)
{ if (txtRoomNo.Text != "" &&
txtRoomType.Text != "" &&
txtBed.Text != "" && txtPrice.Text != "") {
String roomno = txtRoomNo.Text;
String type = txtRoomType.Text; String bed = txtBed.Text; Int64 price = Int64.Parse(txtPrice.Text);
query = "insert into rooms (roomNo, roomType, bed, price) " +
"values (’" + roomno + "’,’" +
type + "’,’" + bed + "’, " + price + ")";
fn.setData(query, "Đã Thêm Phòng"); } } 5 }
2.5 Cấu trúc Database
Dựa vào các truy vấn SQL, có thể thấy hệ thống có các bảng
chính: employee: Lưu thông tin nhân viên (username,
password) rooms: Lưu thông tin phòng (roomNo, roomType, bed, price)
Các bảng khác cho quản lý khách hàng và đặt phòng 2.6 Class Function
Table 2.4 Khởi tạo đối tượng lớp function Chức năng
Đoạn mã minh hoạ (C#)
1.2function fn = new function();
Khởi tạo một đối tượng
mới từ lớp function, dùng
để xử lý truy vấn dữ liệu.
Đối tượng fn có thể được
sử dụng để gọi các phương thức như getData hoặc
setData để làm việc với cơ
sở dữ liệu (SQL Server).
Lớp function thường đóng
vai trò trung gian giữa giao
diện và tầng dữ liệu.
Là class tiện ích chứa các phương thức xử lý chung Có các phương thức:
getData(): Thực hiện truy vấn SELECT setData(): Thực
hiện truy vấn INSERT/UPDATE/DELETE
2.7 Luồng xử lý chính
Người dùng đăng nhập qua Form1
Sau khi đăng nhập thành công, chuyển đến Dashboard Từ Dashboard có thể:
Thêm/quản lý phòng (UCAddRoom)
Quản lý đặt phòng (UCCustomerRes)
Xử lý thanh toán (UCCheckOut)
Quản lý thông tin khách hàng (UCCustomerDetails)
Quản lý nhân viên (UCEmployee)
2.7 Giao diện người dùng
Sử dụng Windows Forms với các control chuẩn
Có sử dụng Guna2 Framework cho giao diện đẹp hơn
Các form được thiết kế theo mô hình MDI (Multiple Document Interface)
2.8 Xử lý dữ liệu
Sử dụng DataSet để lưu trữ và hiển thị dữ liệu
Có validation dữ liệu đầu vào
Tự động refresh dữ liệu sau mỗi thao tác
3. TRIỂN KHAI HỆ THỐNG
Chương này trình bày quá trình triển khai hệ thống quản lý khách sạn đã được
phân tích và thiết kế ở chương trước. Nội dung bao gồm: cấu trúc thư mục dự
án, các thành phần chính trong mã nguồn, quy trình vận hành hệ thống, một số
đoạn mã tiêu biểu, giao diện minh họa và hướng dẫn chạy chương trình.
3.1 Yêu Cầu Hệ Thống
Yêu cầu phần cứng:
Hệ điều hành: Windows 10 trở lên RAM: Tối thiểu 4GB
Ổ cứng: Tối thiểu 500MB trống Màn
hình: Độ phân giải tối thiểu 1024x768
Yêu cầu phần mềm:
.NET Framework 4.7.2 trở lên SQL Server 2012 trở lên
Visual Studio 2019/2022 (cho môi trường phát triển)
3.2 Các Bước Triển Khai
Chuẩn bị môi trường
Table 2.5 Chuẩn bị môi trường chạy chương trình Chức năng
Đoạn mã minh hoạ (PowerShell) 1.2Get-ItemProperty
Kiểm tra phiên bản .NET ’HKLM:\SOFTWARE\Microsoft\NET Framework
Framework đã cài đặt trên Setup\NDP\v4\Full’ | Select-Object hệ thống -ExpandProperty Release
(trích từ registry tại vị trí tương ứng). 1.2sqlcmd -L
Liệt kê các phiên bản SQL Server hiện đang hoạt
động hoặc có thể kết nối trên mạng nội bộ. Cài đặt Database
Table 2.6 Tạo và thiết lập cơ sở dữ liệu ban đầu Chức năng
Lệnh SQL tương ứng
1.2CREATE DATABASE HotelManagement;
Tạo cơ sở dữ liệu mới với tên HotelManagement.
Tạo bảng employee để lưu
thông tin nhân viên: tài 1.2CREATE TABLE employee ( id INT
khoản, mật khẩu, tên, số điện thoại, email.
IDENTITY(1,1) PRIMARY KEY, username VARCHAR(50) NOT NULL, pass VARCHAR(50) NOT NULL, name
VARCHAR(100), phone VARCHAR(20), email VARCHAR(100) ); Tạo bảng rooms để lưu
thông tin các phòng: số 1.2
phòng, loại phòng, giường, CREATE TABLE rooms ( id INT giá, trạng thái.
IDENTITY(1,1) PRIMARY KEY, roomNo
VARCHAR(10) NOT NULL, roomType
VARCHAR(50), bed VARCHAR(20), price DECIMAL(10,2),
status VARCHAR(20) DEFAULT ’Available’ );
Tạo bảng customers để lưu
thông tin khách hàng: tên,
số điện thoại, số CMND,
ngày nhận và trả phòng, số phòng.
1.2CREATE TABLE customers ( id INT
IDENTITY(1,1) PRIMARY KEY, name
VARCHAR(100), phone VARCHAR(20),
nationalId VARCHAR(50), checkIn DATE,
checkOut DATE, roomNo VARCHAR(10) );
3.3 Cấu Hình Ứng Dụng File App.config:
Table 2.7 Cấu hình App.config cho kết nối CSDL Chức năng
Đoạn cấu hình XML trong App.config Khai báo chuỗi kết nối
CSDL với tên HotelDB, sử 1.2 dụng SQL Server
Express và cơ sở dữ liệu name="HotelDB" HotelManagement. connectionString="Data Source=.\SQLEXPRESS;Initial
Catalog=HotelManagement;Integrated Security=True"
providerName="System.Data.SqlClient" />
Cấu hình kết nối database trong function.cs
Table 2.8 Chức năng và mã nguồn kết nối CSDL trong function.cs Chức năng
Đoạn mã nguồn trong function.cs
Kết nối đến cơ sở dữ liệu
thông qua chuỗi kết nối đã
khai báo trong App.config. 1.2public class function {
Hàm getData() thực hiện truy
vấn SQL và trả về kết quả dưới private string connectionString = dạng DataSet.
ConfigurationManager.ConnectionStrings ["HotelDB"].ConnectionString;
public DataSet getData(string query) {
using (SqlConnection conn = new
SqlConnection(connectionString)) { SqlDataAdapter da = new SqlDataAdapter(query, conn); DataSet ds = new DataSet(); da.Fill(ds); return ds; } } }
3.4.Quy Trình Triển Khai
a) Bước 1: Chuẩn bị môi trường Cài đặt .NET Framework
Cài đặt SQL Server Cấu hình Windows Firewall
b) Bước 2: Cài đặt database Tạo database Chạy script tạo bảng Import dữ liệu mẫu