Code KHS Mahasiswa dengan Pascal
source kode untuk membuat KHS Mahasiswa dengan menggunakan Record dengan Pemrograman Pascal :
| program record_data_mahasiswa; |
| //uses wincrt; |
| const nMaks = 100 ; |
| Mn = 10 ; |
| type |
| matakuliah = record |
| kodemk : string [ 8 ]; |
| namamk : string [ 20 ]; |
| sks : integer ; |
| nilai : string [ 2 ]; |
| sksxnilai : real ; |
| end ; |
| mahasiswa = record |
| NIM : string [ 15 ]; |
| nama : string [ 20 ]; |
| skstotal : integer ; |
| nilaitotal: real ; |
| ip : real ; |
| nextsks : string [ 8 ]; |
| mk : array [ 1.. Mn] of matakuliah; |
| end ; |
| var |
| TabMhs : array [ 1.. nMaks] of mahasiswa; |
| I, J, M, N : integer ; |
| nilaiN : real ; |
| nilaiH : string [ 2 ]; |
| tambah : char ; |
|
| procedure ambilsks; |
| begin |
| if TabMhs[I].ip >= 3.00 then TabMhs[I].nextsks := '22 - 24' |
| else if (TabMhs[I].ip <= 2.99 ) and (TabMhs[I].ip >= 2.50 ) then TabMhs[I].nextsks := '22 - 24' |
| else if (TabMhs[I].ip <= 2.49 ) and (TabMhs[I].ip >= 2.00 ) then TabMhs[I].nextsks := '20 - 22' |
| else if (TabMhs[I].ip <= 1.99 ) and (TabMhs[I].ip >= 1.50 ) then TabMhs[I].nextsks := '18 - 20' |
| else if TabMhs[I].ip < 1.50 then TabMhs[I].nextsks := '16 - 18' ; |
| end ; |
|
| procedure konversinilai; |
| begin |
| nilaiH := TabMhs[I].mk[J].nilai; |
| if (NilaiH = 'A' ) or (nilaiH = 'a' ) then nilaiN := 4 |
| else if (nilaiH = 'B+' ) or (nilaiH = 'b+' ) then nilaiN := 3.5 |
| else if (nilaiH = 'B' ) or (nilaiH = 'b' ) then nilaiN := 3 |
| else if (nilaiH = 'C+' ) or (nilaiH = 'c+' ) then nilaiN := 2.5 |
| else if (nilaiH = 'C' ) or (nilaiH = 'c' ) then nilaiN := 2 |
| else if (nilaiH = 'D+' ) or (nilaiH = 'd+' ) then nilaiN := 1.5 |
| else if (nilaiH = 'D' ) or (nilaiH = 'd' ) then nilaiN := 1 |
| else nilaiN := 0 ; |
| end ; |
| procedure tampildata; |
| begin |
| for I:= 1 to N do |
| begin |
| writeln ( ' Kartu Hasil Studi ' ); |
| writeln ( ' Jurusan Teknik Informatika ' ); |
| writeln ( ' Fakultas ILMU KOMPUTER UNIKA ST.THOMAS SUMUT ' ); |
| writeln ( ' Semester 20../20.. ' ); |
| writeln ( '=================================================================' ); |
| writeln ( 'Nama Mahasiswa : ' ,TabMhs[I].nama); |
| writeln ( 'NPM Mahasiswa : ' ,TabMhs[I].NIM); |
| writeln ( '---------------------------------------------------------------' ); |
| writeln ( ' No Kode MK Nama Mata Kuliah SKS Nilai SKS x Nilai' ); |
| writeln ( '---------------------------------------------------------------' ); |
| for J := 1 to M do |
| begin |
| konversinilai; |
| TabMhs[I].mk[J].sksxnilai := nilaiN * TabMhs[I].mk[J].sks; |
| writeln (J: 2 ,TabMhs[I].mk[J].kodemk: 13 ,TabMhs[I].mk[J].namamk: 20 ,TabMhs[I].mk[J].sks: 5 ,TabMhs[I].mk[J].nilai: 7 , |
| TabMhs[I].mk[J].sksxnilai: 13 : 1 ); |
| TabMhs[I].skstotal := TabMhs[I].skstotal + TabMhs[I].mk[J].sks; |
| TabMhs[I].nilaitotal := TabMhs[I].nilaitotal + TabMhs[I].mk[J].sksxnilai; |
| end ; |
| writeln ( '---------------------------------------------------------------' ); |
| writeln ( ' TOTA L ' ,TabMhs[I].skstotal: 7 ,TabMhs[I].nilaitotal: 20 : 1 ); |
| writeln ( '---------------------------------------------------------------' ); |
| TabMhs[I].ip := TabMhs[I].nilaitotal / TabMhs[I].skstotal; |
| writeln ( 'IP Semester = ' ,TabMhs[I].nilaitotal: 0 : 1 , '/' ,TabMhs[I].skstotal, ' = ' ,TabMhs[I].ip: 0 : 2 ); |
| ambilsks; |
| writeln ( 'SKS yang dapat diambil semester berikutnya = ' ,TabMhs[I].nextsks); |
| writeln ; |
| end ; |
| end ; |
|
| procedure bacadata; |
| begin |
| for I := 1 to N do |
| begin |
| write ( 'NRP Mahasiswa ke - ' ,I, ' = ' );readln(TabMhs[I].NIM); |
| write ( 'Nama Mahasiswa ke - ' ,I, ' = ' );readln(TabMhs[I].nama); |
| write ( 'Jumlah Mata Kuliah = ' );readln(M); |
| writeln ( '--------------------------------------------------' ); |
| for J := 1 to M do |
| begin |
| write ( 'Kode Matakuliah ke - ' ,J, ' = ' );readln(TabMhs[I].mk[J].kodemk); |
| write ( 'Nama Matakuliah = ' );readln(TabMhs[I].mk[J].namamk); |
| write ( 'SKS Matakuliah = ' );readln(TabMhs[I].mk[J].sks); |
| write ( 'nilai Matakuliah = ' );readln(TabMhs[I].mk[J].nilai); |
| writeln ( '--------------------------------------------------' ); |
| end ; |
| end ; |
| end ; |
| begin |
| write ( 'Masukkan Jumlah Data Mahasiswa = ' );readln(N); |
| Repeat |
| //clrscr; |
| bacadata; |
| //clrscr; |
| tampildata; |
| write ( 'Anda Ingin Memasukkan Data Mahasiswa Lagi? [Y/N] : ' );readln(tambah); |
| tambah := Upcase(tambah); |
| until (tambah <> 'Y' ); |
| //Donewincrt; |
| end . |