1. Trang chủ
  2. » Công Nghệ Thông Tin

Đồ án Quản lý khách sạn

27 1,2K 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 1,02 MB

Nội dung

Phân quyền cho các đối tượng sử dụng - Nhân viên lễ tân : nhập các thông tin của khách hàng khi tiếp đón khách, cácthông tin giao dịch với khách hàng, thanh toán cho khách hàng khi họ tr

Trang 1

I Mô tả các chức năng của hệ thống.

1 Phân quyền cho các đối tượng sử dụng

- Nhân viên lễ tân : nhập các thông tin của khách hàng khi tiếp đón khách, cácthông tin giao dịch với khách hàng, thanh toán cho khách hàng khi họ trả phòng

- Nhân viên phục vụ : nhập các thông tin sử dụng dịch vụ của khách hàng, cậpnhật sự thay đổi giá sử dụng dịch vụ

- Nhân viên quản lý phòng : cập nhật trang thiết bị của từng phòng, phân hạngphòng, giá thuê của từng loại phòng, thông tin về thay đổi của phòng thuê

- Nhân viên quản trị hệ thống : cập nhật thêm danh sách nhân viên mới và cấpquyền sử dụng cho những người có nhiệm vụ

- Giám đốc khách sạn : xem các thông tin tổng hợp về công việc kinh doanh củakhách sạn

2 Chức năng của hệ thống

- Quản lý danh sách phòng, các tiện nghi trong phòng, số giường và trạng tháicủa phòng

- Quản lý các yêu cầu đặt phòng, thuê phòng của các khách hàng

- Quản lý các thông tin về khách hàng, ghi nhận các khách hàng đặc biệt và cóchính sách ưu tiên đối với các khách hàng quen

- Theo dõi và thống kê việc sử dụng dịch vụ của khách hàng (điện thoại, ănuống, giặt là…)

- Cho phép in các hóa đơn thanh toán khi khách hàng trả phòng

- Hệ thống có thể in ra các báo cáo thống kê tình hình kinh doanh của kháchsạn

II Thiết kế CSDL

1 Cấu trúc các bảng.

a) [QuanLyPhong].[GIAPHONG]

Column Name Description Datatype Length Allow Null

b) [QuanLyPhong].[PHONG]

Column Name Description Datatype Length Allow Null

Trang 2

SoPhong Số phòng Khóa chính MA:varchar 10

LoaiPhong Loại phòng Khóa ngoại của

GIAPHONG.GiaPhong

Varchar 20

c) [LeTan].[KHACHHANG]

Column Name Description Datatype Length Allow Null

MaKH Mã khách hàng Khóa chính MA:varchar 10

d) [QuanTri].[NHANVIEN]

Column Name Description Datatype Length Allow Null

Trang 3

MaNV Mã nhân viên Khóa chính MA:varchar 10

CapTren Cập trên trực tiếp quản lý

Khóa ngoại của NHANVIEN.MaNV

SoPhong Số phòng Khóa chính Khóa

ngoại của PHONG.SoPhong

MA:varchar 10

NgayMuon Ngày mượn phòng Datetime

f) [LeTan].[HOADON]

Column Name Description Datatype Length Allow Null

MaHD Mã hóa đơn Khóa chính MA:varchar 10

MaKH Mã khách hàng Khóa ngoại

Trang 4

MaHD Mã hóa đơn Khóa chính

Khóa ngoại của HOADON.MaHD

MA:varchar 10

SoPhong Số phòng Khóa chính Khóa

ngoại của PHONG.SoPhong

MA:varchar 10

ThoiGian(ngay) Thời gian ở Int

h) [PhucVu].[DICHVU]

Column Name Description Datatype Length Allow Null

MaDV Mã dich vụ Khóa chính MA:varchar 10

i) [LeTan].[DATPHONG]

Column Name Description Datatype Length Allow Null

Phong Phòng cần đặt Khóa ngoại

của PHONG.SoPhong

TEN:varchar 50

NgayDat Ngày đặt phòng Datetime

NgayMuon Ngày mượn phòng Datetime

j) [PhucVu].[SUDUNGDV]

Trang 5

Column Name Description Datatype Length Allow Null

2 Sơ đồ quan hệ giữa các bảng.

III Mô tả các thủ tục, hàm và trigger.

+ Nhập MaDH, SoPhong, ThoiGian, Gia

+ Tính TinhTien = ThoiGian * Gia

+ Chèn dữ liệu vào bảng [LeTan].[CTHD]

b) Thủ tục nhập MUONTRAPHONG

