Ad (728x90)

Senin, 15 Oktober 2012

Filled Under:

Tugas Pert 4


--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
alter 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
--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

Antonius Jefry

Author & Editor

Has laoreet percipitur ad. Vide interesset in mei, no his legimus verterem. Et nostrum imperdiet appellantur usu, mnesarchum referrentur id vim.

0 komentar:

Posting Komentar

 

We are featured contributor on entrepreneurship for many trusted business sites:

  • Copyright © JSC BOJONEGORO™ is a registered trademark.
    Designed by Templateism. Hosted on Blogger Platform.