BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC THỦY LỢI KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN MÔN HỆ ĐIỀU HÀNH CƠ SỞ DỮ LIỆU Đề tài XÂY DỰNG PHẦN MỀM QUẢN LÝ SINH VIÊN Sinh viên thực hiện: LÊ HỒNG
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC THỦY LỢI KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN MÔN HỆ ĐIỀU HÀNH CƠ SỞ DỮ
LIỆU
Đề tài
XÂY DỰNG PHẦN MỀM QUẢN LÝ SINH VIÊN
Sinh viên thực hiện: LÊ HỒNG
ÁNH
VŨ THỊMƠHOÀNGNGỌCLAN
Giáo viên hướng dẫn:
Nguyễn Ngọc Quỳnh Châu
Lớp 61pm2
NHẬN XÉT CỦA GIẢNG VIÊN
Trang 2MỤC LỤC
Trang 3LỜI NÓI ĐẦU 1
II XÁC ĐỊNH QUY TẮC /RÀNG BUỘC, XÂY DựNG MÔ HÌNH Hực
Tính,Quê Quán,Dân Tộc,Email,Số Điện Thoại 5
4 Mỗi môn học được giảng dạy trong một khoa nào đó trong học kì củamột
năm nào đó Mối môn cần một mã để quản lý,tên môn ,số tín chỉ.Mỗi kếtquả thi nhận điểm của 1 sinh viên làm bài cho 1 môn học nào đó 5
5 Một lớp có một mã lớp để quản lý,Thuộc về một khoa nào và mở ra chomột khóa học nhất định.Với mỗi lớp chúng ta lưu thông tin : mã Lớp, tên
C:THỰC HIỆN CÁC CÂU LỆNH TRUY VẤN VÀ PHÂN QUYỀN 20
Trang 4LỜI NÓI ĐẦU
Ngày nay, tin học đã có những bước tiến nhanh chóng về ứng dụng của nótrong mọi lĩnh vực của cuộc sống trên phạm vi toàn thế giới nói chung và ViệtNam nói riêng.Tin học được người ta quan tâm và nhắc đến nhiều hơn bao giờhết vì nó là một phần không thể thiếu trong cuộc sống văn minh,góp phần đẩymạnh công cuộc công nghiệp hoá hiện đại hoá đất nước, tiến đến nền kinh tế trithức Máy vi tính cùng với những phần mềm là công cụ đắc lực giúp ta quản lý,
tổ chức, sắp xếp và xử lý công việc một cách nhanh chóng và chính xác
Ở Việt Nam hiện nay, máy tính điện tử đặc biệt là máy vi tính trong nhiềunăm qua đã được sử dụng rất rộng rãi Sự phát triển của tin học, các công nghệphần mềm, phần cứng, các tải liệu tham khảo đã đưa chúng ta từng bước tiếpcận với công nghệ thông tin trong mọi lĩnh vực nhằm đáp ứng nhu cầu của conngười
Quản lý sinh viên là một đề tài không còn mới mẻ với các bài toán quản lý.Việc đưa tin học vào ứng dụng để quản lý là rất hữu ích, vì chúng ta phải bỏ rarất ít thời gian mà lại thu được hiệu quả cao, rất chính xác và tiện lợi nhanhchóng
Việc đưa tin học vào ứng dụng để quản lý là rất hữu ích, vì chúng ta phải bỏ
ra rất ít thời gian mà lại thu được hiệu quả cao, rất chính xác và tiện lợi nhanhchóng.Trong phạm vi bài kiểm tra nhóm chúng em đã được đề cập đến vấn đề
“Quản lýsinh viên”
Với khoảng thời gian không nhiều, vừa phân tích thiết kế, nghiên cứu tìmhiểu khai thác ngôn ngữ mới, vừa thực hiện chương trình quả là khó khăn đốivới chúng em Bởi “Quản lý sinh viên” là một đề tài có nội dung rộng, mặt kháckhả năng am hiểu về hệ thống của nhóm em vẫn còn nhiều hạn chế và thiếusót Vậy nên e kình mong được cô góp ý , bổ sung để nhóm em hoàn thiện chobài tập tốt hơn
Trang 5và sự chuyên nghiệp, đạo đức nhà giáo cao cả không mệt mỏi của cô đã có tácđộng tích cực đến em và mang lại lợi ích cho em trong cuộc sống này Trongquá trình học tập tại trường, cô không chỉ hướng dẫn tận tình trong quá trìnhnghiên cứu mà còn giúp em cải thiện đáng kể khả năng nghiên cứu và các kỹnăng khác, đồng thời cũng là người quan tâm và chăm sóc bổ sung các kiếnthức còn thiếu cho em, điều này làm cho em ngày càng hoàn thiện hơn Trongmỗi giai đoạn khó khăn cô đều hướng dẫn rất tận tình và nhiệt tình giúp đỡ em
để em mở rộng tầm nhìn và nâng cao khả năng chuyên ngành hơn Tình cảmcao quý trong học tập của cô là hình mẫu mà em tôn trọng trong suốt cuộc đời,thời gian vừa qua cô cũng là người đã dạy cho em rất nhiều kiến thức và kỹthuật mới, điều này không chỉ cho em đặt ra những mục tiêu cao hơn mà còngiúp em hiểu được những nguyên tắc sống, đồng thời vẫn giữ tinh thần sống,
em tin rằng nó sẽ giúp em rất nhiều cho công việc sau này của em Từ khâuchọn đề tài đến khi hoàn thành từng bước dưới sự hướng dẫn tận tâm tận tình vàrất nhiều công sức của cô, phong thái cao quý của cô, nghiêm khắc, kỷ luật vàkhoan dung với người khác đã truyền nhiễm sâu sắc cho em, khiến em hiểuđược rất nhiều điều trên đời Em xin bày tỏ lòng kính trọng và biết ơn cao nhấtđến cô!
Trang 6I:MÔ TẢ BÀI TOÁN
=> Xây dựng chương trình “Quản lý sinh viên” nhằn hỗ trợ cho việc quản lý
khoa,lớp,niên khóa,thông tin ,điểm từng môn học của sinh viên:
-Quản lý được khoa Mỗi khoa có một mã khoa để quản lý ,một tên khoa và ghinhận năm thành lập khoa
-Quản lý lớp Một lớp có một mã lớp để quản lý,Thuộc về một khoa nào và mở
ra cho một niên khóa nhất định
-Quản lý niên khóa Mỗi niên khóa có một mã đề quản lý ,năm bắt đầu và nămkết thuc niên khóa
-Quản lý Môn Học Mỗi môn học được giảng dạy trong một khoa nào đó tronghọc kì của một năm nào đó
-Quản lý thông tin của sinh viên Mỗi sinh viên có một mã để quản lý,Họ
Tên,Ngày Sinh,Giới Tính,Quê Quán,Dân Tộc,Email,Số Điện Thoại
-Quản lý Điểm thi của sinh viên từng môn học Mỗi kết quả thi nhận điểm của 1sinh viên làm bài cho 1 môn học nào đó theo điểm hệ 10
II XÁC ĐỊNH QUY TẮC /RÀNG BUỘC, XÂY DỰNG MÔ HÌNH HỰC THỂ LIÊN KẾT ER
- Bao gồm các mô tả và ràng buộc sau:
1 Mỗi khoa có một mã khoa để quản lý ,một tên khoa và ghi nhận năm thànhlập khoa
2 Mỗi niên khóa có một mã đề quản lý ,năm bắt đầu và năm kết thuc niên khóa
3 Mỗi lớp có nhiều sinh viên có một mã để quản lý,Họ Tên,Ngày Sinh,GiớiTính,Quê Quán,Dân Tộc,Email,Số Điện Thoại
4 Mỗi môn học được giảng dạy trong một khoa nào đó trong học kì của mộtnăm nào đó Mối môn cần một mã để quản lý,tên môn ,số tín chỉ.Mỗi kết quảthi nhận điểm của 1 sinh viên làm bài cho 1 môn học nào đó theo điểm hệ 10
Trang 75 Một lớp có một mã lớp để quản lý,Thuộc về một khoa nào và mở ra cho một
khóa học nhất định.Với mỗi lớp chúng ta lưu thông tin : mã Lớp, tên lớp
TruongHoc(MaKhoa, TenKhoa, NamThanhLap,_MaNK,NamBD,NamKT,MaSV,HoTen,NgaySinh,GioiTinh,QueQuan,DanToc,Email,SDT,_
MaMH,TenMH,SoTinChi,MaLpp,TenLop)
Các loại thực thể và thuộc tính của chúng:
- Khoa (MaKhoa, TenKhoa, NamThanhLap)
^ Thực thể :Khoa (MaKhoa, TenKhoa, NamThanhLap)
2 Mỗi niên khóa có một mã đề quản lý ,năm bắt đầu và năm kết thuc niên khóa
^ Thực thể :NienKhoa (MaNK,NamBD,NamKT)
Trang 8Thực Thể :MonHoc (MaMH,TenMH,SoTinChi)
Trang 10Lop
Trang 11Bước 1: Các thực thể (trừ thực thể yếu) -> các bảng/quan hệ
Quan hệ Khoa:(MaKhoa,TenKhoa,NamThanhLap)
Quan hệ NienKhoa: MaNK,NamBD, NamKT)
Trang 12Quan hệ MonHoc:(MaMH,TenMH,SoTinChi)
Quan hệ Lop : (MaLop,TenLop)
Bước 2: Thực thể yếu à bảng (Khóa của chủ sẽ thành khóa ngoại)
SDT
Quan hệ Lop (MaLop,MaKhoa.MaNK,T enLop)
Bước 5: Liên kết M-N ->Thêm 1 bảng/quan hệ mới R, chuyển khóa chính
của 2 quan hệ phía M và N thành khóa ngoại của quan hệ R Khóa chính
của R là sự kết hợp của 2 khóa ngoại
Trang 13Quan Hệ KetQua(MaSV, MaMH, DiemThi)
Quan hệ GiangKhoa(MaKhoa, MaMH, NamHoc,HocKi)
Bước 6: Thuộc tính đa trị -> Thành 1 bảng/ quan hệ mới
-Không có thuộc tính đa trị
Bước 7: Liên kết bậc >2 -> Thêm 1 bảng/ quan hệ mới
NgaySinh
danToc GioiTin
h
QueQuan
DanToc Emai
l
S DT
Trang 14VI:TẠO DATABASE,TẠO BẢNG,THIẾT LẬP CÁC THUỘC TÍNH CHO BẢNG THÊM DỮ LIỆU,TRUY VẤN D Ữ LIỆU VÀ PHÂN QUYỀN
A:TẠO DATABASE ,TẠO BẢNG VÀ THIẾT LẬP CÁC THUỘC TÍNHCHO BẢNG
Trang 15Create Table Khoa
( MaKhoa varchar(30) PRIMARY KEY ,
TenKhoa nvarchar(50),
NamThanhLap int)
tạo bảng NienKhoa
Create Table NienKhoa
(MaNK varchar(50)PRIMARY KEY ,
NamBD int,
NamKT int )
tạo bảng Lop
Create Table Lop
(MaLop varchar(30) PRIMARY KEY,
MaKhoa varchar(30),
MaNK varchar(50),
TenLop nvarchar(50))
tạo bảng sinhvien
Create Table SinhVien
(MaSV varchar (25)PRIMARY KEY ,
Trang 16Create Table MonHoc
(MaMH varchar(20) PRIMARY KEY
Trang 17Create Table GiangKhoa
Tạo thuộc tính unique cho cột email trong bảng SinhVien
Alter Table SinhVien
ADD Unique (Email);
Thiết lập ràng buộc CHECK cho trường GioiTinh sao cho GioiTinh chỉ có thểnhận giá trị
‘Nam’ hoặc ‘Nữ’:
ALTER TABLE SinhVien
ADD CONSTRAINT KTGioiTinh CHECK (GioiTinh=N'Nam' or
GioiT inh=N'Nữ');
Thiết lập khóa phụ cho Makhoa tham chiếu đến Makhoa của bảng Khoa
ALTER TABLE Lop
ADD CONSTRAINT fk_Makhoa1
FOREIGN KEY (MaKhoa)
REFERENCES Khoa(MaKhoa);
Thiết lập khóa phụ cho MaNK tham chiếu đến MaNKcủa bảng NienKhoa
ALTER TABLE Lop
ADD CONSTRAINT fk_MaNK
FOREIGN KEY (MaNK)
REFERENCES NienKhoa(MaNK);
Trang 18Thiết lập khóa phụ cho MaLop tham chiếu đến MaLopcủa bảng Lop
ALTER TABLE SinhVien
ADD CONSTRAINT fk_MaLop
FOREIGN KEY (MaLop)
REFERENCES Lop(MaLop);
Thiết lập khóa phụ cho MaSV tham chiếu đến MaSV của bảng SinhVien
ALTER TABLE KetQua
ADD CONSTRAINT fk_MaSV
FOREIGN KEY (MaSV)
REFERENCES SinhVien(MaSV);
Thiết lập khóa phụ cho MaMH tham chiếu đến MaMH của bảng MonHoc
ALTER TABLE KetQua
ADD CONSTRAINT fk_MaMH1
FOREIGN KEY (MaMH)
REFERENCES MonHoc(MaMH);
Thiết lập khóa phụ cho MaKhoa tham chiếu đến MaKhoa của bảng Khoa
ALTER TABLE GiangKhoa
ADD CONSTRAINT fk_MaKhoa2
FOREIGN KEY (MaKhoa)
REFERENCES Khoa(MaKhoa);
Thiết lập khóa phụ cho MaMH tham chiếu đến MaMH của bảng MonHoc
ALTER TABLE GiangKhoa
ADD CONSTRAINT fk_MaMH2
FOREIGN KEY (MaMH)
REFERENCES MonHoc(MaMH);
Trang 19B:THÊM DỮ LIỆU CHO BẢNG
Insert into Khoa values
Select *from Khoa
Insert into NienKhoa values
('NK01',1980,1984),
('NK02',1984,1988),
('NK04',1988,1992),
('NK05',1996,2000)
Select *from NienKhoa
Insert into Lop values ('L001','MK01','NK01','80CNTT1'),
Trang 20select * from Lop
Insert into SinhVien values
Trang 21('SV05','L002',N'Nguyễn Thị Bảo','11/02/2001',N'nữ',N'Hải
('SV07','L003',N'Nguyễn Thị Bích','04/02/2001',N'nữ',N'Hà
('SV10','L004',N'Nguyễn Thị Bảo','11/02/2001',N'nữ',N'Hải
Trang 22('SV18','L008',N'Hoàng Văn Chí','09/01/2001',N'nam',N'Nam
('SV20','L009',N'Nguyễn Thị Hảo','11/02/2001',N'nữ',N'Hải
('SV30','L0019',N'Nguyễn Thị Bảo','11/02/2001',N'nữ',N'Hải
('SV31','L0020',N'Nguyễn Thị Hảo','11/02/2001',N'nữ',N'Hải
Trang 23('SV35','L0024',N'Hoàng Văn Châu','09/01/2001',N'nam',N'Nam
select * from SinhVien
Insert into MonHoc values
('MH01',N'Hệ quản trị csdl',3),
('MH02',N'Toán rời rạc',4),
('MH03',N'Pháp luật đại cương',2),
('MH05',N'Trí tuệ nhân tạo',3),
select * from MonHoc
Insert into KetQua values
('SV01','MH01',9.5),
('SV01','MH02',6),
Trang 24('SV01','MH03',7.8),('SV02','MH01',9.5),('SV02','MH04',7.5),('SV03','MH01',9),('SV03','MH06',8),('SV04','MH02',5),('SV04','MH04',6),('SV05','MH02',6),('SV05','MH04',9),('SV06','MH01',7),('SV06','MH02',5.5),('SV07','MH03',5),('SV07','MH04',9),('SV08','MH03',8),('SV08','MH01',9.5),('SV09','MH04',8.5),('SV09','MH01',9),('SV10','MH04',6.5),('SV10','MH03',9.5),('SV11','MH05',7.5),('SV11','MH07',6),('SV12','MH05',6),('SV12','MH02',8.5),('SV13','MH05',7),('SV13','MH01',9.5),('SV14','MH01',9.5),('SV14','MH06',7.5),('SV15','MH06',9),
Trang 25('SV15','MH02',9.5),('SV16','MH06',5),('SV16','MH01',9.5),('SV17','MH07',6),('SV17','MH04',9.5),('SV18','MH07',5.5),('SV18','MH01',4.5),('SV19','MH08',5),('SV19','MH01',3.5),('SV20','MH08',8),('SV20','MH05',9.5),('SV21','MH08',8.5),('SV21','MH07',9.5),('SV22','MH09',6.5),('SV22','MH07',2.5),('SV23','MH01',5.5),('SV23','MH09',6),('SV24','MH03',3.5),('SV24','MH09',6),('SV25','MH06',6),('SV25','MH01',7),('SV25','MH05',7),('SV26','MH02',7.5),('SV26','MH01',7),('SV27','MH03',9),('SV27','MH01',7),('SV28','MH04',5),('SV28','MH01',7),
Trang 26select *from Ketqua
Insert into GiangKhoa values
('MK01','MH01',1980,1),('MK01','MH02',1980,2),('MK01','MH05',1981,1),('MK01','MH06',1981,2),('MK02','MH02',1980,1),('MK02','MH03',1980,2),
Trang 28select *from GiangKhoa
Viết thử tục lưu trữ sinh viên của 1 khoa
Create proc svkhoa
@tenkhoa nvarchar(200)
as
begin
declare @makhoa char(10)
select @makhoa=Khoa.MaKhoa from Khoa
where Khoa.TenKhoa=@tenkhoa
Select SinhVien.MaSV,SinhVien.HoTen from SinhVien,Lop Where
Lop.MaLop=SinhVien.MaLop
and Lop.MaKhoa=@makhoa
DESKTOP-J1QKOHR\SQLEXPRESSO DESKTOP-J1QKOHR\Admin QLSVBTL1 00:00:00 5 rows
viết hàm trả về tên môn được các khoa dạy trong 1 năm học
create function bangmon(@namhoc int)
returns table
as
return (select MonHoc.TenMH from MonHoc,GiangKhoa
where MonHoc.MaMH=GiangKhoa.MaMH and
GiangKhoa.NamHoc=@namhoc)
select * from bangmon(1980);
ĩ Query executed successtully.
Trang 29np<;iíTnp-iinmi-iR\<;ni PYPRP^n DF<;iíTnP-iirimi-iR\Arlmin ni«WRTM nn-nn-nn ẤrnuK
viết con trỏ đếm số sinh viên dân tộc kinh
declare controsinhvien cursor
set @SoSV=@SoSV + 1
Fetch Next from con_tro_sinh_vien
I lê quàn tii csdl
loán lời lUv
Toán ròi rạc
Pháp luật đại cương
Oupn/ pyprntprl illv
Trang 30Results gì Messages
(No culunin riíitno)
(No column name)
tạo khung nhìn MaSV,HoTen,TenLop,TenKhoa
create view viewSV(MaSV,HoTen,TenLop,TenKhoa)
Thương mại điện tử
trigg insert bảng KetQua
Trang 31Create Trigger Trig_SV on KetQua for insert
update MonHoc set SoTinChi=2 where TenMH=N'Toán rời rạc'
if(not exists(select * from MonHoc where TenMH=N'Toán rời rạc'))
rollback tran MH
else commit tran MH
print N'chuyển thành công'
select* from MonHoc
Trang 32grant select on KetQua TO sinhvien
Thêm user 'nqchau' vào role 'giangvien',Thêm user 'anh' vào role
'sinhvien'
sp_addrolemember 'giangvien', 'nqchau'
sp_addrolemember 'sinhvien', 'anh'
VŨ THỊ MƠ
/* Câu 1: viết thủ tục sp_update_sv có tham số dùng để cập nhật dữ
liệu mới cho 1 sinh viên khi biết MaSV trong bảng SinhVien*/
create procedure cau1
update SinhVien set MaSV=@MaSV ,
HoTen=@HoTen,NgaySinh=@NgaySinh,GioiTinh=@GioiTinh,QueQuan=@QueQuan,DanToc=@DanToc,
Email=@Email ,SDT=@SDT
where MaSV=@MaSV
end
Trang 33exec caul 'SV01','L001',N'Hoàng Ngọc Lan','11/07/2001',N'nữ',N'Hà
select* from SinhVien;
5 SV05 L002 Nguyền Thị Bào
2001-11-02
Phòng
kinh Bthia@gmail com 588612138
7 SV07 L0Ũ3 Nguyền Thị Bích 2001-04-02 nu Hà Nam kinh Bthimoc@gmail.com 568612138
9 SV09 L0Ũ4 Nguyền Thị Anh
2001-11-02
nu TPCHM kinh Banhs@gmail.com 582612138
1 SV10 L004 Nguyễn Thị Bào 2001-1102 nữ Hải
Phỏng kinh Bdaue @gmail .com 588612138
1 SV11 L0Ữ4 Lé Vãn Diệu 200103-01 nam Hà Nội Kinh Choangr@gmail com 979612138
Câu 2 Viết 1 function Với 1 mã sinh viên và 1 mã khoa ,kiểm tra xem sinhviên có
thuộc khoa này không(trả về đúng hoặc sai)
create function kt_check_SV_IN_Khoa
declare @ketqua varchar(5);
if(exists(select *from SinhVien
Trang 34left join Lop ON Lop.MaLop=SinhVien.MaLop
left join Khoa on Lop.MaKhoa = Khoa.MaKhoa
where SinhVien.MaSV=@masv
and Khoa.MaKhoa = @makhoa
))
set @ketqua='true'
Câu 3: viết 1 trigger để ko cho phép cập nhật giá trị của cột MaSV
create trigger trig_cau3 on SinhVien for update
Trang 35select*from SinhVien
update SinhVien
set QueQuan =N'Hà Nội'
where GioiTinh=N'Nam';
left join KetQua on SinhVien.MaSV = KetQua.MaSV
left join MonHoc on KetQua.MaMH = MonHoc.MaMH
select *from KQThi
Trang 362 SV01 Hoàng Ngọc Lan MH02 Toán rời rạc 4 6
3 SV01 Hoàng Ngọc Lan MHD3 Pháp luật đại cũdng 2 7.3
4 SV02 Nguyễn Văn An MH01 Hệ quàn trị csdl 4 9.5
5 SV02 Nguyền Văn An MHD4 Tiêng Anh chuyên ngành 3 7.5
7 SV03 Nguyễn Văn Bích MHO6 Giãi tích hàm 1 biên 4 3
3 SV04 Hoàng Văn Cháu MHD2 Toán rời rạc 4 5
9 SV04 Hoàng Văn Cháu MHO4 Tiẽng Anh chuyên ngành 3 G
10 SV05 Nguyễn Thị Bảo MHD2 Toán ràí rạc 4 6
11 SV05 Nguyễn Thị Bão MHD4 Tiêng Anh chuyên ngành 3 9
12 SV06 Lẽ Văn Diệu MHO1 Hệ quản trị csdl 4 7
13 SV06 Lé Văn Diệu MHD2 Toán rời rạc 4 5.5
14 SV07 Nguyễn Thị Bích MH03 Pháp luật đai cùdng 2 5
15 SV07 Nguyễn Thị Bích MHD4 Tiêng Anh chuyên ngành 3 9
17 SV08 Hoàng Văn Chí MH03 Pháp luật đại cùdng 2 3
13 SV09 Nguyễn Thị Anh MHD1 Hệ quân trị csdl 4 9
19 SV09 Nguyễn Thị Anh MHO4 Tiẽng Anh chuyên ngành 3 3.5
câu 5 sử dụng cursor để hiển thị danh sách MaSV,HoTen,GioiTinh
declare con_tro_SV cursor
DYNAMIC SCROLL
for
select MaSV,HoTen,GioiTinh from SinhVien
open con_tro_SV
declare @HoTen nvarchar(50), @MaSV varchar(7), @GioiTinh nvarchar(3);
FETCH NEXT from con_tro_SV into @MaSV @HoTen @GioiTinh
while (@@FETCH_STATUS= 0)
begin
print @MaSV + ' ' + @HoTen + ' ' + @GioiTinh
FETCH NEXT from con_tro_SV into @MaSV @HoTen @GioiTinhend