Trang 6

- Tên : LeTan.proc_MUON

- Kết quả thực hiện : Nhập thông tin vào bảng [LeTan].[MUONTRAPHONG]

- Các bước thực hiện :

+ Nhập MaKH, SoPhong

+ Lấy NgayMuon = ngày hệ thống

+ Chèn dữ liệu vào bảng [LeTan].[MUONTRAPHONG]

+ Nhập vao MaKH, MaDV, SL

+ Kiểm tra khách hàng có trong bảng KHACHHANG hay không

Nếu có :

+ Lấy giá của dịch vụ từ bảng DICHVU+ Tính tiền = Gia*SL

+ Chèn dữ liệu vào bảng [PhucVu].[SUDUNGDV]

Ngược lại : Thông báo khách hàng không tồn tại

e) Thủ tục in hóa đơn thanh toán

- Tên : LeTan.proc_INHD

- Kết quả thực hiện : In hóa đơn cho khách hàng

- Các bước thực hiện :

+ Nhập MaKH

Trang 7

+ Kiểm tra khách hàng đã được lập hóa đơn chưa

Nếu có :

+ Lấy tên khách hàng từ bảng KHACHHANG+ Tính tổng tiền thuê phòng của khách hàng từ bảng HOADON vàCTHD

+Tính tiền sử dụng dịch vụ của khách hàng đó+ Tính tổng tiền phải trả = tiền thuê phòng + tiền sử dụng dịch vụNgược lại : thông báo khách hàng không tồn tại

+ Nhập mã nhân viên cần tìm kiếm

+ Tạo một bảng tạm có cấu trúc giống với bảng gốc ([QuanTri].[NHANVIEN])+ Chèn thông tin các nhân viên có cấp trên là mã nhân viên nhập vào

+ Tìm kiếm các nhân viên có cấp trên là mã nhân viên vừa chèn vào

+ Thông báo không thể tạo login

b) Trigger khi chèn dữ liệu vào bảng [LeTan].[DATPHONG]

- Tên : tg_DATPHONG

- Kết quả thực hiện :

+ Nhập thông tin vào bảng [LeTan].[DATPHONG]

+ Cập nhật TrangThai của phòng trong bảng [QuanLyPhong].[PHONG]

- Các bước thực hiện :

Trang 8

+ Lấy các giá trị HoTen,Tuoi, GioiTinh, DiaChi, NgheNghiep, SDT, CMND,SoPhong từ dữ liệu nhập vào.

+ Kiểm tra TrangThai của phòng ứng với giá trị SoPhong nhập vào trongbảng [QuanLyPhong].[PHONG] có còn trống không

Nếu có :

+ Chèn dữ liệu vào bảng [LeTan].[DATPHONG]

+ Cập nhật TrangThai của phòng trong bảng [QuanLyPhong].[PHONG] là ‘Da Dat’

Ngược lại :

+ Thông báo phòng đã có người ở

c) Trigger khi chèn dữ liệu vào bảng [LeTan] [MUONTRAPHONG]

- Tên : tg_MUON

- Kết quả thực hiện :

+ Nhập thông tin vào bảng [LeTan].[MUONTRAPHONG]

+ Cập nhật TrangThai của phòng trong bảng [QuanLyPhong].[PHONG]+ Xóa dữ liệu trong bảng [LeTan].[DATPHONG]

- Các bước thực hiện :

+ Lấy các giá trị MaKH, SoPhong, NgayMuon từ dữ liệu nhập vào

+ Nếu phòng còn trống thì :

Chèn dữ liệu vào bảng [LeTan].[MUONTRAPHONG]

Cập nhật trạng thái của phòng = full+ Nếu khách hàng đã đặt phòng trước thì :

Chèn dữ liệu vào bảng [LeTan].[MUONTRAPHONG]

Cập nhật trạng thái của phòng = fullXóa dữ liệu trong bảng [LeTan].[DATPHONG]

d) Trigger khi thực hiện trả phòng.

- Tên : tg_TRA

- Kết quả thực hiện :

+ Cập nhật NgayTra trong bảng [LeTan].[MUONTRAPHONG]

+ Cập nhật lại TrangThai cua phong = Trong

+ Chèn dữ liệu vào bảng [LeTan].[HOADON], [LeTan].[CTHD]

- Các bước thực hiện :

Trang 9

+ Nếu NgayTra có sự thay đổi từ NULL sang NOT NULL :

Cập nhật NgayTra bảng [LeTan].[MUONTRAPHONG] = ngày hệ thốngCập nhật lại TrangThai cua phong = Trong

