Tải bản đầy đủ (.doc) (33 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (271.68 KB, 33 trang )

Mụ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
1
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
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 sinh
viên, tiền điện , tiền nước và gửi lên giám đốc ký túc xá.
2
Quản lý sinh viên trong ký túc

Quản lý tài sản
cho sinh viên
Kiểm tra tài sản sinh
viên
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
sinh viên
Xoá thông tin tài sản
sinh viên
Quản lý hồ sơ
sinh vie
Thống kê tiền
điện nước
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
phòng
Sửa thông tin
phòng
Xóa thông tin
phòng
Quản lý thông tin
phòng
tin ơp sinh viên
2.Phân tích bài toán
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
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:
6
Sơ đồ 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:
7
Sơ đồ 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:
8
Sơ đồ mô hình luồng dữ liệu mức dưới đỉnh chức năng báo cáo thống kê :
9
Sơ đồ 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ản
Phòng:Số phòng Hóa đơn điện:Mã hóa đơn điện
Thẻ 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
10
Các kiểu thực thể :
11
Sinh vien
MaSV
MaPhong
HoTen
NgaySinh
GioiTinh
Que
Lop

KhoaHoc
Khoa
HeDaoTao
The Tai San
MaTheTS
MaSV
TenHD
NgayLap
NguoiLapThe
Tai San
Sinh Vien
MaTS
MaTheTS
TenTS
MauSac
SoLuong
12

f.Mô hình dữ liệu quan hệ
Hoa Don
Nuoc
SoHDN
MaPhong
NgayLapHDN
NgayTTTN
ThangTTTN
SoNuoc
GiaNuoc
NguoiLapHDN
Hoa Don Dien

SoHDD
MaPhong
NgayLapHDD
NgayTTTD
ThangTTTD
SoDien
GiaDien
NguoiLapHDD
Phong
MaPhong
LoaiPhong
Tang
13
II.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
( @maphong char (10)= null
)
AS
IF @Maphong NOT IN (
SELECT Maphong
FROM phong
)
PRINT 'Khong Co Thong Tin Ve Phong Nay'
else
begin
14

select loaiphong,tang
from phong
Where @maphong=maphong
end
execute timthongtinphong P124
1.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
(
@MaSV char(10)=null
)
as
if @MaSV not in ( select MaSV from sinhvien )

PRINT 'Khong Co Thong Tin Ve Sinh vien nay'

else
begin
select
a.hoten,maphong,b.mathets,tenhd,ngaylap,nguoilapthe,c.mats,tents,mausac,soluong
from sinhvien a inner join thetaisan b on a.masv=b.masv inner join
taisansinhvien c on b.mathets=c.mathets
where a.masv=@masv
end
exec thong_ke_TS_theo_masv sv01
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
(
@mathets char(10)=null
)
as

if @mathets not in ( select mathets from thetaisan )

PRINT 'Khong Co Thong Tin Ve the tai san nay'

15
else
begin
select
a.hoten,maphong,b.tenhd,ngaylap,nguoilapthe,c.MATS,tents,mausac,soluong
from sinhvien a inner join thetaisan b on a.masv=b.masv inner join
taisansinhvien c on b.mathets=c.mathets
where b.mathets=@mathets
end
exec thong_ke_TS_theo_mathets tts05
1.4 Thêm thông tin phòng
create Proc themphong
(
@maphong char (10),
@loaiphong nvarchar(10),
@tang int
)
AS
If @maphong IN (
Select maphong
From Phong
)
begin
PRINT 'Phong nay da ton tai nhap maphong khac'
return
end


Begin
Insert Into Phong (
maphong,
loaiphong,
tang
)
values
(
@maphong,
@loaiphong,
@tang
16
)
end
execute themphong 2132,loai2,4
1.5Thêm sinh viên
Create Proc Insert_sv(
@masv char (10),
@hoten nvarchar(30),
@ngaysinh datetime,
@gioitinh bit,
@maphong char (10),
@que nvarchar (30),
@lop nvarchar (30),
@khoahoc nvarchar (50),
@khoa int,
@hedaotao nvarchar (30)
)
As

if @masv in (
select masv
from sinhvien
)
PRINT 'Sinh vien nay da ton tai'
else
begin
insert into Sinhvien(
masv,
hoten,
ngaysinh,
gioitinh,
maphong ,
que,
lop ,
khoahoc,
khoa ,
hedaotao)
VALUES(
@masv,
@hoten,
@ngaysinh,
@gioitinh,
17
@maphong ,
@que ,
@lop ,
@khoahoc,
@khoa ,
@hedaotao)

End
execute insert_sv
v27,'Nguyenthihuong',"02/07/1989",1,p123,namdinh,mt1,cntt,2,daihoc
1.7 Thêm thẻ tài sản
CREATE Proc themthetaisan (
@matheTS char (10),
@masv char (10),
@tenHD nvarchar (10),
@ngaylap datetime ,
@nguoilapthe nvarchar (30)
)
AS
If @mathets in ( select mathets
From thetaisan
)
Print 'the nay da ton tai'
else
if @masv not in (
select masv
from sinhvien
)
PRINT 'Sinh vien khong ton tai'
else
Begin
Insert into Thetaisan
(
matheTS ,
masv ,
tenHD ,
ngaylap ,

nguoilapthe
)
Values (
@matheTS,
@masv ,
@tenHD ,
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,
@ngaylaphdd datetime ,
@ngaytttd datetime,
@sodien int ,
@giadien money,
@thangttd int ,
@nguoilaphdd nvarchar (30)
)
AS
IF exists (select *from hoadondien where sohdd= @sohdd )
begin
print ' hoa don da ton tai nhap ma hoa don khac'
return
end

IF not exists (select * from phong where maphong=@maphong)
begin
print ' phong nay khong ton tai'
return
end
Begin
Insert into hoadondien
(
Sohdd ,
maphong ,
ngaylaphdd ,
ngaytttd ,
sodien ,
giadien ,
thangttd ,
nguoilaphdd
)
values
19
(
@Sohdd ,
@maphong ,
@ngaylaphdd ,
@ngaytttd ,
@sodien ,
@giadien ,
@thangttd ,
@nguoilaphdd
)
End

execute themhddien hdd03,p123,"02/02/1989","03/02/1989",50,2500,2,'Nguyen thi
hai'
1.9 Lập hóa đơn nước
create Proc themhdnuoc
(
@Sohdn char (10)=null,
@maphong char (10)=null,
@ngaylaphdn datetime ,
@ngaytttn datetime,
@sonuoc int ,
@gianuoc money,
@thangttn int ,
@nguoilaphdn nvarchar (30)
)
AS
IF exists (select *from hoadonnuoc where sohdn= @sohdn )
begin
print ' hoa don da ton tai nhap ma hoa don khac'
return
end
IF not exists (select * from phong where maphong=@maphong)
begin
print ' phong nay khong ton tai'
return
end
Begin
Insert into hoadonnuoc
(
Sohdn ,
20

maphong ,
ngaylaphdn ,
ngaytttn ,
sonuoc,
gianuoc ,
thangttn ,
nguoilaphdn
)
values
(
@Sohdn ,
@maphong ,
@ngaylaphdn ,
@ngaytttn ,
@sonuoc ,
@gianuoc ,
@thangttn ,
@nguoilaphdn
)
end
execute themhdnuoc hdn04,p220,"02/02/1989","03/02/1989",50,2500,2,'Nguyen thi
Hai'
1.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
end
begin
select maphong,hoten,ngaysinh,gioitinh,que,lop,khoahoc,khoa,hedaotao
from sinhvien
where masv=@masv
end
exec tim_sv sv03
1.11 Thống kê tiền nước theo số hóa đơn nước
create Proc thongtin_hoadonnuoc
(@sohdn char (10))
21
as
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
22
if @mathets not in (select mathets from thetaisan where mathets=@mathets)
begin
print 'khong ton tai ma the tai san nay '
return
end
begin
select c.masv,
hoten,maphong,a.tenhd,ngaylap,nguoilapthe,b.Mats,tents,mausac,soluong
from thetaisan a inner join taisansinhvien b on a.mathets = b.mathets
inner join sinhvien c on a.masv =c.masv

where 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
(@sohdn char (10))
23
AS

delete 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
@mathets char (10)
as
delete from thetaisan
where mathets=@mathets
exec xoa_taisansv tts04
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
(

@giadien money
)
as
begin
update hoadondien
set giadien=@giadien
end
run
exec suagiadien 3000
24
1.21 Cập nhật giá nước
Create proc capnhatgianuoc
(
@gianuoc money
)
as
begin
update hoadonnuoc
set gianuoc=@gianuoc
end
run
exec capnhatgianuoc 3070
select * from hoadonnuoc
1.22 Cập nhật thông tin sinh viên
create proc capnhatthongtinsv
@masv char (10),@lop nvarchar (30)
as
if not exists (select * from sinhvien where masv=@masv)
begin
print 'khong ton tai sinh vien nay nhap lai ma sinh vien'

return
end
begin
update sinhvien
set lop = @lop
where masv=@masv
end
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
SET @tongphong = dbo.fn_tongsophong('loai I')
25

×