LỜI MỞ ĐẦU 1. Mục tiêu nghiên cứu của đề tài Phần mềm quản lý đặt phòng khách sạn xây dựng hệ thống thông tin trên cơ sở phục vụ cho việc đặt phòng của khách sạn được nhanh chóng, thuận tiện và hiệu quả. Xây dựng một phần mềm đặt phòng khách sạn có các chức năng cơ bản : Thêm, sửa, xóa, tìm kiếm thông tin và thống kê. 2. Nhiệm vụ của đề tài Hỗ trợ bộ phận quản lý kiểm soát và lưu trữ thông tin khách hàng, phòng và thống kê về số lượng phòng chưa được sử dụng, tổng số lượng đơn đặt phòng,tổng thời gian thuê, tổng số lượng khách hàng... một cách linh hoạt và tối ưu. 3. Kết cấu của đề tài Đề tài được tổ chức gồm phần mở đầu, 3 chương nội dung và phần kết luận: Mở đầu Chương 1: Mô tả bài toán Chương 2: Thiết kế cơ sở dữ liệu Chương 3: Triển khai thiết kế và phát triển ứng dụng Kết luận
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC KINH TẾ KHOA THỐNG KÊ – TIN HỌC
Trang 2LỜI CẢM ƠN
Nhóm chúng em xin chân thành cảm ơn các thầy cô trong Khoa Thống Kê – TinHọc, Trường Đại học Kinh tế - Đại học Đà Nẵng, đặc biệt là giáo viên hướng dẫn HoàngThị Thanh Hà đã tận tình giúp đỡ chúng em rất nhiều trong quá trình thực tập thời gianqua
Vì còn thiếu nhiều kinh nghiệm cho nên trong quá trình thực tập không thể tráchđược sai sót Chúng em mong thầy, cô và nhà trường cho chúng em vài kinh nghiệm đểhoàn thiện kỹ năng của bản thân hơn
Một lần nữa, chúng em xin chân thành cảm ơn các thầy cô trong Khoa Thống Kê –Tin Học, Trường Đại học Kinh tế - Đại học Đà Nẵng, cảm ơn cô Hoàng Thị Thanh Hà
Trang 3LỜI CAM ĐOAN
Nhóm chúng em xin cam đoan dự án Phần mềm quản lý đặt phòng khách sạnNovotel là kết quả nghiên cứu độc lập của chúng em dưới giúp đỡ tận tình của giáo viênhướng dẫn: Hoàng Thị Thanh Hà
Dự án dưới đây là kết quả mà chúng em đã nỗ lực nghiên cứu tìm hiểu trong quátrình học tập và đồng thời học hỏi tham khảo từ những video hướng dẫn của thầy cô chia
sẻ và những video tham khảo thêm trên mạng được trích dẫn rõ ràng
Trang 4MỤC LỤC
Trang 52.1.1 Các thực thể có trong hệ thống: 7
CHƯƠNG 3 TRIỂN KHAI THIẾT KẾ VÀ PHÁT TRIỂN ỨNG DỤNG 17
Trang 8Hình 10 Dữ liệu listview trên form đơn đặt phòng 20
Hình 15 Dữ liệu sau khi dùng thao tác Tìm kiếm 28 Hình 16 Thống kê các khách hàng theo ngày đến và ngày đi 31
DANH MỤC CÁC TỪ VIẾT TẮT
- CSDL: Cơ sở dữ liệu.
- GVHD: Giáo viên hướng dẫn.
Trang 9- Form: Giao diện.
- Winform: Thư viện lớp đồ họa mã nguồn mở
Trang 10LỜI MỞ ĐẦU
1 Mục tiêu nghiên cứu của đề tài
- Phần mềm quản lý đặt phòng khách sạn xây dựng hệ thống thông tin trên cơ sởphục vụ cho việc đặt phòng của khách sạn được nhanh chóng, thuận tiện và hiệuquả
- Xây dựng một phần mềm đặt phòng khách sạn có các chức năng cơ bản : Thêm,sửa, xóa, tìm kiếm thông tin và thống kê
2 Nhiệm vụ của đề tài
- Hỗ trợ bộ phận quản lý kiểm soát và lưu trữ thông tin khách hàng, phòng và thống
kê về số lượng phòng chưa được sử dụng, tổng số lượng đơn đặt phòng,tổng thờigian thuê, tổng số lượng khách hàng một cách linh hoạt và tối ưu
3 Kết cấu của đề tài
Đề tài được tổ chức gồm phần mở đầu, 3 chương nội dung và phần kết luận:
- Mở đầu
- Chương 1: Mô tả bài toán
- Chương 2: Thiết kế cơ sở dữ liệu
- Chương 3: Triển khai thiết kế và phát triển ứng dụng
- Kết luận
Trang 11CHƯƠNG 1 MÔ TẢ BÀI TOÁN
1.1 Mô tả tổng quan:
1.1.1 Giới thiệu bối cảnh đề tài:
Trong thực trạng hiện nay, dịch vụ du lịch ngày càng phát triển mạnh mẽ, các nhàđầu tư khách sạn khắp mọi nơi, và đương nhiên song song đó là lượng khách du lịchngày càng đông Và đặc biệt là “Cơn bão Covid-19” - Các khách sạn phải quản lýnhư thế nào là tối ưu nhất sau thời gian dịch bệnh
Theo phương thức truyền thống thì khi khách hàng có nhu cầu ở khách sạn thì có
2 phương án: Thứ nhất là gọi điện đến đặt phòng, Hai là đến trực tiếp khách sạn đểđặt phòng
1.1.2 Tính cấp thiết của đề tài:
Trên đà phát triển mạnh mẽ của dịch vụ du lịch, công việc quản lý bằng nhữngphương pháp thủ công truyền thống tốn rất nhiều thời gian và có nhiều sai sót trongviệc quản lý thông tin, cập nhật thông tin khách hàng, đặc biệt là vấn đề tổng hợpkhách hàng đặt phòng và lưu trữ hóa đơn Để giải quyết những vấn đề đó thì cần cómột phần mềm quản lý thông tin linh hoạt và theo quy trình
Qua thời gian nghiên cứu tìm hiểu, nhóm chúng em cũng thực hiện xây dựngphần mềm quản lý đơn giản có những chức năng sau:
- Quản lý thông tin khách hàng
Trang 121.2 Mô tả hệ thống
1.2.1 Tên hệ thống
Phần mềm quản lý đặt phòng khách sạn Novotel
1.2.2 Mô tả bài toán
Bài toán xây dựng phần mềm quản lý đặt phòng khách sạn sẽ thực hiện các thaotác thêm, sửa, xóa, tìm kiếm bảng khách hàng, phòng, loại phòng, đơn đặt phòng.Đồng thời thống kê được thông tin khách đến, khách đi và tính tổng tiền thanh toánhoặc tổng thời gian thuê phòng của khách hàng theo ngày hoặc tháng hoặc năm vàcòn phòng được đặt nhiều nhất Bên cạnh đó thống kê tổng số phòng đã thuê hoặctổng tiền đã trả hoặc tổng thời gian thuê của từng khách hàng
1.2.3 Môi trường triển khai:
● Triển khai trên phần mềm Visual Studio 2013
● Hệ quản trị cơ sở dữ liệu MS SQL Server 2014
● Ngôn ngữ lập trình C#
Trang 131.3 Mô tả các yêu cầu của ứng dụng
Phần mềm quản lý đặt phòng khách sạn được sử dụng nhằm phục vụ chủ yếu cho
bộ phận quản lý đặt phòng cho khách sạn
❖ Nhiệm vụ chính của hệ thống:
Bộ phận quản lý: Người thuộc phòng quản lý có thể lưu trữ thông tin về khách hàng, phòng và thống kê về số lượng phòng chưa được sử dụng, tổng số lượng khách hàng…
- Thông tin đầu vào
● Thông tin về khách hàng
● Thông tin về phòng cho thuê
● Thông tin về ngày đặt phòng, ngày nhận và trả phòng
● Các yêu cầu: Thêm, xóa, sửa và tìm kiếm…
- Thông tin đầu ra
● Thông tin về khách hàng
● Thông tin về phòng cho thuê
● Thông tin về ngày đặt phòng, ngày nhận và trả phòng
● Các báo cáo, thống kê, trích dẫn dữ liệu
❖ Các yêu cầu xây dựng hệ thống
- Đảm bảo tính nghiệp vụ, phù hợp với các nguyên tắc vận hành của cácquy trình nghiệp vụ
- Đảm bảo tính vận hành độc lập và tính tích hợp giữa các chức năng của hệthống
- Thông tin được đảm bảo toàn vẹn, chính xác qua các hoạt động vào/ ra tạimọi thời điểm, mọi người dùng
- Tự động hóa việc xử lý hàng ngày đến mức cao nhất, giảm thiểu thao tácthủ công
- Hệ thống có sự giúp đỡ tại chỗ, thông báo lỗi kịp thời, phân vùng lỗi
- Có khả năng dễ dàng thay đổi để phù hợp với các thay đổi của phần cứng
- Có khả năng bảo mật thông tin cao
Trang 141.4 Sơ đồ hệ thống
Hình 1 Sơ đồ hệ thống.
Trang 15CHƯƠNG 2 THIẾT KẾ CƠ SỞ DỮ LIỆU
2.1 Phân tích mô hình cơ sở dữ liệu
2.1.2 Thuộc tính và khóa của các thực thể:
- PHONG(MaPhong, MaLoai Phong, TenPhong, MoTaPhong, TrangThai)
● MaLoaiPhong là khóa ngoại nối với bảng LOAIPHONG
- LOAIPHONG(MaLoaiPhong, LoaiPhong,SoGiuong,GiaPhong)
- DONDATPHONG(MaDonDatPhong, MaPhong, MaKhach, NgayDatPhong, NgayDen,NgayDi,HuyDon,ThoiGianThue, TienPhong, DatCoc, ConLai)
● MaPhong là khóa ngoại nối với bảng PHONG
● MaKhach là khóa ngoại nối với bảng KHACHHANG
- KHACHHANG(MaKhach, TenKhachHang, DiaChi, Email, SoDienThoai, GioiTinh)
- NGUOIDUNG(TaiKhoan, MatKhau)
*Lưu ý: Các thuộc tính được gạch chân là các thuộc tính được chọn làm khóa chính.
Trang 16Khóa Diễn giải dữ
r
Bảng 1 Bảng NGUOIDUNG
Trang 17Thuộc tính Kiểu
dữ liệu
Độ rộng
liệu
Key
Là khóa chính để phân biệt với các phòng khác, mỗi phòng có 1
mã phòng khác nhau.
phòng để phân biệt với các phòng khác
phòng Sẽ có nhiều loại phòng phù hợp với yêu cầu về số lượng và sở thích của từng khách hàng.
Trang 18Khóa Diễn giải dữ
liệu
MaLoaiPhon
g
Varcha r
Key
Là khóa chính
để phân biệt với các phòng khác, mỗi phòng có 1 mã loại phòng khác nhau.
r
giúp khách hàng lựa chọn phù hợp với yêu cầu đặt ra.
trong phòng.
Mỗi phòng có
Trang 19một mức giá khác nhau.
Bảng 3 Bảng LOAIPHONG
rộn g
Khóa Diễn giải dữ liệu
Key
Là khóa chính để phân biệt với các khách hàng khác, mỗi khách hàng
sẽ có 1 mã khách hàng khác nhau TenKhachHan
g
Nvarcha r
đặt phòng của khách sạn.
r
ứng với từng khách hàng.
Trang 20Email Varchar 50 Email tương ứng
với từng khách hàng.
tương ứng với từng khách hàng.
ứng với mỗi khách hàng 1 là nam, 0 là nữ.
Bảng 4 Bảng KHACHHANG
rộng
Ràng buộc
Diễn giải
MaDonDatPho
ng
Varcha r
Key
Là khóa chính để phân biệt với các đơn đặt phòng khác, mỗi đơn sẽ
có 1 mã đơn đặt phòng khác nhau.
Trang 21hàng đặt phòng.
hàng bắt đầu
sử dụng phòng.
trả phòng và lập hóa đơn.
phòng.1 là hủy, 0 là không hủy tiếp tục đặt.
Trang 22ThoiGianThue Int Thời gian
thuê phòng của khách hàng (Ngày
đi – Ngày đến).
phòng(Thời gian thuê * Giá phòng)
phòng *0.3)
phòng – Đặt cọc)
Bảng 5 Bảng DONDATPHONG
Trang 232.2 Thực thi cơ sở dữ liệu:
2.2.1 Tạo bảng:
Sau khi đã thiết kế chi tiết cơ sở dữ liệu, ta tiến hành tạo lập các các bảng trên phầnmềm SQL Server Ta thực hiện như sau:
2.2.1.1 Tạo database: QUANLYDATPHONGKHACHSAN
Create database QUANLYDATPHONGKHACHSAN
2.2.1.4 Bảng Loại Phòng:
Create table LOAIPHONG(MaLoaiPhong varchar(5)notnull primary key,
LoaiPhong varchar (30)notnull, SoGiuong int notnull, GiaPhong int notnull )
2.2.1.5 Bảng Khách Hàng:
Create table KHACHHANG(MaKhach varchar(5) notnull primary key,
TenKhachHang nvarchar(100) notnull, DiaChi nvarchar(100)notnull,
Email varchar(50)notnull, SoDienThoai int notnull, GioiTinh bit notnull)
2.2.1.6 Bảng Đơn Đặt Phòng:
Create table DONDATPHONG (MaDonDatPhong varchar(10) notnull primary key,
MaPhong varchar(5)notnull, MaKhach varchar(5) notnull, NgayDatPhong date notnull, NgayDen date notnull, NgayDi date notnull, HuyDon bit notnull,
ThoiGianThue int, TienPhong int, DatCoc int, ConLai int)
Trang 242.2.2 Tạo ràng buộc khóa
2.2.2.1 Phòng – Loại Phòng:
ALTER TABLE dbo.PHONG
ADD CONSTRAINT FK_LOAIPHONG FOREIGN KEY (MaLoaiPhong)
REFERENCES dbo.LOAIPHONG(MaLoaiPhong)
2.2.2.2 Đơn Đặt Phòng – Phòng:
ALTER TABLE dbo.DONDATPHONG
ADD CONSTRAINT FK_PHONG FOREIGN KEY (MaPhong) REFERENCESdbo.PHONG(MaPhong)
2.2.2.3 Đơn Đặt Phòng – Khách Hàng:
ALTER TABLE dbo.DONDATPHONG
ADD CONSTRAINT FK_KHACHHANG FOREIGN KEY (MaKhach)
REFERENCES dbo.KHACHHANG(MaKhach)
Trang 25FROM DONDATPHONG INNERJOIN PHONG ON
DONDATPHONG.MaPhong = PHONG.MaPhong
INNER JOIN LOAIPHONG ON LOAIPHONG.MaLoaiPhong =
Set ConLai = TienPhong - DatCoc
2.3 Mô hình dữ liệu quan hệ:
Hình 2 Mô hình dữ liệu quan hệ.
Trang 26CHƯƠNG 3 TRIỂN KHAI THIẾT KẾ VÀ PHÁT TRIỂN ỨNG DỤNG
3.1 Giao diện đăng nhập:
Để bảo mật thông tin cũng như thuận tiện cho các thao tác, tất cả các nhà quản lý
và nhân viên phải đăng nhập chính xác tài khoản và mật khẩu Nếu nhập chính xác
hệ thống sẽ vào trang đơn đặt phòng Nếu sai tài khoản hệ thống sẽ báo "Tài khoản bạn vừa nhập không đúng!" và sai mật khẩu hệ thống sẽ báo "Mật khẩu bạn vừa nhập không đúng!"
Hình 3 Giao diện đặng nhập.
Trang 27private void btnLogin_Click( object sender, EventArgs e)
{
if (login())
{
fGiaodienchinh f = new fGiaodienchinh();
this Visible = false ;
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
Trang 293.2 Các giao diện:
Tại tab quản lý, người dùng có khả năng thêm, sửa, xóa và tìm kiếm trực tiếptrên mỗi trường tạo sẵn Giao diện ứng dụng đơn giản, mỗi người đều có thể dùngmột cách dễ dàng mà không gặp bất kì khó khăn nào Khi thực hiện các thao tác quản
lý, ứng dụng sẽ tự động cập nhật và hiển thị thông tin vào bảng của giao diện
3.2.1 Form Quản lý đơn đặt phòng:
Hình 4 Form quản lý đơn đặt hàng.
Trang 303.2.2 Form Quản lý khách hàng:
Hình 5 Form quản lý khách hàng.
3.2.3 Form Quản lý phòng:
Hình 6 Form quản lý phòng.
Trang 313.2.4 Form Báo cáo thống kê:
Hình 7 Form Báo cáo thống kê.
3.3 Kết nối cơ sở dữ liệu:
Tại mỗi form quản lý, ta tạo một listview để chứa dữ liệu Khi muốn đổ dữ liệuvào listview trên winform, ta cần dùng một câu lệnh chứa liên kết với SQL Server đểkết nối hai phần mềm với nhau Tiếp đó, ta thực hiện các bước như sau để có thể lấyđược dữ liệu:
- Tạo một kho ảo để lưu dữ liệu
- Lấy hết dữ liệu trong bảng bên SQL Server
- Chuyển dữ liệu về
- Đổ dữ liệu vào kho
- Đổ dữ liệu vào listview
Trang 32Ta có ví dụ về đổ dữ liệu vào listview trên form Quản lý loại phòng như bên dưới.
String sql = "SELECT * FROM LOAIPHONG";
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
Trang 33}
Hình 8 Dữ liệu trên Form loại phòng
Tương tự các bảng Phòng, Đơn đặt phòng, Khách hàng theo thứ tự như hình
Hình 9 Dữ liệu listview trên form phòng.
Trang 34Hình 10 Dữ liệu listview trên form đơn đặt phòng.
Hình 11 Dữ liệu listview trên form khách hàng
3.4 Thao tác và quản lý ứng dụng:
3.4.1 Thao tác Thêm:
Để thêm dữ liệu vào bảng, người dùng nhập thông tin trực tiếp vào mỗi trường rồinhấn vào button “Thêm” ở phía trên ứng dụng Ví dụ, người dùng muốn thêm thôngtin Phòng sẽ nhập lần lượt vào các trường Mã phòng (“MP034”), Mã Loại phòngchọn C1002, Tên Phòng (“Phong 609”), Trạng Thái chọn “Còn phòng”, Mô tả(“Phòng Superior có không gian khiêm tốn”) sau đó bấm vào button “Thêm” thì dữliệu sẽ hiện lên listview (Hình ) Tại đây, ta xử lý dữ liệu bằng cách chuyển câu lệnh
Trang 35Insert từ SQL thành C# rồi lần lượt thêm dữ liệu đã nhập từ trường vào listview theothứ tự tương ứng Để rõ ràng, ta lập trình như sau:
private void bttThemPhong_Click( object sender, EventArgs e)
Trang 36string strMaPhong = tbMaPhong.Text;
if (checkMaPhong(strMaPhong) == false ) {
MessageBox.Show("Mã phòng đã tô?n tại!", "Thông báo"); return ;
}
if (checkData(strMaLoaiPhong) == false ) {
MessageBox.Show("Mã loại phòng không tô?n tại!", "Thông báo");
return ; }
if (strMaPhong.Length > 5) {
MessageBox.Show("Mã phòng pha=i bé hơn 6!", "Thông báo"); return ;
} else
{ int trangthai = 0;
Trang 37string sql = "INSERT INTO PHONG (MaPhong,
MaLoaiPhong,TenPhong, MoTaPhong, TrangThai) VALUES ('" + tbMaPhong.Text + "','" + strMaLoaiPhong + "','" + tbTenPhong.Text +
"',N'" + tbMoTa.Text + "'," + trangthai + ")";
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
Trang 38Hình 12 Dữ liệu trước khi dùng thao tác Thêm.
3.4.2 Thao tác Sửa:
Khi muốn sửa dữ liệu, người dùng click chuột vào dòng thông tin muốn sửa vàcác thông tin sẽ xuất hiện tương ứng các trường phía dưới Tại đây, ta chỉnh lại cácthông tin cần sửa và nhấn vào button “Sửa” Thông tin sẽ được cập nhật và hiển thịlên bảng listview bên trên Ví dụ, người dùng muốn chỉnh sửa Trạng thái có Mãphònglà MP034, ta click chuột vào thông tin Phòng đó và sửa vào click chuột vàoTrạng thái “Hết phòng” (Hình Thuật toán “Sửa” như sau:
private void btnSuaLoaiPhong_Click( object sender, EventArgs e)
Trang 39bool isNumeric = int TryParse(txtSoGiuong.Text, out n);
bool isNumeric1 = int TryParse(txtGiaPhong.Text, out n);
string strMaLoaiPhong = txtMaLoaiPhong.Text;
if (checkData(strMaLoaiPhong) == false )
Trang 40String sql = "UPDATE LOAIPHONG SET LoaiPhong = '" +
txtLoaiPhong.Text + "', SoGiuong = " + txtSoGiuong.Text + ", GiaPhong = '" + txtGiaPhong.Text + "' WHERE MaLoaiPhong = '" + txtMaLoaiPhong.Text + "'"; DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
Trang 41Hình 13 Dữ liệu sau khi dùng thao tác Sửa.
DialogResult dialogResult = MessageBox.Show("Bạn có muôZn xóa phòng này
không", "Thông báo", MessageBoxButtons.YesNo);
Trang 42public void deletePhong(String MaPhong)
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
Trang 43Hình 14 Dữ liệu sau khi dùng thao tác Xóa.
Trang 443.4.4 Thao tác Tìm kiếm:
Chức năng tìm kiếm này cho phép người dùng tìm kiếm được toàn bộ thông tinnhanh chóng và hiệu quả
Ví dụ tìm Đơn đặt phòng như sau:
Người dùng nhập Mã đơn phòng, nhấn vào button Tìm để tìm kiếm Lúc này,việc tìm kiếm sẽ được hệ thống chạy chương trình và hiển thị tất cả thông tin liênquan đến ‘Mã đơn phòng’ trên bảng listview
private void btTimFgiaodienchinh_Click( object sender, EventArgs e)
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);