Anda di halaman 1dari 13

Program Nilai_Mahasiswa

{I.S. :User Memasukan Banyaknya Mahasiswa}


{F.S. :Menampilkan Hasil Pengolahan Data}
uses crt;

const
MaksBaris = 50;
MaksKolom = 5;
type
Kuliah = record
Kkul,namaMK : string;
SKS : integer;
end;
Mahasiswa = record
NIM : integer;
IPK : real;
namaMahasiswa : string;
end;
Larik1 = array[1..MaksBaris] of Kuliah;
Larik2 = array[1..MaksBaris] of Mahasiswa;
Matriks1 = array[1..MaksBaris,1..MaksKolom] of integer;
Matriks2 = array[1..MaksBaris,1..MaksKolom] of char;
var
mataKuliah : Larik1;
dataMahasiswa : Larik2; {Mata Kuliah}
Nilai : Matriks1;
Idx : Matriks2; {Indeks Nilai}
m,n : integer; {M: banyaknya baris, N: banyaknya
kolom}

procedure isiData(var m,n : integer);


{I.S. :User Memasukan Banyaknya Data Mahasiswa}
{F.S. :User Memasukan Banyaknya Mata Kuliah}

begin
gotoxy(1,1); write('Banyaknya Data Mahasiswa: ');readln(m);
while(m < 1) or (m > MaksBaris) do
begin
gotoxy(1,2); write('Banyaknya data tidak boleh dari kurang
dari 1 atau lebih dari 50');
readln;
gotoxy(1,2); clreol;
gotoxy(27,1); clreol;
gotoxy(1,1); write('Banyaknya Data Mahasiswa: ');readln(m);
end;
gotoxy(1,2); write('Banyaknya Mata Kuliah : ');readln(n);
while(n < 1) or (n > MaksKolom) do
begin
gotoxy(1,3); write('Banyaknya data tidak boleh dari kurang
dari 1 atau lebih dari 5');
readln;
gotoxy(1,3); clreol;
gotoxy(27,2); clreol;
gotoxy(1,2); write('Banyaknya Mata Kuliah : ');readln(n);
end;
end; //end procedure

procedure isiMahasiswa(m : integer; var dataMahasiswa : Larik2);


{I.S. :Jumlah Mahasiswa sudah terdefinisi}
{F.S. :User memasukan Nama Mahasiswa}
var

i : integer;

begin
clrscr;
gotoxy(10,1);writeln('Data Mahasiswa');
writeln('-------------------------------');
writeln('| No | NIM | Nama Mahasiswa |');
writeln('-------------------------------');
for i:= 1 to m do
begin
gotoxy(1,i+4); writeln('| | | |');
gotoxy(3,i+4); write(i);
gotoxy(7,i+4); readln(dataMahasiswa[i].NIM);
gotoxy(18,i+4); readln(dataMahasiswa[i].namaMahasiswa);
end; //endfor
gotoxy(1,i+5);writeln('---------------------------------');
end; //endprocedure

procedure isiMK(m,n : integer; var mataKuliah: Larik1);


{I.S. :Banyaknya Mahasiswa dan Banyaknya Mata kuliah sudah
terdefinisi}
{F.S. :User memasukan jumlah sks }
var
i : integer;

begin

gotoxy(1,4+4+m); writeln(' Daftar Mata Kuliah


');

gotoxy(1,5+4+m);writeln('-------------------------------------------
-------');
gotoxy(1,6+4+m);writeln('| No | Kode Mata Kuliah | Nama Mata
Kuliah | SKS |');

gotoxy(1,7+4+m);writeln('-------------------------------------------
-------');
for i:= 1 to n do
begin
gotoxy(1,7+4+m+i);writeln('| | |
| |');
gotoxy(3,7+4+m+i);write(i);
gotoxy(8,7+4+m+i);readln(mataKuliah[i].Kkul);
gotoxy(27,7+4+m+i);readln(mataKuliah[i].namaMK);
gotoxy(46,7+4+m+i);readln(mataKuliah[i].SKS);
end;

gotoxy(1,8+4+m+i);writeln('-----------------------------------------
---------');
write('tekan enter untuk melanjutkan !');
readln;
end;

procedure isiNilai(mataKuliah: Larik1;dataMahasiswa: Larik2;


m,n:integer );
{I.S. :Kode Mata Kuliah dan NIM sudah terdefinisi}
{F.S. :Menampilkan Kode Mata Kuliah Dan NIM}
var
i,j : integer;

begin
clrscr;
gotoxy(50,1); writeln('Pengisian Nilai Mahasiswa');
gotoxy(50,2); writeln('-------------------------');
gotoxy(20,4); writeln('Kode Mata Kuliah');
gotoxy(1,5); write('NIM');
for i := 1 to m do
begin
for j := 1 to n do
begin
gotoxy(j*15,5);
write(mataKuliah[j].Kkul);
end;
end;
for i:=1 to m do
begin
gotoxy(1,5+i);
write(dataMahasiswa[i].NIM);
end;

end;

procedure isiNilaiMhs ( m,n : integer; var Nilai: Matriks1);


{I.S. : Jumlah Mahasiswa dan Jumlah Mata Kuliah Sudah Terdefinisi}
{F.S. : User Memasukan Nilai Mahasiswa}
var
i,j : integer;

begin
for i:=1 to m do
begin
for j:=1 to n do
begin
gotoxy(j*15,i+5);
readln(Nilai[i,j]);
end;
end;

end;

Procedure Ubahnilai (Nilai: Matriks1; m,n : integer ; var Idx:


Matriks2);
{I.S. : Nilai Mahasiswa Sudah Terdefinisi}
{F.S. : Menampilkan Hasil Konversi dari Nilai Menjadi Index}

var
i,j :integer;

begin
for i:=1 to m do
begin
for j:=1 to n do
begin
if (Nilai[i,j]<=100)and(Nilai[i,j]>=80)then
begin
Idx[i,j] := 'A';
end
else
if (Nilai[i,j]<=79)and(Nilai[i,j]>=68)then
begin
Idx[i,j] := 'B';
end
else
if (Nilai[i,j]>=67)and(Nilai[i,j]<=56)then
begin
Idx[i,j] := 'C';
end
else
if (Nilai[i,j]>=55)and(Nilai[i,j]<=45)then
begin
Idx[i,j] := 'D';
end
else
Idx[i,j] := 'E';
end; //endif
end; //endfor

for i:=1 to m do
begin
for j:=1 to n do
begin
gotoxy(j*15,5+i); delay(700); clreol;
write(Idx[i,j]);
end; //endfor
end; //endfor

gotoxy(1,5+i+1); write('Tekan Enter Untuk Melanjutkan !!');


readln;
end;

//Fungsi UperCase
function Upcase(S : String) : string ;
var
l : integer;
begin
for l := 1 to LENGTH(S) do
begin
if(S[l] >= 'a') and (S[l] <='z') then
begin
DEC(S[l],32);
UpCase :=S;
end;
end;
end;

//FUNGSI BOBOT
function Bobot(indeks : char ; sks : integer) : real;
{I.S. : Indeks Sudah Terdefinisi}
{F.S. : Merubah Indeks Menjadi Bobot}
begin
if(indeks = 'A') then
begin
Bobot := 4 * sks;
end
else if(indeks = 'B') then
begin
Bobot := 3 * sks;
end
else if(indeks = 'C') then
begin
Bobot := 2 * sks;
end
else if(indeks = 'D') then
begin
Bobot := 1 * sks;
end
else if(indeks = 'E') then
begin
Bobot := 0 * sks;
end;

end;

Procedure TampilData( mataKuliah: Larik1; dataMahasiswa: Larik2;Idx:


Matriks2; m,n:integer);
{I.S. : Jumlah Mahasiswa,Jumlah Mata Kuliah, NIM, Nama
Mahasiswa,Nilai,Kode Mata Kuliah,SKS dan Indeks Sudah Terdefinisi}
{F.S. : Menampilkan Hasil Pengolahan Data}

var
i,j,baris: integer;
jumlahsks,jumlahbobot : real ;
yudisium : string ;

begin
clrscr;
baris := 0; //inisialisasi baris
gotoxy(30,1);
write('HASIL STUDI MAHASISWA TEKNIK INFORMATIKA SEBANYAK ',m,'
MAHASISWA');
gotoxy(30,2);

writeln('===========================================================
==');
writeln;
for i := 1 to m do
begin
if (i > 1) then baris := baris - i ;
gotoxy(1, baris + i + 4);
writeln ('---------------------------------------------------
Mahasiswa
Ke-',i,'-------------------------------------------------------');
gotoxy(1, baris + i + 6);write ('NIM :');
writeln(dataMahasiswa[i].NIM);
gotoxy(1, baris + i + 7);write ('Nama :');
writeln(Upcase(dataMahasiswa[i].namaMahasiswa));
gotoxy(1, baris + i +
8);write('---------------------------------------------------------'
);
gotoxy(1, baris + i + 9);write('| No | Kode Mata Kuliah | Nama
Mata Kuliah | SKS | Index |');
gotoxy(1, baris + i +
10);write('---------------------------------------------------------
');
baris := baris + i + 10; // inisialisasi baris
for j := 1 to n do
begin
jumlahsks := jumlahsks+ mataKuliah[i].SKS ;
jumlahbobot := jumlahbobot +
(Bobot(Idx[i,j],mataKuliah[j].SKS));
gotoxy(1, baris + j); writeln('| | |
| | |');
gotoxy(3, baris + j); write(j);
gotoxy(7, baris + j); write(Upcase(mataKuliah[j].Kkul));
gotoxy(26, baris + j); write(Upcase(mataKuliah[j].namaMK));
gotoxy(46, baris + j); write(mataKuliah[j].SKS);
gotoxy(54, baris + j); writeln(Idx[i,j]);
end;//endfor
dataMahasiswa[i].IPK := jumlahbobot/jumlahsks ;
gotoxy(1, baris + j + 1);
writeln('----------------------------------------------------------'
);
//Menentukan Yudisium
if (dataMahasiswa[i].IPK <=4) and
(dataMahasiswa[i].IPK>=3.5) then
begin
yudisium := 'CUM LAUDE' ;
end
else
if (dataMahasiswa[i].IPK <=3.49) and
(dataMahasiswa[i].IPK>=2.75) then
begin
yudisium := 'SANGAT MEMUASKAN' ;
end
else
if (dataMahasiswa[i].IPK <=2.74) and
(dataMahasiswa[i].IPK>=2) then
begin
yudisium := 'MEMUASKAN' ;
end
else
begin
yudisium := ' ';
end; //endif
gotoxy(1, baris + j +
3);writeln('IPK :',dataMahasiswa[i].IPK:0:1);
gotoxy(1, baris + j + 4);writeln('Yudisium :',yudisium);
baris := baris + j+1; //inisialisasi baris
end; //endfor
end;

//algoritma utama
begin
isiData(m,n);
isiMahasiswa(m,dataMahasiswa);
isiMK(m,n,mataKuliah);
isiNilai(mataKuliah,dataMahasiswa,m,n);
isiNilaiMhs(m,n,Nilai);
Ubahnilai(Nilai,m,n,Idx);
TampilData(mataKuliah,dataMahasiswa,Idx,m,n);
readln;
end.
Tampilan Program

Tampilan salah input data Tampilan input data

Tampilan Data Mahasiswa & MatKul Tampilan Nilai Mahasiswa

Tampilan Nilai Index Mahasiswa Tampilan Hasil Studi Mahasiswa

Anda mungkin juga menyukai