WELCOME to JF's ZONE

arek STIKOM SURABAYA

Jeff's says :

Inspirasiku untuk membuat blog yang dapat memberikan segala pengetahuan dan dapat menjadi tuntunan bagi sobat JF's Zone. Pengetahuan dengan dasar Teknologi Informasi yang aku dapatkan sehingga dapat berguna bagi pembaca dan dapat digunakan sebagai inspirasi dalam memperoleh wawasan.

Aku ingin ilmuku bermanfaat bagi orang lain...




--deklarasi cursor cMhs (jangan lupa deallocatenya juga)
declare cMhs cursor for
select nim, nama from mahasiswa

--deklarasi variabel untuk menampung data mahasiswa
declare @nim as char (11),
@nama as varchar (100);

--deklarasi variabel untuk menyimpan data nilai akhir dan sks
declare @tugas as numeric(18,0),
@uts as numeric(18,0),
@uas as numeric(18,0),
@na as numeric (18,2),
@sks as numeric(18,0);

--deklarasi variabel tambahan untuk membantu proses penghitungan IPK
declare @bobot as numeric (18,2),
@jumlah_bobot as numeric (18,2),
@jumlah_sks as numeric (18,2),
@ipk as numeric (18,2)

--set nilai awal pada variabel tambahan
--set @jumlah = 0
set @jumlah_bobot = 0
set @jumlah_sks = 0

--open cursor cMhs
open cMhs

--transfer data mahasiswa ke dalam variabel nim dan nama
fetch next from cMhs into @nim, @nama

--cetak garis awal pembuka
print '------------------'

--looping data mahasiswa
while @@fetch_status = 0
begin

--deklarasi cursor cNilai (jangan lupa deallocatenya juga)
declare cNilai cursor for
select n.tugas, n.uts, n.uas, mk.sks
from mahasiswa as m, nilai as n, mk
where m.nim = n.nim and
n.kode_mk = mk.kode_mk and
n.nim = @nim

--open cursor cMhs
open cNilai

--transfer data nilai ke dalam variabel nilai akhir dan sks
fetch next from cNilai into @tugas, @uts, @uas, @sks

--looping data nilai akhir dan sks
while @@fetch_status = 0
begin
--hitung nilai akhir
set @na = dbo.fNA(@tugas, @uts, @uas);

-- cek nilai akhir untuk mendapatkan nilai bobot
if @na>=80 and @na<=100 --if @na between 80 and 100 juga bsa...
begin
set @bobot = 4;
end
else if @na>=75 and @na<=79
begin
set @bobot = 3.5;
end
else if @na>=65 and @na<=74
begin
set @bobot = 3;
end
else if @na>=60 and @na<=64
begin
set @bobot = 2.5;
end
else if @na>=55 and @na<=59
begin
set @bobot = 2;
end
else if @na>=44 and @na<=59
begin
set @bobot = 1;
end
else if @na>=0 and @na<=43
begin
set @bobot = 1;
end

--proses penghitungan IPK
set @jumlah_bobot = @jumlah_bobot + dbo.fHitungBobot(@bobot, @sks);
set @jumlah_sks = @jumlah_sks + @sks;
set @ipk = dbo.fHitungIPK(@jumlah_bobot,@jumlah_sks);

--transfer data nilai selanjutnya ke dalam variabel nilai akhir dan sks
fetch next from cNilai into @tugas, @uts, @uas, @sks

end

--close cursor cNilai
close cNilai

--buat deallocate untuk menghapus cursor cNilai
deallocate cNilai

--cetak data mahasiswa
print 'Nim  '+@nim;
print 'Nama '+@nama;
print 'IPK  '+convert (char,@ipk)
print '------------------'
set @ipk = 0
set @jumlah_bobot = 0
set @jumlah_sks = 0

--transfer data mahasiswa ke dalam variabel nim dan nama
fetch next from cMhs into @nim, @nama
end

--close cursor cMhs
close cMhs

--buat deallocate untuk menghapus cursor cMhs
deallocate cMhs


--function fNA untuk menghitung nilai akhir
create function fNA (@tugas as numeric(18,0),@uts as numeric(18,0),@uas as numeric(18,0))
returns numeric(18,0)
as
begin
return (0.3*@uts+0.3*@uas+0.4*@tugas);
end;

--menghapus function fMhs
drop function fNA

--function fHitungBobot untuk menghitung bobot
create function fHitungBobot (@bobot as numeric (18,2), @sks as numeric(18,0))
returns varchar(100)
as
begin
return (@bobot*@sks);
end;

--menghapus function fCetak
drop function fCetak

--function fHitungIPmk masih belum jelas sehingga tidak bisa dibuat

--function fHitungIPK untuk menghitung IPK
create function fHitungIPK (@jumlah_bobot as numeric (18,2),@jumlah_sks as numeric (18,2))
returns numeric
as
begin
return (@jumlah_bobot / @jumlah_sks);
end;

--menghapus function fCetak
drop function fHitungIPK