Chèn dữ liệu vào bảng [LeTan].[HOADON], [LeTan].[CTHD]

+ Lấy các giá trị NgaySinh, NgayLam từ dữ liệu nhập vào

+ Tính tuổi của nhân viên đến thời điểm làm việc Nếu tuổi < 18 thì thông báongười này chưa đủ tuổi làm việc

IV Mô tả các View

1 VIEW tìm phòng trống

- Tên : QuanLyPhong.v_TimPhongTrong

- Kết quả thực hiện : Hiển thị danh sách các phòng còn trống

2 VIEW thống kê hóa đơn

1 loginQuanTri ANY PERMISSION

2 loginLeTan CONNECT SQL, VIEW ANY DATABASE

3 loginPhucVu CONNECT SQL, VIEW ANY DATABASE

4 loginQuanLyPhong CONNECT SQL, VIEW ANY DATABASE

5 loginKhachHang CONNECT SQL, VIEW ANY DATABASE

6 loginGD CONNECT SQL, VIEW ANY DATABASE

2 Tạo các user

Trang 10

STT Tên user Quyền

1 userQuanTri - Cập nhật bảng [QuanTri].[NHANVIEN]- Cấp quyền cho người sử dụng

1 db_QuanTri - Cập nhật bảng [QuanTri].[NHANVIEN]- Cấp quyền cho người sử dụng

2 db_NV - Có quyền SELECT trên các schema QuanTri, LeTan,PhucVu, QuanLyPhong

Trang 11

- db_QuanTri

Trang 13

- db_NV

Trang 15

- db_KH

Trang 17

b) Cấp phát quyền cho user

- userLeTan

Trang 18

- userKhachHang

- userGD

Trang 19

5 Cấp phát quyền cho role và user sử dụng các câu lệnh T-SQL

a) Cấp phát quyền cho role

- db_QuanTri

grant insert , update , delete on SCHEMA :: quantri to db_QuanTri deny insert , update , delete on SCHEMA :: quanlyphong to db_QuanTri deny insert , update , delete on SCHEMA :: letan to db_QuanTri deny insert , update , delete on SCHEMA :: phucvu to db_QuanTri

- db_NV

grant select on SCHEMA :: phucvu to db_NV

grant select on SCHEMA :: letan to db_NV

grant select on SCHEMA :: quanlyphong to db_NV

grant select on SCHEMA :: quantri to db_NV

- db_KH

grant select on quanlyphong phong to db_KH

grant select on quanlyphong giaphong to db_KH

grant select on phucvu dichvu to db_KH

grant select,insert on letan datphong to db_KH

b) Cấp phát quyền cho user

grant select on letan v_ThongKe to userGD

VI Mã nguồn một số thủ tục, hàm, trigger.

DECLARE @Tien money

SET @Tien = ( @ThoiGian * @Gia )

INSERT INTO [LeTan] [CTHD]

values ( @mahd , @SoPhong , @ThoiGian , @Gia , @Tien )

Trang 20

if exists ( select * from [LeTan] [MUONTRAPHONG]

where SoPhong = @phong and NgayTra is null)

BEGIN

UPDATE [LeTan] [MUONTRAPHONG] SET NgayTra = getdate ()

WHERE SoPhong = @phong

declare @tien money

declare @gia money

select @gia = GiaDV from phucvu dichvu where MaDV = @madv set @tien = @gia * @sl

insert into phucvu sudungdv values ( @makh , @madv , @sl , @tien ) END

else

BEGIN

print 'KHACH HANG K TON TAI!!!!!!!'

END

e) Thủ tục in hóa đơn thanh toán

CREATE PROC LeTan proc_INHD ( @makh MA )

WITH EXECUTE AS CALLER

Trang 21

print ' =================='

declare @ten TEN

select @ten = HoTen from letan khachhang where MaKH = @makh

print 'Ho ten khach hang : ' + @ten

declare @mahd int

select @mahd = MaHD from letan hoadon where MaKh = @makh

declare @tienphong money

select @tienphong = SUM ( ThanhTien ) from letan CTHD

where MaHD = @mahd

print 'Tien phong : ' + cast ( @tienphong as

varchar ( 20 ))+ ' VND'

declare @tiendv money

select @tiendv = SUM ( ThanhTien ) from phucvu sudungdv

where MaKH = @makh

print 'Tien su dung dich vu : ' + cast ( @tiendv as varchar ( 20 ))

declare @tong money

set @tong = @tienphong + @tiendv

