Tạo SP,FC DiemMax(MaLop,HK,NH) Hiển thị danh sách các học phần của lớp trong

Một phần của tài liệu Bài giảng hệ quản trị cơ sở dữ liệu (Trang 71)

XI. QUẢN LÝ BẢO MẬT NGƯỜI DÙNG

7. Tạo SP,FC DiemMax(MaLop,HK,NH) Hiển thị danh sách các học phần của lớp trong

trong HK, NH với điểm cao nhất và danh sách tất cả các sinh viên có điểm cao nhất của mỗi học phần.

TT MaHP Ten HP KeHoachID DiemMax MaSVCác HoTenCác điểm MaxSố SV có

8. Xây dựng Stored Procedure hay Function để thực hiện các yêu cầu sau đây (2đ):

• Tạo câu hỏi: Tạo ngẫu nhiên N câu hỏi, mỗi câu có 4 câu trả lời A,B,C,D và 1 đáp án hoặc A,B,C hay D

• Tạo đề thi: Chọn K câu hỏi (K<=N từ bộ N câu hỏi trên) không được trùng nhau, hoán vị các câu trả lời A,B,C,D và xác định đáp án phù hợp.

9. Tạo phách 1 và 2: Thêm 2 field PH1,PH2 có kiểu Int, mặc nhiên =0; PH1 là phách lần 1; PH2 là phách thi lại. Tạo phách đơn giản K->N, 1->K-1; Tạo phách ngẫu nhiên: Ngẫu nhiên 1-N.

Declare @BoDe table( TT int identity(1,1) ,CauHoi nvarchar(50) ,TLA nvarchar(20) ,TLB nvarchar(20) ,TLC nvarchar(20) ,TLD nvarchar(20) ,DA varchar(1))

Declare @N int,@i int,@K int,@M int, @D int Select @N=100,@I=1,@K=10

while @I<=@N

begin

insert @BoDe (CauHoi,TLA,TLB,TLC,TLD,DA)

values(N'Câu hỏi '+cast(@I as varchar), N'Câu A', N'Câu B',N'Câu C',N'Câu D',

case when Cast(4*rand() as Int)+1=1 then 'A'

when Cast(4*rand() as Int)+1=2 then

'B'

when Cast(4*rand() as Int)+1=3 then

'C'

else 'D' end) Set @I=@i+1

end

Declare @DeThi table( TT2 int ,CauHoi nvarchar(50) ,TLA nvarchar(20) ,TLB nvarchar(20) ,TLC nvarchar(20) ,TLD nvarchar(20) ,DA varchar(1) ,DA2 varchar(1))

Declare @TL int,@C int,@A varchar Declare @Tam table (TL int)

Select @I=1,@K=20

while @I<=@K

begin

Set @M=Cast(@N*rand() as Int)+1

Select @D=count(*) From @DeThi where TT2=@M

while @D>0

begin

mỗi học phần.

Select @D=count(*) From @DeThi where TT2=@M

end

Insert into @DeThi (TT2,CauHoi,DA2)

Select TT,Cauhoi,DA From @BoDe where TT=@M

Delete @Tam

Set @C=1

while @C<=4

begin

Set @TL=Cast(4*rand() as Int)+1

Select @D=count(*) From @Tam where TL=@TL

while @D>0

begin

Set @TL=Cast(4*rand() as Int)+1

Select @D=count(*) From @Tam where TL=@TL

end

Insert into @Tam(TL) values(@TL) if @C=1

Update @DeThi set TLA= case when @TL=1 then

A.TLA

when @TL=2 then A.TLB

when @TL=3 then A.TLC

when @TL=4 then A.TLD

end From @BoDe A

where TT2=@M

if @C=2

Update @DeThi set TLB= case when @TL=1 then

A.TLA

when @TL=2 then A.TLB

when @TL=3 then A.TLC

when @TL=4 then A.TLD

end From @BoDe A

where TT2=@M

if @C=3

Update @DeThi set TLC= case when @TL=1 then

A.TLA

when @TL=2 then A.TLB

when @TL=3 then A.TLC

when @TL=4 then A.TLD

end From @BoDe A

where TT2=@M

if @C=4

Update @DeThi set TLD= case when @TL=1 then

A.TLA

when @TL=2 then A.TLB

when @TL=4 then A.TLD

end From @BoDe A

where TT2=@M

Set @C=@C+1

end

Set @I=@I+1

end

Một phần của tài liệu Bài giảng hệ quản trị cơ sở dữ liệu (Trang 71)

Tải bản đầy đủ (DOC)

(74 trang)
w