Các bước thực hiện: Tính số học sinh đạt giỏi trong một học kỳ của một năm học nào đó.. Lấy mã học kỳ và năm học cần tìm Đếm số sinh viên có kết quả học tập trên 8.0 lưu trong phần đầu
Trang 1Mục lục
Trang 21 Mô tả chức năng hệ thống
Hệ thống quản lý điểm học sinh trung học phổ thông có hai chức năng chính
là quản lý điểm của học sinh và quản lý hồ sơ của học sinh
Trong chức năng quản lý điểm học sinh, hệ thống có khả năng tính điểm trung bình của học sinh trong từng môn học cũng như điểm tổng kết cuối mỗi kỳ, tìm kiếm, thống kê học sinh đạt khá, giỏi… học sinh có hạnh kiểm khá, tốt…
2 Thiết kế cơ sở dữ liệu
1 Bảng HoSo.HoSoHS
Colum Name Description Datatype Length Allow Null
2 Bảng HoSo.HoSoHS
Colum Name Description Datatype Length Allow Null
Trang 3NgaySinh datetime Not Null
NoiThuongTr
u
3 Bảng CoCauToChuc.Khoa
Colum name description Datatype length Allow null
Trang 4TruongKhoa Nvarchar 50 Not Null
4 Bảng CoCauToChuc.BoMon
Colum name description Datatype length Allow null
MaKhoa Khóa ngoại
tham chiếu
Khoa
5 Bảng CoCauToChuc.Lop
Colum Name Description Datatype Length Allow Null
NamVaoTruon
g
MaLopTruong Khóa ngoại
tham chiếu
HoSoHS
6 Bảng CoCauToChuc.SinhVienLop
tham chiếu đến bảng Lop
7 Bảng CoCauToChuc.GiaoVien_BoMon
Colum name description Datatype length Allow null
Trang 5MaBoMon Khóa ngoại
tham chiếu đến bảng BoMon
ThoiGianNhamChu
c
8 Bảng Diem.Diem_SV
Colum name description Datatype length Allow null
9 Bảng Diem.MonHoc
Colum name description Datatype length Allow null
MaBoMon Khóa ngoại
tham chiếu
BoMon
10.Bảng Diem.HocKy
Colum name description datatype length Allow null
Trang 611.Bảng Diem.PhanDauPhieuDiem
null ChiTietPhieuDie
m
tham chiếu đến bảng HoSoSV
)
Not Null
12.Bảng Diem.DongPD
Colum name description datatype length Allow null ChiTietPD Khóa ngoại tham
chiếu đến bảng PhanDauPhieuDie m
13 Bảng QuiDinh.HocLuc
null
Trang 7DiemTB DiemTB:decimal(4, 1) Not null
Trang 93 Mô tả các thủ tục, hàm và triggers
- Thủ tục
Tên: HoSo.SoGioi
Kết quả thực hiện: Tính số học sinh đạt giỏi trong học kỳ của trường.
Các bước thực hiện:
Tính số học sinh đạt giỏi trong một học kỳ của một năm học nào đó
Lấy mã học kỳ và năm học cần tìm
Đếm số sinh viên có kết quả học tập trên 8.0 lưu trong phần đầu phiếu điểm Lọc ra những sinh viên có mã học kỳ và năm học tương ứng với mã học kỳ và năm học nhập vào
Thực thi thủ tục với các tham số execute as khác nhau để kiểm tra quyền thực hiện của các user
Hàm
Tên: Diem.SoKha
Kết quả thực hiện: Tính số học sinh đạt khá trở lên trong một lớp nào đó tạo
cơ sở để xét khen thưởng với lớp
Các bước thực hiện:
Lấy mã lớp của tên lớp cần tìm
Tìm số học sinh đạt khá trở lên trong bảng lưu điểm trung bình của học sinh toàn trường
Lọc ra những học sinh có mã lớp tương ứng với mã lớp, mã học kỳ và năm học tương ứng tìm được
Trigger
Trang 10Tên: Diem.DiemCT
Kết quả thực hiện: Tự động tính điểm cuối cùng của 1 môn học của 1 sinh
viên
1 Các bước thực hiện:
1 Kiểm tra xem phần điểm thi lại(Diem2) của sinh viên có tồn tại không
2 Nếu tồn tại thi nhập kết quả điểm thi lại vào điểm chính thức(Diem.DiemCT)
3 Nếu ko thì tự đông nhập điểm thi lần 1 vào phần điểm chính thức
Tên: Diem DiemTB
2 Kết quả thực hiện: Tự động cập nhật điểm trung bình của của sinh viên
vào phần đầu phiếu điểm
3 Các bước thực hiện:
1 Lấy điểm chính thức của sinh viên trong bảng Diem.DiemSV
2 Nhân điểm tương ứng với số đơn vị học trình trong bản Diem.MonHoc
3 Tính tổng điểm má sinh viên đạt được trong 1 học kỳ của 1 năm học
và chia cho tổng số học trình
4 Tự động cập nhật điểm trung bình của của sinh viên trong 1 học kỳ của 1 năm học vào phần đầu phiếu điểm
4 Quản trị cơ sở dữ liệu
4.1 Tạo role theo mẫu: (xong)
Tên: CoCauToChuc
Danh sách các quyền cần cấp phát cho role:
Role này sở hữu lược đồ CoCauToChuc do đó nó có toàn quyền trên lược đồ này
Tên: Diem
Danh sách các quyền cần cấp phát cho role:
Role này sở hữu lược đồ Diem do đó nó có toàn quyền trên lược đồ này
Tên: HoSo
Trang 11Danh sách các quyền cần cấp phát cho role:
Role này sở hữu lược đồ HoSo do đó nó có toàn quyền trên lược đồ này
Tên: QuyDinh
Danh sách các quyền cần cấp phát cho role:
Role này sở hữu lược đồ QuyDinh do đó nó có toàn quyền trên lược đồ này
4.2 Tạo user theo mẫu:
Tên: QTDiem
Danh sách các roles và quyền cần cấp phát cho user
User này có toàn quyền với các bảng thuộc schema Diem, ngoài ra nó còn có quyền xem ở tất cả các bảng khác
Tên: KhachDiem
Danh sách các roles và quyền cần cấp phát cho user
User này có toàn quyền với các bảng thuộc schema Diem
Tên: QTHoSo
Danh sách các roles và quyền cần cấp phát cho user
User này có toàn quyền với các bảng thuộc schema HoSo, ngoài ra nó còn có quyền xem ở tất cả các bảng khác
Tên: KhachHoSo
Danh sách các roles và quyền cần cấp phát cho user
User này có toàn quyền với các bảng thuộc schema HoSo
Tên: QTQuyDinh
Danh sách các roles và quyền cần cấp phát cho user
User này có toàn quyền với các bảng thuộc schema QuyDinh, ngoài ra nó còn
có quyền xem ở tất cả các bảng khác
Trang 12 Tên: KhachQuyDinh
Danh sách các roles và quyền cần cấp phát cho user
User này có toàn quyền với các bảng thuộc schema QuyDinh
5.Cấp quyền cho Role, User sử dụng giao diện
5.1.Role
Kịch bản
USE [QuanLySinhVien]
GO
CREATE ROLE [Diem]
Trang 13USE [QuanLySinhVien]
GO
ALTER AUTHORIZATION ON SCHEMA ::[Diem] TO [Diem] GO
5.2 User
Kịch bản
USE [QuanLySinhVien]
GO
CREATE USER [QTDiem] FOR LOGIN [QTDiem]
GO
USE [QuanLySinhVien]
GO
ALTER AUTHORIZATION ON SCHEMA ::[Diem] TO [QTDiem] GO
Trang 14USE [QuanLySinhVien]
GO
EXEC sp_addrolemember N'Diem', N'QTDiem' GO
5.3 Cấp quyền cho User
Kịch bản:
use [QuanLySinhVien]
GO
Trang 15GRANT SELECT ON SCHEMA ::[CoCauToChuc] TO [QTDiem]
GO
use [QuanLySinhVien]
GO
GRANT SELECT ON SCHEMA ::[HoSo] TO [QTDiem]
GO
use [QuanLySinhVien]
GO
GRANT SELECT ON SCHEMA ::[QuyDinh] TO [QTDiem]
GO
6 Mã nguồn một số hàm, thủ tục, trigger,view
6.1 Hàm
create FUNCTION [Diem].[SoKha] (@Lop int , @hocky int , @namhoc nvarchar (50))
RETURNS INT AS
BEGIN
DECLARE @So INT ;
set @So = ( SELECT COUNT(diem.phandauphieudiem.masv)
FROM Diem.phandauphieudiem,CoCauToChuc.sinhvienlop
WHERE diem.phandauphieudiem.masv=cocautochuc.sinhvienlop.masv
AND diem.phandauphieudiem.diemtb>=7.0
AND cocautochuc.sinhvienlop.malop= @Lop
AND diem.phandauphieudiem.mahocky = @hocky
AND diem.phandauphieudiem.namhoc=@namhoc);
RETURN @So;
END
DECLARE @So INT ;
SET @So = Diem.SoKhắ1,1,2010-2011')
PRINT @So;
6.2 Thủ tục
CREATE PROCEDURE [HoSo].[SoGioi] @HK INT ,@NamHoc varchar (20)
WITH EXECUTE AS CALLER
AS
BEGIN
SELECT CURRENT_USER AS 'execute as caller';
SELECT COUNT(*) FROM Diem.PhanDauPhieuDiem
WHERE Diem.PhanDauPhieuDiem.DiemTB >=8.0 AND
Diem.PhanDauPhieuDiem.MaHocKy = @HK AND
Diem.PhanDauPhieuDiem.NamHoc = @NamHoc;
END
6.3 Trigger
Trigger Cập nhật điểm chính thức của sinh viên
create trigger [DiemCT] on [Diem].[Diem_SV]
for insert , update
AS
begin
declare @DiemCT int ,@MaSV int , @MaMonHoc nchar (10);
Trang 16Set @MaSV=( select MaSV from inserted );
Set @MaMonHoc=( select MaMonHoc from inserted );
if exists( select from inserted where Diem2 is NULL)
Set @DiemCT=( select inserted.Diem1 from inserted);
else
Set @DiemCT=( select inserted.Diem2 from inserted);
update Diem.Diem_SV Set DiemCT=@DiemCT where Diem.Diem_SV.MaSV=@MaSV and Diem.Diem_SV.MaMonHoc=@MaMonHoc
end
Trigger tính điểm trung bình của sinh viên trong 1 học kỳ của 1 năm học
create trigger [DiemTB2] on [Diem].[PhanDauPhieuDiem] for update , insert
AS
declare @MaSV INT , @HocKy INT , @NamHoc NVARCHAR (50), @DiemTB DECIMAL ( , ),
@Diem INT ;
SET @MaSV = ( select MaSV from inserted);
Set @HocKy = ( select MaHocKy from inserted);
SET @NamHoc = ( Select NamHoc from inserted);
SET @DiemTB= ( select SUM(Diem.Diem_SV.DiemCT *
Diem.MonHoc.SoDVHT)/Sum(Diem.MonHoc.SODVHT)
from Diem.Diem_SV,Diem.MonHoc
where MaSV=@MaSV and NamHoc=@NamHoc and HocKy=@HocKy and
Diem.Diem_SV.MaMonHoc=Diem.MonHoc.MaMonHoc );
update Diem.PhanDauPhieuDiem SET Diem.PhanDauPhieuDiem.DiemTB=@DiemTB where
Diem.PhanDauPhieuDiem.MaSV=@MaSV
insert into diem.dongPD(IDPhanDauPD,Masv,MaMonHoc,Diem,MaGiaovien) select
diem.phandauphieudiem.IDPhanDauPD,diem.phandauphieudiem.masv,diem.diem_sv.mamo nhoc,diem.diem_sv.diemCT,diem.diem_sv.MaGV
from diem.phandauphieudiem,diem.diem_sv
where diem.diem_sv.masv=@masv and
diem.phandauphieudiem.masv=diem.diem_sv.masv and
diem.phandauphieudiem.mahocky=@HocKy
and diem.phandauphieudiem.mahocky=diem.diem_sv.hocky
6.4 View
create view diem.diem_SV88
as
select from diem.diem_SV where diem.diem_sv.diemCT=
go
select from diem.diem_SV8
Kết luận
Qua thời gian thực hiện đồ án chúng em đã đạt được một số vấn đề sau Đã thiết kế được cơ sở dữ liệu cho hệ thống, tạo được một số hàm, thủ tục, quản trị được cơ sở dữ liệu dựa theo các người sử dụng Tuy nhiên cho thời gian thực hiện
Trang 17đồ án ngắn do vậy đồ án vẫn còn một số hạn chế nhất định Số lượng hàm, thủ tục còn ít và đơn giản, thống kê, báo cáo chưa đầy đủ