print 'Tong tien phai tra : ' + cast ( @tong as varchar ( 20 ))+ ' VND'

END

else

print 'KHACH HANG K TON TAI'

2 Hàm

Hàm tìm kiếm, thống kê trên dữ liệu có quan hệ đa cấp

CREATE FUNCTION fn_TimKiem ( @MaNV MA )

RETURNS

@Temple TABLE ( MaNV MA PRIMARY KEY ,

HoTen TEN not null,

NgaySinh datetime ,

DiaChi varchar ( 100 ),

NgayLam datetime not null,

ChucVu varchar ( 20 ) not null,

CapTren MA )

AS

BEGIN

DECLARE @RowsAdded int

DECLARE @reports TABLE ( MaNV MA PRIMARY KEY ,

HoTen TEN not null,

NgaySinh datetime ,

DiaChi varchar ( 100 ),

NgayLam datetime not null,

ChucVu varchar ( 20 ) not null,

CapTren MA ,

processed tinyint default 0 )

INSERT @reports SELECT MaNV , HoTen , NgaySinh , DiaChi ,

NgayLam , ChucVu , CapTren , 0

FROM [QuanTri] [NHANVIEN] WHERE MaNV = @MaNV

Trang 22

SET @RowsAdded = @@rowcount

a) Trigger cấm không cho tạo LOGIN

CREATE TRIGGER tg_TaoLogin ON ALL SERVER

FOR CREATE_LOGIN

AS

Rollback

Begin Tran Save_to_data_log

INSERT INTO [DoAn.QLKS] [dbo] [TaoLogin] ( [LogDate] , [UserName] ) VALUES ( GetDate (), SYSTEM_USER )

Commit tran Save_to_data_log

RAISERROR ( 'Co loi: KHONG THE TAO MOI LOGIN!!!!' , 16 , 1 )

b) Trigger khi chèn dữ liệu vào bảng [LeTan].[DATPHONG]

CREATE TRIGGER tg_DATPHONG ON [LeTan] [DATPHONG]

INSTEAD OF INSERT

AS

declare @ten TEN

declare @tuoi int

declare @gioitinh varchar ( 3 )

declare @diachi varchar ( 100 )

declare @nghe varchar ( 100 )

declare @sdt varchar ( 11 )

declare @cmnd varchar ( 9 )

declare @phong MA

select @ten = HoTen , @tuoi = Tuoi , @gioitinh = GioiTinh ,

@diachi = DiaChi , @nghe = NgheNghiep , @sdt = SDT , @cmnd = CMND ,

@phong = Phong from inserted

if exists ( select * from [QuanLyPhong] [PHONG] where

SoPhong = @phong and TrangThai = 'Trong' )

BEGIN

Trang 23

insert into [LeTan] [DATPHONG]

values ( @ten , @tuoi , @gioitinh , @diachi , @nghe , @sdt , @cmnd , @phong ,

update [QuanLyPhong] [PHONG] set TrangThai = 'Da Dat'

where SoPhong = @phong

c) Trigger khi chèn dữ liệu vào bảng [LeTan].[MUONTRAPHONG]

CREATE TRIGGER tg_MUON ON [LeTan] [MUONTRAPHONG]

select @cmnd = CMND from [LeTan] [KHACHHANG] where MaKH = @ma

if exists ( select * from [QuanLyPhong] [PHONG]

where SoPhong = @phong and TrangThai = 'Trong' )

BEGIN

insert into [LeTan] [MUONTRAPHONG]

values ( @ma , @phong , getdate (),null)

update [QuanLyPhong] [PHONG] set TrangThai = 'full'

where SoPhong = @phong

END

else if exists ( select * from [LeTan] [DATPHONG]

where CMND = @cmnd )

BEGIN

insert into [LeTan] [MUONTRAPHONG]

values ( @ma , @phong , getdate (),null)

update [QuanLyPhong] [PHONG] set TrangThai = 'full'

where SoPhong = @phong

delete from [LeTan] [DATPHONG]

where CMND = @cmnd and Phong = @phong

d) Trigger khi thực hiện trả phòng

CREATE TRIGGER tg_TRA ON [LeTan] [MUONTRAPHONG]

Trang 24

INSTEAD OF UPDATE

AS

declare @ma MA

declare @phong MA

declare @ngaymuon datetime

declare @ngaytra datetime

select @ma = MaKH , @phong = SoPhong , @ngaymuon = NgayMuon from inserted

if exists ( select * from deleted where NgayTra is null) AND

exists ( select * from inserted where NgayTra is not null)

