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