Professional Documents
Culture Documents
SD18303_Nhom1_QuanLiKhachSan
SD18303_Nhom1_QuanLiKhachSan
Lớp: SD18303
1
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 1
Phần mềm quản lý khách sạn
I. Mở đầu dự án:
1. Giới thiệu về dự án.
Loại hình dịch vụ du lịch khách sạn có tên là Khách sạn xin chào đang được hoạt động để phục vụ cho
việc du lịch, nghỉ dưỡng…
Việc quản lý khách hàng, hoá đơn, phòng và doanh thu hiện đang thực hiện thông qua excel.
Hiện tại khách sạn đang gặp khó khăn khi có sự nhầm lẫn rất nhiều về hoá đơn, số lượng sử dụng dịch
vụ ngày một nhiều nên việc quản lý excel gặp rất nhiều khó khăn.
Khách sạn xin chào mong muốn xây dựng một phần mềm để giải quyết khó khăn trên.
Đăng xuất
BẢO MẬT:
Phần mềm được viết cho đối tượng là nhân viên và quản lý
Tất cả mọi thành viên phải đăng nhập mới được sử dụng phần mềm
Quản lý thực hiện được tất cả các chức năng
Nhân viên không có quyền truy cập quản lý nhân viên và thống kê doanh thu, Nhân viên
không có quyền xoá dữ liệu
CÔNG NGHỆ
Ứng dụng phải được thực hiện với công nghệ Swing và JDBC
JDK: 1.8+
Nhóm 1 - SD18303 2
Phần mềm quản lý khách sạn
Mỗi chức năng quản lý bao gồm các chức năng con
Các chức năng thao tác dữ liệu (thêm, sửa, xóa) cần được kiếm lỗi hợp lý với dữ liệu
Nhóm 1 - SD18303 4
Phần mềm quản lý khách sạn
STT
Mã hoá đơn.
Mã phòng
Thành tiền
STT
Mã hoá đơn
Mã dịch vụ
Số lượng
Đơn giá
Thành tiền
Đăng nhập: để sử dụng phần mềm, bắt buộc phải đăng nhập
Đăng xuất : đăng nhập lại với người dùng khác hoặc dừng lại đi đâu đó
Thông tin của mỗi nhân viên gồm: mã nhân viên, tên nhân viên, chức vụ (nhân viên hoặc quản
lý), mật khẩu đăng nhập, địa chỉ email, giới tính và hình ảnh.
Hỗ trợ thống kê về doanh thu phòng theo tháng và doanh thu dịch vụ theo tháng sau đó xuất
file báo cáo.
Thông tin của bảng thống kê bao gồm: Mã hóa đơn, mã phòng, mã khách hàng, thành tiền,...
Sau khi đăng nhập thì chỉ quản lý có quyền truy cập chức năng này để xem báo cáo về doanh
thu khách sạn.
Quản lý hóa đơn có chức năng lưu lại hóa đơn phòng đã thanh toán, cũng như tìm kiếm lịch sử
hóa đơn và xuất file PDF.
Các dữ liệu liên quan bao gồm: Mã phòng, mã hóa đơn, Mã khách hàng, ngày nhận phòng,
ngày trả phòng, thống kê dịch vụ đã thuê, phụ thu, thành tiền, ngày xuất hóa đơn và mã nhân
viên thực hiện.
Quản lý và nhân viên đều có quyền truy cấp chức năng này để hỗ trợ trong quá trình làm việc
hỗ trợ cho khách hàng về vấn đề hóa đơn và báo cáo hóa đơn.
e) Đăng nhập
Mô tả chức năng:
Chức năng đăng nhập được sử dụng để cho phép người dùng truy cập vào hệ thống bằng cách
xác thực thông tin đăng nhập (tài khoản và mật khẩu).
Dữ liệu liên quan:
Nhóm 1 - SD18303 6
Phần mềm quản lý khách sạn
Thông tin đăng nhập của người dùng bao gồm tên tài khoản và mật khẩu.
Đối tượng sử dụng:
Chức năng này có thể được sử dụng bởi tất cả người dùng của hệ thống để truy cập vào hệ
thống
f) Quên mật khẩu
Mô tả chức năng:
Chức năng quên mật khẩu được sử dụng để cho phép người dùng truy cập và đổi lại mật khẩu
đăng nhập mới của họ.
Dữ liệu liên quan:
Thông tin tài khoản bao gồm: tên tài khoản mật, địa chỉ email và mật khẩu mới của người
dùng.
Đối tượng sử dụng:
Chức năng này có thể được sử dụng bởi tất cả người dùng của hệ thống để truy cập lại mật
khẩu đăng nhập của họ.
EduSys: Máy nhân viên cần JDK 1.8+ với hệ điều hành bất kỳ
Nhóm 1 - SD18303 7
Phần mềm quản lý khách sạn
2. Thực thể
a) Sơ đồ quan hệ thực thể (ERD)
Nhóm 1 - SD18303 8
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 9
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 10
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 12
Phần mềm quản lý khách sạn
V. Giao diện
1. Sơ đồ tổ chức giao diện
Nhóm 1 - SD18303 14
Phần mềm quản lý khách sạn
Mô tả hoạt động
STT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Đưa cửa sổ ra giữa màn hình
2 [Trang chủ] Click Hiển thị về Main
3 [Nhân viên] Click Hiển thị JpanelNhanVien
4 [Quản lí khách hàng] Click Hiển thị JpanelKhachHang
5 [Quản lí phòng] Click Hiển thị JPanelPhong
6 [Hoá đơn] Click Hiển thị JpanelHoaDon
7 [Thống kê] Click Hiển thị JpanelThongKe
8 [Đăng xuất] Click Hiển thị DangNhapJDialog
Nhóm 1 - SD18303 15
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 16
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 17
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 18
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 19
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 21
Phần mềm quản lý khách sạn
d. Cửa sổ chính
Nhóm 1 - SD18303 22
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 23
Phần mềm quản lý khách sạn
i. Cửa sổ Thống kê
Nhóm 1 - SD18303 24
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 25
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 26
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 27
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 29
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 30
Phần mềm quản lý khách sạn
MaDV nvarchar(10),
TenDV nvarchar(50),
DonGia float,
constraint fk_dichvu_dichvudathue foreign key (MaDV) references DichVu (MaDV),
constraint fk_datphong_dichvudathue foreign key (MaDP) references DatPhong
(MaDP)
)
3. 4.2.3 Thủ tục lưu
a. Sp_DoanhThuPhong()
CREATE PROCEDURE sp_DoanhThuPhong
@Thang INT,
@Nam INT
AS
BEGIN
SELECT ROW_NUMBER() OVER (ORDER BY COUNT(DatPhong.MaPhong)) AS
STT, DatPhong.MaPhong,PHUTHU, HoaDonThanhToan.ThanhTien FROM DatPhong
JOIN HoaDonThanhToan ON HoaDonThanhToan.MaDP = DatPhong.MaDP
JOIN HoaDonChiTiet ON HoaDonChiTiet.MaHD = HoaDonThanhToan.MaHD
where month(ngaylap) = @Thang and year(ngaylap) = @nam
GROUP BY
DatPhong.MaPhong, PhuThu, HoaDonThanhToan.ThanhTien;
END
b. Sp_DoanhThuDichVu()
CREATE OR ALTER PROCEDURE sp_DoanhThuDichVu
@Thang INT,
@Nam INT
AS
BEGIN
SELECT
ROW_NUMBER() OVER (ORDER BY COUNT(dv.madv)) AS STT,
dv.MaDV,
dv.TenDV,
Count(dvdt.MaDV) AS 'Số lượng',
dv.Gia,
SUM('Số lượng' * dv.Gia) AS 'Thành Tiền'
FROM
DichVu dv
JOIN DichVuDaThue dvdt ON dvdt.MaDV = dv.MaDV
Nhóm 1 - SD18303 34
Phần mềm quản lý khách sạn
❖ DAO: là các lớp thao tác và truy vấn dữ liệu. Nó có nhiệm vụ chuyển đổi Model sang SQL
và ngược lại.
❖ JdbcHelper Chứa các phương thức thực hiện các câu lệnh thao tác và truy vấn được gọn nhẹ
hơn
❖ Jdbc là lớp tiện ích cung cấp các hàm tiện ích làm việc với CSDL thông qua câu lệnh
❖ Database: cơ sở dữ liệu của chương trình
❖ Entity: thực thể của chương trình
b) JdbcHELPER (XJdbc)
Nhóm 1 - SD18303 35
Phần mềm quản lý khách sạn
❖ Mô tả: XJdbc là lớp tiện ích hỗ trợ lập trình JDBC. Lớp này gồm 3 phương thức được mô tả
trong phần hướng dẫn sử dụng sau đây.
❖ Hướng dẫn sử dụng:
● XJdbc.query(String sql, Object…args): ResultSet
○ Truy vấn dữ liệu từ CSDL
○ Tham số sql: câu lệnh SELECT truy vấn có chứa ?
○ Tham số: args là các giá trị cung cấp cho các dấu ? của SQL
○ Kết quả: ResultSet
● XJdbc.update(String sql, Object…args): int
○ Thao tác CSDL (INSERT, UPDATE, DELETE)
○ Tham số sql: câu lệnh INSERT, UPDATE, DELETE có chứa ?
○ Tham số: args là các giá trị cung cấp cho các dấu ? của SQL
○ Kết quả: số bản ghi có ảnh hưởng
● XJdbc.value(String sql, Object…args): Object
○ Truy vấn một giá trị từ CSDL
○ Tham số sql: câu lệnh SELECT truy vấn có chứa ?
○ Tham số: args là các giá trị cung cấp cho các dấu ? của SQL
○ Kết quả: đối tượng chứa giá trị truy vấn
VII. Entity class và DAO
1. Class diagram
2. Entity
3. DAO
4. EduSysDAO
Nhóm 1 - SD18303 36
Phần mềm quản lý khách sạn
EduSysDAO là lớp trừu tượng, tổng quát (Generic) đặc tả những hành động truy xuất CSDL cơ bản
nhất mà một lớp DAO cụ thể phải có. Các phương thức thực hiện truy xuất CSDL được mô tả như sau
STT Phương thức Mô tả hoạt động
1 insert(E) Thêm mới một bản ghi với dữ liệu là
entity E
2 update(E) Cập nhật một bản ghi với dữ liệu là entity
E
3 delete(K) Xóa một bản ghi với mã K
4 selectById(K): E Truy vấn một bản ghi với mã là K
5 selectAll(): List<E> Truy vấn tất cả các bản ghi
6 selectBySql(String, Object…): Truy vấn các bản ghi tùy vào sql và args
List<E>
Trên đây chỉ là các hoạt động truy xuất CSDL cơ bản. Trong một lớp DAO cụ thể, các DAO con sẽ
viết mã cho các phương thức này với E là lớp Entity và K là kiểu khóa chính cụ thể đồng thời có thể
bổ sung thêm các hoạt động truy xuất đặc thù riêng của từng DAO cần thiết.
a) 4.3.3.3 NhanVien và NhanVienDAO
Diễn giải
Thành phần Mô tả
NhanVien Là lớp thực thể mô tả dữ liệu nhân viên
NhanVienDAO Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với
bảng NhanVien
➔ E được cụ thể hóa là NhanVien
➔ K được cụ thể hóa là String
➔ SQL là các câu lệnh thao tác dữ liệu trên bảng NhanVien
Nhóm 1 - SD18303 37
Phần mềm quản lý khách sạn
KhachHangDAO Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với
bảng KhachHang
➔ E được cụ thể hóa là KhachHang
➔ K được cụ thể hóa là String
➔ SQL là các câu lệnh thao tác dữ liệu trên bảng
KhachHang
Nhóm 1 - SD18303 38
Phần mềm quản lý khách sạn
Diễn giải
Thành phần Mô tả
DichVuDaThue Là lớp thực thể mô tả dữ liệu dịch vụ đã thuê
DichVuDaThueDAO Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với
bảng DichVuDaThue
➔ E được cụ thể hóa là DichVuDaThue
➔ K được cụ thể hóa là String
➔ SQL là các câu lệnh thao tác dữ liệu trên bảng
DichVuDaThue
7 JpanelHoaDon() Phương thức này được gọi khi click vào mục trong menu và
nút trên toolbar để mở trang hóa đơn.
8 JpanelThongKe() Phương thức này được gọi khi click vào mục trong menu và
nút trên toolbar để mở trang thống kê.
9 dispose() Phương thức này được gọi khi click vào mục trong menu và
nút trên toolbar để đăng xuất.
10 FormDangNhap() Phương thức này được gọi khi click vào đồng ý khi nhấn nút
đăng xuất để thoát về cửa sổ đăng nhập.
Nhóm 1 - SD18303 40
Phần mềm quản lý khách sạn
FormDangNhap
STT Phương thức Mô tả
1 FormDangNhap() Hiển thị cửa sổ ở giữa màn hình
2 login() Đăng nhập vào hệ thống
Kiểm tra tài khoản đăng nhập có đúng tên đăng nhập
và mật khẩu hay không
Xét quyền của tài khoản và cho đăng nhập thành công
3 readFromFile() Đọc dữ liệu được nhập trong FormDangNhap
4 saveCheckBoxState() Lưu dữ liệu cho tính năng ghi nhớ đăng nhập
5 FormQuenMatKhau() Phương thức này được gọi khi click vào Quên mật
khẩu để mở cửa sổ quên mật khẩu.
MatKhauMoi
STT Phương thức Mô tả
1 MatKhauMoi() Hiển thị cửa sổ ở giữa màn hình
Lưu mật khẩu mới vào dữ liệu
FormQuenMatKhau
STT Phương thức Mô tả
1 FormQuenMatKhau() Hiển thị cửa sổ ở giữa màn hình
2 khoiphuc() Kiểm tra tên tài khoản và email đúng sai để gửi
thông báo xác thực
3 getIPAddress() Phương thức này dùng để thêm địa chỉ email
vào dữ liệu
4 randomCode() Phương thức này dùng để gửi mã xác thực bất kì
để xác nhận tài khoản
5 backgroundForm() Dùng để định dạng hình ảnh làm background
cho form
Nhóm 1 - SD18303 41
Phần mềm quản lý khách sạn
FormPhieuDat
STT Phương thức Mô tả
1 FormPhieuDat() Hiển thị cửa sổ ở giữa màn hình
Load dữ liệu lên hệ thống
2 initTable() Thêm dữ liệu vào bảng dịch vụ
3 initData() Thêm dữ liệu thông tin điền vào phiếu đặt
4 insertDV() Phương thức này dùng để truy vấn dữ liệu dịch
vụ để thêm dữ liệu dịch vụ mới
5 getModelDichVu() Phương thức này dùng để thêm dữ liệu dịch vụ
vào bảng dịch vụ trong hệ thống
6 insertDatPhong() Phương thức này dùng để truy vấn dữ liệu đặt
phòng vào hệ thống
7 insertKH() Phương thức này dùng để truy vấn dữ liệu khách
hàng để thêm dữ liệu khách hàng mới
8 updateDSPhong() Phương thức này dùng để cập nhật lại trạng thái
phòng trên hệ thống
9 getModelDSPhomg() Phương thức này dùng để thêm dữ liệu phòng
mà khách muốn đặt phòng
10 getModelKH() Phương thức này dùng để thêm dữ liệu khách
hàng mới vào bảng phiếu đặt phòng
11 checkDate() Phương thức này dùng để kiểm tra ngày đến
nhận phòng được đặt
12 addDichVu() Phương thức này dùng để thêm dữ liệu của dịch
vụ mới vào phiếu đặt
13 xoaDichVu() Phương thức này dùng để xóa dữ liệu dịch vụ
được chọn
14 tongTienDV() Phương thức này dùng để tính tổng tiền dịch vụ
được nhập vào
15 updateTime() Phương thức này dùng để thiết lập ngày giờ
được thêm vào
FormHoaDonChiTiet
STT Phương thức Mô tả
1 FormHoaDonChiTiet() Hiển thị cửa sổ ở giữa màn hình
2 initData() Truy vẫn lấy mã đặt phòng thông qua mã hóa
đơn và thêm dữ liệu của hóa đơn chi tiết
3 deleteHD Dùng để xóa dữ liệu hóa đơn chi tiết
JpanelKhachHang
STT Phương thức Mô tả
1 JpanelKhachHang() Hiểu thị cửa sổ ở giữa màn hình
Load dữ liệu vào table khách hàng
2 initTable() Thêm dữ liệu vào bảng khách hàng
3 initData() Thêm mật khẩu của nhân viên vào bảng khách hàng
4 search() Phương thức này dùng để kiểm tra từ khóa nào
trùng khớp với dữ liệu trong bảng
5 find() Phương thức này dùng để tìm dữ liệu khách hàng
liên quan trong bảng khách hàng
JpanelHoaDon
STT Phương thức Mô tả
1 JpanelHoaDon() Hiểu thị cửa sổ ở giữa màn hình
Load dữ liệu vào table danh sách hóa đơn
2 initTable() Thêm dữ liệu vào bảng danh sách hóa đơn
3 initHoaDon() Phương thức này dùng để tìm dữ liệu khách hàng
liên quan trong bảng danh sách hóa đơn
4 search() Phương thức này dùng để kiểm tra từ khóa nào
trùng khớp với dữ liệu trong bảng
JpanelDatPhong
STT Phương thức Mô tả
1 JpanelDatPhong() Hiểu thị cửa sổ ở giữa màn hình
Load dữ liệu vào table đặt phòng
2 initTable() Thêm dữ liệu vào bảng danh sách hóa đơn
3 initData() Thêm mật khẩu của nhân viên vào bảng khách hàng
Nhóm 1 - SD18303 43
Phần mềm quản lý khách sạn
JpanelChiTietPhong
STT Phương thức Mô tả
1 JpanelChiTietPhong() Hiểu thị cửa sổ ở giữa màn hình
Cho biết trạng thái phòng
2 initData() Truy vấn dữ liệu của phòng được chọn
3 FormPhieuDat() Phương thức này được gọi khi click vào
xác nhận đặt phòng để mở form phiếu đặt
Nhóm 1 - SD18303 44
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 45
Phần mềm quản lý khách sạn
Nhóm 1 - SD18303 46