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

Đồ án cơ sở dữ liệu, khoa công nghệ thông tin (7)

20 15 0

Đ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

Khoa Công nghệ Thông tin Bộ môn Công nghệ Phần mềm o0o BAO CAO TIÊN ĐÔ BUÔI THÔNG Đề tài: Quản lý khách sạn Nhóm thực hiện: 06 – lớp 63IT3 Giáo viên hướng dẫn: Nguyễn Đình Anh Các thành viên: 1) 2) 3) Đỡ Mạnh T́n (Nhóm trưởng) Đinh Kim Bảo Long Hồng Xn Tiến 1.Mơ tả toán Khách hàng muốn đặt phòng tại khách sạn, cần lựa chọn loại phịng(phịng đơn, phịng đơi,giường lớn, giường nhỏ … ) phương thức thuê phòng (thuê theo giờ, thuê qua ngày ,thuê qua đêm) lễ tân kiểm tra xem yêu cầu khách hàng có đáp ứng hay không, nếu không đáp ứng thông báo lại cho khách, nếu đáp ứng thì kiểm tra chứng minh thư, giữ lại chứng minh thư giữ tiền cọc bắt đầu tính vào, sau hỏi khách có cần đồ ăn đồ uống gì khơng đưa khách chìa khóa phịng Khi khách muốn trả phòng thì lễ tân gọi nhân viên buồng phịng lên kiểm tra lại phịng, tính xem khách có sử dụng đồ có phí khách sạn khơng xong thông báo xuống Lễ tân kiểm tra thông tin phịng khách th tính tổng hóa đơn từ lúc khách bắt đầu nhận phịng, trả phịng phí phát sinh Đưa khách hóa đơn, chứng minh thư toán Trường hợp khách muốn cọc trước phần tiền thì hệ thống lưu lại số tiền cọc trước khách Trường hợp kiểm tra phòng khách muốn trả mà thấy thiếu đồ hỏng đồ khách sạn thì tính tiền thiệt hại thêm vào phí phát sinh Trong trường hợp khách muốn nợ tiền thì lễ tân ghi nhận tiền khách nợ lưu vào hệ thống, hệ thống lưu lại thông tin khách nợ, số tiền nợ thời gian nợ Trường hợp khách số đặt thì hệ thống tính phụ thu theo mức giá có sẵn, nếu khách nhiều thì hệ thống chuyển đổi phương thức th phịng khách Mỡi lần chuyển ca hệ thống tính tổng tiền ca trước giao lại cho ca sau Cuối mỗi ngày hệ thống đưa báo cáo ngày đấy , cuối mỗi tháng hệ thống đưa báo cáo tháng đấy 2.Phân tích dữ liệu vẽ sơ đồ thực thể liên kết a Lập bảng phân tích Động từ + bổ ngữ Đặt + phòng Chọn + loại phòng Chọn + phương thức thuê Kiểm tra + yêu cầu Giữ + chứng minh thư Giữ + tiền cọc Tính + vào Hỏi + nhu cầu ăn uống Đưa + chìa khóa Trả + phịng Gọi + buồng phịng Kiểm tra + phịng Thanh tốn + hóa đơn Cọc + tiền Ghi nhận + tiền cọc Nợ + tiền Ghi nhận + tiền nợ Tính + phụ thu Chuyển đổi + phương thức thuê Chuyển + ca Tính + tiền ca Danh từ Tác nhân Tác nhân Hồ sơ liệu Hồ sơ liệu thuê Hồ sơ liệu Khách Phòng Loại phòng Phương thức phòng Lê tân Chứng minh thư Tiền cọc Đồ ăn uống Chìa khóa phịng Nhân viên buồng phịng Hóa đơn Tiền nợ Thời gian ở Giờ phụ thu Ca Báo cáo Phí phát sinh Tác nhân Hồ sơ liệu Hồ sơ liệu Hồ sơ liệu = Tác nhân Hồ sơ liệu Hồ sơ liệu Hồ sơ liệu Hồ sơ liệu = Hồ sơ liệu Hồ sơ liệu Khách Nhân viên Phịng Hóa đơn Họ tên khách x Số điện thoại x Số chứng minh thư x Địa x Mã nhân viên Họ tên nhân viên Chức vụ Mã ca Lương tháng Mã phòng Loại phòng Đơn giá Trạng thái phịng Mã hóa đơn Mã nhân viên Mã khách hang Thời gian vào x x x x x x x x x x x x x Thời gian Tổng tiền x x Số lượng phòng x Tiền cọc x Tiền nợ x Tên cố x Mã cố x Phí phát sinh x Loại phịng x Mã phịng x Phương thức tốn x Phương thức th x Mã dịch vụ Dịch vụ x Số lượng dịch vụ x Thời gian tạo hóa đơn x Mã dịch vụ x Tên dịch vụ x Đơn giá x Mã ca x Mã nhân viên Ca làm Lương theo ca x x Ngày Sự cố phát sinh x Tên cố x Mã cố x Phí phát sinh x b.Vẽ sơ đồ thực thể liên kết c.Mô hình quan hệ(dạng 3NF) Khách (số điện thoại, họ tên, địa chỉ, chứng minh thư) Hóa đơn(mã hóa đơn,số lượng phòng, tổng tiền, số điện thoại,thời gian lập hóa đơn,phương thức toán,tiền cọc,tiền nợ, mã nhân viên, tình trạng) Phân quyền(ID, tên, ghi chú) Nhân viên(mã nhân viên,họ tên nhân viên, chức vụ,ID) Ca làm(mã ca, lương theo ca) Phòng(mã phòng, mã loại phòng, trạng thái) Loại phòng (mã loại phòng, tên loại phòng) Phương thức thuê (mã phương thức thuê, tên phương thức thuê) Dịch vu(mã dịch vụ, tên dịch vụ, đơn giá dịch vụ) Sự cố phát sinh(mã cố, tên cố,phí phát sinh) Bảng cơng(mã nhân viên, mã ca,ngày) Chi tiết loại phòng (mã loại phòng, mã phương thức thuê,đơn giá) Chi tiết hóa đơn(mã hóa đơn, mã phòng, thời gian dự kiến, thời gian ra, thời gian vào, mã phương thức thuê) Chi tiết dịch vụ phòng(mã hóa đơn, mã phòng, mã dịch dịch vụ,số lượng dịch vụ) Chi tiết cố phát sinh(mã hóa đơn, mã phòng, mã cố, số lượng cố) 3.Mô tả các ràng buộc Tên trường Số điện thoại Họ tên Chứng minh thư Địa Tên trường Mã hóa đơn Số lượng phòng Tổng tiền Số điện thoại Mã nhân viên Tiền cọc Tiền nợ Phương thức tốn Thời gian lập hóa đơn Tình trạng Tên trường Kiểu liệu char nVarchar char nVarchar Khách Kích thước Kiểu liệu Int Identity(1,1) Tinyint money char Smallint Money money Bit 10 50 12 50 Ràng buộc Khóa Not null Hóa đơn Kích thước 10 Ràng buộc Khóa Not null Not null Khóa ngoại Khóa ngoại Not null Bit Notnull ID Tên Nvarchar Phân quyền Kích thước Ràng buộc 300 Ghi chú Not null dateTime Kiểu liệu Int Ghi Primary key Not null, Unique Giá trị mặc định Ghi Mã phân quyền Tên quyền Ghi Nvarchar Tên trường Mã nhân viên Họ tên Chức vụ Tài khoản Mật PhanQuyenI D Max Nhân viên Kiểu liệu Kích thước Ràng buộc Smallint nVarchar nVarchar Varchar Varchar Int Tên trường Kiểu liệu Mã ca Char Lương theo ca money Tên trường Mã phòng Mã loại phòng Trạng thái Tên trường Mã loại phòng Ghi Kiểu liệu Char Char Int Kiểu liệu Char 50 50 300 300 Ghi Giá trị mặc đinh Khóa >0 Not null Not null Not null Tài khoản Not null Mật Foreign Mã phân Key quyền Ca làm Kích thước Ràng buộc Khóa Not null Ghi Phịng Kích thước Ràng buộc Khóa Khóa ngoại Not null Ghi Loại phịng Kích thước Ràng buộc Khóa Ghi Tên loại phòng Char Tên trường Mã phương thức thuê Tên phương thức thuê Tên trường Mã dịch vụ Tên dịch vụ Đơn giá dịch vụ Tên trường Mã cố Tên cố Phí phát sinh Tên trường Mã nhân viên Mã ca Ngày 20 Not null Phương thức thuê Kiểu Kích thước Ràng buộc liệu Char Khóa nVarchar Not null Kiểu liệu Char nVarchar money Dịch vụ Kích thước 20 Ràng buộc Khóa Not null Sự cố phát sinh Kiểu liệu Kích thước Ràng buộc Char Khóa nVarchar 20 Not null money Kiểu liệu Smallint Char dateTime Bảng cơng Kích thước Ràng buộc Khóa Khóa Not null Ghi Ghi Ghi chú Ghi Tên trường Mã loại phòng Mã phương thức thuê Đơn giá Chi tiết loại phòng Kiểu liệu Kích thước Char Char money Chi tiết hóa đơn Tên trường Kiểu liệu Kích thước Mã hóa đơn Int Mã phòng Char Mã phương thức thuê Char Thời gian dự kiến Date time Thời gian vào Date time Thời gian Date time Ràng buộc Khóa Khóa Not null Ràng buộc Khóa Khóa Khóa Chi tiết dịch vụ phịng Tên trường Kiểu liệu Kích thước Ràng buộc Mã hóa đơn Int Khóa Mã phịng Char Khóa Mã dịch vụ Char Khóa Số lượng dịch vụ tinyint Tên trường Mã hóa đơn Mã phòng Mã cố Số lượng cố Chi tiết cố phát sinh Kiểu Kích thước Ràng buộc liệu Int Khóa Char Khóa Char Khóa tinyint Ghi Ghi chú Ghi Ghi Các vấn đề nghiệp vụ của toán cách xử lý a Các nghiệp vụ Quản lý thơng tin(thêm, sửa, xóa) : phịng, khách, dịch vụ, ca làm, loại phòng, phương thức thuê, cố Chức đặt phịng: tạo hóa đơn(tạo mã hóa đơn(tự tăng), vào, thông tin khách hàng(sdt), thông tin nhân viên(MaNV)), chọn phòng , chọn phương thức thuê, ghi nhận tiền cọc Chức cập nhật hóa đơn: thêm dịch vụ số lượng sử dụng, cập nhật số lượng dịch vụ , đổi phịng Chức trả phịng: in hóa đơn(tính tổng tiền(tiền dịch vụ, tiền phịng, tiền phát sinh),in hóa đơn, ra), ghi nhận tiền nợ, chọn phương thức toán Chức báo cáo : báo cáo doanh thu (ca, ngày, tháng), thông kê lương nhân viên Chức đăng nhập: ghi nhận nhân viên, ca làm b Cách xử lý Quản lý thơng tin(thêm, sửa, xóa) : phòng, khách, dịch vụ, ca làm, loại phòng, phương thức thuê, cố - Thêm khách hàng Create ProC Insert_Khachhang @SoDT Char(10), @Hoten nvarchar(50), @CMT char(12), @DiaChi nvarchar(50) As Begin Insert Into KhachHang(SoDT,Hoten,CMT,DiaChi) Values(@SoDT, @Hoten, @CMT, @DiaChi) End; - Sửa thông tin khách hàng Create ProC Update_Khachhang @SoDT Char(10), @Hoten nvarchar(50), @CMT char(12), @DiaChi nvarchar(50) As Update KhachHang Set SoDT=@SoDT, Hoten=@Hoten, CMT=@CMT, DiaChi=@DiaChi Where SoDT=@SoDT End; - Xóa thơng tin khách hàng Create ProC Delete_Khachhang @SoDT Char(10) As Delete From KhachHang Where SoDT=@SoDT End; - Các table lại làm tương tự table khách hàng Chức đặt phòng: tạo hóa đơn(tạo mã hóa đơn, vào, thơng tin khách hàng, thơng tin nhân viên), chọn phịng , chọn phương thức thuê, ghi nhận tiền cọc + Sử dụng lệnh Insert Into để ghi nhận liệu vào bảng Hóa Đơn Chi Tiết Hóa Đơn ví dụ như” Insert Insert Insert Insert Insert Insert Insert Into Into Into Into Into Into Into HoaDon Values('0987654321','1','100000','0','0',GETDATE(),0) HoaDon Values('0987654324','2','500000','0','0',GETDATE(),0) HoaDon Values('0987654323','3','700000','0','0',GETDATE(),0) CTHD Values('7','P2003','N','2021-10-06',GETDATE(),null) CTHD Values('7','P2001','N','2021-10-05',GETDATE(),null) CTHD Values('8','P2005','D','2021-10-04',GETDATE(),null) CTHD Values('9','P2007','N','2021-10-06',GETDATE(),null) + Khi thêm Phịng vào Hóa Đơn (insert vào bảng CTHD) thì trạng thái Phịng cập nhật lại bằng trigger sau: Create Trigger Thm_CTHD ON CTHD After Insert As Begin Update Phong Set TrangThai = From Phong Join inserted ON Phong.MaPhong = inserted.MaPhong END Chức cập nhật hóa đơn: thêm dịch vụ số lượng sử dụng, cập nhật số lượng dịch vụ, đổi phòng - Phần thêm dịch vụ: + Sử dụng: lệnh INSERT INTO ChiTietDichVuPhong VALUES (…) + Nhưng câu lệnh INSERT gặp vấn đề thêm dịch vụ vào phịng khơng thuộc hóa đơn(Thêm phịng ở chức đặt phịng) Nên cần phải có TRIGGER để ngăn chặn điều + Khi sử dụng lệnh INSERT thì giá trị số lượng dịch vụ cộng thêm vào HoaDon.TongTien nên ta sử dụng trigger after insert + Tạo trigger trg_insertCTDVP: CREATE TRIGGER trg_insertCTDVP ON dbo.ChiTietDichVuPhong For INSERT AS BEGIN DECLARE @count INT = SELECT @count = Count(*) FROM inserted WHERE EXISTS (SELECT * FROM CTHD WHERE MaHD = inserted.MaHD AND MaPhong = inserted.MaPhong) IF (@count = 0) BEGIN PRINT N'Không thêm được vì không có hóa đơn này hoặc phòng này hóa đơn' ROLLBACK TRAN END END + Tạo trigger trg_afterinsertCTDVP: CREATE TRIGGER trg_afterinsertCTDVP ON dbo.ChiTietDichVuPhong AFTER INSERT AS BEGIN UPDATE HoaDon SET TongTien = TongTien + (SELECT SoLuongDichVu from inserted WHERE MaHD = inserted.MaHD AND MaPhong = inserted.MaPhong)* (SELECT DonGiaDichVu FROM DichVu JOIN inserted on DichVu.MaDichVu = inserted.MaDichVu) FROM HoaDon JOIN inserted on HoaDon.MaHD = inserted.MaHD END - Cập nhật số lượng dịch vụ: Cập nhật số lượng ở bảng CTDVP cập nhật lại vào HoaDon.TongTien + Sử dụng: Stored procedure để ta dễ dàng thực thi Dùng trigger để cập nhật lại TongTien bảng HoaDon + Để thực thi gọi : EXEC usp_updateCTDVP MaHD, MaPhong, MaDV, SoLuongThem + Tạo Stored Procedure usp_apdateCTDVP: CREATE PROC usp_updateCTDVP @Mahd INT, @MaPhong CHAR(5), @MaDV CHAR(3), @so TINYINT AS BEGIN UPDATE ChiTietDichVuPhong SET SoLuongDichVu = @so WHERE MaHD = @Mahd AND MaPhong = @MaPhong AND MaDichVu = @MaDV END + Tạo trigger trg_afterupdateCTDVP : CREATE TRIGGER trg_afterupdateCTDVP ON dbo.ChiTietDichVuPhong AFTER UPDATE AS BEGIN UPDATE HoaDon SET TongTien = TongTien + ( ( SELECT SoLuongDichVu FROM inserted WHERE MaHD = inserted.MaHD and MaPhong = inserted.MaPhong)( SELECT SoLuongDichVu FROM deleted WHERE MaHD = deleted.MaHD and MaPhong = deleted.MaPhong) END - ) * (SELECT DonGiaDichVu FROM DichVu JOIN inserted on DichVu.MaDichVu = inserted.MaDichVu) FROM HoaDon JOIN inserted on HoaDon.MaHD = inserted.MaHD Trường hợp đổi phòng: + Cập nhật cố tại phịng vào bảng ChiTietSuCoPhatSinh nếu có bằng lệnh Insert Và cũng cần có Trigger(trg_insertCTSCPS) để tránh lỡi Insert vào bảng phần thêm dịch vụ tại bảng ChiTietDichVuPhong + Cập nhật lại HoaDon.TongTien • Trigger trg_insertCTSCPS: CREATE TRIGGER trg_insertCTSCPS ON dbo.ChiTietSuCoPhatSinh For INSERT AS BEGIN DECLARE @count INT = SELECT @count = Count(*) FROM inserted WHERE EXISTS (SELECT * FROM CTHD WHERE MaHD = inserted.MaHD AND MaPhong = inserted.MaPhong) IF (@count = 0) BEGIN PRINT N'Không thêm được vì không có hóa đơn này hoặc phòng này hóa đơn' ROLLBACK TRAN END END • Trigger trg_afterinsertCTSCPS CREATE TRIGGER trg_afterinsertCTSCPS ON dbo.ChiTietSuCoPhatSinh AFTER INSERT AS BEGIN UPDATE HoaDon SET TongTien = TongTien + (SELECT SoLuongSuCo FROM inserted WHERE MaHD = inserted.MaHD and MaPhong = inserted.MaPhong)* (SELECT PhiPhatSinh FROM SuCoPhatSinh join inserted on SuCoPhatSinh.MaSuCo = inserted.MaSuCo) FROM HoaDon JOIN inserted on HoaDon.MaHD = inserted.MaHD END + Tiếp theo ta cần phải thay đổi trạng thái từ (đang thuê) phòng dùng -1 (dọn phòng, sửa chữa) Bằng cách execute usp_updateTTP(stored procedure): CREATE PROC usp_updateTTP @MaPhong CHAR(5), @TrangThai int AS BEGIN UPDATE Phong SET TrangThai = @TrangThai WHERE MaPhong = @MaPhong END + Chọn lại phòng với MaHD tại (với thời gian vào set thời gian đổi phòng) Chức trả phòng: tính tổng tiền(tiền dịch vụ + tiền phịng + tiền phát sinh), ghi nhận ra, ghi nhận tiền nợ, chọn phương thức tốn, in hóa đơn + Phần tính tổng tiền tự động tính nhờ trigger(phần trên) + Ghi nhận ra, tiền nợ, chọn phương thức tốn sử dụng lệnh update thơng thường + Phần in hóa đơn: • X́t tất cả thơng tin hóa đơn bản biểu mẫu(làm sau) , tự động cập nhật lại trạng thái phòng -1(trạng thái dọn-sửa chữa) • Sau in hóa đơn cập nhật lại tình trạng hóa đơn từ 0(chưa toán) thành 1(đã toán) Chức báo cáo : báo cáo doanh thu (ca, ngày, tháng), thông kê lương nhân viên Chức đăng nhập(Login): ghi nhận nhân viên, ca làm thêm thông tin nhân viên - Login GO if( OBJECT_DEFINITION('ft_login') is not null) drop function ft_login; GO CREATE FUNCTION ft_Login(@taikhoan varchar(300), @matkhau varchar(300)) RETURNS smallint AS BEGIN if (@taikhoan is null or @matkhau is null) begin return -1 end else begin IF ( select MaNV from NhanVien where NhanVien.TaiKhoan=@taikhoan and NhanVien.MatKhau=@matkhau) is null RETURN -3 ELSE BEGIN RETURN(select top(1) MaNV from NhanVien where NhanVien.TaiKhoan=@taikhoan and NhanVien.MatKhau=@matkhau order by MaNV) end end return -1 end - Thêm nhân viên: GO if( OBJECT_DEFINITION('ft_login') is not null) drop function ft_login; GO CREATE FUNCTION ft_Login(@taikhoan varchar(300), @matkhau varchar(300)) RETURNS smallint AS BEGIN if (@taikhoan is null or @matkhau is null) begin return -1 end else begin IF ( select MaNV from NhanVien where NhanVien.TaiKhoan=@taikhoan and NhanVien.MatKhau=@matkhau) is null RETURN -3 ELSE BEGIN RETURN(select top(1) MaNV from NhanVien where NhanVien.TaiKhoan=@taikhoan and NhanVien.MatKhau=@matkhau order by MaNV) end end return -1 end go select * from NhanVien select dbo.ft_Login(2 , 3) go proc: create proc pr_login @taikhoan varchar(300), @matkhau varchar(300) as begin declare @manhanvien smallint set @manhanvien= dbo.ft_Login(@taikhoan , @matkhau) declare @thoigian int set @thoigian=DATENAME(hour,getdate()) print @thoigian declare @maca char declare @ngay date set @ngay = GETDATE() print @ngay if(@thoigian>5 and @thoigian < 13 ) begin set @maca = 'N' insert into BangCong(MaNV,MaCa,Ngay) values (@manhanvien,@maca,@ngay) end else if(@thoigian >=13 and @thoigian < 21) begin set @maca = 'C' insert into BangCong(MaNV,MaCa,Ngay) values (@manhanvien,@maca,@ngay) end else begin set @maca = 'D' insert into BangCong(MaNV,MaCa,Ngay) values (@manhanvien,@maca,@ngay) end End - Xóa tài khoản nhân viên: go CREATE PROCEDURE pr_delete_nhanvien @Result int output, @Cur_PhanQuyen_ID smallint, @manhanvien smallint as begin if(@cur_phanquyen_id = 1) begin begin try delete from NhanVien where @manhanvien = MaNV set @Result=1 cong end try begin catch set @Result=-1 that bai end catch end else begin end end set @Result=-4 ban khong co quyen ... thiếu đồ hỏng đồ khách sạn thì tính tiền thiệt hại thêm vào phí phát sinh Trong trường hợp khách muốn nợ tiền thì lễ tân ghi nhận tiền khách nợ lưu vào hệ thống, hệ thống lưu lại thông tin. .. lý thông tin( thêm, sửa, xóa) : phịng, khách, dịch vụ, ca làm, loại phòng, phương thức thuê, cố Chức đặt phòng: tạo hóa đơn(tạo mã hóa đơn(tự tăng), vào, thơng tin khách hàng(sdt), thơng tin. .. chọn phương thức toán Chức báo cáo : báo cáo doanh thu (ca, ngày, tháng), thông kê lương nhân viên Chức đăng nhập: ghi nhận nhân viên, ca làm b Cách xử lý Quản lý thơng tin( thêm, sửa, xóa)

Ngày đăng: 13/10/2021, 10:46

Xem thêm:

TỪ KHÓA LIÊN QUAN

w