Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 128 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
128
Dung lượng
448,44 KB
Nội dung
TRƯỜNG ĐẠI HỌC XÂY DỰNG BÁO CÁO ĐỒ ÁN CƠ SỞ DỮ LIỆU NÂNG CAO Đề tài: Quản lý thư viện Giảng viên hướng dẫn: Ths.Nguyễn Đình Anh Nhóm : ● Lê Anh Tuấn - 223463 ● Nguyễn Minh Hiếu - 72463 ● Trương Ngọc Vượng - 238463 Lớp : 63IT3 Khoa : Công Nghệ Thông Tin PHÁT BIỂU BÀI TỐN 1.1 Tóm tắt dự án: Thư viện sách khu dành cho người (từ học sinh, sinh viên, tiến sĩ, giáo sư, người cao tuổi, ) có nhu cầu việc tìm hiểu thơng tin khoa học kỹ thuật, thẩm mỹ, từ tới chun sâu tìm cho thể lọai sách phù hợp với nhu cầu chun mơn cần tìm hiểu với hình thức chính: đọc chỗ mượn nhà để nghiên cứu khoảng thời gian ngắn theo quy định riêng thư viện cụ thể Khi mượn, sinh viên phải sử dụng thẻ thư viện chứa thông tin liên quan Mỗi lần mượn sách ghi nhận phiếu mượn (bằng giấy) lưu lại lịch sử hệ thống Với mục đích giúp cho việc quản lí sách dễ dàng hơn, chúng em muốn xây dựng hệ thống quản lí thư viện dành cho thủ thư quản lý Hệ thống lưu trữ, xử lý việc mượn trả sách sinh viên quản lý sách thư viện theo quy chế trường Hệ thống xây dựng ngôn ngữ lập trình Java SQL Server, cài đặt máy tính cá nhân 1.2 Ý tưởng hệ thống quản lý thư viện: ✔ Mỗi sách có mã sách để lưu trữ hệ thống (sách giống mã sách) ✔ Mỗi độc giả (sinh viên) cấp thẻ thành viên ✔ Độc giả muốn mượn sách lấy sách muốn mượn kệ mang đưa thủ thư tiến hành trình mượn ✔ Khi độc giả trả sách: xác nhận thẻ độc giả, xác định phiếu mượn tiến hành trả sách ✔ Sách bị trả trễ lịch hẹn hỏng bị phạt 1.3 Nhận xét DECLARE @manv VARCHAR(10) SELECT @manv=dlt.MANV FROM Deleted dlt DELETE FROM dbo.NHANVIEN WHERE MANV=@manv END Thêm phiếu mượn Trigger CREATE TRIGGER tg_ThemPhieuMuon ON dbo.PHIEUMUON INSTEAD OF INSERT AS BEGIN DECLARE @manv INT,@mssv INT,@ngayhentra DATE,@ngaymuon DATE SELECT @manv=ins.MANV FROM Inserted ins SELECT @mssv=ins.MSSV FROM Inserted ins SET @ngaymuon=GETDATE() SET @ngayhentra=DATEADD(MONTH,2,@ngaymuon) IF(@manv NOT IN (SELECT MANV FROM dbo.NhanVien)) BEGIN PRINT 'Ma nhan vien khong ton tai' ROLLBACK TRAN END ELSE IF(@mssv NOT IN (SELECT MSSV FROM dbo.SINHVIEN)) BEGIN PRINT 'Ma so sinh vien khong ton tai' ROLLBACK TRAN END ELSE BEGIN INSERT INTO dbo.PHIEUMUON VALUES ( @ngaymuon, NGAYMUON - date @ngayhentra, 0, NGAYHENTRA - date SOLUONG - int @manv, MANV - int @mssv MSSV - int ) END END Sửa phiếu Trigger CREATE TRIGGER tg_SuaPhieuMuon ON dbo.PHIEUMUON mượn FOR UPDATE AS BEGIN DECLARE @maphieumuontruoc INT,@maphieumuonsau INT DECLARE @manv INT,@mssv INT,@ngayhentratruoc DATE, @ngayhentrasau DATE,@ngaymuontruoc DATE,@ngaymuonsau DATE SELECT @maphieumuonsau=ins.MAPHIEUMUON FROM Inserted ins SELECT @maphieumuontruoc=dlt.MAPHIEUMUON FROM Deleted dlt SELECT @manv=ins.MANV FROM Inserted ins SELECT @mssv=ins.MSSV FROM Inserted ins SELECT @ngayhentratruoc=dlt.NGAYHENTRA FROM Deleted dlt SELECT @ngayhentrasau=ins.NGAYHENTRA FROM Inserted ins SELECT @ngaymuontruoc=dlt.NGAYMUON FROM Deleted dlt SELECT @ngaymuonsau=ins.NGAYMUON FROM Inserted ins IF(dbo.fc_CheckMa(@maphieumuontruoc,@maphieumuonsau)=-1) BEGIN PRINT 'Khong duoc thay doi ma phieu muon' ROLLBACK TRAN END ELSE IF(@ngayhentrasau!=@ngayhentratruoc) BEGIN PRINT 'Khong duoc thay doi hen tra' ROLLBACK TRAN END ELSE IF(@ngaymuonsau!=@ngaymuontruoc) BEGIN PRINT 'Khong duoc thay doi muon' ROLLBACK TRAN END END Thêm Trigger CREATE TRIGGER tg_ThemChiTietPhieuMuon chi tiết phiếu mượn ON dbo.CHITIETPHIEUMUON INSTEAD OF INSERT AS BEGIN DECLARE @maphieumuon INT,@masach INT SELECT @maphieumuon=ins.MAPHIEUMUON FROM Inserted ins SELECT @masach=ins.MASACH FROM Inserted ins IF(@maphieumuon NOT IN (SELECT MAPHIEUMUON FROM dbo.PHIEUMUON)) BEGIN PRINT 'Ma phieu muon chua ton tai' ROLLBACK TRAN END ELSE IF(@masach NOT IN (SELECT MASACH FROM dbo.SACH)) BEGIN PRINT 'Sach chua ton tai' ROLLBACK TRAN END ELSE IF(@masach IN (SELECT MASACH FROM dbo.v_ChiTietChuaTra)) BEGIN PRINT 'Sach chua duoc tra' ROLLBACK TRAN END ELSE BEGIN INSERT INTO dbo.CHITIETPHIEUMUON VALUES ( @maphieumuon, @masach, MAPHIEUMUON - int MASACH - int N'Chưa trả', TRANGTHAI - nvarchar(20) NULL NGAYTRA - date ) UPDATE dbo.PHIEUMUON SET SOLUONG=SOLUONG+1 WHERE MAPHIEUMUON=@maphieumuon END END Khi trả sách Trigger CREATE TRIGGER tg_TraSach ON dbo.v_ChiTietChuaTra INSTEAD OF UPDATE AS BEGIN DECLARE @maphieumuontruoc INT,@maphieumuonsau INT,@masachtruoc INT,@masachsau INT DECLARE @tensachtruoc NVARCHAR(200),@tensachsau NVARCHAR(200) SELECT @maphieumuonsau=ins.MAPHIEUMUON FROM Inserted ins SELECT @masachsau=ins.MASACH FROM Inserted ins SELECT @tensachsau=ins.TENSACH FROM Inserted ins SELECT @maphieumuontruoc=dlt.MAPHIEUMUON FROM Deleted dlt SELECT @masachtruoc=dlt.MASACH FROM Deleted dlt SELECT @tensachtruoc=dlt.TENSACH FROM Deleted dlt IF(dbo.fc_CheckMa(@maphieumuontruoc,@maphieumuonsau)=-1) BEGIN PRINT 'Khong duoc thay doi ma phieu muon' ROLLBACK TRAN END ELSE IF(dbo.fc_CheckMa(@masachtruoc,@masachsau)=-1) BEGIN PRINT 'Khong duoc thay doi ma sach' ROLLBACK TRAN END ELSE IF (@tensachtruoc!=@tensachsau) BEGIN PRINT 'Khong duoc thay doi ten sach' ROLLBACK TRAN END ELSE BEGIN UPDATE dbo.v_ChiTietChuaTra SET TRANGTHAI=N'Đã trả' WHERE MAPHIEUMUON=@maphieumuontruoc AND MASACH=@masachtruoc UPDATE dbo.CHITIETPHIEUMUON SET NGAYTRA=GETDATE() WHERE MAPHIEUMUON=@maphieumuontruoc AND MASACH=@masachtruoc END END Sửa chi tiết phiếu mượn Trigger CREATE TRIGGER tg_SuaChiTietPhieuMuon ON dbo.CHITIETPHIEUMUON FOR UPDATE AS BEGIN DECLARE @maphieumuontruoc INT,@maphieumuonsau INT ,@masachtruoc INT,@masachsau INT SELECT @maphieumuonsau=ins.MAPHIEUMUON FROM Inserted ins SELECT @maphieumuontruoc=dlt.MAPHIEUMUON FROM Deleted dlt SELECT @masachsau=ins.MASACH FROM Inserted ins SELECT @masachtruoc=dlt.MASACH FROM Deleted dlt IF(@maphieumuontruoc!=@maphieumuonsau) BEGIN PRINT 'Khong duoc thay doi ma phieu muon' ROLLBACK TRAN END END Xóa chi tiết phiếu mượn Trigger CREATE TRIGGER tg_XoaChiTietPhieuMuon ON dbo.CHITIETPHIEUMUON AFTER DELETE AS BEGIN DECLARE @maphieumuon INT,@trangthai NVARCHAR(20) SELECT @maphieumuon=dlt.MAPHIEUMUON FROM Deleted dlt SELECT @trangthai=dlt.TRANGTHAI FROM Deleted dlt IF(@trangthai=N'Đã trả') BEGIN PRINT N'Sách trả khơng thể xóa ' ROLLBACK END ELSE UPDATE dbo.PHIEUMUON SET SOLUONG=SOLUONG-1 WHERE MAPHIEUMUON=@maphieumuon END Thêm sinh viên Trigger CREATE TRIGGER tg_AddSinhVien ON dbo.v_SinhVien INSTEAD OF INSERT AS BEGIN DECLARE @tensv NVARCHAR(50), @gioitinh NVARCHAR(5), @lop VARCHAR(10), @khoa NVARCHAR(20), @diachi NVARCHAR(100), @ngaysinh DATE SELECT @tensv=ins.HOTEN FROM Inserted ins SELECT @gioitinh=ins.GIOITINH FROM Inserted ins SELECT @lop=ins.LOP FROM Inserted ins SELECT @khoa =ins.KHOA FROM Inserted ins SELECT @diachi=ins.DIACHI FROM Inserted ins SELECT @ngaysinh=ins.NGAYSINH FROM Inserted ins INSERT INTO dbo.SINHVIEN VALUES(@tensv,@gioitinh,@lop,@khoa,@diachi,@ngaysinh) END Sửa thông tin sinh Trigger CREATE TRIGGER tg_SuaSinhVien ON dbo.v_SinhVien INSTEAD OF UPDATE viên AS BEGIN DECLARE @masvtruoc INT, @masvsau INT, @tensv NVARCHAR(50), @gioitinh NVARCHAR(5), @lop VARCHAR(10), @khoa NVARCHAR(20), @diachi NVARCHAR(100), @ngaysinh DATE SELECT @masvtruoc=dlt.MASV FROM Deleted dlt SELECT @masvsau=ins.MASV FROM Inserted ins SELECT @tensv=ins.HOTEN FROM Inserted ins SELECT @gioitinh=ins.GIOITINH FROM Inserted ins SELECT @lop=ins.LOP FROM Inserted ins SELECT @khoa =ins.KHOA FROM Inserted ins SELECT @diachi=ins.DIACHI FROM Inserted ins SELECT @ngaysinh=ins.NGAYSINH FROM Inserted ins IF((SELECT dbo.fc_CheckMa(@masvtruoc, @masvsau))=-1) ROLLBACK TRAN ELSE UPDATE dbo.SINHVIEN SET HOTEN=@tensv, GIOITINH=@gioitinh, LOP=@lop, KHOA=@khoa, DIACHI=@diachi, NGAYSINH=@ngaysinh WHERE MANV=@manvtruoc END Xóa Trigger CREATE TRIGGER tg_XoaSinhVien ON dbo.v_SinhVien Sinh viên INSTEAD OF DELETE AS BEGIN DECLARE @masv VARCHAR(10) SELECT @masv=dlt.MASV FROM Deleted dlt DELETE FROM dbo.SINHVIEN WHERE MASV=@masv END Thêm Biên Bản Xử Lý Trigger CREATE TRIGGER tg_AddBienBanXuLY ON dbo.v_BienBanXuLy INSTEAD OF INSERT AS BEGIN DECLARE @maphieumuon INT, @tennv NVARCHAR(50), @tensv NVARCHAR(50), @ngaylap DATE, @loivipham NVARCHAR(50), @xuly NVARCHAR(100) SELECT @maphieumuon =ins.MAPHIEUMUON FROM Inserted ins SELECT @tennv =ins.TENNHANVIEN FROM Inserted ins SELECT @tensv=ins.TENSINHVIEN FROM Inserted ins SELECT @ngaylap =GETDATE() SELECT @loivipham = ins.LOIVIPHAM FROM Inserted ins SELECT @xuly=ins.XULY FROM Inserted ins DECLARE @manv INT ,@masv INT ,@masvpm INT IF(@maphieumuon NOT IN (SELECT pm.MAPHIEUMUON FROM dbo.PHIEUMUON pm)) ROLLBACK TRAN IF(@tennv NOT IN (SELECT nv.HOTEN FROM dbo.NHANVIEN nv)) ROLLBACK TRAN ELSE BEGIN SELECT @manv=nv.MANV FROM dbo.NHANVIEN nv WHERE nv.HOTEN=@tennv END IF(@tensv NOT IN(SELECT sv.HOTEN FROM dbo.SINHVIEN sv)) ROLLBACK TRAN ELSE BEGIN SELECT @masvpm = MSSV FROM dbo.PHIEUMUON WHERE MAPHIEUMUON =@maphieumuon SELECT @masv= sv.MSSV FROM dbo.SINHVIEN sv WHERE sv.HOTEN =@tensv IF (@masvpm != @masv) ROLLBACK TRAN END INSERT INTO dbo.BIENBANXULY VALUES (@maphieumuon ,@manv, @ngaylap, @loivipham, @xuly) END Thêm Sách Trigger CREATE TRIGGER tg_AddSach ON dbo.v_Sach INSTEAD OF INSERT AS BEGIN DECLARE @tensach NVARCHAR(100), @tentg NVARCHAR(100), @tentl NVARCHAR(100), @tennxb NVARCHAR(100), @namxb DATE SELECT @tensach =ins.TENSACH FROM Inserted ins SELECT @tentg =ins.TENTG FROM Inserted ins SELECT @tentl =ins.TENTL FROM Inserted ins SELECT @tennxb =ins.TENNXB FROM Inserted ins SELECT @namxb = ins.NAMXB FROM Inserted ins DECLARE @matl INT ,@manxb INT, @matg INT IF(@tentl NOT IN(SELECT TENTL FROM dbo.THELOAI)) BEGIN INSERT INTO dbo.THELOAI VALUES(@tentl) SELECT TOP @matl = tl.MATL FROM dbo.THELOAI tl ORDER BY tl.MATL DESC END ELSE BEGIN SELECT @matl =MATL FROM dbo.THELOAI WHERE TENTL = @tentl END IF(@tennxb NOT IN(SELECT TENNXB FROM dbo.NHAXUATBAN)) BEGIN INSERT INTO dbo.NHAXUATBAN VALUES(@tennxb) SELECT TOP @manxb=nxb.MANXB FROM dbo.NHAXUATBAN nxb ORDER BY nxb.MANXB DESC END ELSE BEGIN SELECT @manxb= nxb.MANXB FROM dbo.NHAXUATBAN nxb WHERE nxb.TENNXB=@tennxb END INSERT INTO dbo.SACH VALUES(@tensach,@namxb,@matl,@manxb) DECLARE @masach INT SELECT TOP @masach=MASACH FROM dbo.SACH ORDER BY MASACH DESC DECLARE @i INT SET @i=1 WHILE(@i< (SELECT TOP id FROM fc_TachChuoiThanhBang(@tentg,',') ORDER BY id DESC)+1) BEGIN DECLARE @ten1tacgia NVARCHAR(MAX) SELECT @ten1tacgia=item FROM fc_TachChuoiThanhBang(@tentg,',') WHERE id=@i IF(@ten1tacgia NOT IN(SELECT TENTG FROM dbo.TACGIA)) BEGIN INSERT INTO dbo.TACGIA VALUES(@ten1tacgia) SELECT TOP @matg =tg.MATG FROM dbo.TACGIA tg ORDER BY tg.MATG DESC END ELSE BEGIN SELECT @matg =MATG FROM dbo.TACGIA WHERE TENTG=@ten1tacgia END INSERT INTO dbo.SACH_TACGIA VALUES (@masach,@matg) SET @i+=1 END END Sửa sách Trigger CREATE TRIGGER tg_SuaSach ON dbo.v_Sach INSTEAD OF UPDATE AS BEGIN DECLARE @masachtruoc INT, @masachsau INT, @tensach NVARCHAR(100), @tentg NVARCHAR(MAX), @tentl NVARCHAR(100), @tennxb NVARCHAR(100), @namxb DATE SELECT @masachtruoc=dlt.MASACH FROM Deleted dlt SELECT @masachsau=ins.MASACH FROM Inserted ins SELECT @tensach=ins.TENSACH FROM Inserted ins SELECT @tentg=ins.TENTG FROM Inserted ins SELECT @tentl=ins.TENTL FROM Inserted ins SELECT @tennxb=ins.TENNXB FROM Inserted ins SELECT @namxb=ins.NAMXB FROM Inserted ins DECLARE @matl INT,@matg INT,@manxb int IF(@masachsau!=@masachtruoc) ROLLBACK TRAN IF(@tentl NOT IN(SELECT TENTL FROM dbo.THELOAI)) BEGIN INSERT INTOdbo.THELOAI VALUES(@tentl) SELECT TOP @matl=MATL FROM dbo.THELOAI ORDER BY MATL DESC END ELSE SELECT @matl=MATL FROM dbo.THELOAI WHERE TENTL=@tentl IF(@tennxb NOT IN(SELECT TENNXB FROM dbo.NHAXUATBAN)) BEGIN INSERT INTO dbo.NHAXUATBAN VALUES(@tennxb) SELECT TOP @manxb=MANXB FROM dbo.NHAXUATBAN ORDER BY MANXB DESC END ELSE SELECT @manxb=MANXB FROM dbo.NHAXUATBAN WHERE TENNXB=@tennxb IF(@namxb>GETDATE()) ROLLBACK TRAN DELETE FROM dbo.SACH_TACGIA WHERE MASACH=@masachtruoc DECLARE @i INT SET @i=1 WHILE(@i< (SELECT TOP id FROM fc_TachChuoiThanhBang(@tentg,',') ORDER BY id DESC)+1) BEGIN DECLARE @ten1tacgia NVARCHAR(MAX) SELECT @ten1tacgia=item FROM fc_TachChuoiThanhBang(@tentg,',') WHERE id=@i IF(@ten1tacgia NOT IN(SELECT TENTG FROM dbo.TACGIA)) BEGIN INSERT INTO dbo.TACGIA VALUES(@ten1tacgia) SELECT TOP @matg =tg.MATG FROM dbo.TACGIA tg ORDER BY tg.MATG DESC END ELSE BEGIN SELECT @matg =MATG FROM dbo.TACGIA WHERE TENTG=@ten1tacgia END INSERT INTO dbo.SACH_TACGIA VALUES (@masachtruoc,@matg) SET @i+=1 END UPDATE dbo.SACH SET TENSACH=@tensach,NAMXB=@namxb,MATL=@matl,MANXB=@manxb WHERE MASACH=@masachtruoc END Xóa Sách Trigger CREATE TRIGGER tg_XoaSach ON dbo.v_Sach INSTEAD OF DELETE AS BEGIN DECLARE @masach INT SELECT @masach =MASACH FROM dbo.SACH DELETE FROM dbo.SACH WHERE MASACH=@masach END Phân chia công việc Công việc Người thực Phát biểu tốn Mơ tả nghiệp vụ Cả nhóm Mơ hình thực thể liên kết Chuẩn hóa Mơ tả ràng buộc Tạo CSDL Các truy vấn Lê Anh Tuấn Nguyễn Minh Hiếu Trương Ngọc Vượng Cả nhóm ... sách sinh viên vi phạm + lý do, số lượng sách nhập vào thư viện thơng tin sách 3 THIẾT KẾ CƠ SỞ DỮ LIỆU 3.1 Xây dựng mơ hình thực thể liên kết ... tên, lớp, khoa, ngày sinh, địa chỉ, giới tính ● Nếu thơng tin sinh viên hợp lệ thủ thư lưu vào sổ liệu quản lý độc giả, làm cấp thẻ độc giả cho sinh viên ● Độc giả muốn mượn sách lấy sách muốn... hành tốn hóa đơn cho nhà cung cấp ● Thơng tin hóa đơn dùng để làm thủ tục toán với phận kế tốn sở hóa đơn mua sách ● Sách vừa nhập thủ thư cập nhập lại số lượng thông tin sách vào hồ sơ sách