BEGIN

update [LeTan] [MUONTRAPHONG] set NgayTra = getdate ()

where SoPhong = @phong

update [QuanLyPhong] [PHONG] set TrangThai = default

where SoPhong = @phong

declare @mahd int

declare @thoigian int

declare @gia money

declare @loaiphong varchar ( 20 )

select @ngaytra = NgayTra from letan muontraphong

where SoPhong = @phong

if not exists ( select MaKH from letan HOADON where MaKH = @ma ) BEGIN

insert into [LeTan] [HOADON] values ( @ma , getdate ())

select @mahd = MaHD from letan hoadon where MaKH = @ma select @loaiphong = LoaiPhong from [QuanLyPhong] [PHONG] where SoPhong = @phong

select @gia = Gia from [QuanLyPhong] [GIAPHONG]

where LoaiPhong = @loaiphong

select @thoigian = DATEDIFF ( day , @ngaymuon , @ngaytra )

select @gia = Gia from [QuanLyPhong] [GIAPHONG]

where LoaiPhong = @loaiphong

select @thoigian = DATEDIFF ( day , @ngaymuon , @ngaytra )

if ( @thoigian > 0 )

BEGIN

exec proc_NhapCTHD @mahd , @phong , @thoigian , @gia END

Trang 25

else BEGIN

set @thoigian = @thoigian + 1 exec proc_NhapCTHD @mahd , @phong , @thoigian , @gia END

END

END

else

BEGIN

update [LeTan] [MUONTRAPHONG]

set MaKH = @ma , SoPhong = @phong , NgayMuon = @ngaymuon

where SoPhong = @phong

END

e) Trigger nhập bảng [QuanTri].[NHANVIEN]

CREATE TRIGGER tg_NV ON [QuanTri] [NHANVIEN]

FOR INSERT , UPDATE

AS

declare @ns datetime

declare @ngaylam datetime

declare @tuoi int

select @ns = NgaySinh , @ngaylam = NgayLam from inserted

select @tuoi = DATEDIFF ( year , @ns , @ngaylam )

Đăng nhập với userQuanTri

execute as user = 'userQuanTri'

Nhân viên quản trị cập nhật thêm danh sách nhân viên mới

insert quantri nhanvien values ( 'NV4' , 'Nguyen Van

update quantri nhanvien set HoTen = 'Tran Trung B' where MaNV

delete from quantri nhanvien where MaNV = 'NV4'

Nhân viên quản tri cấp quyền cho người sử dụng

grant select on phucvu DICHVU to userKhachHang

Đăng nhập với userLeTan

revert

execute as user = 'userLeTan'

Nhân viên lễ tân nhập các thông tin về khách hàng khi khách hàng có nhu cầu thuê phòng

Trang 26

insert letan khachhang values ( 'KH4' , 'Nguyen Van

update letan khachhang set HoTen = 'Tran Trung B' where MaKH

delete from letan khachhang where MaKH = 'KH4'

Nhân viên lễ tân tiếp nhận yêu cầu thuê phòng và trả phòng của khách hàng

execute as user = 'userPhucVu'

Nhân viên phục vu cập nhật thông tin về các dịch vụ và việc sử dụng các dịch vụ của khách hàng

insert into phucvu dichvu values ( 'DT' , 'Dien

update phucvu dichvu set GiaDV = 1800 where MaDV = 'DT'

delete from phucvu dichvu where MaDV = 'DT'

exec proc_DV 'KH1' , 'DT' , 5

Đăng nhập với userQuanLyPhong

revert

execute as user = 'userQuanLyPhong'

Nhân viên quản lý phòng cập nhật thông tin về phòng và giá phòng

insert into quanlyphong phong values ( '0910' , 30 , 'N5' , 2 , 'Loai

update quanlyphong phong set LoaiPhong = 'Loai 2' where

SoPhong = '0910'

delete from quanlyphong phong where SoPhong = '0910'

insert into quanlyphong giaphong values ( 'Loai 1' , 100000 ) update quanlyphong giaphong set Gia = 120000 where

LoaiPhong = 'Loai 1'

delete from quanlyphong giaphong where LoaiPhong = 'Loai 1'

select * from QuanLyPhong v_timphongtrong

Đăng nhập với userGD

revert

execute as user = 'userGD'

Giám đốc được quyền xem tất cả các hoạt động của khách sạn

select * from quantri nhanvien

select * from letan khachhang

select * from letan datphong

select * from letan muontraphong

select * from letan hoadon

Ngày đăng: 23/10/2014, 22:50

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w