báo cáo bài tập lớn :Bài toán quản lý sinh viên kí túc xá trường đại học Công Nghiệp Hà Nội
Trang 1Mục lục
I.Bài toán quản lý sinh viên kí túc xá trường đại học Công Nghiệp Hà Nội
1.Mô tả bài toán………2
2.Phân tích bài toán……… 3
a.Sơ đồ phân cấp chức năng 3
b.Mô hình dữ liệu mức khung cảnh………4
c.Mô hình dữ liệu mức đỉnh……….5
d.Mô hình dữ liệu mức dưới đỉnh………6
e.Mô hình liên kết thực thể ………10
f.Mô hình dữ liệu quan hệ……… 13
II.Giải quyết bài toán 1.procedure……… 13
2.Function……….24
3.trigger……….26
4.view……….33
Trang 2I.Bài toán quản lý sinh viên kí túc xá trường đại học Công
Nghiệp Hà Nội
1.Mô tả bài toán
Trong thời gian sinh viên sống trong ký túc ban quản lý ký túc cần quản lý những thông tin sau:
Khi sinh viên vào sống trong ký túc xá thì mỗi sinh viên sẽ có một hồ sơ sinh viên bao gồm các thông tin : mã sinh viên, họ tên, phòng, quê …Nếu có sai sót về thông tin sinh viên thì ban quản lý ký túc sẽ sửa thông tin trên hồ sơ sinh viên Khi sinh viên không còn sống trong ký túc xá thì hồ sơ sẽ được xóa
Thông tin về các phòng ở của sinh viên sẽ được cập nhật trên hệ thống Các thao tác đối với thông tin phòng gồm có :thêm thông tin phòng, sửa thông tin phòng nếu thấy sai sót, xóa thông tin phòng
Khi sinh viên có nhu cầu mang tài sản riêng vào ký túc như bàn ghế , máy tính … thì tài sản đó sẽ được kiểm tra xem có đạt yêu cầu không Nếu không đạt yêu cầu thì sẽ không được mang vào ký túc Nếu đạt yêu cầu thì nhân viên ban quản lý ký túc sẽ lập thẻ tài sản gồm có các thông tin sau : mã thẻ tài sản , tên hợp đồng tài sản ,mã sinh viên ,thông tin về tài sản, ngày lập, người lập … lưu lại một bản và một bản gửi cho sinh viên Nếu có sự thay đổi về thông tin thẻ tài sản thì thông tin về thẻ tài sản có thể được sửa , xóa…
Hàng tháng nhân viên ban quản lý ký túc sẽ thống kê số điện nước của từng phòng , sau đó sẽ lập hóa đơn điện nước và hóa đơn nước gửi đến cho từng phòng Sinh viên trong từng phòng sẽ phải có trách nhiệm thanh toán tiền điện nước của tháng đó
Hàng tháng và kỳ học nhân viên ban quản lý ký túc sẽ thống kê số lượng sinhviên, tiền điện , tiền nước và gửi lên giám đốc ký túc xá
Trang 3Quản lý sinh viên trong ký túc
Lập thẻ tài sản
Thêm thông tin tài sản sinh viên
Quản lý điện nước từng phòng
Thống kê số điện và nước
Lập hóa đơn điện
Lập hóa đơn nước Thống kê tài
sản sinh viên
Báo cáo thống kê
Sửa thông tin tài sản
Thêm hồ sơ
Sửa hồ sơ
Xóa hồ sơ
Thống kê số lượng sinh viên Thêm thông tin
tin ơp sinh viên
2.Phân tích bài toán
a.Sơ đồ phân cấp chức năng
Trang 4
b.Mô hình dữ liệu mức khung cảnh
Quản lý sinh viên ký túc xá Sinh viên
Ban quản lý ký túc
T h ô n g tin s in h v iê n
P h iế u x á c n h ậ n
B á o c o s ố l ư ợ g s i n v i ê n
T h ô n g b á o từ c h ố i n h ậ n tà i s ả n
T h ô n g tin tà i s ả n s in h v iê n
H ó a đ ơ n n ư ớ c
Nhân viên
H ó a đ ơ n đ iệ n
T h a n h to á n tiề n đ iệ n
T h a n h to á n tiề n n ư ớ c
Trang 5c.Mô hình dữ liệu mức đỉnh
Sinh viên
Quản lý tài sản
Ban quản lý ký túc
Quản lý điện nước từng phòng
Quản lý hồ sơ sinh viên
Báo cáo thống kê
Hoá đơn nước
Hồ sơ sinh viên
Thẻ tài sản Nhân viên
Quản lý thông tin
phòng
phòng
Tài sản sinh viên Thông tin sinh viên
Hoá đơn điện
Trang 6d.Mô hình dữ liệu mức dưới đỉnh
Sơ đồ mô hình luồng dữ liệu mức dưới đỉnh chức năng quản lý hồ sơ sinh viên:
Sinh viên
Thêm hồ sơ
Sửa hồ sơ
Xóa hồ sơHồ sơ sinh viên
Trang 7Sơ đồ mô hình luồng dữ liệu mức dưới đỉnh chức năng quản lý tài sản sinh viên:
Sinh viên
Kiểm tra tài sản sinh viên
Thêm thông tin tài sản sinh viên
Sửa thông tin tài sản
Lập hợp đồng
Thông báo từ
chối
Xóa thông tin tài sản sinh viên
T h ô n g t i n t à i s ả n
T h n b á o t ừ c h i n h ậ p
T h n t n v ề t à i s ả n s i n v i ê n
Yêu cầu thêm thông tin tài sản
Tài sản sinh viên
Trang 8Sơ đồ mô hình luồng dữ liệu mức dưới đỉnh chức năng quản lý điện nước từng phòng:
Lập hóa đơn tiền điện
Lập hóa đơn
Trang 9Sơ đồ mô hình luồng dữ liệu mức dưới đỉnh chức năng báo cáo thống kê :
Ban quản lý ký túc
Thống kê số lượng
B á o c o s ố l ư ợ g s i n v i ê n B á o c á o t i ề n đ i ệ n n ư ớ c h à n g
t h á n g
Hóa đơn nước
Trang 10Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý thông tin phòng:
e.Mô hình liên kết thực thể
-Xác định các kiểu thực thể
Sinh viên:Mã sinh vên Tài Sản Sinh Viên:Mã tài sảnPhòng:Số phòng Hóa đơn điện:Mã hóa đơn điệnThẻ Tài Sản:Mã thẻ tài sản Hóa đơn nước:Mã hóa đơn nước
-Xác định liên kết và kiểu liên kết
Trang 11Sinh Viên Thẻ tài sản
Tài sản sinh viên
Phòng
Hóa đơn điện
Hóa đơn nước
Trang 12f.Mô hình dữ liệu quan hệ
Tai San Sinh Vien
MaTS
MaTheTS TenTS MauSac SoLuong
Hoa Don Nuoc
SoHDN
MaPhong NgayLapHDN NgayTTTN ThangTTTN SoNuoc GiaNuoc NguoiLapHDN
Hoa Don Dien
Trang 13II.Giải quyết bài toán
Dựa trên các phân tích như trên chúng em xây dựng được các procedure , function, trigger và view như sau.
1.procedure
1.1 Tìm thông tin phòng:
create proc timthongtinphong
)
AS
SELECT MaphongFROM phong)
PRINT 'Khong Co Thong Tin Ve Phong Nay'else
begin
Trang 141.2 Tìm thông tin về tài sản sinh viên theo mã sinh viên
create proc thong_ke_TS_theo_masv
1.3 Tìm thông tin về tài sản sinh viên theo mã thẻ tài sản
create proc thong_ke_TS_theo_mathets
Trang 151.4 Thêm thông tin phòng
create Proc themphong
Trang 16end
execute themphong 2132,loai2,4
1.5Thêm sinh viên
Create Proc Insert_sv(
PRINT 'Sinh vien nay da ton tai'else
Trang 171.7 Thêm thẻ tài sản
CREATE Proc themthetaisan (
Print 'the nay da ton tai'
else
if @masv not in (
select masvfrom sinhvien)
PRINT 'Sinh vien khong ton tai'else
Trang 18@ngaylap ,
@nguoilapthe
)
end
execute themthetaisan TTS12, SV02,Laptop,"3/2/2090",'nguyen thi huyen'
1.8 Lập hóa đơn điện
create Proc themhddien
(
@Sohdd char (10)=null,
@maphong char (10)=null,
Trang 191.9 Lập hóa đơn nước
create Proc themhdnuoc
(
@Sohdn char (10)=null,
@maphong char (10)=null,
Trang 201.10 Tìm sinh viên theo mã sinh viên
Create Proc tim_sv
(@masv char (10))
as
if @masv not in (select masv
from sinhvien)begin
print 'khong ton tai sinh vien co ma nay'return
1.11 Thống kê tiền nước theo số hóa đơn nước
create Proc thongtin_hoadonnuoc
Trang 21as
if @sohdn not in (select sohdn
from hoadonnuoc)begin
print 'khong ton tai hoa don co ma so nay'return
end
begin
select maphong,ngaylaphdn,ngaytttn,sonuoc,gianuoc,gianuoc*sonuoc as tongtien ,nguoilaphdn ,thangttn
from hoadonnuoc
where sohdn=@sohdn
end
exec thongtin_hoadonnuoc 'hdn01'
1.12 Thống kê tiền điện theo số hóa đơn điện
create Proc thongtin_hoadondien
(@sohdd char (10))
as
declare @kqua int
if @sohdd not in (select sohdd
from hoadondien)begin
print 'khong ton tai hoa don co ma so nay'return
end
begin
select maphong,ngaylaphdd,ngaytttd,sodien,giadien,giadien*sodien as tongtien ,nguoilaphdd ,thangttd
from hoadondien
where sohdd=@sohdd
end
exec thongtin_hoadondien 'HDD01'
1.13 Thống kê về tài sản sinh viên
CREATE proc thongke_taisan_theomathe
(@mathets char (10)
)
as
Trang 22if @mathets not in (select mathets from thetaisan where mathets=@mathets)begin
print 'khong ton tai ma the tai san nay '
from thetaisan a inner join taisansinhvien b on a.mathets = b.mathets
inner join sinhvien c on a.masv =c.masvwhere a.mathets = @mathets
end
run
exec thongke_taisan_theomathe tts03
1.14 Xóa thông tin phòng
create proc xoa_phong
(@maphong char (10))
AS
delete from phong
where maphong =@maphong
exec xoa_phong p124
1.15 Xóa thông tin sinh viên
create proc xoa_sv
(@masv char (10))
AS
delete from sinhvien
where masv =@masv
exec xoa_sv sv02
1.16 Xóa thông tin hóa đơn điện
Create proc xoa_hoadondien
(@sohdd char (10))
AS
delete from hoadondien
where sohdd =@sohdd
exec xoa_hoadondien hdd01
1.17 Xóa thông tin hóa đơn nước
create proc xoa_hoadonnuoc
Trang 23delete from hoadonnuoc
where sohdn =@sohdn
exec xoa_hoadonnuoc hdn01
1.18 Xóa thông tin tài sản sinh viên
create proc xoa_taisansv
1.19 Cập nhật thông tin phòng
create proc sua_phong(
@maphong char (10),
@tang int
)
As
if @maphong not in (select maphong from phong where maphong =@maphong)
print 'khong ton tai phong nay'
else
begin
update phong
set tang = @tang
where maphong =@maphong
end
exec sua_phong p123 ,3
1.20 Cập nhật giá điện
create proc suagiadien
Trang 241.21 Cập nhật giá nước
Create proc capnhatgianuoc
select * from hoadonnuoc
1.22 Cập nhật thông tin sinh viên
create proc capnhatthongtinsv
@masv char (10),@lop nvarchar (30)
exec capnhatthongtinsv sv02,'tienganh'
select * from sinhvien
2.Function
2.1 Hàm tính tổng các loại phòng
CREATE FUNCTION Fn_Tongsophong(@loaiphong NVARCHAR (10)) RETURNS INT
BEGIN
DECLARE @tongphong INT
SELECT @tongphong = COUNT (Loaiphong)
FROM Phong
WHERE loaiphong = @loaiphong
RETURN ISNULL (@tongphong,0)
END
EXECUTE
DECLARE @tongphong INT
Trang 25PRINT 'tong so phong cua loai da nhap la:'
PRINT @tongphong
2.2 Tổng số sinh viên của từng loại phòng
create function tongSV (@loai nvarchar(10)) returns int
as
begin
DECLARE @TONG_sv INT
select @TONG_sv= count (sinhvien.maSV)
from phong inner join sinhvien on phong.maphong = sinhvien.maphong
where loaiphong = @loai
return isnull(@tong_sv,0)
end
EXCUTE
declare @tong_sv int
set @tong_sv = dbo.tongsv ('loai II')
print 'tong so sinh vien cua loai phong da nhap là'
print @tong_sv
2.3 Tổng số sinh viên theo tầng
create function tongsoSV (@tangso int) returns int
as
begin
DECLARE @TONG_sv INT
select @TONG_sv= count (sinhvien.maSV)
from phong inner join sinhvien on phong.maphong = sinhvien.maphong
where tang = @tangso
return isnull(@tong_sv,0)
end
EXCUTE
declare @tong_sv int
set @tong_sv = dbo.tongsosv (3)
print 'tong so sinh vien cua tang da nhap là'
print @tong_sv
2.4 Tính tổng tiền điện của một phòng trong một tháng
create function fn_tongtiendien(@thang int , @maphong char(10))
returns table
as
return (select maphong,ThangTTD as thang,sum([giadien]*[sodien]) as tongtienfrom hoadondien
where ThangTTD = @thang and maphong = @maphong
group by ThangTTD , maphong)
go
run
select * from dbo.fn_tongtiendien(2,'p124')
2.5 Tổng số tiền điện trong một tháng của cả ký túc xá
Trang 26create function tong (@thang int ) returns table
select * from tong(2)
2.6 Tính tổng tiền nứơc của một phòng trong một tháng
create function fn_tongtiennuoc(@thang int, @maphong char(10) )
returns table
as
return (select maphong, ThangTTN as thang,sum([gianuoc]*[sonuoc]) as tongtienfrom hoadonnuoc
where thangTTN = @thang and maphong = @maphong
group by ThangTTN , maphong)
go
run
select * from dbo.fn_tongtiennuoc(1,'p123')
2.7 Tổng số tiền nước trong một tháng của cả ký túc xá
create function tongtn (@thang int ) returns table
3.1 Không cho chèn sinh viên nếu mã trùng
create trigger tg_Nhap_masv
on SinhVien
for insert
as
declare @masv char(10)
select @masv=maSV from inserted
if EXISTS(select * from SinhVien
where maSV=@masv)
begin
Trang 27print 'ban khong the them sinh vien vao bang ! Hay nhap ma sinh vien khac'
return
end
go
3.2 Không cho chèn thêm phòng nếu trùng mã phòng
create trigger tg_nhap_phong
on Phong
for insert
as
declare @maphong char(10)
select @maphong=MaPhong from inserted
if EXISTS(select * from Phong
3.3 Không cho chèn thêm hóa đơn điện nếu trùng số hóa đơn điện
create trigger tg_nhap_HDD
on HoaDonDien
for insert
as
declare @sohdd char(10)
select @sohdd=SoHDD from inserted
if EXISTS(select * from HoaDonDien
where SoHDD=@sohdd)
begin
print 'ban khong the chen them hoa do
n dien vao bang ! Hay nhap so hoa don dien khac'
rollback transaction
return
end
go
3.4 Không cho chèn thêm hóa đơn nước nếu trùng số hóa đơn nước
create trigger tg_nhap_HDN
on HoaDonNuoc
for insert
as
declare @sohdn char(10)
select @sohdn=SoHDN from inserted
Trang 28if EXISTS(select * from HoaDonNuoc
3.5 Không cho chèn thêm tài sản nếu trùng mã
create trigger tg_nhap_taisan
on TaiSanSinhVien
for insert
as
declare @mats char(10)
select @mats=MaTS from inserted
if EXISTS(select * from TaiSanSinhVien
where MaTS= @mats)
3.6 Không cho chèn thêm thẻ tài sản nếu trùng mã
create trigger tg_nhap_thets
on TheTaiSan
for insert
as
declare @tts char(10)
select @tts=MaTheTS from inserted
if EXISTS(select * from TheTaiSan
3.7 Thông báo không xóa được sinh viên nếu nhập sai mã sinh viên
Create trigger tg_del_sinhvien
on SinhVien
Trang 29declare @masv char(10)
select @masv=MaSV from deleted
if not exists (select * from SinhVien where MaSV=@masv)
3.8 Thông báo không xóa được phòng nếu nhập mã phòng sai
create trigger tg_del_phong
on Phong
for delete
as
declare @maphong char(10)
select @maphong=MaPhong from deleted
if not exists (select * from Phong where MaPhong=@maphong)
3.9 Thông báo không xóa được hóa đơn nước nếu nhập sai số hóa đơn nước
create trigger tg_del_hdn
on HoaDonNuoc
for delete
as
declare @sohdn char(10)
select @sohdn=SoHDN from deleted
if not exists (select * from HoaDonNuoc where SoHDN=@sohdn)
3.10 Thông báo không xóa được hóa đơn nước nếu nhập sai số hóa đơn điện
create trigger tg_del_hdd
Trang 30on HoaDonDien
for delete
as
declare @sohdd char(10)
select @sohdd=SoHDD from deleted
if not exists (select * from HoaDonDien where SoHDD=@sohdd)
3.11 Thông báo không xóa được tài sản nếu nhập sai mã tài sản
create trigger tg_del_taisan
on TaiSanSinhVien
for delete
as
declare @mats char(10)
select @mats=MaTS from deleted
if not exists (select * from TaiSanSinhVien where MaTS=@mats)
3.12 Thông báo không xóa được thẻ tài sản nếu nhập sai mã thẻ tài sản
create trigger tg_del_thetaisan
on TheTaiSan
for delete
as
declare @matts char(10)
select @matts=MaTheTS from deleted
if not exists (select * from TheTaiSan where MaTheTS=@matts)
begin
Trang 31
print 'Sai ma the tai tai san'
declare @thang int
declare @ngaylaphdn datetime
declare @ngaythanhtoan datetime
select @ngaylaphdn=NgayLapHDN ,@ngaythanhtoan=NgayTTTN ,
@thang=ThangTTN from inserted
select * from HoaDonNuoc
insert into HoaDonDien
Trang 32declare @thang int
declare @ngaylaphdd datetime
declare @ngaythanhtoan datetime
select @ngaylaphdd=NgayLapHDD ,@ngaythanhtoan=NgayTTTD ,
@thang=ThangTTD from inserted
select * from HoaDonDien
insert into HoaDonDien
values ('HDD05','P124', '03/02/2009' ,'02/06/2009',40,2500,'Hanh',10)
3.15 Không cho chèn thêm sinh viên nếu số người trong phòng đầy
alter trigger chen_sinh_vien
on SinhVien
for insert
as
declare @maphong char(10)
declare @sosv int
Trang 33SELECT dbo.TheTaiSan.MaTheTS, dbo.TheTaiSan.TenHD,
dbo.TheTaiSan.Masv, dbo.TheTaiSan.NgayLap, dbo.TaiSanSinhVien.MaTS, dbo.TaiSanSinhVien.TenTS, dbo.TaiSanSinhVien.MauSac,
FROM dbo.Phong INNER JOIN
dbo.SinhVien ON dbo.Phong.MaPhong = dbo.SinhVien.MaPhong